├── .circleci ├── codecov.sh ├── config.yml └── install-coverage.sh ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── README.md ├── release.toml ├── rust-toolchain ├── specs-visitor-derive ├── Cargo.toml ├── release.toml └── src │ ├── lib.rs │ └── tests.rs ├── specs-visitor ├── Cargo.toml ├── release.toml └── src │ └── lib.rs ├── src ├── ast │ ├── ast_node.rs │ ├── map_context.rs │ └── mod.rs ├── best_iter.rs ├── bin │ └── tin.rs ├── codegen │ ├── abi_type.rs │ ├── builtin.rs │ ├── data.rs │ ├── function.rs │ ├── mod.rs │ ├── tests.rs │ └── util.rs ├── diagnostic.rs ├── error.rs ├── graph.rs ├── interpreter │ ├── error.rs │ ├── macros.rs │ └── mod.rs ├── ir │ ├── builder.rs │ ├── component │ │ ├── constexpr │ │ │ ├── error.rs │ │ │ └── mod.rs │ │ ├── element.rs │ │ ├── layout.rs │ │ ├── location.rs │ │ ├── mod.rs │ │ ├── replacement.rs │ │ ├── symbol.rs │ │ └── ty │ │ │ ├── class.rs │ │ │ ├── error.rs │ │ │ └── mod.rs │ ├── error.rs │ ├── mod.rs │ ├── system │ │ ├── apply_replacements.rs │ │ ├── infer_constexpr.rs │ │ ├── infer_layouts.rs │ │ ├── infer_types.rs │ │ └── mod.rs │ └── tests.rs ├── lib.rs ├── module.rs ├── parser │ ├── mod.rs │ ├── tin.lalrpop │ └── util.rs ├── test_util.rs └── value.rs ├── testdata ├── err │ ├── bool_op_on_ints.err.txt │ ├── bool_op_on_ints.tn │ ├── call_on_non_function.err.txt │ ├── call_on_non_function.tn │ ├── closure_type_mismatch.err.txt │ ├── closure_type_mismatch.tn │ ├── constexpr_div_by_zero.err.txt │ ├── constexpr_div_by_zero.tn │ ├── div_by_zero.err.txt │ ├── div_by_zero.tn │ ├── garbage.err.txt │ ├── garbage.tn │ ├── integer_literal_overflow.err.txt │ ├── integer_literal_overflow.tn │ ├── select_on_non_record.err.txt │ ├── select_on_non_record.tn │ ├── string_literal_bad_escape_sequence.err.txt │ ├── string_literal_bad_escape_sequence.tn │ ├── string_literal_bad_unicode.err.txt │ ├── string_literal_bad_unicode.tn │ ├── string_literal_unterminated_unicode.err.txt │ ├── string_literal_unterminated_unicode.tn │ ├── string_literal_unterminated_unicode_end.err.txt │ └── string_literal_unterminated_unicode_end.tn └── ok │ ├── calls.tn │ ├── minimal.tn │ └── operator_mess.tn ├── tests └── integration_tests.rs └── tin-fuzz-target ├── .gitignore ├── Cargo.toml ├── convert-to-tests.sh ├── run.sh └── src └── main.rs /.circleci/codecov.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/.circleci/codecov.sh -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/.circleci/config.yml -------------------------------------------------------------------------------- /.circleci/install-coverage.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/.circleci/install-coverage.sh -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/Cargo.lock -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/Cargo.toml -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/README.md -------------------------------------------------------------------------------- /release.toml: -------------------------------------------------------------------------------- 1 | no-dev-version = true 2 | -------------------------------------------------------------------------------- /rust-toolchain: -------------------------------------------------------------------------------- 1 | nightly 2 | -------------------------------------------------------------------------------- /specs-visitor-derive/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/specs-visitor-derive/Cargo.toml -------------------------------------------------------------------------------- /specs-visitor-derive/release.toml: -------------------------------------------------------------------------------- 1 | no-dev-version = true 2 | -------------------------------------------------------------------------------- /specs-visitor-derive/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/specs-visitor-derive/src/lib.rs -------------------------------------------------------------------------------- /specs-visitor-derive/src/tests.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/specs-visitor-derive/src/tests.rs -------------------------------------------------------------------------------- /specs-visitor/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/specs-visitor/Cargo.toml -------------------------------------------------------------------------------- /specs-visitor/release.toml: -------------------------------------------------------------------------------- 1 | no-dev-version = true 2 | -------------------------------------------------------------------------------- /specs-visitor/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/specs-visitor/src/lib.rs -------------------------------------------------------------------------------- /src/ast/ast_node.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ast/ast_node.rs -------------------------------------------------------------------------------- /src/ast/map_context.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ast/map_context.rs -------------------------------------------------------------------------------- /src/ast/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ast/mod.rs -------------------------------------------------------------------------------- /src/best_iter.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/best_iter.rs -------------------------------------------------------------------------------- /src/bin/tin.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/bin/tin.rs -------------------------------------------------------------------------------- /src/codegen/abi_type.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/codegen/abi_type.rs -------------------------------------------------------------------------------- /src/codegen/builtin.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/codegen/builtin.rs -------------------------------------------------------------------------------- /src/codegen/data.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/codegen/data.rs -------------------------------------------------------------------------------- /src/codegen/function.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/codegen/function.rs -------------------------------------------------------------------------------- /src/codegen/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/codegen/mod.rs -------------------------------------------------------------------------------- /src/codegen/tests.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/codegen/tests.rs -------------------------------------------------------------------------------- /src/codegen/util.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/codegen/util.rs -------------------------------------------------------------------------------- /src/diagnostic.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/diagnostic.rs -------------------------------------------------------------------------------- /src/error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/error.rs -------------------------------------------------------------------------------- /src/graph.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/graph.rs -------------------------------------------------------------------------------- /src/interpreter/error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/interpreter/error.rs -------------------------------------------------------------------------------- /src/interpreter/macros.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/interpreter/macros.rs -------------------------------------------------------------------------------- /src/interpreter/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/interpreter/mod.rs -------------------------------------------------------------------------------- /src/ir/builder.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/builder.rs -------------------------------------------------------------------------------- /src/ir/component/constexpr/error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/constexpr/error.rs -------------------------------------------------------------------------------- /src/ir/component/constexpr/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/constexpr/mod.rs -------------------------------------------------------------------------------- /src/ir/component/element.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/element.rs -------------------------------------------------------------------------------- /src/ir/component/layout.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/layout.rs -------------------------------------------------------------------------------- /src/ir/component/location.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/location.rs -------------------------------------------------------------------------------- /src/ir/component/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/mod.rs -------------------------------------------------------------------------------- /src/ir/component/replacement.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/replacement.rs -------------------------------------------------------------------------------- /src/ir/component/symbol.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/symbol.rs -------------------------------------------------------------------------------- /src/ir/component/ty/class.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/ty/class.rs -------------------------------------------------------------------------------- /src/ir/component/ty/error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/ty/error.rs -------------------------------------------------------------------------------- /src/ir/component/ty/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/component/ty/mod.rs -------------------------------------------------------------------------------- /src/ir/error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/error.rs -------------------------------------------------------------------------------- /src/ir/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/mod.rs -------------------------------------------------------------------------------- /src/ir/system/apply_replacements.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/system/apply_replacements.rs -------------------------------------------------------------------------------- /src/ir/system/infer_constexpr.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/system/infer_constexpr.rs -------------------------------------------------------------------------------- /src/ir/system/infer_layouts.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/system/infer_layouts.rs -------------------------------------------------------------------------------- /src/ir/system/infer_types.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/system/infer_types.rs -------------------------------------------------------------------------------- /src/ir/system/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/system/mod.rs -------------------------------------------------------------------------------- /src/ir/tests.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/ir/tests.rs -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/lib.rs -------------------------------------------------------------------------------- /src/module.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/module.rs -------------------------------------------------------------------------------- /src/parser/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/parser/mod.rs -------------------------------------------------------------------------------- /src/parser/tin.lalrpop: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/parser/tin.lalrpop -------------------------------------------------------------------------------- /src/parser/util.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/parser/util.rs -------------------------------------------------------------------------------- /src/test_util.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/test_util.rs -------------------------------------------------------------------------------- /src/value.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/src/value.rs -------------------------------------------------------------------------------- /testdata/err/bool_op_on_ints.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/bool_op_on_ints.err.txt -------------------------------------------------------------------------------- /testdata/err/bool_op_on_ints.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/bool_op_on_ints.tn -------------------------------------------------------------------------------- /testdata/err/call_on_non_function.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/call_on_non_function.err.txt -------------------------------------------------------------------------------- /testdata/err/call_on_non_function.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/call_on_non_function.tn -------------------------------------------------------------------------------- /testdata/err/closure_type_mismatch.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/closure_type_mismatch.err.txt -------------------------------------------------------------------------------- /testdata/err/closure_type_mismatch.tn: -------------------------------------------------------------------------------- 1 | main = || -> i32 { 0f32 }; 2 | -------------------------------------------------------------------------------- /testdata/err/constexpr_div_by_zero.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/constexpr_div_by_zero.err.txt -------------------------------------------------------------------------------- /testdata/err/constexpr_div_by_zero.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/constexpr_div_by_zero.tn -------------------------------------------------------------------------------- /testdata/err/div_by_zero.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/div_by_zero.err.txt -------------------------------------------------------------------------------- /testdata/err/div_by_zero.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/div_by_zero.tn -------------------------------------------------------------------------------- /testdata/err/garbage.err.txt: -------------------------------------------------------------------------------- 1 | error: invalid token 2 | - testdata/err/garbage.tn:1:1 3 | 1 | ¤#"&"d!#%f 4 | | ^^ 5 | -------------------------------------------------------------------------------- /testdata/err/garbage.tn: -------------------------------------------------------------------------------- 1 | ¤#"&"d!#%f 2 | -------------------------------------------------------------------------------- /testdata/err/integer_literal_overflow.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/integer_literal_overflow.err.txt -------------------------------------------------------------------------------- /testdata/err/integer_literal_overflow.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/integer_literal_overflow.tn -------------------------------------------------------------------------------- /testdata/err/select_on_non_record.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/select_on_non_record.err.txt -------------------------------------------------------------------------------- /testdata/err/select_on_non_record.tn: -------------------------------------------------------------------------------- 1 | main = || -> i32 { 1i32.field }; 2 | -------------------------------------------------------------------------------- /testdata/err/string_literal_bad_escape_sequence.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/string_literal_bad_escape_sequence.err.txt -------------------------------------------------------------------------------- /testdata/err/string_literal_bad_escape_sequence.tn: -------------------------------------------------------------------------------- 1 | main = || -> { "foo \x bar \y baz" }; 2 | -------------------------------------------------------------------------------- /testdata/err/string_literal_bad_unicode.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/string_literal_bad_unicode.err.txt -------------------------------------------------------------------------------- /testdata/err/string_literal_bad_unicode.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/string_literal_bad_unicode.tn -------------------------------------------------------------------------------- /testdata/err/string_literal_unterminated_unicode.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/string_literal_unterminated_unicode.err.txt -------------------------------------------------------------------------------- /testdata/err/string_literal_unterminated_unicode.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/string_literal_unterminated_unicode.tn -------------------------------------------------------------------------------- /testdata/err/string_literal_unterminated_unicode_end.err.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/string_literal_unterminated_unicode_end.err.txt -------------------------------------------------------------------------------- /testdata/err/string_literal_unterminated_unicode_end.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/err/string_literal_unterminated_unicode_end.tn -------------------------------------------------------------------------------- /testdata/ok/calls.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/ok/calls.tn -------------------------------------------------------------------------------- /testdata/ok/minimal.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/ok/minimal.tn -------------------------------------------------------------------------------- /testdata/ok/operator_mess.tn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/testdata/ok/operator_mess.tn -------------------------------------------------------------------------------- /tests/integration_tests.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/tests/integration_tests.rs -------------------------------------------------------------------------------- /tin-fuzz-target/.gitignore: -------------------------------------------------------------------------------- 1 | /out/ 2 | -------------------------------------------------------------------------------- /tin-fuzz-target/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/tin-fuzz-target/Cargo.toml -------------------------------------------------------------------------------- /tin-fuzz-target/convert-to-tests.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/tin-fuzz-target/convert-to-tests.sh -------------------------------------------------------------------------------- /tin-fuzz-target/run.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/tin-fuzz-target/run.sh -------------------------------------------------------------------------------- /tin-fuzz-target/src/main.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dflemstr/tin/HEAD/tin-fuzz-target/src/main.rs --------------------------------------------------------------------------------