diff --git a/.gitignore b/.gitignore index 2e3fcf88..ae7c5b28 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,4 @@ xcuserdata/ scratch.wren # The baseline file is machine-specific, so doesn't get checked in. -benchmark/baseline.txt +test/benchmark/baseline.txt diff --git a/doc/site/performance.markdown b/doc/site/performance.markdown index 3f855043..81527120 100644 --- a/doc/site/performance.markdown +++ b/doc/site/performance.markdown @@ -93,7 +93,7 @@ languages benchmarked, including Wren, because Mike Pall is a robot from the future. The benchmark harness and programs are -[here](https://github.com/munificent/wren/tree/master/benchmark). +[here](https://github.com/munificent/wren/tree/master/test/benchmark). ## Why is Wren fast? diff --git a/script/benchmark.py b/script/benchmark.py index 9b8ec7ab..255a4705 100755 --- a/script/benchmark.py +++ b/script/benchmark.py @@ -39,7 +39,7 @@ import sys # To generate a baseline file, run this script with "--generate-baseline". WREN_DIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) -BENCHMARK_DIR = os.path.join(WREN_DIR, 'benchmark') +BENCHMARK_DIR = os.path.join(WREN_DIR, 'test', 'benchmark') # How many times to run a given benchmark. NUM_TRIALS = 10 diff --git a/script/test.py b/script/test.py index 1ec58294..33b63888 100755 --- a/script/test.py +++ b/script/test.py @@ -11,7 +11,6 @@ import sys # Runs the tests. WREN_DIR = dirname(dirname(realpath(__file__))) -TEST_DIR = join(WREN_DIR, 'test') WREN_APP = join(WREN_DIR, 'bin', 'wrend') EXPECT_PATTERN = re.compile(r'// expect: (.*)') @@ -243,7 +242,9 @@ def run_test(path): print(' ' + color.PINK + fail + color.DEFAULT) print('') -walk(TEST_DIR, run_test) + +for dir in ['core', 'io', 'language', 'limit']: + walk(join(WREN_DIR, 'test', dir), run_test) print_line() if failed == 0: diff --git a/test/README.md b/test/README.md new file mode 100644 index 00000000..9652fa8e --- /dev/null +++ b/test/README.md @@ -0,0 +1,21 @@ +This contains the automated validation suite for the VM and built-in libraries. + +* `benchmark/` - Performance tests. These aren't strictly pass/fail, but let us + compare performance both against other languages and against previous builds + of Wren itself. + +* `core/` - Tests for the built in core library, mainly methods on the core + classes. If a bug is in `wren_core.c` or `wren_value.c`, it will most likely + break one of these tests. + +* `io/` - Tests for the built in IO library. In other words, methods on the + `IO` class. If a bug is in `wren_io.c`, it should break one of these tests. + +* `language/` - Tests of the language itself, its grammar and runtime + semantics. If a bug is in `wren_compiler.c` or `wren_vm.c`, it will most + likely break one of these tests. This includes tests for the syntax for the + literal forms of the core classes. + +* `limit/` - Tests for various hardcoded limits. The language doesn't + officially *specify* these limits, but the Wren implementation has them. + These tests ensure that limit behavior is well-defined and tested. \ No newline at end of file diff --git a/benchmark/README.md b/test/benchmark/README.md similarity index 100% rename from benchmark/README.md rename to test/benchmark/README.md diff --git a/benchmark/binary_trees.lua b/test/benchmark/binary_trees.lua similarity index 100% rename from benchmark/binary_trees.lua rename to test/benchmark/binary_trees.lua diff --git a/benchmark/binary_trees.py b/test/benchmark/binary_trees.py similarity index 100% rename from benchmark/binary_trees.py rename to test/benchmark/binary_trees.py diff --git a/benchmark/binary_trees.rb b/test/benchmark/binary_trees.rb similarity index 100% rename from benchmark/binary_trees.rb rename to test/benchmark/binary_trees.rb diff --git a/benchmark/binary_trees.wren b/test/benchmark/binary_trees.wren similarity index 100% rename from benchmark/binary_trees.wren rename to test/benchmark/binary_trees.wren diff --git a/benchmark/delta_blue.lua.inprogress b/test/benchmark/delta_blue.lua.inprogress similarity index 100% rename from benchmark/delta_blue.lua.inprogress rename to test/benchmark/delta_blue.lua.inprogress diff --git a/benchmark/delta_blue.py b/test/benchmark/delta_blue.py similarity index 100% rename from benchmark/delta_blue.py rename to test/benchmark/delta_blue.py diff --git a/benchmark/delta_blue.wren b/test/benchmark/delta_blue.wren similarity index 100% rename from benchmark/delta_blue.wren rename to test/benchmark/delta_blue.wren diff --git a/benchmark/fannkuch.lua b/test/benchmark/fannkuch.lua similarity index 100% rename from benchmark/fannkuch.lua rename to test/benchmark/fannkuch.lua diff --git a/benchmark/fannkuch.py b/test/benchmark/fannkuch.py similarity index 100% rename from benchmark/fannkuch.py rename to test/benchmark/fannkuch.py diff --git a/benchmark/fannkuch.rb b/test/benchmark/fannkuch.rb similarity index 100% rename from benchmark/fannkuch.rb rename to test/benchmark/fannkuch.rb diff --git a/benchmark/fib.lua b/test/benchmark/fib.lua similarity index 100% rename from benchmark/fib.lua rename to test/benchmark/fib.lua diff --git a/benchmark/fib.py b/test/benchmark/fib.py similarity index 100% rename from benchmark/fib.py rename to test/benchmark/fib.py diff --git a/benchmark/fib.rb b/test/benchmark/fib.rb similarity index 100% rename from benchmark/fib.rb rename to test/benchmark/fib.rb diff --git a/benchmark/fib.wren b/test/benchmark/fib.wren similarity index 100% rename from benchmark/fib.wren rename to test/benchmark/fib.wren diff --git a/benchmark/for.lua b/test/benchmark/for.lua similarity index 100% rename from benchmark/for.lua rename to test/benchmark/for.lua diff --git a/benchmark/for.py b/test/benchmark/for.py similarity index 100% rename from benchmark/for.py rename to test/benchmark/for.py diff --git a/benchmark/for.rb b/test/benchmark/for.rb similarity index 100% rename from benchmark/for.rb rename to test/benchmark/for.rb diff --git a/benchmark/for.wren b/test/benchmark/for.wren similarity index 100% rename from benchmark/for.wren rename to test/benchmark/for.wren diff --git a/benchmark/map_numeric.lua b/test/benchmark/map_numeric.lua similarity index 100% rename from benchmark/map_numeric.lua rename to test/benchmark/map_numeric.lua diff --git a/benchmark/map_numeric.py b/test/benchmark/map_numeric.py similarity index 100% rename from benchmark/map_numeric.py rename to test/benchmark/map_numeric.py diff --git a/benchmark/map_numeric.rb b/test/benchmark/map_numeric.rb similarity index 100% rename from benchmark/map_numeric.rb rename to test/benchmark/map_numeric.rb diff --git a/benchmark/map_numeric.wren b/test/benchmark/map_numeric.wren similarity index 100% rename from benchmark/map_numeric.wren rename to test/benchmark/map_numeric.wren diff --git a/benchmark/map_string.lua b/test/benchmark/map_string.lua similarity index 100% rename from benchmark/map_string.lua rename to test/benchmark/map_string.lua diff --git a/benchmark/map_string.py b/test/benchmark/map_string.py similarity index 100% rename from benchmark/map_string.py rename to test/benchmark/map_string.py diff --git a/benchmark/map_string.rb b/test/benchmark/map_string.rb similarity index 100% rename from benchmark/map_string.rb rename to test/benchmark/map_string.rb diff --git a/benchmark/map_string.wren b/test/benchmark/map_string.wren similarity index 100% rename from benchmark/map_string.wren rename to test/benchmark/map_string.wren diff --git a/benchmark/method_call.lua b/test/benchmark/method_call.lua similarity index 100% rename from benchmark/method_call.lua rename to test/benchmark/method_call.lua diff --git a/benchmark/method_call.py b/test/benchmark/method_call.py similarity index 100% rename from benchmark/method_call.py rename to test/benchmark/method_call.py diff --git a/benchmark/method_call.rb b/test/benchmark/method_call.rb similarity index 100% rename from benchmark/method_call.rb rename to test/benchmark/method_call.rb diff --git a/benchmark/method_call.wren b/test/benchmark/method_call.wren similarity index 100% rename from benchmark/method_call.wren rename to test/benchmark/method_call.wren diff --git a/test/bool/equality.wren b/test/core/bool/equality.wren similarity index 100% rename from test/bool/equality.wren rename to test/core/bool/equality.wren diff --git a/test/bool/not.wren b/test/core/bool/not.wren similarity index 100% rename from test/bool/not.wren rename to test/core/bool/not.wren diff --git a/test/bool/to_string.wren b/test/core/bool/to_string.wren similarity index 100% rename from test/bool/to_string.wren rename to test/core/bool/to_string.wren diff --git a/test/bool/type.wren b/test/core/bool/type.wren similarity index 100% rename from test/bool/type.wren rename to test/core/bool/type.wren diff --git a/test/class/equality.wren b/test/core/class/equality.wren similarity index 100% rename from test/class/equality.wren rename to test/core/class/equality.wren diff --git a/test/class/name.wren b/test/core/class/name.wren similarity index 100% rename from test/class/name.wren rename to test/core/class/name.wren diff --git a/test/class/supertype.wren b/test/core/class/supertype.wren similarity index 100% rename from test/class/supertype.wren rename to test/core/class/supertype.wren diff --git a/test/class/type.wren b/test/core/class/type.wren similarity index 100% rename from test/class/type.wren rename to test/core/class/type.wren diff --git a/test/fiber/abort.wren b/test/core/fiber/abort.wren similarity index 100% rename from test/fiber/abort.wren rename to test/core/fiber/abort.wren diff --git a/test/fiber/abort_main_fiber.wren b/test/core/fiber/abort_main_fiber.wren similarity index 100% rename from test/fiber/abort_main_fiber.wren rename to test/core/fiber/abort_main_fiber.wren diff --git a/test/fiber/abort_wrong_arg_type.wren b/test/core/fiber/abort_wrong_arg_type.wren similarity index 100% rename from test/fiber/abort_wrong_arg_type.wren rename to test/core/fiber/abort_wrong_arg_type.wren diff --git a/test/fiber/call.wren b/test/core/fiber/call.wren similarity index 100% rename from test/fiber/call.wren rename to test/core/fiber/call.wren diff --git a/test/fiber/call_direct_reenter.wren b/test/core/fiber/call_direct_reenter.wren similarity index 100% rename from test/fiber/call_direct_reenter.wren rename to test/core/fiber/call_direct_reenter.wren diff --git a/test/fiber/call_indirect_reenter.wren b/test/core/fiber/call_indirect_reenter.wren similarity index 100% rename from test/fiber/call_indirect_reenter.wren rename to test/core/fiber/call_indirect_reenter.wren diff --git a/test/fiber/call_return_implicit_null.wren b/test/core/fiber/call_return_implicit_null.wren similarity index 100% rename from test/fiber/call_return_implicit_null.wren rename to test/core/fiber/call_return_implicit_null.wren diff --git a/test/fiber/call_return_value.wren b/test/core/fiber/call_return_value.wren similarity index 100% rename from test/fiber/call_return_value.wren rename to test/core/fiber/call_return_value.wren diff --git a/test/fiber/call_when_done.wren b/test/core/fiber/call_when_done.wren similarity index 100% rename from test/fiber/call_when_done.wren rename to test/core/fiber/call_when_done.wren diff --git a/test/fiber/call_with_value.wren b/test/core/fiber/call_with_value.wren similarity index 100% rename from test/fiber/call_with_value.wren rename to test/core/fiber/call_with_value.wren diff --git a/test/fiber/call_with_value_direct_reenter.wren b/test/core/fiber/call_with_value_direct_reenter.wren similarity index 100% rename from test/fiber/call_with_value_direct_reenter.wren rename to test/core/fiber/call_with_value_direct_reenter.wren diff --git a/test/fiber/call_with_value_indirect_reenter.wren b/test/core/fiber/call_with_value_indirect_reenter.wren similarity index 100% rename from test/fiber/call_with_value_indirect_reenter.wren rename to test/core/fiber/call_with_value_indirect_reenter.wren diff --git a/test/fiber/call_with_value_when_done.wren b/test/core/fiber/call_with_value_when_done.wren similarity index 100% rename from test/fiber/call_with_value_when_done.wren rename to test/core/fiber/call_with_value_when_done.wren diff --git a/test/fiber/error.wren b/test/core/fiber/error.wren similarity index 100% rename from test/fiber/error.wren rename to test/core/fiber/error.wren diff --git a/test/fiber/is_done.wren b/test/core/fiber/is_done.wren similarity index 100% rename from test/fiber/is_done.wren rename to test/core/fiber/is_done.wren diff --git a/test/fiber/is_done_after_error.wren b/test/core/fiber/is_done_after_error.wren similarity index 100% rename from test/fiber/is_done_after_error.wren rename to test/core/fiber/is_done_after_error.wren diff --git a/test/fiber/new_wrong_arg_type.wren b/test/core/fiber/new_wrong_arg_type.wren similarity index 100% rename from test/fiber/new_wrong_arg_type.wren rename to test/core/fiber/new_wrong_arg_type.wren diff --git a/test/fiber/resume_caller.wren b/test/core/fiber/resume_caller.wren similarity index 100% rename from test/fiber/resume_caller.wren rename to test/core/fiber/resume_caller.wren diff --git a/test/fiber/run.wren b/test/core/fiber/run.wren similarity index 100% rename from test/fiber/run.wren rename to test/core/fiber/run.wren diff --git a/test/fiber/run_direct_reenter.wren b/test/core/fiber/run_direct_reenter.wren similarity index 100% rename from test/fiber/run_direct_reenter.wren rename to test/core/fiber/run_direct_reenter.wren diff --git a/test/fiber/run_indirect_reenter.wren b/test/core/fiber/run_indirect_reenter.wren similarity index 100% rename from test/fiber/run_indirect_reenter.wren rename to test/core/fiber/run_indirect_reenter.wren diff --git a/test/fiber/run_when_done.wren b/test/core/fiber/run_when_done.wren similarity index 100% rename from test/fiber/run_when_done.wren rename to test/core/fiber/run_when_done.wren diff --git a/test/fiber/run_with_value.wren b/test/core/fiber/run_with_value.wren similarity index 100% rename from test/fiber/run_with_value.wren rename to test/core/fiber/run_with_value.wren diff --git a/test/fiber/run_with_value_direct_reenter.wren b/test/core/fiber/run_with_value_direct_reenter.wren similarity index 100% rename from test/fiber/run_with_value_direct_reenter.wren rename to test/core/fiber/run_with_value_direct_reenter.wren diff --git a/test/fiber/run_with_value_indirect_reenter.wren b/test/core/fiber/run_with_value_indirect_reenter.wren similarity index 100% rename from test/fiber/run_with_value_indirect_reenter.wren rename to test/core/fiber/run_with_value_indirect_reenter.wren diff --git a/test/fiber/try.wren b/test/core/fiber/try.wren similarity index 100% rename from test/fiber/try.wren rename to test/core/fiber/try.wren diff --git a/test/fiber/try_direct_reenter.wren b/test/core/fiber/try_direct_reenter.wren similarity index 100% rename from test/fiber/try_direct_reenter.wren rename to test/core/fiber/try_direct_reenter.wren diff --git a/test/fiber/try_indirect_reenter.wren b/test/core/fiber/try_indirect_reenter.wren similarity index 100% rename from test/fiber/try_indirect_reenter.wren rename to test/core/fiber/try_indirect_reenter.wren diff --git a/test/fiber/try_when_done.wren b/test/core/fiber/try_when_done.wren similarity index 100% rename from test/fiber/try_when_done.wren rename to test/core/fiber/try_when_done.wren diff --git a/test/fiber/try_without_error.wren b/test/core/fiber/try_without_error.wren similarity index 100% rename from test/fiber/try_without_error.wren rename to test/core/fiber/try_without_error.wren diff --git a/test/fiber/type.wren b/test/core/fiber/type.wren similarity index 100% rename from test/fiber/type.wren rename to test/core/fiber/type.wren diff --git a/test/fiber/yield.wren b/test/core/fiber/yield.wren similarity index 100% rename from test/fiber/yield.wren rename to test/core/fiber/yield.wren diff --git a/test/fiber/yield_from_main.wren b/test/core/fiber/yield_from_main.wren similarity index 100% rename from test/fiber/yield_from_main.wren rename to test/core/fiber/yield_from_main.wren diff --git a/test/fiber/yield_return_call_value.wren b/test/core/fiber/yield_return_call_value.wren similarity index 100% rename from test/fiber/yield_return_call_value.wren rename to test/core/fiber/yield_return_call_value.wren diff --git a/test/fiber/yield_return_run_value.wren b/test/core/fiber/yield_return_run_value.wren similarity index 100% rename from test/fiber/yield_return_run_value.wren rename to test/core/fiber/yield_return_run_value.wren diff --git a/test/fiber/yield_with_no_caller.wren b/test/core/fiber/yield_with_no_caller.wren similarity index 100% rename from test/fiber/yield_with_no_caller.wren rename to test/core/fiber/yield_with_no_caller.wren diff --git a/test/fiber/yield_with_value.wren b/test/core/fiber/yield_with_value.wren similarity index 100% rename from test/fiber/yield_with_value.wren rename to test/core/fiber/yield_with_value.wren diff --git a/test/fiber/yield_with_value_from_main.wren b/test/core/fiber/yield_with_value_from_main.wren similarity index 100% rename from test/fiber/yield_with_value_from_main.wren rename to test/core/fiber/yield_with_value_from_main.wren diff --git a/test/fiber/yield_with_value_with_no_caller.wren b/test/core/fiber/yield_with_value_with_no_caller.wren similarity index 100% rename from test/fiber/yield_with_value_with_no_caller.wren rename to test/core/fiber/yield_with_value_with_no_caller.wren diff --git a/test/function/arity.wren b/test/core/function/arity.wren similarity index 100% rename from test/function/arity.wren rename to test/core/function/arity.wren diff --git a/test/function/call_extra_arguments.wren b/test/core/function/call_extra_arguments.wren similarity index 100% rename from test/function/call_extra_arguments.wren rename to test/core/function/call_extra_arguments.wren diff --git a/test/function/call_missing_arguments.wren b/test/core/function/call_missing_arguments.wren similarity index 100% rename from test/function/call_missing_arguments.wren rename to test/core/function/call_missing_arguments.wren diff --git a/test/function/equality.wren b/test/core/function/equality.wren similarity index 100% rename from test/function/equality.wren rename to test/core/function/equality.wren diff --git a/test/function/new_wrong_arg_type.wren b/test/core/function/new_wrong_arg_type.wren similarity index 100% rename from test/function/new_wrong_arg_type.wren rename to test/core/function/new_wrong_arg_type.wren diff --git a/test/function/to_string.wren b/test/core/function/to_string.wren similarity index 100% rename from test/function/to_string.wren rename to test/core/function/to_string.wren diff --git a/test/function/type.wren b/test/core/function/type.wren similarity index 100% rename from test/function/type.wren rename to test/core/function/type.wren diff --git a/test/list/add.wren b/test/core/list/add.wren similarity index 100% rename from test/list/add.wren rename to test/core/list/add.wren diff --git a/test/list/add_all.wren b/test/core/list/add_all.wren similarity index 100% rename from test/list/add_all.wren rename to test/core/list/add_all.wren diff --git a/test/list/all.wren b/test/core/list/all.wren similarity index 100% rename from test/list/all.wren rename to test/core/list/all.wren diff --git a/test/list/all_non_bool_returning_fn.wren b/test/core/list/all_non_bool_returning_fn.wren similarity index 100% rename from test/list/all_non_bool_returning_fn.wren rename to test/core/list/all_non_bool_returning_fn.wren diff --git a/test/list/all_non_function_arg.wren b/test/core/list/all_non_function_arg.wren similarity index 100% rename from test/list/all_non_function_arg.wren rename to test/core/list/all_non_function_arg.wren diff --git a/test/list/any.wren b/test/core/list/any.wren similarity index 100% rename from test/list/any.wren rename to test/core/list/any.wren diff --git a/test/list/any_non_bool_returning_fn.wren b/test/core/list/any_non_bool_returning_fn.wren similarity index 100% rename from test/list/any_non_bool_returning_fn.wren rename to test/core/list/any_non_bool_returning_fn.wren diff --git a/test/list/any_non_function_arg.wren b/test/core/list/any_non_function_arg.wren similarity index 100% rename from test/list/any_non_function_arg.wren rename to test/core/list/any_non_function_arg.wren diff --git a/test/list/clear.wren b/test/core/list/clear.wren similarity index 100% rename from test/list/clear.wren rename to test/core/list/clear.wren diff --git a/test/list/count.wren b/test/core/list/count.wren similarity index 100% rename from test/list/count.wren rename to test/core/list/count.wren diff --git a/test/list/insert.wren b/test/core/list/insert.wren similarity index 100% rename from test/list/insert.wren rename to test/core/list/insert.wren diff --git a/test/list/insert_index_not_int.wren b/test/core/list/insert_index_not_int.wren similarity index 100% rename from test/list/insert_index_not_int.wren rename to test/core/list/insert_index_not_int.wren diff --git a/test/list/insert_index_not_num.wren b/test/core/list/insert_index_not_num.wren similarity index 100% rename from test/list/insert_index_not_num.wren rename to test/core/list/insert_index_not_num.wren diff --git a/test/list/insert_index_too_large.wren b/test/core/list/insert_index_too_large.wren similarity index 100% rename from test/list/insert_index_too_large.wren rename to test/core/list/insert_index_too_large.wren diff --git a/test/list/insert_index_too_small.wren b/test/core/list/insert_index_too_small.wren similarity index 100% rename from test/list/insert_index_too_small.wren rename to test/core/list/insert_index_too_small.wren diff --git a/test/list/iterate.wren b/test/core/list/iterate.wren similarity index 100% rename from test/list/iterate.wren rename to test/core/list/iterate.wren diff --git a/test/list/iterate_iterator_not_int.wren b/test/core/list/iterate_iterator_not_int.wren similarity index 100% rename from test/list/iterate_iterator_not_int.wren rename to test/core/list/iterate_iterator_not_int.wren diff --git a/test/list/iterate_iterator_not_num.wren b/test/core/list/iterate_iterator_not_num.wren similarity index 100% rename from test/list/iterate_iterator_not_num.wren rename to test/core/list/iterate_iterator_not_num.wren diff --git a/test/list/iterator_value.wren b/test/core/list/iterator_value.wren similarity index 100% rename from test/list/iterator_value.wren rename to test/core/list/iterator_value.wren diff --git a/test/list/iterator_value_iterator_not_int.wren b/test/core/list/iterator_value_iterator_not_int.wren similarity index 100% rename from test/list/iterator_value_iterator_not_int.wren rename to test/core/list/iterator_value_iterator_not_int.wren diff --git a/test/list/iterator_value_iterator_not_num.wren b/test/core/list/iterator_value_iterator_not_num.wren similarity index 100% rename from test/list/iterator_value_iterator_not_num.wren rename to test/core/list/iterator_value_iterator_not_num.wren diff --git a/test/list/iterator_value_iterator_too_large.wren b/test/core/list/iterator_value_iterator_too_large.wren similarity index 100% rename from test/list/iterator_value_iterator_too_large.wren rename to test/core/list/iterator_value_iterator_too_large.wren diff --git a/test/list/iterator_value_iterator_too_small.wren b/test/core/list/iterator_value_iterator_too_small.wren similarity index 100% rename from test/list/iterator_value_iterator_too_small.wren rename to test/core/list/iterator_value_iterator_too_small.wren diff --git a/test/list/join.wren b/test/core/list/join.wren similarity index 100% rename from test/list/join.wren rename to test/core/list/join.wren diff --git a/test/list/join_separator_not_string.wren b/test/core/list/join_separator_not_string.wren similarity index 100% rename from test/list/join_separator_not_string.wren rename to test/core/list/join_separator_not_string.wren diff --git a/test/list/map.wren b/test/core/list/map.wren similarity index 100% rename from test/list/map.wren rename to test/core/list/map.wren diff --git a/test/list/new.wren b/test/core/list/new.wren similarity index 100% rename from test/list/new.wren rename to test/core/list/new.wren diff --git a/test/list/not.wren b/test/core/list/not.wren similarity index 100% rename from test/list/not.wren rename to test/core/list/not.wren diff --git a/test/list/plus.wren b/test/core/list/plus.wren similarity index 100% rename from test/list/plus.wren rename to test/core/list/plus.wren diff --git a/test/list/reduce.wren b/test/core/list/reduce.wren similarity index 100% rename from test/list/reduce.wren rename to test/core/list/reduce.wren diff --git a/test/list/reduce_no_items.wren b/test/core/list/reduce_no_items.wren similarity index 100% rename from test/list/reduce_no_items.wren rename to test/core/list/reduce_no_items.wren diff --git a/test/list/reduce_single_item.wren b/test/core/list/reduce_single_item.wren similarity index 100% rename from test/list/reduce_single_item.wren rename to test/core/list/reduce_single_item.wren diff --git a/test/list/reduce_wrong_arity.wren b/test/core/list/reduce_wrong_arity.wren similarity index 100% rename from test/list/reduce_wrong_arity.wren rename to test/core/list/reduce_wrong_arity.wren diff --git a/test/list/remove_at.wren b/test/core/list/remove_at.wren similarity index 100% rename from test/list/remove_at.wren rename to test/core/list/remove_at.wren diff --git a/test/list/remove_at_index_not_int.wren b/test/core/list/remove_at_index_not_int.wren similarity index 100% rename from test/list/remove_at_index_not_int.wren rename to test/core/list/remove_at_index_not_int.wren diff --git a/test/list/remove_at_index_not_num.wren b/test/core/list/remove_at_index_not_num.wren similarity index 100% rename from test/list/remove_at_index_not_num.wren rename to test/core/list/remove_at_index_not_num.wren diff --git a/test/list/remove_at_index_too_large.wren b/test/core/list/remove_at_index_too_large.wren similarity index 100% rename from test/list/remove_at_index_too_large.wren rename to test/core/list/remove_at_index_too_large.wren diff --git a/test/list/remove_at_index_too_small.wren b/test/core/list/remove_at_index_too_small.wren similarity index 100% rename from test/list/remove_at_index_too_small.wren rename to test/core/list/remove_at_index_too_small.wren diff --git a/test/list/subscript.wren b/test/core/list/subscript.wren similarity index 100% rename from test/list/subscript.wren rename to test/core/list/subscript.wren diff --git a/test/list/subscript_not_int.wren b/test/core/list/subscript_not_int.wren similarity index 100% rename from test/list/subscript_not_int.wren rename to test/core/list/subscript_not_int.wren diff --git a/test/list/subscript_range.wren b/test/core/list/subscript_range.wren similarity index 100% rename from test/list/subscript_range.wren rename to test/core/list/subscript_range.wren diff --git a/test/list/subscript_range_from_not_int.wren b/test/core/list/subscript_range_from_not_int.wren similarity index 100% rename from test/list/subscript_range_from_not_int.wren rename to test/core/list/subscript_range_from_not_int.wren diff --git a/test/list/subscript_range_from_too_large.wren b/test/core/list/subscript_range_from_too_large.wren similarity index 100% rename from test/list/subscript_range_from_too_large.wren rename to test/core/list/subscript_range_from_too_large.wren diff --git a/test/list/subscript_range_from_too_small.wren b/test/core/list/subscript_range_from_too_small.wren similarity index 100% rename from test/list/subscript_range_from_too_small.wren rename to test/core/list/subscript_range_from_too_small.wren diff --git a/test/list/subscript_range_to_exclusive_too_large.wren b/test/core/list/subscript_range_to_exclusive_too_large.wren similarity index 100% rename from test/list/subscript_range_to_exclusive_too_large.wren rename to test/core/list/subscript_range_to_exclusive_too_large.wren diff --git a/test/list/subscript_range_to_exclusive_too_small.wren b/test/core/list/subscript_range_to_exclusive_too_small.wren similarity index 100% rename from test/list/subscript_range_to_exclusive_too_small.wren rename to test/core/list/subscript_range_to_exclusive_too_small.wren diff --git a/test/list/subscript_range_to_not_int.wren b/test/core/list/subscript_range_to_not_int.wren similarity index 100% rename from test/list/subscript_range_to_not_int.wren rename to test/core/list/subscript_range_to_not_int.wren diff --git a/test/list/subscript_range_to_too_large.wren b/test/core/list/subscript_range_to_too_large.wren similarity index 100% rename from test/list/subscript_range_to_too_large.wren rename to test/core/list/subscript_range_to_too_large.wren diff --git a/test/list/subscript_range_to_too_small.wren b/test/core/list/subscript_range_to_too_small.wren similarity index 100% rename from test/list/subscript_range_to_too_small.wren rename to test/core/list/subscript_range_to_too_small.wren diff --git a/test/list/subscript_setter.wren b/test/core/list/subscript_setter.wren similarity index 100% rename from test/list/subscript_setter.wren rename to test/core/list/subscript_setter.wren diff --git a/test/list/subscript_setter_not_int.wren b/test/core/list/subscript_setter_not_int.wren similarity index 100% rename from test/list/subscript_setter_not_int.wren rename to test/core/list/subscript_setter_not_int.wren diff --git a/test/list/subscript_setter_not_num.wren b/test/core/list/subscript_setter_not_num.wren similarity index 100% rename from test/list/subscript_setter_not_num.wren rename to test/core/list/subscript_setter_not_num.wren diff --git a/test/list/subscript_setter_too_large.wren b/test/core/list/subscript_setter_too_large.wren similarity index 100% rename from test/list/subscript_setter_too_large.wren rename to test/core/list/subscript_setter_too_large.wren diff --git a/test/list/subscript_setter_too_small.wren b/test/core/list/subscript_setter_too_small.wren similarity index 100% rename from test/list/subscript_setter_too_small.wren rename to test/core/list/subscript_setter_too_small.wren diff --git a/test/list/subscript_too_large.wren b/test/core/list/subscript_too_large.wren similarity index 100% rename from test/list/subscript_too_large.wren rename to test/core/list/subscript_too_large.wren diff --git a/test/list/subscript_too_small.wren b/test/core/list/subscript_too_small.wren similarity index 100% rename from test/list/subscript_too_small.wren rename to test/core/list/subscript_too_small.wren diff --git a/test/list/subscript_wrong_type.wren b/test/core/list/subscript_wrong_type.wren similarity index 100% rename from test/list/subscript_wrong_type.wren rename to test/core/list/subscript_wrong_type.wren diff --git a/test/list/to_string.wren b/test/core/list/to_string.wren similarity index 100% rename from test/list/to_string.wren rename to test/core/list/to_string.wren diff --git a/test/list/type.wren b/test/core/list/type.wren similarity index 100% rename from test/list/type.wren rename to test/core/list/type.wren diff --git a/test/list/where.wren b/test/core/list/where.wren similarity index 100% rename from test/list/where.wren rename to test/core/list/where.wren diff --git a/test/map/clear.wren b/test/core/map/clear.wren similarity index 100% rename from test/map/clear.wren rename to test/core/map/clear.wren diff --git a/test/map/contains_key.wren b/test/core/map/contains_key.wren similarity index 100% rename from test/map/contains_key.wren rename to test/core/map/contains_key.wren diff --git a/test/map/contains_key_not_value.wren b/test/core/map/contains_key_not_value.wren similarity index 100% rename from test/map/contains_key_not_value.wren rename to test/core/map/contains_key_not_value.wren diff --git a/test/map/count.wren b/test/core/map/count.wren similarity index 100% rename from test/map/count.wren rename to test/core/map/count.wren diff --git a/test/map/key_iterate.wren b/test/core/map/key_iterate.wren similarity index 100% rename from test/map/key_iterate.wren rename to test/core/map/key_iterate.wren diff --git a/test/map/key_iterate_iterator_not_int.wren b/test/core/map/key_iterate_iterator_not_int.wren similarity index 100% rename from test/map/key_iterate_iterator_not_int.wren rename to test/core/map/key_iterate_iterator_not_int.wren diff --git a/test/map/key_iterate_iterator_not_num.wren b/test/core/map/key_iterate_iterator_not_num.wren similarity index 100% rename from test/map/key_iterate_iterator_not_num.wren rename to test/core/map/key_iterate_iterator_not_num.wren diff --git a/test/map/key_types.wren b/test/core/map/key_types.wren similarity index 100% rename from test/map/key_types.wren rename to test/core/map/key_types.wren diff --git a/test/map/new.wren b/test/core/map/new.wren similarity index 100% rename from test/map/new.wren rename to test/core/map/new.wren diff --git a/test/map/remove.wren b/test/core/map/remove.wren similarity index 100% rename from test/map/remove.wren rename to test/core/map/remove.wren diff --git a/test/map/remove_key_not_value.wren b/test/core/map/remove_key_not_value.wren similarity index 100% rename from test/map/remove_key_not_value.wren rename to test/core/map/remove_key_not_value.wren diff --git a/test/map/subscript_empty_map.wren b/test/core/map/subscript_empty_map.wren similarity index 100% rename from test/map/subscript_empty_map.wren rename to test/core/map/subscript_empty_map.wren diff --git a/test/map/subscript_key_not_value.wren b/test/core/map/subscript_key_not_value.wren similarity index 100% rename from test/map/subscript_key_not_value.wren rename to test/core/map/subscript_key_not_value.wren diff --git a/test/map/subscript_setter_key_not_value.wren b/test/core/map/subscript_setter_key_not_value.wren similarity index 100% rename from test/map/subscript_setter_key_not_value.wren rename to test/core/map/subscript_setter_key_not_value.wren diff --git a/test/map/to_string.wren b/test/core/map/to_string.wren similarity index 100% rename from test/map/to_string.wren rename to test/core/map/to_string.wren diff --git a/test/map/type.wren b/test/core/map/type.wren similarity index 100% rename from test/map/type.wren rename to test/core/map/type.wren diff --git a/test/map/value_iterate.wren b/test/core/map/value_iterate.wren similarity index 100% rename from test/map/value_iterate.wren rename to test/core/map/value_iterate.wren diff --git a/test/map/value_iterate_iterator_not_int.wren b/test/core/map/value_iterate_iterator_not_int.wren similarity index 100% rename from test/map/value_iterate_iterator_not_int.wren rename to test/core/map/value_iterate_iterator_not_int.wren diff --git a/test/map/value_iterate_iterator_not_num.wren b/test/core/map/value_iterate_iterator_not_num.wren similarity index 100% rename from test/map/value_iterate_iterator_not_num.wren rename to test/core/map/value_iterate_iterator_not_num.wren diff --git a/test/null/not.wren b/test/core/null/not.wren similarity index 100% rename from test/null/not.wren rename to test/core/null/not.wren diff --git a/test/null/type.wren b/test/core/null/type.wren similarity index 100% rename from test/null/type.wren rename to test/core/null/type.wren diff --git a/test/number/abs.wren b/test/core/number/abs.wren similarity index 100% rename from test/number/abs.wren rename to test/core/number/abs.wren diff --git a/test/number/bitwise_and.wren b/test/core/number/bitwise_and.wren similarity index 100% rename from test/number/bitwise_and.wren rename to test/core/number/bitwise_and.wren diff --git a/test/number/bitwise_and_operand_not_num.wren b/test/core/number/bitwise_and_operand_not_num.wren similarity index 100% rename from test/number/bitwise_and_operand_not_num.wren rename to test/core/number/bitwise_and_operand_not_num.wren diff --git a/test/number/bitwise_lsh.wren b/test/core/number/bitwise_lsh.wren similarity index 100% rename from test/number/bitwise_lsh.wren rename to test/core/number/bitwise_lsh.wren diff --git a/test/number/bitwise_lsh_operand_not_num.wren b/test/core/number/bitwise_lsh_operand_not_num.wren similarity index 100% rename from test/number/bitwise_lsh_operand_not_num.wren rename to test/core/number/bitwise_lsh_operand_not_num.wren diff --git a/test/number/bitwise_not.wren b/test/core/number/bitwise_not.wren similarity index 100% rename from test/number/bitwise_not.wren rename to test/core/number/bitwise_not.wren diff --git a/test/number/bitwise_or.wren b/test/core/number/bitwise_or.wren similarity index 100% rename from test/number/bitwise_or.wren rename to test/core/number/bitwise_or.wren diff --git a/test/number/bitwise_or_operand_not_num.wren b/test/core/number/bitwise_or_operand_not_num.wren similarity index 100% rename from test/number/bitwise_or_operand_not_num.wren rename to test/core/number/bitwise_or_operand_not_num.wren diff --git a/test/number/bitwise_rsh.wren b/test/core/number/bitwise_rsh.wren similarity index 100% rename from test/number/bitwise_rsh.wren rename to test/core/number/bitwise_rsh.wren diff --git a/test/number/bitwise_rsh_operand_not_num.wren b/test/core/number/bitwise_rsh_operand_not_num.wren similarity index 100% rename from test/number/bitwise_rsh_operand_not_num.wren rename to test/core/number/bitwise_rsh_operand_not_num.wren diff --git a/test/number/bitwise_xor.wren b/test/core/number/bitwise_xor.wren similarity index 100% rename from test/number/bitwise_xor.wren rename to test/core/number/bitwise_xor.wren diff --git a/test/number/bitwise_xor_operand_not_num.wren b/test/core/number/bitwise_xor_operand_not_num.wren similarity index 100% rename from test/number/bitwise_xor_operand_not_num.wren rename to test/core/number/bitwise_xor_operand_not_num.wren diff --git a/test/number/ceil.wren b/test/core/number/ceil.wren similarity index 100% rename from test/number/ceil.wren rename to test/core/number/ceil.wren diff --git a/test/number/comparison.wren b/test/core/number/comparison.wren similarity index 100% rename from test/number/comparison.wren rename to test/core/number/comparison.wren diff --git a/test/number/decimal_point_at_eof.wren b/test/core/number/decimal_point_at_eof.wren similarity index 100% rename from test/number/decimal_point_at_eof.wren rename to test/core/number/decimal_point_at_eof.wren diff --git a/test/number/divide.wren b/test/core/number/divide.wren similarity index 100% rename from test/number/divide.wren rename to test/core/number/divide.wren diff --git a/test/number/divide_operand_not_num.wren b/test/core/number/divide_operand_not_num.wren similarity index 100% rename from test/number/divide_operand_not_num.wren rename to test/core/number/divide_operand_not_num.wren diff --git a/test/number/equality.wren b/test/core/number/equality.wren similarity index 100% rename from test/number/equality.wren rename to test/core/number/equality.wren diff --git a/test/number/floor.wren b/test/core/number/floor.wren similarity index 100% rename from test/number/floor.wren rename to test/core/number/floor.wren diff --git a/test/number/fraction.wren b/test/core/number/fraction.wren similarity index 100% rename from test/number/fraction.wren rename to test/core/number/fraction.wren diff --git a/test/number/from_string.wren b/test/core/number/from_string.wren similarity index 100% rename from test/number/from_string.wren rename to test/core/number/from_string.wren diff --git a/test/number/from_string_not_string.wren b/test/core/number/from_string_not_string.wren similarity index 100% rename from test/number/from_string_not_string.wren rename to test/core/number/from_string_not_string.wren diff --git a/test/number/from_string_too_large.wren b/test/core/number/from_string_too_large.wren similarity index 100% rename from test/number/from_string_too_large.wren rename to test/core/number/from_string_too_large.wren diff --git a/test/number/greater_than_equal_operand_not_num.wren b/test/core/number/greater_than_equal_operand_not_num.wren similarity index 100% rename from test/number/greater_than_equal_operand_not_num.wren rename to test/core/number/greater_than_equal_operand_not_num.wren diff --git a/test/number/greater_than_operand_not_num.wren b/test/core/number/greater_than_operand_not_num.wren similarity index 100% rename from test/number/greater_than_operand_not_num.wren rename to test/core/number/greater_than_operand_not_num.wren diff --git a/test/number/invalid_hex_literal.wren b/test/core/number/invalid_hex_literal.wren similarity index 100% rename from test/number/invalid_hex_literal.wren rename to test/core/number/invalid_hex_literal.wren diff --git a/test/number/is_nan.wren b/test/core/number/is_nan.wren similarity index 100% rename from test/number/is_nan.wren rename to test/core/number/is_nan.wren diff --git a/test/number/less_than_equal_operand_not_num.wren b/test/core/number/less_than_equal_operand_not_num.wren similarity index 100% rename from test/number/less_than_equal_operand_not_num.wren rename to test/core/number/less_than_equal_operand_not_num.wren diff --git a/test/number/less_than_operand_not_num.wren b/test/core/number/less_than_operand_not_num.wren similarity index 100% rename from test/number/less_than_operand_not_num.wren rename to test/core/number/less_than_operand_not_num.wren diff --git a/test/number/minus.wren b/test/core/number/minus.wren similarity index 100% rename from test/number/minus.wren rename to test/core/number/minus.wren diff --git a/test/number/minus_operand_not_num.wren b/test/core/number/minus_operand_not_num.wren similarity index 100% rename from test/number/minus_operand_not_num.wren rename to test/core/number/minus_operand_not_num.wren diff --git a/test/number/mod.wren b/test/core/number/mod.wren similarity index 100% rename from test/number/mod.wren rename to test/core/number/mod.wren diff --git a/test/number/mod_operand_not_num.wren b/test/core/number/mod_operand_not_num.wren similarity index 100% rename from test/number/mod_operand_not_num.wren rename to test/core/number/mod_operand_not_num.wren diff --git a/test/number/multiply.wren b/test/core/number/multiply.wren similarity index 100% rename from test/number/multiply.wren rename to test/core/number/multiply.wren diff --git a/test/number/multiply_operand_not_num.wren b/test/core/number/multiply_operand_not_num.wren similarity index 100% rename from test/number/multiply_operand_not_num.wren rename to test/core/number/multiply_operand_not_num.wren diff --git a/test/number/not.wren b/test/core/number/not.wren similarity index 100% rename from test/number/not.wren rename to test/core/number/not.wren diff --git a/test/number/plus.wren b/test/core/number/plus.wren similarity index 100% rename from test/number/plus.wren rename to test/core/number/plus.wren diff --git a/test/number/plus_operand_not_num.wren b/test/core/number/plus_operand_not_num.wren similarity index 100% rename from test/number/plus_operand_not_num.wren rename to test/core/number/plus_operand_not_num.wren diff --git a/test/number/sign.wren b/test/core/number/sign.wren similarity index 100% rename from test/number/sign.wren rename to test/core/number/sign.wren diff --git a/test/number/sqrt.wren b/test/core/number/sqrt.wren similarity index 100% rename from test/number/sqrt.wren rename to test/core/number/sqrt.wren diff --git a/test/number/to_string.wren b/test/core/number/to_string.wren similarity index 100% rename from test/number/to_string.wren rename to test/core/number/to_string.wren diff --git a/test/number/truncate.wren b/test/core/number/truncate.wren similarity index 100% rename from test/number/truncate.wren rename to test/core/number/truncate.wren diff --git a/test/number/type.wren b/test/core/number/type.wren similarity index 100% rename from test/number/type.wren rename to test/core/number/type.wren diff --git a/test/object/not.wren b/test/core/object/not.wren similarity index 100% rename from test/object/not.wren rename to test/core/object/not.wren diff --git a/test/object/to_string.wren b/test/core/object/to_string.wren similarity index 100% rename from test/object/to_string.wren rename to test/core/object/to_string.wren diff --git a/test/range/equality.wren b/test/core/range/equality.wren similarity index 100% rename from test/range/equality.wren rename to test/core/range/equality.wren diff --git a/test/range/exclusive_range_wrong_rhs_type.wren b/test/core/range/exclusive_range_wrong_rhs_type.wren similarity index 100% rename from test/range/exclusive_range_wrong_rhs_type.wren rename to test/core/range/exclusive_range_wrong_rhs_type.wren diff --git a/test/range/floating_point.wren b/test/core/range/floating_point.wren similarity index 100% rename from test/range/floating_point.wren rename to test/core/range/floating_point.wren diff --git a/test/range/from.wren b/test/core/range/from.wren similarity index 100% rename from test/range/from.wren rename to test/core/range/from.wren diff --git a/test/range/inclusive_range_wrong_rhs_type.wren b/test/core/range/inclusive_range_wrong_rhs_type.wren similarity index 100% rename from test/range/inclusive_range_wrong_rhs_type.wren rename to test/core/range/inclusive_range_wrong_rhs_type.wren diff --git a/test/range/is_inclusive.wren b/test/core/range/is_inclusive.wren similarity index 100% rename from test/range/is_inclusive.wren rename to test/core/range/is_inclusive.wren diff --git a/test/range/iterate.wren b/test/core/range/iterate.wren similarity index 100% rename from test/range/iterate.wren rename to test/core/range/iterate.wren diff --git a/test/range/iterate_from_float.wren b/test/core/range/iterate_from_float.wren similarity index 100% rename from test/range/iterate_from_float.wren rename to test/core/range/iterate_from_float.wren diff --git a/test/range/iterate_wrong_type.wren b/test/core/range/iterate_wrong_type.wren similarity index 100% rename from test/range/iterate_wrong_type.wren rename to test/core/range/iterate_wrong_type.wren diff --git a/test/range/iterator_value.wren b/test/core/range/iterator_value.wren similarity index 100% rename from test/range/iterator_value.wren rename to test/core/range/iterator_value.wren diff --git a/test/range/join.wren b/test/core/range/join.wren similarity index 100% rename from test/range/join.wren rename to test/core/range/join.wren diff --git a/test/range/join_separator_not_string.wren b/test/core/range/join_separator_not_string.wren similarity index 100% rename from test/range/join_separator_not_string.wren rename to test/core/range/join_separator_not_string.wren diff --git a/test/range/map.wren b/test/core/range/map.wren similarity index 100% rename from test/range/map.wren rename to test/core/range/map.wren diff --git a/test/range/max.wren b/test/core/range/max.wren similarity index 100% rename from test/range/max.wren rename to test/core/range/max.wren diff --git a/test/range/min.wren b/test/core/range/min.wren similarity index 100% rename from test/range/min.wren rename to test/core/range/min.wren diff --git a/test/range/reduce.wren b/test/core/range/reduce.wren similarity index 100% rename from test/range/reduce.wren rename to test/core/range/reduce.wren diff --git a/test/range/to.wren b/test/core/range/to.wren similarity index 100% rename from test/range/to.wren rename to test/core/range/to.wren diff --git a/test/range/to_string.wren b/test/core/range/to_string.wren similarity index 100% rename from test/range/to_string.wren rename to test/core/range/to_string.wren diff --git a/test/range/type.wren b/test/core/range/type.wren similarity index 100% rename from test/range/type.wren rename to test/core/range/type.wren diff --git a/test/range/where.wren b/test/core/range/where.wren similarity index 100% rename from test/range/where.wren rename to test/core/range/where.wren diff --git a/test/sequence/count.wren b/test/core/sequence/count.wren similarity index 100% rename from test/sequence/count.wren rename to test/core/sequence/count.wren diff --git a/test/string/concatenation.wren b/test/core/string/concatenation.wren similarity index 100% rename from test/string/concatenation.wren rename to test/core/string/concatenation.wren diff --git a/test/string/concatenation_wrong_arg_type.wren b/test/core/string/concatenation_wrong_arg_type.wren similarity index 100% rename from test/string/concatenation_wrong_arg_type.wren rename to test/core/string/concatenation_wrong_arg_type.wren diff --git a/test/string/contains.wren b/test/core/string/contains.wren similarity index 100% rename from test/string/contains.wren rename to test/core/string/contains.wren diff --git a/test/string/contains_argument_not_string.wren b/test/core/string/contains_argument_not_string.wren similarity index 100% rename from test/string/contains_argument_not_string.wren rename to test/core/string/contains_argument_not_string.wren diff --git a/test/string/count.wren b/test/core/string/count.wren similarity index 100% rename from test/string/count.wren rename to test/core/string/count.wren diff --git a/test/string/ends_with.wren b/test/core/string/ends_with.wren similarity index 100% rename from test/string/ends_with.wren rename to test/core/string/ends_with.wren diff --git a/test/string/ends_with_invalid_arg.wren b/test/core/string/ends_with_invalid_arg.wren similarity index 100% rename from test/string/ends_with_invalid_arg.wren rename to test/core/string/ends_with_invalid_arg.wren diff --git a/test/string/equality.wren b/test/core/string/equality.wren similarity index 100% rename from test/string/equality.wren rename to test/core/string/equality.wren diff --git a/test/string/index_of.wren b/test/core/string/index_of.wren similarity index 100% rename from test/string/index_of.wren rename to test/core/string/index_of.wren diff --git a/test/string/index_of_invalid_arg.wren b/test/core/string/index_of_invalid_arg.wren similarity index 100% rename from test/string/index_of_invalid_arg.wren rename to test/core/string/index_of_invalid_arg.wren diff --git a/test/string/iterate.wren b/test/core/string/iterate.wren similarity index 100% rename from test/string/iterate.wren rename to test/core/string/iterate.wren diff --git a/test/string/iterate_iterator_not_int.wren b/test/core/string/iterate_iterator_not_int.wren similarity index 100% rename from test/string/iterate_iterator_not_int.wren rename to test/core/string/iterate_iterator_not_int.wren diff --git a/test/string/iterate_iterator_not_num.wren b/test/core/string/iterate_iterator_not_num.wren similarity index 100% rename from test/string/iterate_iterator_not_num.wren rename to test/core/string/iterate_iterator_not_num.wren diff --git a/test/string/iterator_value.wren b/test/core/string/iterator_value.wren similarity index 100% rename from test/string/iterator_value.wren rename to test/core/string/iterator_value.wren diff --git a/test/string/iterator_value_iterator_not_int.wren b/test/core/string/iterator_value_iterator_not_int.wren similarity index 100% rename from test/string/iterator_value_iterator_not_int.wren rename to test/core/string/iterator_value_iterator_not_int.wren diff --git a/test/string/iterator_value_iterator_not_num.wren b/test/core/string/iterator_value_iterator_not_num.wren similarity index 100% rename from test/string/iterator_value_iterator_not_num.wren rename to test/core/string/iterator_value_iterator_not_num.wren diff --git a/test/string/iterator_value_iterator_too_large.wren b/test/core/string/iterator_value_iterator_too_large.wren similarity index 100% rename from test/string/iterator_value_iterator_too_large.wren rename to test/core/string/iterator_value_iterator_too_large.wren diff --git a/test/string/iterator_value_iterator_too_small.wren b/test/core/string/iterator_value_iterator_too_small.wren similarity index 100% rename from test/string/iterator_value_iterator_too_small.wren rename to test/core/string/iterator_value_iterator_too_small.wren diff --git a/test/string/join.wren b/test/core/string/join.wren similarity index 100% rename from test/string/join.wren rename to test/core/string/join.wren diff --git a/test/string/join_separator_not_string.wren b/test/core/string/join_separator_not_string.wren similarity index 100% rename from test/string/join_separator_not_string.wren rename to test/core/string/join_separator_not_string.wren diff --git a/test/string/not.wren b/test/core/string/not.wren similarity index 100% rename from test/string/not.wren rename to test/core/string/not.wren diff --git a/test/string/starts_with.wren b/test/core/string/starts_with.wren similarity index 100% rename from test/string/starts_with.wren rename to test/core/string/starts_with.wren diff --git a/test/string/starts_with_invalid_arg.wren b/test/core/string/starts_with_invalid_arg.wren similarity index 100% rename from test/string/starts_with_invalid_arg.wren rename to test/core/string/starts_with_invalid_arg.wren diff --git a/test/string/subscript.wren b/test/core/string/subscript.wren similarity index 100% rename from test/string/subscript.wren rename to test/core/string/subscript.wren diff --git a/test/string/subscript_not_int.wren b/test/core/string/subscript_not_int.wren similarity index 100% rename from test/string/subscript_not_int.wren rename to test/core/string/subscript_not_int.wren diff --git a/test/string/subscript_not_num.wren b/test/core/string/subscript_not_num.wren similarity index 100% rename from test/string/subscript_not_num.wren rename to test/core/string/subscript_not_num.wren diff --git a/test/string/subscript_range.wren b/test/core/string/subscript_range.wren similarity index 100% rename from test/string/subscript_range.wren rename to test/core/string/subscript_range.wren diff --git a/test/string/subscript_range_from_not_int.wren b/test/core/string/subscript_range_from_not_int.wren similarity index 100% rename from test/string/subscript_range_from_not_int.wren rename to test/core/string/subscript_range_from_not_int.wren diff --git a/test/string/subscript_range_from_too_large.wren b/test/core/string/subscript_range_from_too_large.wren similarity index 100% rename from test/string/subscript_range_from_too_large.wren rename to test/core/string/subscript_range_from_too_large.wren diff --git a/test/string/subscript_range_from_too_small.wren b/test/core/string/subscript_range_from_too_small.wren similarity index 100% rename from test/string/subscript_range_from_too_small.wren rename to test/core/string/subscript_range_from_too_small.wren diff --git a/test/string/subscript_range_to_exclusive_too_large.wren b/test/core/string/subscript_range_to_exclusive_too_large.wren similarity index 100% rename from test/string/subscript_range_to_exclusive_too_large.wren rename to test/core/string/subscript_range_to_exclusive_too_large.wren diff --git a/test/string/subscript_range_to_exclusive_too_small.wren b/test/core/string/subscript_range_to_exclusive_too_small.wren similarity index 100% rename from test/string/subscript_range_to_exclusive_too_small.wren rename to test/core/string/subscript_range_to_exclusive_too_small.wren diff --git a/test/string/subscript_range_to_not_int.wren b/test/core/string/subscript_range_to_not_int.wren similarity index 100% rename from test/string/subscript_range_to_not_int.wren rename to test/core/string/subscript_range_to_not_int.wren diff --git a/test/string/subscript_range_to_too_large.wren b/test/core/string/subscript_range_to_too_large.wren similarity index 100% rename from test/string/subscript_range_to_too_large.wren rename to test/core/string/subscript_range_to_too_large.wren diff --git a/test/string/subscript_range_to_too_small.wren b/test/core/string/subscript_range_to_too_small.wren similarity index 100% rename from test/string/subscript_range_to_too_small.wren rename to test/core/string/subscript_range_to_too_small.wren diff --git a/test/string/subscript_too_large.wren b/test/core/string/subscript_too_large.wren similarity index 100% rename from test/string/subscript_too_large.wren rename to test/core/string/subscript_too_large.wren diff --git a/test/string/subscript_too_small.wren b/test/core/string/subscript_too_small.wren similarity index 100% rename from test/string/subscript_too_small.wren rename to test/core/string/subscript_too_small.wren diff --git a/test/string/to_string.wren b/test/core/string/to_string.wren similarity index 100% rename from test/string/to_string.wren rename to test/core/string/to_string.wren diff --git a/test/string/type.wren b/test/core/string/type.wren similarity index 100% rename from test/string/type.wren rename to test/core/string/type.wren diff --git a/test/assignment/associativity.wren b/test/language/assignment/associativity.wren similarity index 100% rename from test/assignment/associativity.wren rename to test/language/assignment/associativity.wren diff --git a/test/assignment/global.wren b/test/language/assignment/global.wren similarity index 100% rename from test/assignment/global.wren rename to test/language/assignment/global.wren diff --git a/test/assignment/grouping.wren b/test/language/assignment/grouping.wren similarity index 100% rename from test/assignment/grouping.wren rename to test/language/assignment/grouping.wren diff --git a/test/assignment/infix_operator.wren b/test/language/assignment/infix_operator.wren similarity index 100% rename from test/assignment/infix_operator.wren rename to test/language/assignment/infix_operator.wren diff --git a/test/assignment/is.wren b/test/language/assignment/is.wren similarity index 100% rename from test/assignment/is.wren rename to test/language/assignment/is.wren diff --git a/test/assignment/local.wren b/test/language/assignment/local.wren similarity index 100% rename from test/assignment/local.wren rename to test/language/assignment/local.wren diff --git a/test/assignment/prefix_operator.wren b/test/language/assignment/prefix_operator.wren similarity index 100% rename from test/assignment/prefix_operator.wren rename to test/language/assignment/prefix_operator.wren diff --git a/test/assignment/syntax.wren b/test/language/assignment/syntax.wren similarity index 100% rename from test/assignment/syntax.wren rename to test/language/assignment/syntax.wren diff --git a/test/assignment/undefined.wren b/test/language/assignment/undefined.wren similarity index 100% rename from test/assignment/undefined.wren rename to test/language/assignment/undefined.wren diff --git a/test/bitwise_precedence.wren b/test/language/bitwise_precedence.wren similarity index 100% rename from test/bitwise_precedence.wren rename to test/language/bitwise_precedence.wren diff --git a/test/break/closure_in_for.wren b/test/language/break/closure_in_for.wren similarity index 100% rename from test/break/closure_in_for.wren rename to test/language/break/closure_in_for.wren diff --git a/test/break/closure_in_while.wren b/test/language/break/closure_in_while.wren similarity index 100% rename from test/break/closure_in_while.wren rename to test/language/break/closure_in_while.wren diff --git a/test/break/exit_local_scopes.wren b/test/language/break/exit_local_scopes.wren similarity index 100% rename from test/break/exit_local_scopes.wren rename to test/language/break/exit_local_scopes.wren diff --git a/test/break/in_for_loop.wren b/test/language/break/in_for_loop.wren similarity index 100% rename from test/break/in_for_loop.wren rename to test/language/break/in_for_loop.wren diff --git a/test/break/in_function_in_loop.wren b/test/language/break/in_function_in_loop.wren similarity index 100% rename from test/break/in_function_in_loop.wren rename to test/language/break/in_function_in_loop.wren diff --git a/test/break/in_method_in_loop.wren b/test/language/break/in_method_in_loop.wren similarity index 100% rename from test/break/in_method_in_loop.wren rename to test/language/break/in_method_in_loop.wren diff --git a/test/break/in_while_loop.wren b/test/language/break/in_while_loop.wren similarity index 100% rename from test/break/in_while_loop.wren rename to test/language/break/in_while_loop.wren diff --git a/test/break/nested_for_loop.wren b/test/language/break/nested_for_loop.wren similarity index 100% rename from test/break/nested_for_loop.wren rename to test/language/break/nested_for_loop.wren diff --git a/test/break/nested_while_loop.wren b/test/language/break/nested_while_loop.wren similarity index 100% rename from test/break/nested_while_loop.wren rename to test/language/break/nested_while_loop.wren diff --git a/test/break/outside_loop.wren b/test/language/break/outside_loop.wren similarity index 100% rename from test/break/outside_loop.wren rename to test/language/break/outside_loop.wren diff --git a/test/class/name_inside_body.wren b/test/language/class/name_inside_body.wren similarity index 100% rename from test/class/name_inside_body.wren rename to test/language/class/name_inside_body.wren diff --git a/test/class/new.wren b/test/language/class/new.wren similarity index 100% rename from test/class/new.wren rename to test/language/class/new.wren diff --git a/test/class/newline_after_class.wren b/test/language/class/newline_after_class.wren similarity index 100% rename from test/class/newline_after_class.wren rename to test/language/class/newline_after_class.wren diff --git a/test/class/newline_after_static.wren b/test/language/class/newline_after_static.wren similarity index 100% rename from test/class/newline_after_static.wren rename to test/language/class/newline_after_static.wren diff --git a/test/class/syntax.wren b/test/language/class/syntax.wren similarity index 100% rename from test/class/syntax.wren rename to test/language/class/syntax.wren diff --git a/test/closure/assign_to_closure.wren b/test/language/closure/assign_to_closure.wren similarity index 100% rename from test/closure/assign_to_closure.wren rename to test/language/closure/assign_to_closure.wren diff --git a/test/closure/close_over_function_parameter.wren b/test/language/closure/close_over_function_parameter.wren similarity index 100% rename from test/closure/close_over_function_parameter.wren rename to test/language/closure/close_over_function_parameter.wren diff --git a/test/closure/close_over_later_variable.wren b/test/language/closure/close_over_later_variable.wren similarity index 100% rename from test/closure/close_over_later_variable.wren rename to test/language/closure/close_over_later_variable.wren diff --git a/test/closure/close_over_method_parameter.wren b/test/language/closure/close_over_method_parameter.wren similarity index 100% rename from test/closure/close_over_method_parameter.wren rename to test/language/closure/close_over_method_parameter.wren diff --git a/test/closure/closed_closure_in_function.wren b/test/language/closure/closed_closure_in_function.wren similarity index 100% rename from test/closure/closed_closure_in_function.wren rename to test/language/closure/closed_closure_in_function.wren diff --git a/test/closure/closed_closure_in_method.wren b/test/language/closure/closed_closure_in_method.wren similarity index 100% rename from test/closure/closed_closure_in_method.wren rename to test/language/closure/closed_closure_in_method.wren diff --git a/test/closure/nested_closure.wren b/test/language/closure/nested_closure.wren similarity index 100% rename from test/closure/nested_closure.wren rename to test/language/closure/nested_closure.wren diff --git a/test/closure/open_closure_in_function.wren b/test/language/closure/open_closure_in_function.wren similarity index 100% rename from test/closure/open_closure_in_function.wren rename to test/language/closure/open_closure_in_function.wren diff --git a/test/closure/open_closure_in_method.wren b/test/language/closure/open_closure_in_method.wren similarity index 100% rename from test/closure/open_closure_in_method.wren rename to test/language/closure/open_closure_in_method.wren diff --git a/test/closure/reference_closure_multiple_times.wren b/test/language/closure/reference_closure_multiple_times.wren similarity index 100% rename from test/closure/reference_closure_multiple_times.wren rename to test/language/closure/reference_closure_multiple_times.wren diff --git a/test/closure/reuse_closure_slot.wren b/test/language/closure/reuse_closure_slot.wren similarity index 100% rename from test/closure/reuse_closure_slot.wren rename to test/language/closure/reuse_closure_slot.wren diff --git a/test/closure/shadow_closure_with_local.wren b/test/language/closure/shadow_closure_with_local.wren similarity index 100% rename from test/closure/shadow_closure_with_local.wren rename to test/language/closure/shadow_closure_with_local.wren diff --git a/test/comments/block.wren b/test/language/comments/block.wren similarity index 100% rename from test/comments/block.wren rename to test/language/comments/block.wren diff --git a/test/comments/block_at_eof.wren b/test/language/comments/block_at_eof.wren similarity index 100% rename from test/comments/block_at_eof.wren rename to test/language/comments/block_at_eof.wren diff --git a/test/comments/line_at_eof.wren b/test/language/comments/line_at_eof.wren similarity index 100% rename from test/comments/line_at_eof.wren rename to test/language/comments/line_at_eof.wren diff --git a/test/comments/only_line_comment.wren b/test/language/comments/only_line_comment.wren similarity index 100% rename from test/comments/only_line_comment.wren rename to test/language/comments/only_line_comment.wren diff --git a/test/comments/only_line_comment_and_line.wren b/test/language/comments/only_line_comment_and_line.wren similarity index 100% rename from test/comments/only_line_comment_and_line.wren rename to test/language/comments/only_line_comment_and_line.wren diff --git a/test/comments/unicode.wren b/test/language/comments/unicode.wren similarity index 100% rename from test/comments/unicode.wren rename to test/language/comments/unicode.wren diff --git a/test/comments/unterminated_block.wren b/test/language/comments/unterminated_block.wren similarity index 100% rename from test/comments/unterminated_block.wren rename to test/language/comments/unterminated_block.wren diff --git a/test/comments/unterminated_nested_block.wren b/test/language/comments/unterminated_nested_block.wren similarity index 100% rename from test/comments/unterminated_nested_block.wren rename to test/language/comments/unterminated_nested_block.wren diff --git a/test/conditional/conditional_in_then.wren b/test/language/conditional/conditional_in_then.wren similarity index 100% rename from test/conditional/conditional_in_then.wren rename to test/language/conditional/conditional_in_then.wren diff --git a/test/conditional/missing_colon.wren b/test/language/conditional/missing_colon.wren similarity index 100% rename from test/conditional/missing_colon.wren rename to test/language/conditional/missing_colon.wren diff --git a/test/conditional/missing_condition.wren b/test/language/conditional/missing_condition.wren similarity index 100% rename from test/conditional/missing_condition.wren rename to test/language/conditional/missing_condition.wren diff --git a/test/conditional/missing_else.wren b/test/language/conditional/missing_else.wren similarity index 100% rename from test/conditional/missing_else.wren rename to test/language/conditional/missing_else.wren diff --git a/test/conditional/missing_question.wren b/test/language/conditional/missing_question.wren similarity index 100% rename from test/conditional/missing_question.wren rename to test/language/conditional/missing_question.wren diff --git a/test/conditional/missing_then.wren b/test/language/conditional/missing_then.wren similarity index 100% rename from test/conditional/missing_then.wren rename to test/language/conditional/missing_then.wren diff --git a/test/conditional/newlines.wren b/test/language/conditional/newlines.wren similarity index 100% rename from test/conditional/newlines.wren rename to test/language/conditional/newlines.wren diff --git a/test/conditional/precedence.wren b/test/language/conditional/precedence.wren similarity index 100% rename from test/conditional/precedence.wren rename to test/language/conditional/precedence.wren diff --git a/test/conditional/short_circuit.wren b/test/language/conditional/short_circuit.wren similarity index 100% rename from test/conditional/short_circuit.wren rename to test/language/conditional/short_circuit.wren diff --git a/test/constructor/default.wren b/test/language/constructor/default.wren similarity index 100% rename from test/constructor/default.wren rename to test/language/constructor/default.wren diff --git a/test/constructor/infix_class_expression.wren b/test/language/constructor/infix_class_expression.wren similarity index 100% rename from test/constructor/infix_class_expression.wren rename to test/language/constructor/infix_class_expression.wren diff --git a/test/constructor/new.wren b/test/language/constructor/new.wren similarity index 67% rename from test/constructor/new.wren rename to test/language/constructor/new.wren index 2264c3be..f58f490b 100644 --- a/test/constructor/new.wren +++ b/test/language/constructor/new.wren @@ -1,5 +1,6 @@ class Foo { - new { IO.print("zero") } + new { IO.print("none") } + new() { IO.print("zero") } new(a) { IO.print(a) } new(a, b) { IO.print(a + b) } @@ -7,11 +8,12 @@ class Foo { } // Can overload by arity. -new Foo // expect: zero +new Foo // expect: none +new Foo() // expect: zero new Foo("one") // expect: one new Foo("one", "two") // expect: onetwo // Returns the new instance. -var foo = new Foo // expect: zero +var foo = new Foo // expect: none IO.print(foo is Foo) // expect: true IO.print(foo.toString) // expect: Foo diff --git a/test/constructor/superclass.wren b/test/language/constructor/superclass.wren similarity index 100% rename from test/constructor/superclass.wren rename to test/language/constructor/superclass.wren diff --git a/test/empty_block.wren b/test/language/empty_block.wren similarity index 100% rename from test/empty_block.wren rename to test/language/empty_block.wren diff --git a/test/empty_file.wren b/test/language/empty_file.wren similarity index 100% rename from test/empty_file.wren rename to test/language/empty_file.wren diff --git a/test/fiber/closure.wren b/test/language/fiber/closure.wren similarity index 100% rename from test/fiber/closure.wren rename to test/language/fiber/closure.wren diff --git a/test/field/closure.wren b/test/language/field/closure.wren similarity index 100% rename from test/field/closure.wren rename to test/language/field/closure.wren diff --git a/test/field/default_to_null.wren b/test/language/field/default_to_null.wren similarity index 100% rename from test/field/default_to_null.wren rename to test/language/field/default_to_null.wren diff --git a/test/field/in_fn_in_static_method.wren b/test/language/field/in_fn_in_static_method.wren similarity index 100% rename from test/field/in_fn_in_static_method.wren rename to test/language/field/in_fn_in_static_method.wren diff --git a/test/field/in_static_method.wren b/test/language/field/in_static_method.wren similarity index 100% rename from test/field/in_static_method.wren rename to test/language/field/in_static_method.wren diff --git a/test/field/in_static_method_in_nested_class.wren b/test/language/field/in_static_method_in_nested_class.wren similarity index 100% rename from test/field/in_static_method_in_nested_class.wren rename to test/language/field/in_static_method_in_nested_class.wren diff --git a/test/field/multiple.wren b/test/language/field/multiple.wren similarity index 100% rename from test/field/multiple.wren rename to test/language/field/multiple.wren diff --git a/test/field/nested_class.wren b/test/language/field/nested_class.wren similarity index 100% rename from test/field/nested_class.wren rename to test/language/field/nested_class.wren diff --git a/test/field/object_reference.wren b/test/language/field/object_reference.wren similarity index 100% rename from test/field/object_reference.wren rename to test/language/field/object_reference.wren diff --git a/test/field/outside_class.wren b/test/language/field/outside_class.wren similarity index 100% rename from test/field/outside_class.wren rename to test/language/field/outside_class.wren diff --git a/test/field/use_before_set.wren b/test/language/field/use_before_set.wren similarity index 100% rename from test/field/use_before_set.wren rename to test/language/field/use_before_set.wren diff --git a/test/for/close_over_loop_variable.wren b/test/language/for/close_over_loop_variable.wren similarity index 100% rename from test/for/close_over_loop_variable.wren rename to test/language/for/close_over_loop_variable.wren diff --git a/test/for/closure_in_body.wren b/test/language/for/closure_in_body.wren similarity index 100% rename from test/for/closure_in_body.wren rename to test/language/for/closure_in_body.wren diff --git a/test/for/newline_after_for.wren b/test/language/for/newline_after_for.wren similarity index 100% rename from test/for/newline_after_for.wren rename to test/language/for/newline_after_for.wren diff --git a/test/for/newline_before_in.wren b/test/language/for/newline_before_in.wren similarity index 100% rename from test/for/newline_before_in.wren rename to test/language/for/newline_before_in.wren diff --git a/test/for/only_evaluate_sequence_once.wren b/test/language/for/only_evaluate_sequence_once.wren similarity index 100% rename from test/for/only_evaluate_sequence_once.wren rename to test/language/for/only_evaluate_sequence_once.wren diff --git a/test/for/return_closure.wren b/test/language/for/return_closure.wren similarity index 100% rename from test/for/return_closure.wren rename to test/language/for/return_closure.wren diff --git a/test/for/return_inside.wren b/test/language/for/return_inside.wren similarity index 100% rename from test/for/return_inside.wren rename to test/language/for/return_inside.wren diff --git a/test/for/syntax.wren b/test/language/for/syntax.wren similarity index 100% rename from test/for/syntax.wren rename to test/language/for/syntax.wren diff --git a/test/for/truth.wren b/test/language/for/truth.wren similarity index 100% rename from test/for/truth.wren rename to test/language/for/truth.wren diff --git a/test/function/empty_body.wren b/test/language/function/empty_body.wren similarity index 100% rename from test/function/empty_body.wren rename to test/language/function/empty_body.wren diff --git a/test/function/newline_body.wren b/test/language/function/newline_body.wren similarity index 100% rename from test/function/newline_body.wren rename to test/language/function/newline_body.wren diff --git a/test/function/newline_in_expression_block.wren b/test/language/function/newline_in_expression_block.wren similarity index 100% rename from test/function/newline_in_expression_block.wren rename to test/language/function/newline_in_expression_block.wren diff --git a/test/function/no_newline_before_close.wren b/test/language/function/no_newline_before_close.wren similarity index 100% rename from test/function/no_newline_before_close.wren rename to test/language/function/no_newline_before_close.wren diff --git a/test/function/no_parameters.wren b/test/language/function/no_parameters.wren similarity index 100% rename from test/function/no_parameters.wren rename to test/language/function/no_parameters.wren diff --git a/test/function/parameters.wren b/test/language/function/parameters.wren similarity index 100% rename from test/function/parameters.wren rename to test/language/function/parameters.wren diff --git a/test/function/syntax.wren b/test/language/function/syntax.wren similarity index 100% rename from test/function/syntax.wren rename to test/language/function/syntax.wren diff --git a/test/if/dangling_else.wren b/test/language/if/dangling_else.wren similarity index 100% rename from test/if/dangling_else.wren rename to test/language/if/dangling_else.wren diff --git a/test/if/else.wren b/test/language/if/else.wren similarity index 100% rename from test/if/else.wren rename to test/language/if/else.wren diff --git a/test/if/if.wren b/test/language/if/if.wren similarity index 100% rename from test/if/if.wren rename to test/language/if/if.wren diff --git a/test/if/newline_after_else.wren b/test/language/if/newline_after_else.wren similarity index 100% rename from test/if/newline_after_else.wren rename to test/language/if/newline_after_else.wren diff --git a/test/if/newline_after_if.wren b/test/language/if/newline_after_if.wren similarity index 100% rename from test/if/newline_after_if.wren rename to test/language/if/newline_after_if.wren diff --git a/test/if/truth.wren b/test/language/if/truth.wren similarity index 100% rename from test/if/truth.wren rename to test/language/if/truth.wren diff --git a/test/ignore_carriage_returns.wren b/test/language/ignore_carriage_returns.wren similarity index 100% rename from test/ignore_carriage_returns.wren rename to test/language/ignore_carriage_returns.wren diff --git a/test/implicit_receiver/inherited_methods.wren b/test/language/implicit_receiver/inherited_methods.wren similarity index 100% rename from test/implicit_receiver/inherited_methods.wren rename to test/language/implicit_receiver/inherited_methods.wren diff --git a/test/implicit_receiver/instance_methods.wren b/test/language/implicit_receiver/instance_methods.wren similarity index 100% rename from test/implicit_receiver/instance_methods.wren rename to test/language/implicit_receiver/instance_methods.wren diff --git a/test/implicit_receiver/locals_shadow_getter.wren b/test/language/implicit_receiver/locals_shadow_getter.wren similarity index 100% rename from test/implicit_receiver/locals_shadow_getter.wren rename to test/language/implicit_receiver/locals_shadow_getter.wren diff --git a/test/implicit_receiver/locals_shadow_setter.wren b/test/language/implicit_receiver/locals_shadow_setter.wren similarity index 100% rename from test/implicit_receiver/locals_shadow_setter.wren rename to test/language/implicit_receiver/locals_shadow_setter.wren diff --git a/test/implicit_receiver/nested_class.wren b/test/language/implicit_receiver/nested_class.wren similarity index 100% rename from test/implicit_receiver/nested_class.wren rename to test/language/implicit_receiver/nested_class.wren diff --git a/test/implicit_receiver/static_methods.wren b/test/language/implicit_receiver/static_methods.wren similarity index 100% rename from test/implicit_receiver/static_methods.wren rename to test/language/implicit_receiver/static_methods.wren diff --git a/test/inheritance/do_not_inherit_static_methods.wren b/test/language/inheritance/do_not_inherit_static_methods.wren similarity index 100% rename from test/inheritance/do_not_inherit_static_methods.wren rename to test/language/inheritance/do_not_inherit_static_methods.wren diff --git a/test/inheritance/inherit_fields.wren b/test/language/inheritance/inherit_fields.wren similarity index 100% rename from test/inheritance/inherit_fields.wren rename to test/language/inheritance/inherit_fields.wren diff --git a/test/inheritance/inherit_from_class.wren b/test/language/inheritance/inherit_from_class.wren similarity index 100% rename from test/inheritance/inherit_from_class.wren rename to test/language/inheritance/inherit_from_class.wren diff --git a/test/inheritance/inherit_from_closure.wren b/test/language/inheritance/inherit_from_closure.wren similarity index 100% rename from test/inheritance/inherit_from_closure.wren rename to test/language/inheritance/inherit_from_closure.wren diff --git a/test/inheritance/inherit_from_fiber.wren b/test/language/inheritance/inherit_from_fiber.wren similarity index 100% rename from test/inheritance/inherit_from_fiber.wren rename to test/language/inheritance/inherit_from_fiber.wren diff --git a/test/inheritance/inherit_from_fn.wren b/test/language/inheritance/inherit_from_fn.wren similarity index 100% rename from test/inheritance/inherit_from_fn.wren rename to test/language/inheritance/inherit_from_fn.wren diff --git a/test/inheritance/inherit_from_list.wren b/test/language/inheritance/inherit_from_list.wren similarity index 100% rename from test/inheritance/inherit_from_list.wren rename to test/language/inheritance/inherit_from_list.wren diff --git a/test/inheritance/inherit_from_map.wren b/test/language/inheritance/inherit_from_map.wren similarity index 100% rename from test/inheritance/inherit_from_map.wren rename to test/language/inheritance/inherit_from_map.wren diff --git a/test/inheritance/inherit_from_nonclass.wren b/test/language/inheritance/inherit_from_nonclass.wren similarity index 100% rename from test/inheritance/inherit_from_nonclass.wren rename to test/language/inheritance/inherit_from_nonclass.wren diff --git a/test/inheritance/inherit_from_range.wren b/test/language/inheritance/inherit_from_range.wren similarity index 100% rename from test/inheritance/inherit_from_range.wren rename to test/language/inheritance/inherit_from_range.wren diff --git a/test/inheritance/inherit_from_string.wren b/test/language/inheritance/inherit_from_string.wren similarity index 100% rename from test/inheritance/inherit_from_string.wren rename to test/language/inheritance/inherit_from_string.wren diff --git a/test/inheritance/inherit_methods.wren b/test/language/inheritance/inherit_methods.wren similarity index 100% rename from test/inheritance/inherit_methods.wren rename to test/language/inheritance/inherit_methods.wren diff --git a/test/inheritance/inherited_fields_in_closure.wren b/test/language/inheritance/inherited_fields_in_closure.wren similarity index 100% rename from test/inheritance/inherited_fields_in_closure.wren rename to test/language/inheritance/inherited_fields_in_closure.wren diff --git a/test/inheritance/is.wren b/test/language/inheritance/is.wren similarity index 100% rename from test/inheritance/is.wren rename to test/language/inheritance/is.wren diff --git a/test/is/is.wren b/test/language/is/is.wren similarity index 100% rename from test/is/is.wren rename to test/language/is/is.wren diff --git a/test/is/nonclass_on_right.wren b/test/language/is/nonclass_on_right.wren similarity index 100% rename from test/is/nonclass_on_right.wren rename to test/language/is/nonclass_on_right.wren diff --git a/test/list/eof_after_comma.wren b/test/language/list/eof_after_comma.wren similarity index 100% rename from test/list/eof_after_comma.wren rename to test/language/list/eof_after_comma.wren diff --git a/test/list/eof_after_element.wren b/test/language/list/eof_after_element.wren similarity index 100% rename from test/list/eof_after_element.wren rename to test/language/list/eof_after_element.wren diff --git a/test/list/grow_shrink.wren b/test/language/list/grow_shrink.wren similarity index 100% rename from test/list/grow_shrink.wren rename to test/language/list/grow_shrink.wren diff --git a/test/list/newline_before_comma.wren b/test/language/list/newline_before_comma.wren similarity index 100% rename from test/list/newline_before_comma.wren rename to test/language/list/newline_before_comma.wren diff --git a/test/list/newlines.wren b/test/language/list/newlines.wren similarity index 100% rename from test/list/newlines.wren rename to test/language/list/newlines.wren diff --git a/test/logical_operator/and.wren b/test/language/logical_operator/and.wren similarity index 100% rename from test/logical_operator/and.wren rename to test/language/logical_operator/and.wren diff --git a/test/logical_operator/and_truth.wren b/test/language/logical_operator/and_truth.wren similarity index 100% rename from test/logical_operator/and_truth.wren rename to test/language/logical_operator/and_truth.wren diff --git a/test/logical_operator/or.wren b/test/language/logical_operator/or.wren similarity index 100% rename from test/logical_operator/or.wren rename to test/language/logical_operator/or.wren diff --git a/test/logical_operator/or_truth.wren b/test/language/logical_operator/or_truth.wren similarity index 100% rename from test/logical_operator/or_truth.wren rename to test/language/logical_operator/or_truth.wren diff --git a/test/map/eof_after_colon.wren b/test/language/map/eof_after_colon.wren similarity index 100% rename from test/map/eof_after_colon.wren rename to test/language/map/eof_after_colon.wren diff --git a/test/map/eof_after_comma.wren b/test/language/map/eof_after_comma.wren similarity index 100% rename from test/map/eof_after_comma.wren rename to test/language/map/eof_after_comma.wren diff --git a/test/map/eof_after_key.wren b/test/language/map/eof_after_key.wren similarity index 100% rename from test/map/eof_after_key.wren rename to test/language/map/eof_after_key.wren diff --git a/test/map/eof_after_value.wren b/test/language/map/eof_after_value.wren similarity index 100% rename from test/map/eof_after_value.wren rename to test/language/map/eof_after_value.wren diff --git a/test/map/grow_and_shrink.wren b/test/language/map/grow_and_shrink.wren similarity index 100% rename from test/map/grow_and_shrink.wren rename to test/language/map/grow_and_shrink.wren diff --git a/test/method/arity.wren b/test/language/method/arity.wren similarity index 100% rename from test/method/arity.wren rename to test/language/method/arity.wren diff --git a/test/method/call_name_too_long.wren b/test/language/method/call_name_too_long.wren similarity index 100% rename from test/method/call_name_too_long.wren rename to test/language/method/call_name_too_long.wren diff --git a/test/method/empty_block.wren b/test/language/method/empty_block.wren similarity index 100% rename from test/method/empty_block.wren rename to test/language/method/empty_block.wren diff --git a/test/method/empty_subscript_call.wren b/test/language/method/empty_subscript_call.wren similarity index 100% rename from test/method/empty_subscript_call.wren rename to test/language/method/empty_subscript_call.wren diff --git a/test/method/empty_subscript_definition.wren b/test/language/method/empty_subscript_definition.wren similarity index 100% rename from test/method/empty_subscript_definition.wren rename to test/language/method/empty_subscript_definition.wren diff --git a/test/method/long_name.wren b/test/language/method/long_name.wren similarity index 100% rename from test/method/long_name.wren rename to test/language/method/long_name.wren diff --git a/test/method/many_methods.wren b/test/language/method/many_methods.wren similarity index 100% rename from test/method/many_methods.wren rename to test/language/method/many_methods.wren diff --git a/test/method/name_too_long.wren b/test/language/method/name_too_long.wren similarity index 100% rename from test/method/name_too_long.wren rename to test/language/method/name_too_long.wren diff --git a/test/method/newlines.wren b/test/language/method/newlines.wren similarity index 100% rename from test/method/newlines.wren rename to test/language/method/newlines.wren diff --git a/test/method/not_found.wren b/test/language/method/not_found.wren similarity index 100% rename from test/method/not_found.wren rename to test/language/method/not_found.wren diff --git a/test/method/not_found_eleven_arguments.wren b/test/language/method/not_found_eleven_arguments.wren similarity index 100% rename from test/method/not_found_eleven_arguments.wren rename to test/language/method/not_found_eleven_arguments.wren diff --git a/test/method/not_found_multiple_arguments.wren b/test/language/method/not_found_multiple_arguments.wren similarity index 100% rename from test/method/not_found_multiple_arguments.wren rename to test/language/method/not_found_multiple_arguments.wren diff --git a/test/method/not_found_one_argument.wren b/test/language/method/not_found_one_argument.wren similarity index 100% rename from test/method/not_found_one_argument.wren rename to test/language/method/not_found_one_argument.wren diff --git a/test/method/operators.wren b/test/language/method/operators.wren similarity index 100% rename from test/method/operators.wren rename to test/language/method/operators.wren diff --git a/test/method/static.wren b/test/language/method/static.wren similarity index 100% rename from test/method/static.wren rename to test/language/method/static.wren diff --git a/test/method/static_method_not_found.wren b/test/language/method/static_method_not_found.wren similarity index 100% rename from test/method/static_method_not_found.wren rename to test/language/method/static_method_not_found.wren diff --git a/test/method/subscript_operators.wren b/test/language/method/subscript_operators.wren similarity index 100% rename from test/method/subscript_operators.wren rename to test/language/method/subscript_operators.wren diff --git a/test/method/subscript_setter_too_many_arguments.wren b/test/language/method/subscript_setter_too_many_arguments.wren similarity index 100% rename from test/method/subscript_setter_too_many_arguments.wren rename to test/language/method/subscript_setter_too_many_arguments.wren diff --git a/test/method/subscript_too_many_arguments.wren b/test/language/method/subscript_too_many_arguments.wren similarity index 100% rename from test/method/subscript_too_many_arguments.wren rename to test/language/method/subscript_too_many_arguments.wren diff --git a/test/method/too_many_arguments.wren b/test/language/method/too_many_arguments.wren similarity index 100% rename from test/method/too_many_arguments.wren rename to test/language/method/too_many_arguments.wren diff --git a/test/method/too_many_parameters.wren b/test/language/method/too_many_parameters.wren similarity index 100% rename from test/method/too_many_parameters.wren rename to test/language/method/too_many_parameters.wren diff --git a/test/module/change_imported_value/change_imported_value.wren b/test/language/module/change_imported_value/change_imported_value.wren similarity index 100% rename from test/module/change_imported_value/change_imported_value.wren rename to test/language/module/change_imported_value/change_imported_value.wren diff --git a/test/module/change_imported_value/module.wren b/test/language/module/change_imported_value/module.wren similarity index 100% rename from test/module/change_imported_value/module.wren rename to test/language/module/change_imported_value/module.wren diff --git a/test/module/cyclic_import/a.wren b/test/language/module/cyclic_import/a.wren similarity index 100% rename from test/module/cyclic_import/a.wren rename to test/language/module/cyclic_import/a.wren diff --git a/test/module/cyclic_import/b.wren b/test/language/module/cyclic_import/b.wren similarity index 100% rename from test/module/cyclic_import/b.wren rename to test/language/module/cyclic_import/b.wren diff --git a/test/module/cyclic_import/cyclic_import.wren b/test/language/module/cyclic_import/cyclic_import.wren similarity index 100% rename from test/module/cyclic_import/cyclic_import.wren rename to test/language/module/cyclic_import/cyclic_import.wren diff --git a/test/module/implicitly_imports_core/implicitly_imports_core.wren b/test/language/module/implicitly_imports_core/implicitly_imports_core.wren similarity index 100% rename from test/module/implicitly_imports_core/implicitly_imports_core.wren rename to test/language/module/implicitly_imports_core/implicitly_imports_core.wren diff --git a/test/module/implicitly_imports_core/module.wren b/test/language/module/implicitly_imports_core/module.wren similarity index 100% rename from test/module/implicitly_imports_core/module.wren rename to test/language/module/implicitly_imports_core/module.wren diff --git a/test/module/inside_block/inside_block.wren b/test/language/module/inside_block/inside_block.wren similarity index 100% rename from test/module/inside_block/inside_block.wren rename to test/language/module/inside_block/inside_block.wren diff --git a/test/module/inside_block/module.wren b/test/language/module/inside_block/module.wren similarity index 100% rename from test/module/inside_block/module.wren rename to test/language/module/inside_block/module.wren diff --git a/test/module/missing_for.wren b/test/language/module/missing_for.wren similarity index 100% rename from test/module/missing_for.wren rename to test/language/module/missing_for.wren diff --git a/test/module/missing_string_after_import.wren b/test/language/module/missing_string_after_import.wren similarity index 100% rename from test/module/missing_string_after_import.wren rename to test/language/module/missing_string_after_import.wren diff --git a/test/module/multiple_variables/module.wren b/test/language/module/multiple_variables/module.wren similarity index 100% rename from test/module/multiple_variables/module.wren rename to test/language/module/multiple_variables/module.wren diff --git a/test/module/multiple_variables/multiple_variables.wren b/test/language/module/multiple_variables/multiple_variables.wren similarity index 100% rename from test/module/multiple_variables/multiple_variables.wren rename to test/language/module/multiple_variables/multiple_variables.wren diff --git a/test/module/name_collision.wren b/test/language/module/name_collision.wren similarity index 100% rename from test/module/name_collision.wren rename to test/language/module/name_collision.wren diff --git a/test/module/no_variable/module.wren b/test/language/module/no_variable/module.wren similarity index 100% rename from test/module/no_variable/module.wren rename to test/language/module/no_variable/module.wren diff --git a/test/module/no_variable/no_variable.wren b/test/language/module/no_variable/no_variable.wren similarity index 100% rename from test/module/no_variable/no_variable.wren rename to test/language/module/no_variable/no_variable.wren diff --git a/test/module/shared_import/a.wren b/test/language/module/shared_import/a.wren similarity index 100% rename from test/module/shared_import/a.wren rename to test/language/module/shared_import/a.wren diff --git a/test/module/shared_import/b.wren b/test/language/module/shared_import/b.wren similarity index 100% rename from test/module/shared_import/b.wren rename to test/language/module/shared_import/b.wren diff --git a/test/module/shared_import/shared.wren b/test/language/module/shared_import/shared.wren similarity index 100% rename from test/module/shared_import/shared.wren rename to test/language/module/shared_import/shared.wren diff --git a/test/module/shared_import/shared_import.wren b/test/language/module/shared_import/shared_import.wren similarity index 100% rename from test/module/shared_import/shared_import.wren rename to test/language/module/shared_import/shared_import.wren diff --git a/test/module/simple_import/module.wren b/test/language/module/simple_import/module.wren similarity index 100% rename from test/module/simple_import/module.wren rename to test/language/module/simple_import/module.wren diff --git a/test/module/simple_import/simple_import.wren b/test/language/module/simple_import/simple_import.wren similarity index 100% rename from test/module/simple_import/simple_import.wren rename to test/language/module/simple_import/simple_import.wren diff --git a/test/module/unknown_module.wren b/test/language/module/unknown_module.wren similarity index 100% rename from test/module/unknown_module.wren rename to test/language/module/unknown_module.wren diff --git a/test/module/unknown_variable/module.wren b/test/language/module/unknown_variable/module.wren similarity index 100% rename from test/module/unknown_variable/module.wren rename to test/language/module/unknown_variable/module.wren diff --git a/test/module/unknown_variable/unknown_variable.wren b/test/language/module/unknown_variable/unknown_variable.wren similarity index 100% rename from test/module/unknown_variable/unknown_variable.wren rename to test/language/module/unknown_variable/unknown_variable.wren diff --git a/test/new/new_on_nonclass.wren b/test/language/new/new_on_nonclass.wren similarity index 100% rename from test/new/new_on_nonclass.wren rename to test/language/new/new_on_nonclass.wren diff --git a/test/new/newline_after_new.wren b/test/language/new/newline_after_new.wren similarity index 100% rename from test/new/newline_after_new.wren rename to test/language/new/newline_after_new.wren diff --git a/test/no_trailing_newline.wren b/test/language/no_trailing_newline.wren similarity index 100% rename from test/no_trailing_newline.wren rename to test/language/no_trailing_newline.wren diff --git a/test/nonlocal/assignment.wren b/test/language/nonlocal/assignment.wren similarity index 100% rename from test/nonlocal/assignment.wren rename to test/language/nonlocal/assignment.wren diff --git a/test/nonlocal/duplicate_nonlocal.wren b/test/language/nonlocal/duplicate_nonlocal.wren similarity index 100% rename from test/nonlocal/duplicate_nonlocal.wren rename to test/language/nonlocal/duplicate_nonlocal.wren diff --git a/test/nonlocal/in_block_scope.wren b/test/language/nonlocal/in_block_scope.wren similarity index 100% rename from test/nonlocal/in_block_scope.wren rename to test/language/nonlocal/in_block_scope.wren diff --git a/test/nonlocal/mutual_recursion.wren b/test/language/nonlocal/mutual_recursion.wren similarity index 100% rename from test/nonlocal/mutual_recursion.wren rename to test/language/nonlocal/mutual_recursion.wren diff --git a/test/nonlocal/null_before_defined.wren b/test/language/nonlocal/null_before_defined.wren similarity index 100% rename from test/nonlocal/null_before_defined.wren rename to test/language/nonlocal/null_before_defined.wren diff --git a/test/nonlocal/undefined.wren b/test/language/nonlocal/undefined.wren similarity index 100% rename from test/nonlocal/undefined.wren rename to test/language/nonlocal/undefined.wren diff --git a/test/nonlocal/use_in_function.wren b/test/language/nonlocal/use_in_function.wren similarity index 100% rename from test/nonlocal/use_in_function.wren rename to test/language/nonlocal/use_in_function.wren diff --git a/test/nonlocal/use_in_function_before_definition.wren b/test/language/nonlocal/use_in_function_before_definition.wren similarity index 100% rename from test/nonlocal/use_in_function_before_definition.wren rename to test/language/nonlocal/use_in_function_before_definition.wren diff --git a/test/nonlocal/use_in_method.wren b/test/language/nonlocal/use_in_method.wren similarity index 100% rename from test/nonlocal/use_in_method.wren rename to test/language/nonlocal/use_in_method.wren diff --git a/test/nonlocal/use_in_method_before_definition.wren b/test/language/nonlocal/use_in_method_before_definition.wren similarity index 100% rename from test/nonlocal/use_in_method_before_definition.wren rename to test/language/nonlocal/use_in_method_before_definition.wren diff --git a/test/null/literal.wren b/test/language/null/literal.wren similarity index 100% rename from test/null/literal.wren rename to test/language/null/literal.wren diff --git a/test/number/hex_literals.wren b/test/language/number/hex_literals.wren similarity index 100% rename from test/number/hex_literals.wren rename to test/language/number/hex_literals.wren diff --git a/test/number/hex_too_large.wren b/test/language/number/hex_too_large.wren similarity index 100% rename from test/number/hex_too_large.wren rename to test/language/number/hex_too_large.wren diff --git a/test/number/literal_too_large.wren b/test/language/number/literal_too_large.wren similarity index 100% rename from test/number/literal_too_large.wren rename to test/language/number/literal_too_large.wren diff --git a/test/number/literals.wren b/test/language/number/literals.wren similarity index 100% rename from test/number/literals.wren rename to test/language/number/literals.wren diff --git a/test/precedence.wren b/test/language/precedence.wren similarity index 100% rename from test/precedence.wren rename to test/language/precedence.wren diff --git a/test/return/after_else.wren b/test/language/return/after_else.wren similarity index 100% rename from test/return/after_else.wren rename to test/language/return/after_else.wren diff --git a/test/return/after_if.wren b/test/language/return/after_if.wren similarity index 100% rename from test/return/after_if.wren rename to test/language/return/after_if.wren diff --git a/test/return/after_while.wren b/test/language/return/after_while.wren similarity index 100% rename from test/return/after_while.wren rename to test/language/return/after_while.wren diff --git a/test/return/in_function.wren b/test/language/return/in_function.wren similarity index 100% rename from test/return/in_function.wren rename to test/language/return/in_function.wren diff --git a/test/return/in_method.wren b/test/language/return/in_method.wren similarity index 100% rename from test/return/in_method.wren rename to test/language/return/in_method.wren diff --git a/test/return/return_null_if_newline.wren b/test/language/return/return_null_if_newline.wren similarity index 100% rename from test/return/return_null_if_newline.wren rename to test/language/return/return_null_if_newline.wren diff --git a/test/semicolon.wren b/test/language/semicolon.wren similarity index 100% rename from test/semicolon.wren rename to test/language/semicolon.wren diff --git a/test/setter/associativity.wren b/test/language/setter/associativity.wren similarity index 100% rename from test/setter/associativity.wren rename to test/language/setter/associativity.wren diff --git a/test/setter/grouping.wren b/test/language/setter/grouping.wren similarity index 100% rename from test/setter/grouping.wren rename to test/language/setter/grouping.wren diff --git a/test/setter/infix_operator.wren b/test/language/setter/infix_operator.wren similarity index 100% rename from test/setter/infix_operator.wren rename to test/language/setter/infix_operator.wren diff --git a/test/setter/instance.wren b/test/language/setter/instance.wren similarity index 100% rename from test/setter/instance.wren rename to test/language/setter/instance.wren diff --git a/test/setter/is.wren b/test/language/setter/is.wren similarity index 100% rename from test/setter/is.wren rename to test/language/setter/is.wren diff --git a/test/setter/prefix_operator.wren b/test/language/setter/prefix_operator.wren similarity index 100% rename from test/setter/prefix_operator.wren rename to test/language/setter/prefix_operator.wren diff --git a/test/setter/result.wren b/test/language/setter/result.wren similarity index 100% rename from test/setter/result.wren rename to test/language/setter/result.wren diff --git a/test/setter/same_name_as_method.wren b/test/language/setter/same_name_as_method.wren similarity index 100% rename from test/setter/same_name_as_method.wren rename to test/language/setter/same_name_as_method.wren diff --git a/test/setter/static.wren b/test/language/setter/static.wren similarity index 100% rename from test/setter/static.wren rename to test/language/setter/static.wren diff --git a/test/shebang/shebang.wren b/test/language/shebang/shebang.wren similarity index 100% rename from test/shebang/shebang.wren rename to test/language/shebang/shebang.wren diff --git a/test/shebang/shebang_at_eof.wren b/test/language/shebang/shebang_at_eof.wren similarity index 100% rename from test/shebang/shebang_at_eof.wren rename to test/language/shebang/shebang_at_eof.wren diff --git a/test/shebang/shebang_at_other_line.wren b/test/language/shebang/shebang_at_other_line.wren similarity index 100% rename from test/shebang/shebang_at_other_line.wren rename to test/language/shebang/shebang_at_other_line.wren diff --git a/test/shebang/shebang_invalid.wren b/test/language/shebang/shebang_invalid.wren similarity index 100% rename from test/shebang/shebang_invalid.wren rename to test/language/shebang/shebang_invalid.wren diff --git a/test/static_field/closure.wren b/test/language/static_field/closure.wren similarity index 100% rename from test/static_field/closure.wren rename to test/language/static_field/closure.wren diff --git a/test/static_field/default_to_null.wren b/test/language/static_field/default_to_null.wren similarity index 100% rename from test/static_field/default_to_null.wren rename to test/language/static_field/default_to_null.wren diff --git a/test/static_field/in_instance_method.wren b/test/language/static_field/in_instance_method.wren similarity index 100% rename from test/static_field/in_instance_method.wren rename to test/language/static_field/in_instance_method.wren diff --git a/test/static_field/multiple.wren b/test/language/static_field/multiple.wren similarity index 100% rename from test/static_field/multiple.wren rename to test/language/static_field/multiple.wren diff --git a/test/static_field/nested_class.wren b/test/language/static_field/nested_class.wren similarity index 100% rename from test/static_field/nested_class.wren rename to test/language/static_field/nested_class.wren diff --git a/test/static_field/outside_class.wren b/test/language/static_field/outside_class.wren similarity index 100% rename from test/static_field/outside_class.wren rename to test/language/static_field/outside_class.wren diff --git a/test/static_field/use_before_set.wren b/test/language/static_field/use_before_set.wren similarity index 100% rename from test/static_field/use_before_set.wren rename to test/language/static_field/use_before_set.wren diff --git a/test/string/escapes.wren b/test/language/string/escapes.wren similarity index 100% rename from test/string/escapes.wren rename to test/language/string/escapes.wren diff --git a/test/string/incomplete_unicode_escape.wren b/test/language/string/incomplete_unicode_escape.wren similarity index 100% rename from test/string/incomplete_unicode_escape.wren rename to test/language/string/incomplete_unicode_escape.wren diff --git a/test/string/incomplete_unicode_escape_at_eof.wren b/test/language/string/incomplete_unicode_escape_at_eof.wren similarity index 100% rename from test/string/incomplete_unicode_escape_at_eof.wren rename to test/language/string/incomplete_unicode_escape_at_eof.wren diff --git a/test/string/invalid_escape.wren b/test/language/string/invalid_escape.wren similarity index 100% rename from test/string/invalid_escape.wren rename to test/language/string/invalid_escape.wren diff --git a/test/string/invalid_unicode_escape.wren b/test/language/string/invalid_unicode_escape.wren similarity index 100% rename from test/string/invalid_unicode_escape.wren rename to test/language/string/invalid_unicode_escape.wren diff --git a/test/string/literals.wren b/test/language/string/literals.wren similarity index 100% rename from test/string/literals.wren rename to test/language/string/literals.wren diff --git a/test/string/unicode_escapes.wren b/test/language/string/unicode_escapes.wren similarity index 100% rename from test/string/unicode_escapes.wren rename to test/language/string/unicode_escapes.wren diff --git a/test/string/unterminated.wren b/test/language/string/unterminated.wren similarity index 100% rename from test/string/unterminated.wren rename to test/language/string/unterminated.wren diff --git a/test/super/call_different_arity.wren b/test/language/super/call_different_arity.wren similarity index 100% rename from test/super/call_different_arity.wren rename to test/language/super/call_different_arity.wren diff --git a/test/super/call_other_method.wren b/test/language/super/call_other_method.wren similarity index 100% rename from test/super/call_other_method.wren rename to test/language/super/call_other_method.wren diff --git a/test/super/call_same_method.wren b/test/language/super/call_same_method.wren similarity index 100% rename from test/super/call_same_method.wren rename to test/language/super/call_same_method.wren diff --git a/test/super/closure.wren b/test/language/super/closure.wren similarity index 100% rename from test/super/closure.wren rename to test/language/super/closure.wren diff --git a/test/super/implicit_name.wren b/test/language/super/implicit_name.wren similarity index 100% rename from test/super/implicit_name.wren rename to test/language/super/implicit_name.wren diff --git a/test/super/indirectly_inherited.wren b/test/language/super/indirectly_inherited.wren similarity index 100% rename from test/super/indirectly_inherited.wren rename to test/language/super/indirectly_inherited.wren diff --git a/test/super/no_superclass_method.wren b/test/language/super/no_superclass_method.wren similarity index 100% rename from test/super/no_superclass_method.wren rename to test/language/super/no_superclass_method.wren diff --git a/test/super/super_at_top_level.wren b/test/language/super/super_at_top_level.wren similarity index 100% rename from test/super/super_at_top_level.wren rename to test/language/super/super_at_top_level.wren diff --git a/test/super/super_in_static_method.wren b/test/language/super/super_in_static_method.wren similarity index 100% rename from test/super/super_in_static_method.wren rename to test/language/super/super_in_static_method.wren diff --git a/test/super/super_in_top_level_function.wren b/test/language/super/super_in_top_level_function.wren similarity index 100% rename from test/super/super_in_top_level_function.wren rename to test/language/super/super_in_top_level_function.wren diff --git a/test/this/closure.wren b/test/language/this/closure.wren similarity index 100% rename from test/this/closure.wren rename to test/language/this/closure.wren diff --git a/test/this/nested_class.wren b/test/language/this/nested_class.wren similarity index 100% rename from test/this/nested_class.wren rename to test/language/this/nested_class.wren diff --git a/test/this/nested_closure.wren b/test/language/this/nested_closure.wren similarity index 100% rename from test/this/nested_closure.wren rename to test/language/this/nested_closure.wren diff --git a/test/this/this_at_top_level.wren b/test/language/this/this_at_top_level.wren similarity index 100% rename from test/this/this_at_top_level.wren rename to test/language/this/this_at_top_level.wren diff --git a/test/this/this_in_method.wren b/test/language/this/this_in_method.wren similarity index 100% rename from test/this/this_in_method.wren rename to test/language/this/this_in_method.wren diff --git a/test/this/this_in_static_method.wren b/test/language/this/this_in_static_method.wren similarity index 100% rename from test/this/this_in_static_method.wren rename to test/language/this/this_in_static_method.wren diff --git a/test/this/this_in_top_level_function.wren b/test/language/this/this_in_top_level_function.wren similarity index 100% rename from test/this/this_in_top_level_function.wren rename to test/language/this/this_in_top_level_function.wren diff --git a/test/unexpected_character.wren b/test/language/unexpected_character.wren similarity index 100% rename from test/unexpected_character.wren rename to test/language/unexpected_character.wren diff --git a/test/variable/duplicate_local.wren b/test/language/variable/duplicate_local.wren similarity index 100% rename from test/variable/duplicate_local.wren rename to test/language/variable/duplicate_local.wren diff --git a/test/variable/duplicate_parameter.wren b/test/language/variable/duplicate_parameter.wren similarity index 100% rename from test/variable/duplicate_parameter.wren rename to test/language/variable/duplicate_parameter.wren diff --git a/test/variable/global_in_initializer.wren b/test/language/variable/global_in_initializer.wren similarity index 100% rename from test/variable/global_in_initializer.wren rename to test/language/variable/global_in_initializer.wren diff --git a/test/variable/global_without_initializer.wren b/test/language/variable/global_without_initializer.wren similarity index 100% rename from test/variable/global_without_initializer.wren rename to test/language/variable/global_without_initializer.wren diff --git a/test/variable/local_collide_with_function_parameter.wren b/test/language/variable/local_collide_with_function_parameter.wren similarity index 100% rename from test/variable/local_collide_with_function_parameter.wren rename to test/language/variable/local_collide_with_function_parameter.wren diff --git a/test/variable/local_collide_with_method_parameter.wren b/test/language/variable/local_collide_with_method_parameter.wren similarity index 100% rename from test/variable/local_collide_with_method_parameter.wren rename to test/language/variable/local_collide_with_method_parameter.wren diff --git a/test/variable/local_in_initializer.wren b/test/language/variable/local_in_initializer.wren similarity index 100% rename from test/variable/local_in_initializer.wren rename to test/language/variable/local_in_initializer.wren diff --git a/test/variable/local_in_middle_of_block.wren b/test/language/variable/local_in_middle_of_block.wren similarity index 100% rename from test/variable/local_in_middle_of_block.wren rename to test/language/variable/local_in_middle_of_block.wren diff --git a/test/variable/local_in_nested_block.wren b/test/language/variable/local_in_nested_block.wren similarity index 100% rename from test/variable/local_in_nested_block.wren rename to test/language/variable/local_in_nested_block.wren diff --git a/test/variable/local_without_initializer.wren b/test/language/variable/local_without_initializer.wren similarity index 100% rename from test/variable/local_without_initializer.wren rename to test/language/variable/local_without_initializer.wren diff --git a/test/variable/many_locals.wren b/test/language/variable/many_locals.wren similarity index 100% rename from test/variable/many_locals.wren rename to test/language/variable/many_locals.wren diff --git a/test/variable/many_nonsimultaneous_locals.wren b/test/language/variable/many_nonsimultaneous_locals.wren similarity index 100% rename from test/variable/many_nonsimultaneous_locals.wren rename to test/language/variable/many_nonsimultaneous_locals.wren diff --git a/test/variable/newline_after_var.wren b/test/language/variable/newline_after_var.wren similarity index 100% rename from test/variable/newline_after_var.wren rename to test/language/variable/newline_after_var.wren diff --git a/test/variable/outside_method.wren b/test/language/variable/outside_method.wren similarity index 100% rename from test/variable/outside_method.wren rename to test/language/variable/outside_method.wren diff --git a/test/variable/scope_if.wren b/test/language/variable/scope_if.wren similarity index 100% rename from test/variable/scope_if.wren rename to test/language/variable/scope_if.wren diff --git a/test/variable/scope_reuse_in_different_blocks.wren b/test/language/variable/scope_reuse_in_different_blocks.wren similarity index 100% rename from test/variable/scope_reuse_in_different_blocks.wren rename to test/language/variable/scope_reuse_in_different_blocks.wren diff --git a/test/variable/scope_while.wren b/test/language/variable/scope_while.wren similarity index 100% rename from test/variable/scope_while.wren rename to test/language/variable/scope_while.wren diff --git a/test/variable/shadow_and_local.wren b/test/language/variable/shadow_and_local.wren similarity index 100% rename from test/variable/shadow_and_local.wren rename to test/language/variable/shadow_and_local.wren diff --git a/test/variable/shadow_global.wren b/test/language/variable/shadow_global.wren similarity index 100% rename from test/variable/shadow_global.wren rename to test/language/variable/shadow_global.wren diff --git a/test/variable/shadow_in_initializer.wren b/test/language/variable/shadow_in_initializer.wren similarity index 100% rename from test/variable/shadow_in_initializer.wren rename to test/language/variable/shadow_in_initializer.wren diff --git a/test/variable/shadow_local.wren b/test/language/variable/shadow_local.wren similarity index 100% rename from test/variable/shadow_local.wren rename to test/language/variable/shadow_local.wren diff --git a/test/variable/too_many_locals.wren b/test/language/variable/too_many_locals.wren similarity index 100% rename from test/variable/too_many_locals.wren rename to test/language/variable/too_many_locals.wren diff --git a/test/variable/too_many_locals_nested.wren b/test/language/variable/too_many_locals_nested.wren similarity index 100% rename from test/variable/too_many_locals_nested.wren rename to test/language/variable/too_many_locals_nested.wren diff --git a/test/variable/undefined_global.wren b/test/language/variable/undefined_global.wren similarity index 100% rename from test/variable/undefined_global.wren rename to test/language/variable/undefined_global.wren diff --git a/test/variable/undefined_local.wren b/test/language/variable/undefined_local.wren similarity index 100% rename from test/variable/undefined_local.wren rename to test/language/variable/undefined_local.wren diff --git a/test/variable/use_false_as_var.wren b/test/language/variable/use_false_as_var.wren similarity index 100% rename from test/variable/use_false_as_var.wren rename to test/language/variable/use_false_as_var.wren diff --git a/test/variable/use_field_as_var.wren b/test/language/variable/use_field_as_var.wren similarity index 100% rename from test/variable/use_field_as_var.wren rename to test/language/variable/use_field_as_var.wren diff --git a/test/variable/use_null_as_var.wren b/test/language/variable/use_null_as_var.wren similarity index 100% rename from test/variable/use_null_as_var.wren rename to test/language/variable/use_null_as_var.wren diff --git a/test/variable/use_this_as_var.wren b/test/language/variable/use_this_as_var.wren similarity index 100% rename from test/variable/use_this_as_var.wren rename to test/language/variable/use_this_as_var.wren diff --git a/test/variable/use_true_as_var.wren b/test/language/variable/use_true_as_var.wren similarity index 100% rename from test/variable/use_true_as_var.wren rename to test/language/variable/use_true_as_var.wren diff --git a/test/while/closure_in_body.wren b/test/language/while/closure_in_body.wren similarity index 100% rename from test/while/closure_in_body.wren rename to test/language/while/closure_in_body.wren diff --git a/test/while/newline_after_while.wren b/test/language/while/newline_after_while.wren similarity index 100% rename from test/while/newline_after_while.wren rename to test/language/while/newline_after_while.wren diff --git a/test/while/return_closure.wren b/test/language/while/return_closure.wren similarity index 100% rename from test/while/return_closure.wren rename to test/language/while/return_closure.wren diff --git a/test/while/return_inside.wren b/test/language/while/return_inside.wren similarity index 100% rename from test/while/return_inside.wren rename to test/language/while/return_inside.wren diff --git a/test/while/syntax.wren b/test/language/while/syntax.wren similarity index 100% rename from test/while/syntax.wren rename to test/language/while/syntax.wren diff --git a/test/while/truth.wren b/test/language/while/truth.wren similarity index 100% rename from test/while/truth.wren rename to test/language/while/truth.wren diff --git a/test/whitespace.wren b/test/language/whitespace.wren similarity index 100% rename from test/whitespace.wren rename to test/language/whitespace.wren diff --git a/test/function/too_many_parameters.wren b/test/limit/too_many_function_parameters.wren similarity index 100% rename from test/function/too_many_parameters.wren rename to test/limit/too_many_function_parameters.wren