diff --git a/CMakeLists.txt b/CMakeLists.txt index 10ed5a2..1516e03 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,9 +17,11 @@ pkg_check_modules(NIX_MAIN REQUIRED IMPORTED_TARGET nix-main) add_executable(nix-irc src/irc/main.cpp src/irc/parser.cpp + src/irc/lexer.cpp src/irc/resolver.cpp src/irc/ir_gen.cpp src/irc/serializer.cpp + src/irc/types.cpp ) target_include_directories(nix-irc PRIVATE @@ -38,10 +40,12 @@ target_link_libraries(nix-irc PRIVATE add_library(nix-ir-plugin MODULE src/plugin.cpp src/irc/parser.cpp + src/irc/lexer.cpp src/irc/resolver.cpp src/irc/ir_gen.cpp src/irc/serializer.cpp src/irc/evaluator.cpp + src/irc/types.cpp ) # Include directories from pkg-config @@ -65,6 +69,10 @@ target_link_libraries(nix-ir-plugin PRIVATE ${NIX_MAIN_LINK_LIBRARIES} ) +# Set output directories to build/ +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + # Set output name set_target_properties(nix-ir-plugin PROPERTIES PREFIX "" @@ -79,6 +87,8 @@ add_executable(regression_test tests/regression_test.cpp src/irc/serializer.cpp src/irc/parser.cpp + src/irc/lexer.cpp + src/irc/types.cpp ) target_include_directories(regression_test PRIVATE @@ -93,3 +103,7 @@ target_link_libraries(regression_test PRIVATE ${NIX_EXPR_LINK_LIBRARIES} ${NIX_UTIL_LINK_LIBRARIES} ) + +# CTest integration +enable_testing() +add_test(NAME regression_test COMMAND regression_test) diff --git a/flake.nix b/flake.nix index 4f98a7f..ad043d0 100644 --- a/flake.nix +++ b/flake.nix @@ -11,17 +11,19 @@ in { default = pkgs.mkShell { name = "nixir"; - buildInputs = with pkgs; [ + buildInputs = with pkgs; let + nixForLinking = nixVersions.nixComponents_2_32; + in [ boost.dev libblake3.dev + pegtl - nixVersions.nixComponents_2_32.nix-store - nixVersions.nixComponents_2_32.nix-expr - nixVersions.nixComponents_2_32.nix-cmd - nixVersions.nixComponents_2_32.nix-fetchers - nixVersions.nixComponents_2_32.nix-main - nixVersions.nixComponents_2_32.nix-util - nixVersions.nix_2_32 + nixForLinking.nix-store + nixForLinking.nix-expr + nixForLinking.nix-cmd + nixForLinking.nix-fetchers + nixForLinking.nix-main + nixForLinking.nix-util ]; nativeBuildInputs = with pkgs; [ diff --git a/tests/fixtures/lambda_pattern.nixr b/tests/fixtures/lambda_pattern.nixr new file mode 100644 index 0000000..4e34156 Binary files /dev/null and b/tests/fixtures/lambda_pattern.nixr differ diff --git a/tests/fixtures/string_interp.nixr b/tests/fixtures/string_interp.nixr new file mode 100644 index 0000000..0c4d4a2 Binary files /dev/null and b/tests/fixtures/string_interp.nixr differ diff --git a/tests/language/interp_test.nix b/tests/language/interp_test.nix new file mode 100644 index 0000000..73b4c16 --- /dev/null +++ b/tests/language/interp_test.nix @@ -0,0 +1,2 @@ +# Test string interpolation +let x = "world"; in "Hello ${x}!" diff --git a/tests/language/pattern_test.nix b/tests/language/pattern_test.nix new file mode 100644 index 0000000..e654f6c --- /dev/null +++ b/tests/language/pattern_test.nix @@ -0,0 +1,5 @@ +# Test lambda patterns +({ + name, + version ? "1.0", +}: "${name}-${version}") {name = "test";}