Start implementing intrinsics
This commit is contained in:
parent
7027ee3645
commit
4bef1c2379
@ -108,12 +108,13 @@ impl Display for FunctionDefinition {
|
|||||||
impl Display for FunctionDefinitionKind {
|
impl Display for FunctionDefinitionKind {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
match self {
|
match self {
|
||||||
Self::Local(block, _) => {
|
FunctionDefinitionKind::Local(block, _) => {
|
||||||
write!(f, "{}", block)?;
|
write!(f, "{}", block)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
Self::Extern(true) => write!(f, "<Imported Extern>"),
|
FunctionDefinitionKind::Extern(true) => write!(f, "<Imported Extern>"),
|
||||||
Self::Extern(false) => write!(f, "<Linked Extern>"),
|
FunctionDefinitionKind::Extern(false) => write!(f, "<Linked Extern>"),
|
||||||
|
FunctionDefinitionKind::Intrinsic(_) => write!(f, "<Intrinsic>"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -675,6 +675,8 @@ pub enum EqualsIssue {
|
|||||||
AlreadyExtern(String, Metadata),
|
AlreadyExtern(String, Metadata),
|
||||||
#[error("Function {0} is already imported from another module")]
|
#[error("Function {0} is already imported from another module")]
|
||||||
ConflictWithImport(String),
|
ConflictWithImport(String),
|
||||||
|
#[error("Function is defined as an intrinsic")]
|
||||||
|
ExistsAsIntrinsic,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FunctionDefinition {
|
impl FunctionDefinition {
|
||||||
@ -701,6 +703,7 @@ impl FunctionDefinition {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
FunctionDefinitionKind::Intrinsic(_) => Err(EqualsIssue::ExistsAsIntrinsic),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -302,6 +302,8 @@ pub enum FunctionDefinitionKind {
|
|||||||
Local(Block, Metadata),
|
Local(Block, Metadata),
|
||||||
/// True = imported from other module, False = Is user defined extern
|
/// True = imported from other module, False = Is user defined extern
|
||||||
Extern(bool),
|
Extern(bool),
|
||||||
|
/// Intrinsic definition, defined within the compiler
|
||||||
|
Intrinsic(Block),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FunctionDefinition {
|
impl FunctionDefinition {
|
||||||
@ -309,6 +311,7 @@ impl FunctionDefinition {
|
|||||||
match &self.kind {
|
match &self.kind {
|
||||||
FunctionDefinitionKind::Local(block, _) => block.meta.clone(),
|
FunctionDefinitionKind::Local(block, _) => block.meta.clone(),
|
||||||
FunctionDefinitionKind::Extern(_) => Metadata::default(),
|
FunctionDefinitionKind::Extern(_) => Metadata::default(),
|
||||||
|
FunctionDefinitionKind::Intrinsic(_) => Metadata::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -316,6 +319,7 @@ impl FunctionDefinition {
|
|||||||
match &self.kind {
|
match &self.kind {
|
||||||
FunctionDefinitionKind::Local(_, metadata) => metadata.clone(),
|
FunctionDefinitionKind::Local(_, metadata) => metadata.clone(),
|
||||||
FunctionDefinitionKind::Extern(_) => Metadata::default(),
|
FunctionDefinitionKind::Extern(_) => Metadata::default(),
|
||||||
|
FunctionDefinitionKind::Intrinsic(_) => Metadata::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user