feat(gs/achilles): Implement extern decls, for glibc functions
Implement extern decls, which codegen to LLVM as forward-declared functions, and use these as a hook into calling glibc functions. We can print to the terminal now! The integration tests can test this now. Change-Id: I70af4546b417b888ad9fbb18798db240f77f4e71 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2614 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
This commit is contained in:
parent
fec6595d21
commit
2c838ab845
9 changed files with 147 additions and 28 deletions
|
|
@ -337,6 +337,19 @@ impl<'ast> Typechecker<'ast> {
|
|||
self.env.set(name.clone(), type_);
|
||||
Ok(None)
|
||||
}
|
||||
ast::Decl::Extern { name, type_ } => {
|
||||
let type_ = self.type_from_ast_type(ast::Type::Function(type_));
|
||||
self.env.set(name.clone(), type_.clone());
|
||||
let (arg_types, ret_type) = match type_ {
|
||||
Type::Fun { args, ret } => (args, *ret),
|
||||
_ => unreachable!(),
|
||||
};
|
||||
Ok(Some(hir::Decl::Extern {
|
||||
name,
|
||||
arg_types,
|
||||
ret_type,
|
||||
}))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue