Skip to content

Commit efe90ab

Browse files
committed
feat: Add import resolver, CLI improvements, and backend enhancements
- Add import_resolver module for resolving Haxe-style imports - Enhance CLI with new commands and improved argument handling - Add backend improvements for cranelift JIT and LLVM AOT - Update lowering to handle new AST constructs - Add serde dependency for JSON serialization in zyn_peg
1 parent 4f65764 commit efe90ab

10 files changed

Lines changed: 1820 additions & 41 deletions

File tree

crates/compiler/src/lowering.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -496,8 +496,10 @@ impl LoweringContext {
496496
for (i, _ctor) in class_decl.constructors.iter().enumerate() {
497497
let ctor_id = crate::hir::HirId::new();
498498
// Constructors: ClassName_constructor_N
499+
// Use resolve_global() for portability across interner sources
500+
let class_name_str = class_decl.name.resolve_global()
501+
.unwrap_or_else(|| "UnknownClass".to_string());
499502
let mut arena = self.arena.lock().unwrap();
500-
let class_name_str = arena.resolve_string(class_decl.name).unwrap().to_string();
501503
let ctor_name = arena.intern_string(&format!("{}_constructor_{}", class_name_str, i));
502504
drop(arena);
503505
self.symbols.functions.insert(ctor_name, ctor_id);
@@ -1445,9 +1447,11 @@ impl LoweringContext {
14451447
use zyntax_typed_ast::type_registry::{Type, NullabilityKind, TypeId};
14461448

14471449
// Constructor name: ClassName_constructor_N
1450+
// Use resolve_global() for portability across interner sources
14481451
let ctor_name = {
1452+
let class_name_str = class_name.resolve_global()
1453+
.unwrap_or_else(|| "UnknownClass".to_string());
14491454
let mut arena = self.arena.lock().unwrap();
1450-
let class_name_str = arena.resolve_string(class_name).unwrap().to_string();
14511455
arena.intern_string(&format!("{}_constructor_{}", class_name_str, index))
14521456
};
14531457

@@ -1494,9 +1498,13 @@ impl LoweringContext {
14941498

14951499
/// Mangle method name: ClassName_methodName
14961500
fn mangle_method_name(&self, class_name: InternedString, method_name: InternedString) -> InternedString {
1501+
// Use resolve_global() since InternedStrings may come from different sources
1502+
// (global interner from ZynPEG runtime, local arena from JSON deserialization, etc.)
1503+
let class_name_str = class_name.resolve_global()
1504+
.unwrap_or_else(|| "UnknownClass".to_string());
1505+
let method_name_str = method_name.resolve_global()
1506+
.unwrap_or_else(|| "unknown_method".to_string());
14971507
let mut arena = self.arena.lock().unwrap();
1498-
let class_name_str = arena.resolve_string(class_name).unwrap().to_string();
1499-
let method_name_str = arena.resolve_string(method_name).unwrap().to_string();
15001508
arena.intern_string(&format!("{}_{}", class_name_str, method_name_str))
15011509
}
15021510

0 commit comments

Comments
 (0)