pub struct CodeGen<'a> { /* private fields */ }
Expand description
CodeGen implements the code generation logic.
Implementations§
Source§impl<'a> CodeGen<'a>
impl<'a> CodeGen<'a>
pub fn new( vmo: &'a mut VMObjects, asto: &'a AstObjects, tco: &'a TCObjects, dummy_gcv: &'a mut GcoVec, ti: &'a TypeInfo, type_cache: &'a mut HashMap<TypeKey, GosMetadata>, mapping: &'a mut IfaceMapping, pkg_indices: &'a HashMap<TCPackageKey, OpIndex>, pkgs: &'a Vec<PackageKey>, pkg: PackageKey, bk: IdentKey, ) -> CodeGen<'a>
pub fn pkg_util(&mut self) -> &mut PkgUtil<'a>
pub fn gen_with_files( &mut self, files: &Vec<File>, tcpkg: TCPackageKey, index: OpIndex, )
Trait Implementations§
Source§impl<'a> ExprVisitor for CodeGen<'a>
impl<'a> ExprVisitor for CodeGen<'a>
Source§fn visit_expr_func_lit(&mut self, this: &Expr, flit: &FuncLit)
fn visit_expr_func_lit(&mut self, this: &Expr, flit: &FuncLit)
Add function as a const and then generate a closure of it
type Result = ()
fn visit_expr(&mut self, expr: &Expr)
fn visit_expr_ident(&mut self, expr: &Expr, ident: &IdentKey)
fn visit_expr_ellipsis(&mut self, _: &Expr, _els: &Option<Expr>)
fn visit_expr_basic_lit(&mut self, this: &Expr, blit: &BasicLit)
fn visit_expr_composit_lit(&mut self, _: &Expr, clit: &CompositeLit)
fn visit_expr_paren(&mut self, _: &Expr, expr: &Expr)
fn visit_expr_selector(&mut self, this: &Expr, expr: &Expr, ident: &IdentKey)
fn visit_expr_index(&mut self, _: &Expr, expr: &Expr, index: &Expr)
fn visit_expr_slice( &mut self, _: &Expr, expr: &Expr, low: &Option<Expr>, high: &Option<Expr>, max: &Option<Expr>, ) -> Self::Result
fn visit_expr_type_assert( &mut self, _: &Expr, _expr: &Expr, _typ: &Option<Expr>, )
fn visit_expr_call( &mut self, _: &Expr, func_expr: &Expr, params: &Vec<Expr>, ellipsis: bool, )
fn visit_expr_star(&mut self, _: &Expr, expr: &Expr)
fn visit_expr_unary(&mut self, this: &Expr, expr: &Expr, op: &Token)
fn visit_expr_binary(&mut self, _: &Expr, left: &Expr, op: &Token, right: &Expr)
fn visit_expr_key_value(&mut self, e: &Expr, _key: &Expr, _val: &Expr)
Source§fn visit_expr_array_type(&mut self, this: &Expr, _: &Option<Expr>, _: &Expr)
fn visit_expr_array_type(&mut self, this: &Expr, _: &Option<Expr>, _: &Expr)
codegen needs the unwraped expr
fn visit_expr_struct_type(&mut self, this: &Expr, _s: &StructType)
fn visit_expr_func_type(&mut self, this: &Expr, _s: &FuncTypeKey)
fn visit_expr_interface_type(&mut self, this: &Expr, _s: &InterfaceType)
Source§fn visit_map_type(&mut self, this: &Expr, _: &Expr, _: &Expr, _map: &Expr)
fn visit_map_type(&mut self, this: &Expr, _: &Expr, _: &Expr, _map: &Expr)
codegen needs the unwraped expr
fn visit_chan_type(&mut self, this: &Expr, _chan: &Expr, _dir: &ChanDir)
fn visit_bad_expr(&mut self, _: &Expr, _e: &BadExpr)
Source§impl<'a> StmtVisitor for CodeGen<'a>
impl<'a> StmtVisitor for CodeGen<'a>
type Result = ()
fn visit_stmt(&mut self, stmt: &Stmt)
fn visit_decl(&mut self, decl: &Decl)
fn visit_stmt_decl_gen(&mut self, gdecl: &GenDecl)
fn visit_stmt_decl_func(&mut self, fdecl: &FuncDeclKey) -> Self::Result
fn visit_stmt_labeled(&mut self, lstmt: &LabeledStmtKey)
fn visit_stmt_send(&mut self, sstmt: &SendStmt)
fn visit_stmt_incdec(&mut self, idcstmt: &IncDecStmt)
fn visit_stmt_assign(&mut self, astmt: &AssignStmtKey)
fn visit_stmt_go(&mut self, gostmt: &GoStmt)
fn visit_stmt_defer(&mut self, dstmt: &DeferStmt)
fn visit_stmt_return(&mut self, rstmt: &ReturnStmt)
fn visit_stmt_branch(&mut self, bstmt: &BranchStmt)
fn visit_stmt_block(&mut self, bstmt: &BlockStmt)
fn visit_stmt_if(&mut self, ifstmt: &IfStmt)
fn visit_stmt_case(&mut self, _cclause: &CaseClause)
fn visit_stmt_switch(&mut self, sstmt: &SwitchStmt)
fn visit_stmt_type_switch(&mut self, tstmt: &TypeSwitchStmt)
fn visit_stmt_comm(&mut self, _cclause: &CommClause)
fn visit_stmt_select(&mut self, sstmt: &SelectStmt)
fn visit_stmt_for(&mut self, fstmt: &ForStmt)
fn visit_stmt_range(&mut self, rstmt: &RangeStmt)
fn visit_empty_stmt(&mut self, _e: &EmptyStmt)
fn visit_bad_stmt(&mut self, _b: &BadStmt)
fn visit_bad_decl(&mut self, _b: &BadDecl)
Auto Trait Implementations§
impl<'a> Freeze for CodeGen<'a>
impl<'a> !RefUnwindSafe for CodeGen<'a>
impl<'a> !Send for CodeGen<'a>
impl<'a> !Sync for CodeGen<'a>
impl<'a> Unpin for CodeGen<'a>
impl<'a> !UnwindSafe for CodeGen<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more