cgen: #else
parent
2738a0c776
commit
ce73ced932
|
@ -391,6 +391,7 @@ pub:
|
||||||
stmts []Stmt
|
stmts []Stmt
|
||||||
pos token.Position
|
pos token.Position
|
||||||
mut:
|
mut:
|
||||||
|
has_else bool
|
||||||
else_stmts []Stmt
|
else_stmts []Stmt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -270,10 +270,12 @@ fn (g mut Gen) stmt(node ast.Stmt) {
|
||||||
ast.CompIf {
|
ast.CompIf {
|
||||||
g.writeln('\n#ifdef ' + comp_if_to_ifdef(it.val))
|
g.writeln('\n#ifdef ' + comp_if_to_ifdef(it.val))
|
||||||
g.writeln('// #if $it.val')
|
g.writeln('// #if $it.val')
|
||||||
// g.expr(it.cond)
|
|
||||||
// println('comp if stmts $g.file.path:$it.pos.line_nr')
|
// println('comp if stmts $g.file.path:$it.pos.line_nr')
|
||||||
g.stmts(it.stmts)
|
g.stmts(it.stmts)
|
||||||
// println('done')
|
if it.has_else {
|
||||||
|
g.writeln('#else')
|
||||||
|
g.stmts(it.else_stmts)
|
||||||
|
}
|
||||||
g.writeln('#endif')
|
g.writeln('#endif')
|
||||||
}
|
}
|
||||||
ast.DeferStmt {
|
ast.DeferStmt {
|
||||||
|
@ -1728,8 +1730,7 @@ fn (g mut Gen) write_types(types []table.TypeSymbol) {
|
||||||
g.definitions.writeln('};\n')
|
g.definitions.writeln('};\n')
|
||||||
}
|
}
|
||||||
// table.Alias, table.SumType { TODO
|
// table.Alias, table.SumType { TODO
|
||||||
table.Alias {
|
table.Alias {}
|
||||||
}
|
|
||||||
table.Enum {
|
table.Enum {
|
||||||
g.definitions.writeln('typedef enum {')
|
g.definitions.writeln('typedef enum {')
|
||||||
for j, val in it.vals {
|
for j, val in it.vals {
|
||||||
|
@ -2021,6 +2022,9 @@ fn comp_if_to_ifdef(name string) string {
|
||||||
'linux_or_macos' {
|
'linux_or_macos' {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
|
'mingw' {
|
||||||
|
return '__MINGW32__'
|
||||||
|
}
|
||||||
'no_bounds_checking' {
|
'no_bounds_checking' {
|
||||||
return 'NO_BOUNDS_CHECK'
|
return 'NO_BOUNDS_CHECK'
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ pub fn (p mut Parser) comp_if() ast.CompIf {
|
||||||
if p.tok.kind == .dollar && p.peek_tok.kind == .key_else {
|
if p.tok.kind == .dollar && p.peek_tok.kind == .key_else {
|
||||||
p.next()
|
p.next()
|
||||||
p.check(.key_else)
|
p.check(.key_else)
|
||||||
|
node.has_else = true
|
||||||
node.else_stmts = p.parse_block()
|
node.else_stmts = p.parse_block()
|
||||||
}
|
}
|
||||||
return node
|
return node
|
||||||
|
|
Loading…
Reference in New Issue