parser: $if clang, $if msvc, $if mingw

pull/2650/head
Alexander Medvednikov 2019-11-04 20:14:34 +03:00
parent b8b72580a7
commit ee4db9f96d
1 changed files with 20 additions and 12 deletions

View File

@ -66,21 +66,20 @@ fn (p mut Parser) comp_time() {
p.genln('#endif') p.genln('#endif')
} }
else if name == 'tinyc' { else if name == 'tinyc' {
p.genln('#ifdef __TINYC__') p.comptime_if_block('__TINYC__')
p.check(.lcbr)
p.statements_no_rcbr()
if ! (p.tok == .dollar && p.peek() == .key_else) {
p.genln('#endif')
}
} }
else if name == 'glibc' { else if name == 'glibc' {
p.genln('#ifdef __GLIBC__') p.comptime_if_block('__GLIBC__')
p.check(.lcbr)
p.statements_no_rcbr()
if ! (p.tok == .dollar && p.peek() == .key_else) {
p.genln('#endif')
}
} }
else if name == 'mingw' {
p.comptime_if_block('__MINGW32__')
}
else if name == 'msvc' {
p.comptime_if_block('__MSC_VER__')
}
else if name == 'clang' {
p.comptime_if_block('__clang__')
}
else { else {
println('Supported platforms:') println('Supported platforms:')
println(supported_platforms) println(supported_platforms)
@ -439,3 +438,12 @@ fn (p mut Parser) gen_array_map(str_typ string, method_ph int) string {
p.close_scope() p.close_scope()
return 'array_' + map_type return 'array_' + map_type
} }
fn (p mut Parser) comptime_if_block(name string) {
p.genln('#ifdef $name')
p.check(.lcbr)
p.statements_no_rcbr()
if ! (p.tok == .dollar && p.peek() == .key_else) {
p.genln('#endif')
}
}