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