cgen: fix several errors
							parent
							
								
									ed9075b937
								
							
						
					
					
						commit
						be2480c320
					
				|  | @ -141,6 +141,7 @@ pub: | |||
| 	is_method     bool | ||||
| 	rec_mut       bool // is receiver mutable
 | ||||
| 	is_c          bool | ||||
| 	no_body       bool // just a definition `fn C.malloc()`
 | ||||
| } | ||||
| 
 | ||||
| pub struct BranchStmt { | ||||
|  |  | |||
|  | @ -173,7 +173,7 @@ fn (g mut Gen) stmt(node ast.Stmt) { | |||
| 	} | ||||
| 		} | ||||
| 		ast.FnDecl { | ||||
| 			if it.is_c || it.name == 'malloc' { | ||||
| 			if it.is_c || it.name == 'malloc' || it.no_body { | ||||
| 				return | ||||
| 			} | ||||
| 			g.reset_tmp_count() | ||||
|  | @ -276,8 +276,8 @@ fn (g mut Gen) stmt(node ast.Stmt) { | |||
| 			g.writeln('}') | ||||
| 		} | ||||
| 		ast.GlobalDecl { | ||||
| 			// TODO
 | ||||
| 			g.writeln('__global') | ||||
| 			styp := g.typ(g.table.get_type_symbol(it.typ).name) | ||||
| 			g.definitions.writeln('$styp $it.name; // global') | ||||
| 		} | ||||
| 		ast.GotoLabel { | ||||
| 			g.writeln('$it.name:') | ||||
|  | @ -620,7 +620,8 @@ fn (g mut Gen) const_decl(node ast.ConstDecl) { | |||
| 				g.writeln('') | ||||
| 			} | ||||
| 			else { | ||||
| 				g.writeln('$field_type_sym.name $name; // inited later') // = ')
 | ||||
| 				styp := g.typ(field_type_sym.name) | ||||
| 				g.definitions.writeln('$styp $name; // inited later') // = ')
 | ||||
| 				// TODO
 | ||||
| 				// g.expr(node.exprs[i])
 | ||||
| 			} | ||||
|  |  | |||
|  | @ -15,6 +15,7 @@ typedef struct { | |||
| 	string arg1; | ||||
| } multi_return_int_string; | ||||
| // end of definitions #endif
 | ||||
| int pi2; // inited later
 | ||||
| void foo(int a); | ||||
| void User_inc_age(User u, int n); | ||||
| int get_int(string a); | ||||
|  | @ -30,7 +31,6 @@ void end(); | |||
| void localmod__pub_foo(); | ||||
| int localmod__get_int_10(); | ||||
| #define pi 3 | ||||
| int pi2; // inited later
 | ||||
| 
 | ||||
| typedef enum { | ||||
| 	Color_red, // 0
 | ||||
|  |  | |||
|  | @ -155,6 +155,7 @@ fn (p mut Parser) fn_decl() ast.FnDecl { | |||
| 		}) | ||||
| 	} | ||||
| 	mut stmts := []ast.Stmt | ||||
| 	no_body := p.tok.kind != .lcbr | ||||
| 	if p.tok.kind == .lcbr { | ||||
| 		stmts = p.parse_block() | ||||
| 	} | ||||
|  | @ -175,6 +176,7 @@ fn (p mut Parser) fn_decl() ast.FnDecl { | |||
| 		is_method: is_method | ||||
| 		rec_mut: rec_mut | ||||
| 		is_c: is_c | ||||
| 		no_body: no_body | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1593,6 +1593,7 @@ fn (p mut Parser) global_decl() ast.GlobalDecl { | |||
| 
 | ||||
| 	return ast.GlobalDecl{ | ||||
| 		name: name | ||||
| 		typ: typ | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue