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