summaryrefslogtreecommitdiff
path: root/oryxc/src/prelude.rs
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2026-03-05 21:46:09 +0100
committerThomas Voss <mail@thomasvoss.com> 2026-03-05 21:46:09 +0100
commit4f723801d751d520263ce0f14b2cf409f60ac77e (patch)
tree2139dea317cbf9662ebf15d60fe54d88781b1b86 /oryxc/src/prelude.rs
parent723fb5031a1f59f8df5d0a0dbf5dc0a54420e15f (diff)
Continue work on types and static analysis
Diffstat (limited to 'oryxc/src/prelude.rs')
-rw-r--r--oryxc/src/prelude.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/oryxc/src/prelude.rs b/oryxc/src/prelude.rs
index 9c91116..4fe1413 100644
--- a/oryxc/src/prelude.rs
+++ b/oryxc/src/prelude.rs
@@ -11,6 +11,34 @@ pub struct FileId(pub usize);
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub struct SymbolId(pub u32);
+#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
+pub struct ScopeId(pub usize);
+
+impl ScopeId {
+ pub const GLOBAL: Self = Self(0);
+}
+
+#[derive(Default)]
+pub enum ResolutionState {
+ #[default]
+ Unresolved,
+ Resolving,
+ Resolved,
+ Poisoned,
+}
+
+#[derive(Default)]
+pub struct Symbol {
+ pub state: ResolutionState,
+ pub r#type: u32,
+}
+
+pub enum OryxType {
+ Integer { bits: usize, signed: bool },
+ Pointer { base: u32 },
+ Function { args: Vec<u32>, rets: Vec<u32> },
+}
+
#[derive(Clone, Copy)]
pub struct SubNodes(pub u32, pub u32);