├── README.md ├── images └── diagram.png ├── lib ├── clr.ex ├── clr │ ├── air.ex │ ├── air │ │ ├── base.ex │ │ ├── function.ex │ │ ├── instruction.ex │ │ ├── instruction │ │ │ ├── assembly.ex │ │ │ ├── atomics.ex │ │ │ ├── casts.ex │ │ │ ├── control_flow.ex │ │ │ ├── dbg.ex │ │ │ ├── function.ex │ │ │ ├── maths.ex │ │ │ ├── mem.ex │ │ │ ├── pointer.ex │ │ │ ├── tests.ex │ │ │ └── vector.ex │ │ ├── literal.ex │ │ ├── lvalue.ex │ │ └── type.ex │ ├── analysis.ex │ ├── analysis │ │ ├── allocator.ex │ │ ├── stack_pointer.ex │ │ ├── undefined.ex │ │ └── unit.ex │ ├── block.ex │ ├── function.ex │ ├── type.ex │ └── zig_parser.ex └── mix.tasks │ └── clr.ex ├── mix.exs ├── mix.lock └── test ├── _support ├── test_air.ex ├── test_analyzer_mock.ex └── test_instruction.ex ├── air_examples ├── debug.FormattedPanic.startGreaterThanEnd.air ├── debug.defaultPanic.air ├── debug.getSelfDebugInfo.air ├── fieldparentptr.main.air ├── intfloat.main.air ├── os.linux.tls.initStatic.air ├── param_ptr_escape.escaped_param_ptr.air ├── pointers.main.air ├── posix.dl_iterate_phdr__anon_4201.air ├── stack_ptr_escape.escaped_ptr.air ├── start._start.air ├── start.expandStackSize.air ├── start.posixCallMainAndExit.air ├── switch_loop.main.air ├── undefined_value_use.main.air └── vector.main.air ├── air_parsers ├── atomics_test.exs ├── casts_test.exs ├── control_flow_test.exs ├── dbg_test.exs ├── function_test.exs ├── instruction_test.exs ├── literal_test.exs ├── lvalue_test.exs ├── maths_test.exs ├── mem_test.exs ├── pointers_test.exs ├── tests_test.exs ├── type_test.exs └── vector_test.exs ├── analysis ├── allocator_test.exs ├── instruction │ ├── casts_test.exs │ ├── control_flow_test.exs │ ├── dbg_test.exs │ ├── function_test.exs │ ├── maths_test.exs │ ├── mem_test.exs │ ├── pointer_test.exs │ └── tests_test.exs ├── stack_pointer_test.exs └── undefined_test.exs ├── block_test.exs ├── function_test.exs ├── integration ├── allocator │ ├── call_with_freed.zig │ ├── double_free.zig │ ├── free_after_transfer.zig │ ├── leaked_from_function_return.zig │ ├── leaks.zig │ ├── mismatched_allocator.zig │ ├── returns_freed.zig │ ├── stack_free.zig │ └── use_after_free.zig ├── full_integration_test.exs ├── stack_pointer │ ├── param_ptr_escape.zig │ └── stack_ptr_escape.zig ├── undefined │ ├── undefined_value_passed.zig │ └── undefined_value_use.zig ├── units │ └── unit_conflict.zig └── zig_parser_test.exs ├── parse_air_test.exs ├── test_helper.exs └── type_test.exs /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/README.md -------------------------------------------------------------------------------- /images/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/images/diagram.png -------------------------------------------------------------------------------- /lib/clr.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr.ex -------------------------------------------------------------------------------- /lib/clr/air.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air.ex -------------------------------------------------------------------------------- /lib/clr/air/base.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/base.ex -------------------------------------------------------------------------------- /lib/clr/air/function.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/function.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/assembly.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/assembly.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/atomics.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/atomics.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/casts.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/casts.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/control_flow.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/control_flow.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/dbg.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/dbg.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/function.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/function.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/maths.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/maths.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/mem.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/mem.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/pointer.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/pointer.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/tests.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/tests.ex -------------------------------------------------------------------------------- /lib/clr/air/instruction/vector.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/instruction/vector.ex -------------------------------------------------------------------------------- /lib/clr/air/literal.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/literal.ex -------------------------------------------------------------------------------- /lib/clr/air/lvalue.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/lvalue.ex -------------------------------------------------------------------------------- /lib/clr/air/type.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/air/type.ex -------------------------------------------------------------------------------- /lib/clr/analysis.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/analysis.ex -------------------------------------------------------------------------------- /lib/clr/analysis/allocator.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/analysis/allocator.ex -------------------------------------------------------------------------------- /lib/clr/analysis/stack_pointer.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/analysis/stack_pointer.ex -------------------------------------------------------------------------------- /lib/clr/analysis/undefined.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/analysis/undefined.ex -------------------------------------------------------------------------------- /lib/clr/analysis/unit.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/analysis/unit.ex -------------------------------------------------------------------------------- /lib/clr/block.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/block.ex -------------------------------------------------------------------------------- /lib/clr/function.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/function.ex -------------------------------------------------------------------------------- /lib/clr/type.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/type.ex -------------------------------------------------------------------------------- /lib/clr/zig_parser.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/clr/zig_parser.ex -------------------------------------------------------------------------------- /lib/mix.tasks/clr.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/lib/mix.tasks/clr.ex -------------------------------------------------------------------------------- /mix.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/mix.exs -------------------------------------------------------------------------------- /mix.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/mix.lock -------------------------------------------------------------------------------- /test/_support/test_air.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/_support/test_air.ex -------------------------------------------------------------------------------- /test/_support/test_analyzer_mock.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/_support/test_analyzer_mock.ex -------------------------------------------------------------------------------- /test/_support/test_instruction.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/_support/test_instruction.ex -------------------------------------------------------------------------------- /test/air_examples/debug.FormattedPanic.startGreaterThanEnd.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/debug.FormattedPanic.startGreaterThanEnd.air -------------------------------------------------------------------------------- /test/air_examples/debug.defaultPanic.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/debug.defaultPanic.air -------------------------------------------------------------------------------- /test/air_examples/debug.getSelfDebugInfo.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/debug.getSelfDebugInfo.air -------------------------------------------------------------------------------- /test/air_examples/fieldparentptr.main.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/fieldparentptr.main.air -------------------------------------------------------------------------------- /test/air_examples/intfloat.main.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/intfloat.main.air -------------------------------------------------------------------------------- /test/air_examples/os.linux.tls.initStatic.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/os.linux.tls.initStatic.air -------------------------------------------------------------------------------- /test/air_examples/param_ptr_escape.escaped_param_ptr.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/param_ptr_escape.escaped_param_ptr.air -------------------------------------------------------------------------------- /test/air_examples/pointers.main.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/pointers.main.air -------------------------------------------------------------------------------- /test/air_examples/posix.dl_iterate_phdr__anon_4201.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/posix.dl_iterate_phdr__anon_4201.air -------------------------------------------------------------------------------- /test/air_examples/stack_ptr_escape.escaped_ptr.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/stack_ptr_escape.escaped_ptr.air -------------------------------------------------------------------------------- /test/air_examples/start._start.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/start._start.air -------------------------------------------------------------------------------- /test/air_examples/start.expandStackSize.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/start.expandStackSize.air -------------------------------------------------------------------------------- /test/air_examples/start.posixCallMainAndExit.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/start.posixCallMainAndExit.air -------------------------------------------------------------------------------- /test/air_examples/switch_loop.main.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/switch_loop.main.air -------------------------------------------------------------------------------- /test/air_examples/undefined_value_use.main.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/undefined_value_use.main.air -------------------------------------------------------------------------------- /test/air_examples/vector.main.air: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_examples/vector.main.air -------------------------------------------------------------------------------- /test/air_parsers/atomics_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/atomics_test.exs -------------------------------------------------------------------------------- /test/air_parsers/casts_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/casts_test.exs -------------------------------------------------------------------------------- /test/air_parsers/control_flow_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/control_flow_test.exs -------------------------------------------------------------------------------- /test/air_parsers/dbg_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/dbg_test.exs -------------------------------------------------------------------------------- /test/air_parsers/function_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/function_test.exs -------------------------------------------------------------------------------- /test/air_parsers/instruction_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/instruction_test.exs -------------------------------------------------------------------------------- /test/air_parsers/literal_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/literal_test.exs -------------------------------------------------------------------------------- /test/air_parsers/lvalue_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/lvalue_test.exs -------------------------------------------------------------------------------- /test/air_parsers/maths_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/maths_test.exs -------------------------------------------------------------------------------- /test/air_parsers/mem_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/mem_test.exs -------------------------------------------------------------------------------- /test/air_parsers/pointers_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/pointers_test.exs -------------------------------------------------------------------------------- /test/air_parsers/tests_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/tests_test.exs -------------------------------------------------------------------------------- /test/air_parsers/type_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/type_test.exs -------------------------------------------------------------------------------- /test/air_parsers/vector_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/air_parsers/vector_test.exs -------------------------------------------------------------------------------- /test/analysis/allocator_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/allocator_test.exs -------------------------------------------------------------------------------- /test/analysis/instruction/casts_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/instruction/casts_test.exs -------------------------------------------------------------------------------- /test/analysis/instruction/control_flow_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/instruction/control_flow_test.exs -------------------------------------------------------------------------------- /test/analysis/instruction/dbg_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/instruction/dbg_test.exs -------------------------------------------------------------------------------- /test/analysis/instruction/function_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/instruction/function_test.exs -------------------------------------------------------------------------------- /test/analysis/instruction/maths_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/instruction/maths_test.exs -------------------------------------------------------------------------------- /test/analysis/instruction/mem_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/instruction/mem_test.exs -------------------------------------------------------------------------------- /test/analysis/instruction/pointer_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/instruction/pointer_test.exs -------------------------------------------------------------------------------- /test/analysis/instruction/tests_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/instruction/tests_test.exs -------------------------------------------------------------------------------- /test/analysis/stack_pointer_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/stack_pointer_test.exs -------------------------------------------------------------------------------- /test/analysis/undefined_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/analysis/undefined_test.exs -------------------------------------------------------------------------------- /test/block_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/block_test.exs -------------------------------------------------------------------------------- /test/function_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/function_test.exs -------------------------------------------------------------------------------- /test/integration/allocator/call_with_freed.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/allocator/call_with_freed.zig -------------------------------------------------------------------------------- /test/integration/allocator/double_free.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/allocator/double_free.zig -------------------------------------------------------------------------------- /test/integration/allocator/free_after_transfer.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/allocator/free_after_transfer.zig -------------------------------------------------------------------------------- /test/integration/allocator/leaked_from_function_return.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/allocator/leaked_from_function_return.zig -------------------------------------------------------------------------------- /test/integration/allocator/leaks.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/allocator/leaks.zig -------------------------------------------------------------------------------- /test/integration/allocator/mismatched_allocator.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/allocator/mismatched_allocator.zig -------------------------------------------------------------------------------- /test/integration/allocator/returns_freed.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/allocator/returns_freed.zig -------------------------------------------------------------------------------- /test/integration/allocator/stack_free.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/allocator/stack_free.zig -------------------------------------------------------------------------------- /test/integration/allocator/use_after_free.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/allocator/use_after_free.zig -------------------------------------------------------------------------------- /test/integration/full_integration_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/full_integration_test.exs -------------------------------------------------------------------------------- /test/integration/stack_pointer/param_ptr_escape.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/stack_pointer/param_ptr_escape.zig -------------------------------------------------------------------------------- /test/integration/stack_pointer/stack_ptr_escape.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/stack_pointer/stack_ptr_escape.zig -------------------------------------------------------------------------------- /test/integration/undefined/undefined_value_passed.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/undefined/undefined_value_passed.zig -------------------------------------------------------------------------------- /test/integration/undefined/undefined_value_use.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/undefined/undefined_value_use.zig -------------------------------------------------------------------------------- /test/integration/units/unit_conflict.zig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/units/unit_conflict.zig -------------------------------------------------------------------------------- /test/integration/zig_parser_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/integration/zig_parser_test.exs -------------------------------------------------------------------------------- /test/parse_air_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/parse_air_test.exs -------------------------------------------------------------------------------- /test/test_helper.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/test_helper.exs -------------------------------------------------------------------------------- /test/type_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ityonemo/clr/HEAD/test/type_test.exs --------------------------------------------------------------------------------