From ee4db9f96d04b6da072261188c730ec5c164da8c Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Mon, 4 Nov 2019 20:14:34 +0300 Subject: [PATCH] parser: $if clang, $if msvc, $if mingw --- vlib/compiler/comptime.v | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/vlib/compiler/comptime.v b/vlib/compiler/comptime.v index d45151cebc..d10ee01e3c 100644 --- a/vlib/compiler/comptime.v +++ b/vlib/compiler/comptime.v @@ -66,21 +66,20 @@ fn (p mut Parser) comp_time() { p.genln('#endif') } else if name == 'tinyc' { - p.genln('#ifdef __TINYC__') - p.check(.lcbr) - p.statements_no_rcbr() - if ! (p.tok == .dollar && p.peek() == .key_else) { - p.genln('#endif') - } + p.comptime_if_block('__TINYC__') } else if name == 'glibc' { - p.genln('#ifdef __GLIBC__') - p.check(.lcbr) - p.statements_no_rcbr() - if ! (p.tok == .dollar && p.peek() == .key_else) { - p.genln('#endif') - } + p.comptime_if_block('__GLIBC__') } + 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 { 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() 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') + } +}