diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a868b6..c2fa8b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required(VERSION 3.24) project(sugar) -# find_package(cppfront REQUIRED) - set(CMAKE_CXX_STANDARD 20) enable_testing() @@ -33,3 +31,6 @@ add_expect_test(id003 ./tests/003.exp) add_expect_test(id004 ./tests/004.exp) add_expect_test(id005 ./tests/005.exp) add_expect_test(id006 ./tests/006.exp) + + + diff --git a/src/molasses/generator_primitives_x86_64_linux.cpp b/src/molasses/generator_primitives_x86_64_linux.cpp index 1f54e66..7a14128 100644 --- a/src/molasses/generator_primitives_x86_64_linux.cpp +++ b/src/molasses/generator_primitives_x86_64_linux.cpp @@ -5,7 +5,7 @@ namespace molasses { namespace unix_system { - +#ifdef linux struct syscall1 { int64_t operator()(int64_t syscall_id, int64_t p1) const { int64_t ret; @@ -71,6 +71,7 @@ namespace molasses { return ret; } }; +#endif } @@ -317,7 +318,9 @@ namespace molasses { ) { // TODO: handle errors } +#ifdef linux unix_system::syscall1{}(get(value_0), get(value_1)); +#endif } ) ); @@ -344,7 +347,9 @@ namespace molasses { ) { // TODO: handle errors } +#ifdef linux unix_system::syscall2{}(get(value_0), get(value_1), get(value_2)); +#endif } ) ); @@ -374,7 +379,9 @@ namespace molasses { ) { // TODO: handle errors } +#ifdef linux unix_system::syscall3{}(get(value_0), get(value_1), get(value_2), get(value_3)); +#endif } ) ); @@ -407,7 +414,9 @@ namespace molasses { ) { // TODO: handle errors } + #ifdef linux unix_system::syscall4{}(get(value_0), get(value_1), get(value_2), get(value_3), get(value_4)); + #endif } ) ); @@ -443,7 +452,9 @@ namespace molasses { ) { // TODO: handle errors } + #ifdef linux unix_system::syscall5{}(get(value_0), get(value_1), get(value_2), get(value_3), get(value_4), get(value_5)); + #endif } ) ); @@ -482,6 +493,7 @@ namespace molasses { ) { // TODO: handle errors } + #ifdef linux unix_system::syscall6{}( get(value_0), get(value_1), @@ -491,7 +503,7 @@ namespace molasses { get(value_5), get(value_6) ); - + #endif } ) ); diff --git a/tests/001.exp b/tests/001.exp index fb1c131..f996424 100644 --- a/tests/001.exp +++ b/tests/001.exp @@ -20,6 +20,7 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- spawn -noecho $SUGAR_EXECUTABLE tests/001/exit-with-1.mol lex parse "/tmp/sugar.generated.$BUILD_NAME" generate assemble expect { @@ -38,6 +39,8 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- + spawn -noecho /tmp/sugar.generated.$BUILD_NAME expect eof lassign [wait] pid spawnid os_error_flag value diff --git a/tests/002.exp b/tests/002.exp index 0799ba5..1837c4a 100644 --- a/tests/002.exp +++ b/tests/002.exp @@ -20,6 +20,7 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- spawn -noecho $SUGAR_EXECUTABLE tests/002/exit-with-1.mol lex parse /tmp/sugar.generated.$BUILD_NAME generate assemble expect { @@ -38,6 +39,8 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- + spawn -noecho /tmp/sugar.generated.$BUILD_NAME expect eof lassign [wait] pid spawnid os_error_flag value diff --git a/tests/003.exp b/tests/003.exp index bfa55ce..eb06973 100644 --- a/tests/003.exp +++ b/tests/003.exp @@ -25,6 +25,7 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- spawn -noecho $SUGAR_EXECUTABLE tests/003/exit-with-1.mol lex tests/003/library.mol lex merge parse /tmp/sugar.generated.$BUILD_NAME generate assemble expect { @@ -43,6 +44,8 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- + spawn -noecho /tmp/sugar.generated.$BUILD_NAME expect { error { abort "failed to compile" } diff --git a/tests/005.exp b/tests/005.exp index 37c12e5..ef0520e 100644 --- a/tests/005.exp +++ b/tests/005.exp @@ -20,6 +20,8 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE tests/005/exit-with-3.mol tests/005/library.mol lex-all merge-all parse expect { error { abort "failed to parse" } @@ -32,6 +34,8 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE tests/005/exit-with-3.mol tests/005/library.mol lex-all merge-all parse expect { error { abort "failed to parse" } @@ -44,6 +48,7 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- spawn -noecho $SUGAR_EXECUTABLE tests/005/exit-with-3.mol lex tests/005/library.mol lex merge parse /tmp/sugar.generated.$BUILD_NAME generate assemble expect { @@ -62,6 +67,8 @@ if {$value != 0} { abort "compiler crashed" } +# ------------------------------------------------------------------- + spawn -noecho /tmp/sugar.generated.$BUILD_NAME expect { error { abort "failed to compile" } diff --git a/tests/006.exp b/tests/006.exp index fd317b0..5e77865 100644 --- a/tests/006.exp +++ b/tests/006.exp @@ -1,7 +1,7 @@ #!/usr/bin/expect set SUGAR_EXECUTABLE $::env(SUGAR_EXECUTABLE) -set BUILD_NAME 005. +set BUILD_NAME 006. proc abort {reason} { puts "test failed $reason" @@ -20,6 +20,8 @@ if {$value == 0} { abort "compiler didn't crash" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE "fake_01.006.not_a_file" lex expect { error { abort "failed to parse" } @@ -32,6 +34,8 @@ if {$value == 0} { abort "compiler didn't crash" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE "fake_01.006.not_a_file" lex-all expect { error { abort "failed to parse" } @@ -44,6 +48,8 @@ if {$value == 0} { abort "compiler didn't crash" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE "tests/005/library.mol" lex merge expect { error { abort "failed to parse" } @@ -56,6 +62,8 @@ if {$value == 0} { abort "compiler didn't crash" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE merge expect { error { abort "failed to parse" } @@ -68,6 +76,8 @@ if {$value == 0} { abort "compiler didn't crash" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE parse expect { error { abort "failed to parse" } @@ -109,6 +119,8 @@ if {[file exists "/tmp/006.fake_target"]} { file delete "/tmp/006.fake_target" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE merge-all expect { error { abort "failed to parse" } @@ -133,6 +145,8 @@ if {$value == 0} { abort "compiler didn't crash" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE help expect { error { abort "failed to parse" } @@ -145,6 +159,8 @@ if {$value != 0} { abort "compiler crashed displaying help" } +# ------------------------------------------------------------------- + spawn -noecho $SUGAR_EXECUTABLE --help expect { error { abort "failed to parse" }