diff --git a/docs/book/program_structure.md b/docs/book/program_structure.md index 7e3a4dfb..1c812907 100644 --- a/docs/book/program_structure.md +++ b/docs/book/program_structure.md @@ -36,10 +36,10 @@ Module is usually a git-repo but not necessary. Module that isn't published in g ### Manifest File -The manifest defines the module's minimum supported language version and dependencies. Here's an example manifest with a dependency on the Nevalang compiler version `0.29.1` and a third-party module: +The manifest defines the module's minimum supported language version and dependencies. Here's an example manifest with a dependency on the Nevalang compiler version `0.30.0` and a third-party module: ```yaml -neva: 0.29.1 +neva: 0.30.0 deps: github.com/nevalang/x: path: github.com/nevalang/x @@ -51,7 +51,7 @@ The `deps` field is a map where each dependency has an alias. When adding depend > WIP: CLI tool planned for CI/CD to verify module's backward compatibility ```yaml -neva: 0.29.1 +neva: 0.30.0 deps: github.com/nevalang/x@0-0-12: path: github.com/nevalang/x diff --git a/docs/tutorial.md b/docs/tutorial.md index 46929035..251619f7 100644 --- a/docs/tutorial.md +++ b/docs/tutorial.md @@ -77,7 +77,7 @@ After installation is finished, you should be able to run the `neva` CLI from yo neva version ``` -It should emit something like `0.29.1` +It should emit something like `0.30.0` ### Hello, World! @@ -256,7 +256,7 @@ This structure introduces two fundamental concepts in Nevalang: modules and pack A module is a set of packages with a manifest file (`neva.yaml`). When we created our project with `neva new`, it generated a basic module with the following manifest file: ```yaml -neva: 0.29.1 +neva: 0.30.0 ``` This defines the Nevalang version for our project. As your project grows, you can include dependencies on third-party modules here. diff --git a/e2e/99_bottles_verbose/neva.yml b/e2e/99_bottles_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/99_bottles_verbose/neva.yml +++ b/e2e/99_bottles_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/add_nums_from_stdin_naive/neva.yml b/e2e/add_nums_from_stdin_naive/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/add_nums_from_stdin_naive/neva.yml +++ b/e2e/add_nums_from_stdin_naive/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/add_nums_from_stdin_with_default_any/neva.yml b/e2e/add_nums_from_stdin_with_default_any/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/add_nums_from_stdin_with_default_any/neva.yml +++ b/e2e/add_nums_from_stdin_with_default_any/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/add_nums_from_stdin_with_err_handling/neva.yml b/e2e/add_nums_from_stdin_with_err_handling/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/add_nums_from_stdin_with_err_handling/neva.yml +++ b/e2e/add_nums_from_stdin_with_err_handling/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/add_nums_from_stdin_with_multuple_senders/neva.yml b/e2e/add_nums_from_stdin_with_multuple_senders/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/add_nums_from_stdin_with_multuple_senders/neva.yml +++ b/e2e/add_nums_from_stdin_with_multuple_senders/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/add_nums_from_stdin_with_sub_components/neva.yml b/e2e/add_nums_from_stdin_with_sub_components/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/add_nums_from_stdin_with_sub_components/neva.yml +++ b/e2e/add_nums_from_stdin_with_sub_components/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/add_nums_verbose/neva.yml b/e2e/add_nums_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/add_nums_verbose/neva.yml +++ b/e2e/add_nums_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/array_inport_holes/neva.yml b/e2e/array_inport_holes/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/array_inport_holes/neva.yml +++ b/e2e/array_inport_holes/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/array_outport_holes/neva.yml b/e2e/array_outport_holes/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/array_outport_holes/neva.yml +++ b/e2e/array_outport_holes/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/add_floats/neva.yml b/e2e/binary_operators/arithmetic/add_floats/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/add_floats/neva.yml +++ b/e2e/binary_operators/arithmetic/add_floats/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/add_ints/neva.yml b/e2e/binary_operators/arithmetic/add_ints/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/add_ints/neva.yml +++ b/e2e/binary_operators/arithmetic/add_ints/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/add_strings/neva.yml b/e2e/binary_operators/arithmetic/add_strings/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/add_strings/neva.yml +++ b/e2e/binary_operators/arithmetic/add_strings/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/divide_floats/neva.yml b/e2e/binary_operators/arithmetic/divide_floats/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/divide_floats/neva.yml +++ b/e2e/binary_operators/arithmetic/divide_floats/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/divide_ints/neva.yml b/e2e/binary_operators/arithmetic/divide_ints/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/divide_ints/neva.yml +++ b/e2e/binary_operators/arithmetic/divide_ints/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/modulo/neva.yml b/e2e/binary_operators/arithmetic/modulo/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/modulo/neva.yml +++ b/e2e/binary_operators/arithmetic/modulo/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/multiply_floats/neva.yml b/e2e/binary_operators/arithmetic/multiply_floats/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/multiply_floats/neva.yml +++ b/e2e/binary_operators/arithmetic/multiply_floats/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/multiply_ints/neva.yml b/e2e/binary_operators/arithmetic/multiply_ints/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/multiply_ints/neva.yml +++ b/e2e/binary_operators/arithmetic/multiply_ints/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/power/neva.yml b/e2e/binary_operators/arithmetic/power/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/power/neva.yml +++ b/e2e/binary_operators/arithmetic/power/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/subtract_floats/neva.yml b/e2e/binary_operators/arithmetic/subtract_floats/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/subtract_floats/neva.yml +++ b/e2e/binary_operators/arithmetic/subtract_floats/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/arithmetic/subtract_ints/neva.yml b/e2e/binary_operators/arithmetic/subtract_ints/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/arithmetic/subtract_ints/neva.yml +++ b/e2e/binary_operators/arithmetic/subtract_ints/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/bitwise/and/neva.yml b/e2e/binary_operators/bitwise/and/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/bitwise/and/neva.yml +++ b/e2e/binary_operators/bitwise/and/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/bitwise/left_shift/neva.yml b/e2e/binary_operators/bitwise/left_shift/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/bitwise/left_shift/neva.yml +++ b/e2e/binary_operators/bitwise/left_shift/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/bitwise/or/neva.yml b/e2e/binary_operators/bitwise/or/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/bitwise/or/neva.yml +++ b/e2e/binary_operators/bitwise/or/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/bitwise/right_shift/neva.yml b/e2e/binary_operators/bitwise/right_shift/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/bitwise/right_shift/neva.yml +++ b/e2e/binary_operators/bitwise/right_shift/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/bitwise/xor/neva.yml b/e2e/binary_operators/bitwise/xor/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/bitwise/xor/neva.yml +++ b/e2e/binary_operators/bitwise/xor/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/comparison/equal/neva.yml b/e2e/binary_operators/comparison/equal/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/comparison/equal/neva.yml +++ b/e2e/binary_operators/comparison/equal/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/comparison/greater_int/neva.yml b/e2e/binary_operators/comparison/greater_int/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/comparison/greater_int/neva.yml +++ b/e2e/binary_operators/comparison/greater_int/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/comparison/greater_or_equal_int/neva.yml b/e2e/binary_operators/comparison/greater_or_equal_int/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/comparison/greater_or_equal_int/neva.yml +++ b/e2e/binary_operators/comparison/greater_or_equal_int/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/comparison/less_int/neva.yml b/e2e/binary_operators/comparison/less_int/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/comparison/less_int/neva.yml +++ b/e2e/binary_operators/comparison/less_int/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/comparison/less_or_equal_int/neva.yml b/e2e/binary_operators/comparison/less_or_equal_int/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/comparison/less_or_equal_int/neva.yml +++ b/e2e/binary_operators/comparison/less_or_equal_int/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/comparison/not_equal/neva.yml b/e2e/binary_operators/comparison/not_equal/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/comparison/not_equal/neva.yml +++ b/e2e/binary_operators/comparison/not_equal/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/logical/and/neva.yml b/e2e/binary_operators/logical/and/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/logical/and/neva.yml +++ b/e2e/binary_operators/logical/and/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/binary_operators/logical/or/neva.yml b/e2e/binary_operators/logical/or/neva.yml index fc63f689..76fe7e70 100644 --- a/e2e/binary_operators/logical/or/neva.yml +++ b/e2e/binary_operators/logical/or/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/classify_int/neva.yml b/e2e/classify_int/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/classify_int/neva.yml +++ b/e2e/classify_int/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/cli_new/neva.yml b/e2e/cli_new/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/cli_new/neva.yml +++ b/e2e/cli_new/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/comments/neva.yml b/e2e/comments/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/comments/neva.yml +++ b/e2e/comments/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/compiler_error_unused_outport/neva.yml b/e2e/compiler_error_unused_outport/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/compiler_error_unused_outport/neva.yml +++ b/e2e/compiler_error_unused_outport/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/const_refs_verbose/neva.yml b/e2e/const_refs_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/const_refs_verbose/neva.yml +++ b/e2e/const_refs_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/div_test/neva.yml b/e2e/div_test/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/div_test/neva.yml +++ b/e2e/div_test/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/do_nothing_verbose/neva.yml b/e2e/do_nothing_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/do_nothing_verbose/neva.yml +++ b/e2e/do_nothing_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/duplicate_receiver/neva.yml b/e2e/duplicate_receiver/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/duplicate_receiver/neva.yml +++ b/e2e/duplicate_receiver/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/duplicate_sender/neva.yml b/e2e/duplicate_sender/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/duplicate_sender/neva.yml +++ b/e2e/duplicate_sender/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/echo_verbose/neva.yml b/e2e/echo_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/echo_verbose/neva.yml +++ b/e2e/echo_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/enums_verbose/neva.yml b/e2e/enums_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/enums_verbose/neva.yml +++ b/e2e/enums_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/float_const_with_int_lit/neva.yml b/e2e/float_const_with_int_lit/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/float_const_with_int_lit/neva.yml +++ b/e2e/float_const_with_int_lit/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/for_loop_over_list_verbose/neva.yml b/e2e/for_loop_over_list_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/for_loop_over_list_verbose/neva.yml +++ b/e2e/for_loop_over_list_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/for_with_range_and_if/neva.yml b/e2e/for_with_range_and_if/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/for_with_range_and_if/neva.yml +++ b/e2e/for_with_range_and_if/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/hello_world_verbose/neva.yml b/e2e/hello_world_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/hello_world_verbose/neva.yml +++ b/e2e/hello_world_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/hello_world_with_const_sender/neva.yml b/e2e/hello_world_with_const_sender/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/hello_world_with_const_sender/neva.yml +++ b/e2e/hello_world_with_const_sender/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/hello_world_with_implicit_any/neva.yml b/e2e/hello_world_with_implicit_any/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/hello_world_with_implicit_any/neva.yml +++ b/e2e/hello_world_with_implicit_any/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/hello_world_with_literal_sender/neva.yml b/e2e/hello_world_with_literal_sender/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/hello_world_with_literal_sender/neva.yml +++ b/e2e/hello_world_with_literal_sender/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/hello_world_with_then_connection/neva.yml b/e2e/hello_world_with_then_connection/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/hello_world_with_then_connection/neva.yml +++ b/e2e/hello_world_with_then_connection/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/hello_world_with_unnamed_node/neva.yml b/e2e/hello_world_with_unnamed_node/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/hello_world_with_unnamed_node/neva.yml +++ b/e2e/hello_world_with_unnamed_node/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/inc_test/neva.yml b/e2e/inc_test/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/inc_test/neva.yml +++ b/e2e/inc_test/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/incompat_comp_type_arg/neva.yml b/e2e/incompat_comp_type_arg/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/incompat_comp_type_arg/neva.yml +++ b/e2e/incompat_comp_type_arg/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/incompat_types_with_untyped_port/neva.yml b/e2e/incompat_types_with_untyped_port/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/incompat_types_with_untyped_port/neva.yml +++ b/e2e/incompat_types_with_untyped_port/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/interface_anonymous/neva.yml b/e2e/interface_anonymous/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/interface_anonymous/neva.yml +++ b/e2e/interface_anonymous/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/interface_verbose/neva.yml b/e2e/interface_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/interface_verbose/neva.yml +++ b/e2e/interface_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/interface_with_imports/neva.yml b/e2e/interface_with_imports/neva.yml index 5b2b6f1a..3e1a5e16 100644 --- a/e2e/interface_with_imports/neva.yml +++ b/e2e/interface_with_imports/neva.yml @@ -1,4 +1,4 @@ -neva: 0.29.1 +neva: 0.30.0 deps: github.com/nevalang/x: path: github.com/nevalang/x diff --git a/e2e/list_with_neg_nums/neva.yml b/e2e/list_with_neg_nums/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/list_with_neg_nums/neva.yml +++ b/e2e/list_with_neg_nums/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/local_imports/neva.yml b/e2e/local_imports/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/local_imports/neva.yml +++ b/e2e/local_imports/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/map_list_verbose/neva.yml b/e2e/map_list_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/map_list_verbose/neva.yml +++ b/e2e/map_list_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/multiply_numbers/neva.yml b/e2e/multiply_numbers/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/multiply_numbers/neva.yml +++ b/e2e/multiply_numbers/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/non_unique_fan_in/neva.yml b/e2e/non_unique_fan_in/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/non_unique_fan_in/neva.yml +++ b/e2e/non_unique_fan_in/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/non_unique_fan_out/neva.yml b/e2e/non_unique_fan_out/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/non_unique_fan_out/neva.yml +++ b/e2e/non_unique_fan_out/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/order_dependend_with_arr_inport/neva.yml b/e2e/order_dependend_with_arr_inport/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/order_dependend_with_arr_inport/neva.yml +++ b/e2e/order_dependend_with_arr_inport/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/print_float/neva.yml b/e2e/print_float/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/print_float/neva.yml +++ b/e2e/print_float/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/regex_submatch_verbose/neva.yml b/e2e/regex_submatch_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/regex_submatch_verbose/neva.yml +++ b/e2e/regex_submatch_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/run_cli_not_from_module_root/neva.yml b/e2e/run_cli_not_from_module_root/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/run_cli_not_from_module_root/neva.yml +++ b/e2e/run_cli_not_from_module_root/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/simple_fan_out/neva.yml b/e2e/simple_fan_out/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/simple_fan_out/neva.yml +++ b/e2e/simple_fan_out/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/slow_iteration_with_for/neva.yml b/e2e/slow_iteration_with_for/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/slow_iteration_with_for/neva.yml +++ b/e2e/slow_iteration_with_for/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/slow_iteration_with_map/neva.yml b/e2e/slow_iteration_with_map/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/slow_iteration_with_map/neva.yml +++ b/e2e/slow_iteration_with_map/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/struct_builder_verbose/neva.yml b/e2e/struct_builder_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/struct_builder_verbose/neva.yml +++ b/e2e/struct_builder_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/struct_builder_with_sugar/neva.yml b/e2e/struct_builder_with_sugar/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/struct_builder_with_sugar/neva.yml +++ b/e2e/struct_builder_with_sugar/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/struct_selector_on_port_addr/neva.yml b/e2e/struct_selector_on_port_addr/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/struct_selector_on_port_addr/neva.yml +++ b/e2e/struct_selector_on_port_addr/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/struct_selector_verbose/neva.yml b/e2e/struct_selector_verbose/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/struct_selector_verbose/neva.yml +++ b/e2e/struct_selector_verbose/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/struct_selector_with_more_sugar/neva.yml b/e2e/struct_selector_with_more_sugar/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/struct_selector_with_more_sugar/neva.yml +++ b/e2e/struct_selector_with_more_sugar/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/struct_selector_with_sugar/neva.yml b/e2e/struct_selector_with_sugar/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/struct_selector_with_sugar/neva.yml +++ b/e2e/struct_selector_with_sugar/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/e2e/type_expr_with_imported_type_arg/neva.yml b/e2e/type_expr_with_imported_type_arg/neva.yml index 83fb33bf..1f99075e 100644 --- a/e2e/type_expr_with_imported_type_arg/neva.yml +++ b/e2e/type_expr_with_imported_type_arg/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/examples/neva.yml b/examples/neva.yml index 5b2b6f1a..3e1a5e16 100644 --- a/examples/neva.yml +++ b/examples/neva.yml @@ -1,4 +1,4 @@ -neva: 0.29.1 +neva: 0.30.0 deps: github.com/nevalang/x: path: github.com/nevalang/x diff --git a/internal/builder/tests/intergration_test.go b/internal/builder/tests/intergration_test.go index 1af31044..a2be4180 100644 --- a/internal/builder/tests/intergration_test.go +++ b/internal/builder/tests/intergration_test.go @@ -19,7 +19,7 @@ func TestBuilder_WDIsModRoot(t *testing.T) { mod, ok := build.Modules[build.EntryModRef] require.True(t, ok) require.Len(t, mod.Packages, 1) - require.Equal(t, "0.29.1", mod.Manifest.LanguageVersion) // defined in yml + require.Equal(t, "0.30.0", mod.Manifest.LanguageVersion) // defined in yml pkg, ok := mod.Packages["do_nothing"] require.True(t, ok) @@ -42,7 +42,7 @@ func TestBuilder_WDIsPkg(t *testing.T) { mod, ok := build.Modules[build.EntryModRef] require.True(t, ok) require.Len(t, mod.Packages, 1) - require.Equal(t, "0.29.1", mod.Manifest.LanguageVersion) // defined in yml + require.Equal(t, "0.30.0", mod.Manifest.LanguageVersion) // defined in yml pkg, ok := mod.Packages["do_nothing"] require.True(t, ok) diff --git a/internal/builder/tests/testmod/neva.yml b/internal/builder/tests/testmod/neva.yml index 83fb33bf..1f99075e 100644 --- a/internal/builder/tests/testmod/neva.yml +++ b/internal/builder/tests/testmod/neva.yml @@ -1 +1 @@ -neva: 0.29.1 \ No newline at end of file +neva: 0.30.0 \ No newline at end of file diff --git a/internal/compiler/desugarer/union.go b/internal/compiler/desugarer/union.go new file mode 100644 index 00000000..5ffd8cc9 --- /dev/null +++ b/internal/compiler/desugarer/union.go @@ -0,0 +1,213 @@ +package desugarer + +// import ( +// "fmt" + +// "github.com/nevalang/neva/internal/compiler" +// src "github.com/nevalang/neva/internal/compiler/sourcecode" +// "github.com/nevalang/neva/internal/compiler/sourcecode/core" +// ) + +// type handleUnionSenderResult struct { +// replace src.Connection +// insert []src.Connection +// } + +// // desugarUnionSender handles the four cases of union senders: +// // 1. Input::Int -> (non-chained, tag only) +// // 2. -> Input::Int -> (chained, tag only) +// // 3. Input::Int(foo) -> (non-chained, with value) +// // 4. -> Input::Int(foo) -> (chained, with value) +// func (d *Desugarer) desugarUnionSender( +// union src.UnionSender, +// normConn src.NormalConnection, +// nodesToInsert map[string]src.Node, +// constsToInsert map[string]src.Const, +// ) (handleUnionSenderResult, error) { +// if union.Data == nil { +// // cases 1 & 2: tag only +// return d.handleTagOnlyUnionSender(union, normConn, nodesToInsert, constsToInsert) +// } +// // cases 3 & 4: with value +// return d.handleValueUnionSender(union, normConn, nodesToInsert, constsToInsert) +// } + +// // handleTagOnlyUnionSender handles cases 1 & 2 (tag-only union senders) +// func (d *Desugarer) handleTagOnlyUnionSender( +// union src.UnionSender, +// normConn src.NormalConnection, +// nodesToInsert map[string]src.Node, +// constsToInsert map[string]src.Const, +// ) (handleUnionSenderResult, error) { +// // create virtual const of type union with specified tag +// d.virtualConstCount++ +// constName := fmt.Sprintf("__union_const__%d", d.virtualConstCount) + +// // create const with union type and tag +// constsToInsert[constName] = src.Const{ +// Value: src.ConstValue{ +// Message: &src.MsgLiteral{ +// Union: &src.UnionLiteral{ +// EntityRef: union.EntityRef, +// Tag: union.Tag, +// }, +// }, +// }, +// Meta: union.Meta, +// } + +// // create new node and bind const to it +// constNodeName := fmt.Sprintf("__new__%d", d.virtualConstCount) +// nodesToInsert[constNodeName] = src.Node{ +// EntityRef: core.EntityRef{ +// Pkg: "builtin", +// Name: "New", +// }, +// Directives: map[src.Directive][]string{ +// compiler.BindDirective: {constName}, +// }, +// Meta: union.Meta, +// } + +// // create connection from new node to original receiver +// replace := src.Connection{ +// Normal: &src.NormalConnection{ +// Senders: []src.ConnectionSender{{ +// PortAddr: &src.PortAddr{ +// Node: constNodeName, +// Port: "res", +// }, +// Meta: union.Meta, +// }}, +// Receivers: normConn.Receivers, +// Meta: union.Meta, +// }, +// Meta: union.Meta, +// } + +// insert := []src.Connection{ +// { +// Normal: &src.NormalConnection{ +// Senders: []src.ConnectionSender{{ +// Const: &src.Const{ +// Value: src.ConstValue{ +// Message: &src.MsgLiteral{ +// Union: &src.UnionLiteral{ +// EntityRef: union.EntityRef, +// Tag: union.Tag, +// }, +// }, +// }, +// }, +// Meta: union.Meta, +// }}, +// Receivers: []src.ConnectionReceiver{{ +// PortAddr: &src.PortAddr{ +// Node: constNodeName, +// Port: "data", +// }, +// Meta: union.Meta, +// }}, +// Meta: union.Meta, +// }, +// Meta: union.Meta, +// }, +// } + +// return handleUnionSenderResult{ +// replace: replace, +// insert: insert, +// }, nil +// } + +// // handleValueUnionSender handles cases 3 & 4 (union senders with wrapped values) +// func (d *Desugarer) handleValueUnionSender( +// union src.UnionSender, +// normConn src.NormalConnection, +// nodesToInsert map[string]src.Node, +// constsToInsert map[string]src.Const, +// ) (handleUnionSenderResult, error) { +// // create virtual const for tag +// d.virtualConstCount++ +// constName := fmt.Sprintf("__union_tag__%d", d.virtualConstCount) + +// constsToInsert[constName] = src.Const{ +// Value: src.ConstValue{ +// Message: &src.MsgLiteral{ +// Str: &union.Tag, +// }, +// }, +// Meta: union.Meta, +// } + +// // create union wrapper node +// nodeName := fmt.Sprintf("__union__%d", d.virtualConstCount) +// nodesToInsert[nodeName] = src.Node{ +// EntityRef: core.EntityRef{ +// Pkg: "builtin", +// Name: "UnionWrap", +// }, +// Meta: union.Meta, +// } + +// // create connections for the union wrapper +// replace := src.Connection{ +// Normal: &src.NormalConnection{ +// Senders: []src.ConnectionSender{{ +// PortAddr: &src.PortAddr{ +// Node: nodeName, +// Port: "res", +// }, +// Meta: union.Meta, +// }}, +// Receivers: normConn.Receivers, +// Meta: union.Meta, +// }, +// Meta: union.Meta, +// } + +// insert := []src.Connection{ +// { +// Normal: &src.NormalConnection{ +// Senders: []src.ConnectionSender{{ +// Const: &src.Const{ +// Value: src.ConstValue{ +// Message: &src.MsgLiteral{ +// Str: &union.Tag, +// }, +// }, +// }, +// Meta: union.Meta, +// }}, +// Receivers: []src.ConnectionReceiver{{ +// PortAddr: &src.PortAddr{ +// Node: nodeName, +// Port: "tag", +// }, +// Meta: union.Meta, +// }}, +// Meta: union.Meta, +// }, +// Meta: union.Meta, +// }, +// { +// Normal: &src.NormalConnection{ +// Senders: []src.ConnectionSender{*union.Data}, +// Receivers: []src.ConnectionReceiver{{ +// PortAddr: &src.PortAddr{ +// Node: nodeName, +// Port: "data", +// }, +// Meta: union.Meta, +// }}, +// Meta: union.Meta, +// }, +// Meta: union.Meta, +// }, +// } + +// return handleUnionSenderResult{ +// replace: replace, +// insert: insert, +// }, nil +// } diff --git a/pkg/version.go b/pkg/version.go index b63bd065..ba3b0737 100644 --- a/pkg/version.go +++ b/pkg/version.go @@ -2,4 +2,4 @@ package pkg // Version is the current version of the language and stdlib. // Don't forget to update it before release new tag. -var Version = "0.29.1" //nolint:gochecknoglobals +var Version = "0.30.0" //nolint:gochecknoglobals diff --git a/std/neva.yml b/std/neva.yml index 28fdaf95..bb19ad15 100644 --- a/std/neva.yml +++ b/std/neva.yml @@ -1 +1 @@ -neva: 0.29.1 +neva: 0.30.0