From 19db72aa22dc0ff6de1693bfaff39c5baaa6b1f3 Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Wed, 9 Jun 2021 22:15:53 -0400 Subject: [PATCH] =?UTF-8?q?Added=20Wren=20scripting=20with=20module=20syst?= =?UTF-8?q?em=20=F0=9F=93=9A=20Added=20Input=20pressed,=20released=20syste?= =?UTF-8?q?m=20Added=20interface=20button=20support=20with=20wren=20onclic?= =?UTF-8?q?k=20callback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + Editor/Editor.cpp | 14 +- Editor/resources/Interface/Testing.css | 25 +- Editor/resources/Interface/Testing.interface | 25 +- Editor/resources/Scenes/level.scene | 62 + Editor/resources/Scenes/test.scene | 108 + Editor/resources/Scenes/test.scene.scene | 70 + Editor/resources/Scripts/Engine.wren | 15 + Editor/resources/Scripts/test.wren | 18 + Editor/src/EditorInterface.cpp | 4 +- Nuake/Engine.cpp | 6 +- Nuake/src/Core/FileSystem.cpp | 2 +- Nuake/src/Core/Input.cpp | 107 +- Nuake/src/Core/Input.h | 18 +- Nuake/src/Rendering/Renderer2D.cpp | 20 +- Nuake/src/Scene/EditorCamera.cpp | 4 +- Nuake/src/Scene/Scene.cpp | 22 +- Nuake/src/Scripting/Modules/EngineModule.h | 38 + Nuake/src/Scripting/Modules/ScriptModule.h | 27 + Nuake/src/Scripting/ScriptLoader.cpp | 12 +- Nuake/src/Scripting/ScriptLoader.h | 1 - Nuake/src/Scripting/ScriptModule.h | 7 - .../src/Scripting/ScriptingAPI/HelloWorld.cpp | 10 - Nuake/src/Scripting/ScriptingAPI/HelloWorld.h | 6 - Nuake/src/Scripting/ScriptingEngine.cpp | 161 +- Nuake/src/Scripting/ScriptingEngine.h | 36 +- Nuake/src/Scripting/WrenScript.cpp | 62 + Nuake/src/Scripting/WrenScript.h | 24 + Nuake/src/UI/InterfaceParser.cpp | 276 +- Nuake/src/UI/InterfaceParser.h | 228 +- Nuake/src/UI/Nodes/Canvas.h | 6 +- Nuake/src/UI/Nodes/Node.cpp | 63 +- Nuake/src/UI/Nodes/Node.h | 31 +- Nuake/src/UI/Nodes/TextNode.h | 35 +- Nuake/src/UI/UserInterface.cpp | 29 +- Nuake/src/UI/UserInterface.h | 4 + Nuake/src/Vendors/wren/.gitignore | 41 + Nuake/src/Vendors/wren/.travis.sh | 25 + Nuake/src/Vendors/wren/.travis.yml | 42 + Nuake/src/Vendors/wren/AUTHORS | 32 + Nuake/src/Vendors/wren/CHANGELOG.md | 128 + Nuake/src/Vendors/wren/LICENSE | 21 + Nuake/src/Vendors/wren/README.md | 58 + Nuake/src/Vendors/wren/doc/error-handling.txt | 78 + .../src/Vendors/wren/doc/implicit fields.txt | 29 + .../Vendors/wren/doc/instruction counts.txt | 65 + .../Vendors/wren/doc/notes/import syntax.md | 261 + .../src/Vendors/wren/doc/notes/re-entrancy.md | 144 + .../wren/doc/receiver-less calls 2.txt | 146 + .../Vendors/wren/doc/receiver-less calls.txt | 76 + .../wren/doc/rfc/0001-smarter-imports.md | 478 + .../wren/doc/site/blog/0-hello-wren.markdown | 69 + .../doc/site/blog/1-0.2.0-and-beyond.markdown | 91 + .../doc/site/blog/2-0.3.0-released.markdown | 135 + .../Vendors/wren/doc/site/blog/index.markdown | 12 + Nuake/src/Vendors/wren/doc/site/blog/rss.xml | 28 + .../Vendors/wren/doc/site/blog/template.html | 66 + .../Vendors/wren/doc/site/classes.markdown | 765 + .../Vendors/wren/doc/site/cli/index.markdown | 30 + .../wren/doc/site/cli/modules/index.markdown | 16 + .../site/cli/modules/io/directory.markdown | 15 + .../site/cli/modules/io/file-flags.markdown | 48 + .../doc/site/cli/modules/io/file.markdown | 138 + .../doc/site/cli/modules/io/index.markdown | 9 + .../doc/site/cli/modules/io/stat.markdown | 63 + .../doc/site/cli/modules/io/stdin.markdown | 45 + .../doc/site/cli/modules/io/stdout.markdown | 11 + .../doc/site/cli/modules/io/template.html | 89 + .../doc/site/cli/modules/os/index.markdown | 7 + .../doc/site/cli/modules/os/platform.markdown | 30 + .../doc/site/cli/modules/os/process.markdown | 38 + .../doc/site/cli/modules/os/template.html | 81 + .../site/cli/modules/scheduler/index.markdown | 7 + .../cli/modules/scheduler/scheduler.markdown | 27 + .../site/cli/modules/scheduler/template.html | 79 + .../wren/doc/site/cli/modules/template.html | 94 + .../doc/site/cli/modules/timer/index.markdown | 7 + .../doc/site/cli/modules/timer/template.html | 79 + .../doc/site/cli/modules/timer/timer.markdown | 12 + .../Vendors/wren/doc/site/cli/template.html | 88 + .../Vendors/wren/doc/site/cli/usage.markdown | 55 + .../wren/doc/site/concurrency.markdown | 194 + .../wren/doc/site/contributing.markdown | 127 + .../wren/doc/site/control-flow.markdown | 275 + .../embedding/calling-c-from-wren.markdown | 142 + .../embedding/calling-wren-from-c.markdown | 191 + .../embedding/configuring-the-vm.markdown | 238 + .../wren/doc/site/embedding/index.markdown | 272 + .../site/embedding/slots-and-handles.markdown | 272 + .../site/embedding/storing-c-data.markdown | 389 + .../wren/doc/site/embedding/template.html | 89 + .../wren/doc/site/error-handling.markdown | 174 + .../Vendors/wren/doc/site/functions.markdown | 242 + .../wren/doc/site/getting-started.markdown | 89 + .../src/Vendors/wren/doc/site/index.markdown | 62 + .../src/Vendors/wren/doc/site/lists.markdown | 152 + Nuake/src/Vendors/wren/doc/site/maps.markdown | 167 + .../wren/doc/site/method-calls.markdown | 198 + .../Vendors/wren/doc/site/modularity.markdown | 310 + .../wren/doc/site/modules/core/bool.markdown | 20 + .../wren/doc/site/modules/core/class.markdown | 32 + .../wren/doc/site/modules/core/fiber.markdown | 266 + .../wren/doc/site/modules/core/fn.markdown | 50 + .../wren/doc/site/modules/core/index.markdown | 4 + .../wren/doc/site/modules/core/list.markdown | 227 + .../wren/doc/site/modules/core/map.markdown | 85 + .../wren/doc/site/modules/core/null.markdown | 11 + .../wren/doc/site/modules/core/num.markdown | 299 + .../doc/site/modules/core/object.markdown | 54 + .../wren/doc/site/modules/core/range.markdown | 62 + .../doc/site/modules/core/sequence.markdown | 196 + .../doc/site/modules/core/string.markdown | 291 + .../doc/site/modules/core/system.markdown | 55 + .../wren/doc/site/modules/core/template.html | 101 + .../wren/doc/site/modules/index.markdown | 33 + .../wren/doc/site/modules/meta/index.markdown | 5 + .../wren/doc/site/modules/meta/meta.markdown | 7 + .../wren/doc/site/modules/meta/template.html | 78 + .../doc/site/modules/random/index.markdown | 10 + .../doc/site/modules/random/random.markdown | 139 + .../doc/site/modules/random/template.html | 78 + .../wren/doc/site/modules/template.html | 107 + .../wren/doc/site/performance.markdown | 249 + Nuake/src/Vendors/wren/doc/site/qa.markdown | 179 + .../doc/site/static/codejar-linenumbers.js | 51 + .../Vendors/wren/doc/site/static/codejar.js | 401 + .../Vendors/wren/doc/site/static/prism.css | 142 + .../src/Vendors/wren/doc/site/static/prism.js | 6 + .../Vendors/wren/doc/site/static/style.css | 574 + .../src/Vendors/wren/doc/site/static/wren.js | 79 + .../src/Vendors/wren/doc/site/static/wren.svg | 1 + .../Vendors/wren/doc/site/static/wren_try.js | 2562 + .../wren/doc/site/static/wren_try.wasm | Bin 0 -> 186475 bytes .../src/Vendors/wren/doc/site/syntax.markdown | 283 + Nuake/src/Vendors/wren/doc/site/template.html | 129 + .../Vendors/wren/doc/site/try/index.markdown | 27 + .../Vendors/wren/doc/site/try/template.html | 152 + .../src/Vendors/wren/doc/site/values.markdown | 235 + .../Vendors/wren/doc/site/variables.markdown | 83 + .../src/Vendors/wren/example/embedding/main.c | 58 + Nuake/src/Vendors/wren/example/hello.wren | 1 + .../wren/example/import_module/cthulu.wren | 4 + .../wren/example/import_module/lovecraft.wren | 8 + .../src/Vendors/wren/example/mandelbrot.wren | 36 + Nuake/src/Vendors/wren/example/skynet.wren | 27 + Nuake/src/Vendors/wren/example/syntax.wren | 188 + .../Vendors/wren/projects/make.bsd/wren.make | 204 + .../wren/projects/make.bsd/wren_shared.make | 204 + .../wren/projects/make.bsd/wren_test.make | 254 + .../Vendors/wren/projects/make.mac/wren.make | 212 + .../wren/projects/make.mac/wren_shared.make | 212 + .../wren/projects/make.mac/wren_test.make | 262 + .../src/Vendors/wren/projects/make/wren.make | 204 + .../wren/projects/make/wren_shared.make | 204 + .../Vendors/wren/projects/make/wren_test.make | 254 + .../wren/projects/premake/premake5.exe | Bin 0 -> 1362432 bytes .../wren/projects/premake/premake5.lua | 103 + .../src/Vendors/wren/projects/vs2017/wren.sln | 65 + .../Vendors/wren/projects/vs2017/wren.vcxproj | 279 + .../wren/projects/vs2017/wren.vcxproj.filters | 81 + .../wren/projects/vs2017/wren_shared.vcxproj | 291 + .../vs2017/wren_shared.vcxproj.filters | 81 + .../wren/projects/vs2017/wren_test.vcxproj | 306 + .../projects/vs2017/wren_test.vcxproj.filters | 117 + .../src/Vendors/wren/projects/vs2019/wren.sln | 65 + .../Vendors/wren/projects/vs2019/wren.vcxproj | 279 + .../wren/projects/vs2019/wren.vcxproj.filters | 81 + .../wren/projects/vs2019/wren_shared.vcxproj | 291 + .../vs2019/wren_shared.vcxproj.filters | 81 + .../wren/projects/vs2019/wren_test.vcxproj | 306 + .../projects/vs2019/wren_test.vcxproj.filters | 117 + .../xcode/wren.xcodeproj/project.pbxproj | 296 + .../wren.xcworkspace/contents.xcworkspacedata | 13 + .../wren_shared.xcodeproj/project.pbxproj | 298 + .../xcode/wren_test.xcodeproj/project.pbxproj | 397 + Nuake/src/Vendors/wren/src/README.md | 13 + Nuake/src/Vendors/wren/src/include/wren.h | 554 + Nuake/src/Vendors/wren/src/include/wren.hpp | 11 + .../Vendors/wren/src/optional/wren_opt_meta.c | 96 + .../Vendors/wren/src/optional/wren_opt_meta.h | 18 + .../wren/src/optional/wren_opt_meta.wren | 32 + .../wren/src/optional/wren_opt_meta.wren.inc | 34 + .../wren/src/optional/wren_opt_random.c | 144 + .../wren/src/optional/wren_opt_random.h | 20 + .../wren/src/optional/wren_opt_random.wren | 95 + .../src/optional/wren_opt_random.wren.inc | 97 + Nuake/src/Vendors/wren/src/vm/wren_common.h | 200 + Nuake/src/Vendors/wren/src/vm/wren_compiler.c | 4130 + Nuake/src/Vendors/wren/src/vm/wren_compiler.h | 57 + Nuake/src/Vendors/wren/src/vm/wren_core.c | 1487 + Nuake/src/Vendors/wren/src/vm/wren_core.h | 23 + Nuake/src/Vendors/wren/src/vm/wren_core.wren | 483 + .../Vendors/wren/src/vm/wren_core.wren.inc | 486 + Nuake/src/Vendors/wren/src/vm/wren_debug.c | 388 + Nuake/src/Vendors/wren/src/vm/wren_debug.h | 27 + Nuake/src/Vendors/wren/src/vm/wren_math.h | 34 + Nuake/src/Vendors/wren/src/vm/wren_opcodes.h | 217 + .../src/Vendors/wren/src/vm/wren_primitive.c | 119 + .../src/Vendors/wren/src/vm/wren_primitive.h | 109 + Nuake/src/Vendors/wren/src/vm/wren_utils.c | 207 + Nuake/src/Vendors/wren/src/vm/wren_utils.h | 126 + Nuake/src/Vendors/wren/src/vm/wren_value.c | 1330 + Nuake/src/Vendors/wren/src/vm/wren_value.h | 890 + Nuake/src/Vendors/wren/src/vm/wren_vm.c | 1993 + Nuake/src/Vendors/wren/src/vm/wren_vm.h | 251 + Nuake/src/Vendors/wren/test/README.md | 18 + Nuake/src/Vendors/wren/test/api/api_tests.c | 110 + Nuake/src/Vendors/wren/test/api/api_tests.h | 37 + Nuake/src/Vendors/wren/test/api/benchmark.c | 81 + Nuake/src/Vendors/wren/test/api/benchmark.h | 3 + Nuake/src/Vendors/wren/test/api/call.c | 126 + Nuake/src/Vendors/wren/test/api/call.h | 3 + Nuake/src/Vendors/wren/test/api/call.wren | 57 + .../wren/test/api/call_calls_foreign.c | 45 + .../wren/test/api/call_calls_foreign.h | 4 + .../wren/test/api/call_calls_foreign.wren | 17 + .../wren/test/api/call_wren_call_root.c | 31 + .../wren/test/api/call_wren_call_root.h | 3 + .../wren/test/api/call_wren_call_root.wren | 12 + Nuake/src/Vendors/wren/test/api/error.c | 18 + Nuake/src/Vendors/wren/test/api/error.h | 3 + Nuake/src/Vendors/wren/test/api/error.wren | 12 + .../src/Vendors/wren/test/api/foreign_class.c | 130 + .../src/Vendors/wren/test/api/foreign_class.h | 5 + .../Vendors/wren/test/api/foreign_class.wren | 87 + .../src/Vendors/wren/test/api/get_variable.c | 66 + .../src/Vendors/wren/test/api/get_variable.h | 3 + .../Vendors/wren/test/api/get_variable.wren | 39 + .../wren/test/api/get_variable_module.wren | 3 + Nuake/src/Vendors/wren/test/api/handle.c | 24 + Nuake/src/Vendors/wren/test/api/handle.h | 3 + Nuake/src/Vendors/wren/test/api/handle.wren | 11 + Nuake/src/Vendors/wren/test/api/lists.c | 84 + Nuake/src/Vendors/wren/test/api/lists.h | 3 + Nuake/src/Vendors/wren/test/api/lists.wren | 16 + Nuake/src/Vendors/wren/test/api/maps.c | 130 + Nuake/src/Vendors/wren/test/api/maps.h | 5 + Nuake/src/Vendors/wren/test/api/maps.wren | 64 + Nuake/src/Vendors/wren/test/api/new_vm.c | 59 + Nuake/src/Vendors/wren/test/api/new_vm.h | 3 + Nuake/src/Vendors/wren/test/api/new_vm.wren | 8 + .../test/api/reset_stack_after_call_abort.c | 29 + .../test/api/reset_stack_after_call_abort.h | 3 + .../api/reset_stack_after_call_abort.wren | 14 + .../api/reset_stack_after_foreign_construct.c | 47 + .../api/reset_stack_after_foreign_construct.h | 5 + .../reset_stack_after_foreign_construct.wren | 18 + Nuake/src/Vendors/wren/test/api/resolution.c | 158 + Nuake/src/Vendors/wren/test/api/resolution.h | 4 + .../src/Vendors/wren/test/api/resolution.wren | 39 + Nuake/src/Vendors/wren/test/api/slots.c | 193 + Nuake/src/Vendors/wren/test/api/slots.h | 4 + Nuake/src/Vendors/wren/test/api/slots.wren | 51 + Nuake/src/Vendors/wren/test/api/user_data.c | 64 + Nuake/src/Vendors/wren/test/api/user_data.h | 3 + .../src/Vendors/wren/test/api/user_data.wren | 5 + .../src/Vendors/wren/test/benchmark/README.md | 19 + .../Vendors/wren/test/benchmark/api_call.wren | 9 + .../test/benchmark/api_foreign_method.wren | 20 + .../wren/test/benchmark/binary_trees.dart | 60 + .../wren/test/benchmark/binary_trees.lua | 54 + .../wren/test/benchmark/binary_trees.py | 48 + .../wren/test/benchmark/binary_trees.rb | 51 + .../wren/test/benchmark/binary_trees.wren | 54 + .../wren/test/benchmark/binary_trees_gc.wren | 59 + .../wren/test/benchmark/delta_blue.dart | 728 + .../test/benchmark/delta_blue.lua.inprogress | 914 + .../Vendors/wren/test/benchmark/delta_blue.py | 637 + .../wren/test/benchmark/delta_blue.wren | 690 + .../Vendors/wren/test/benchmark/fannkuch.lua | 48 + .../Vendors/wren/test/benchmark/fannkuch.py | 56 + .../Vendors/wren/test/benchmark/fannkuch.rb | 60 + .../src/Vendors/wren/test/benchmark/fib.dart | 13 + Nuake/src/Vendors/wren/test/benchmark/fib.lua | 10 + Nuake/src/Vendors/wren/test/benchmark/fib.py | 12 + Nuake/src/Vendors/wren/test/benchmark/fib.rb | 13 + .../src/Vendors/wren/test/benchmark/fib.wren | 12 + .../Vendors/wren/test/benchmark/fibers.wren | 16 + .../src/Vendors/wren/test/benchmark/for.dart | 13 + Nuake/src/Vendors/wren/test/benchmark/for.lua | 12 + Nuake/src/Vendors/wren/test/benchmark/for.py | 20 + Nuake/src/Vendors/wren/test/benchmark/for.rb | 8 + .../src/Vendors/wren/test/benchmark/for.wren | 10 + .../wren/test/benchmark/map_numeric.dart.skip | 24 + .../wren/test/benchmark/map_numeric.lua | 19 + .../wren/test/benchmark/map_numeric.py | 20 + .../wren/test/benchmark/map_numeric.rb | 19 + .../wren/test/benchmark/map_numeric.wren | 19 + .../wren/test/benchmark/map_string.lua | 99 + .../Vendors/wren/test/benchmark/map_string.py | 97 + .../Vendors/wren/test/benchmark/map_string.rb | 99 + .../wren/test/benchmark/map_string.wren | 100 + .../wren/test/benchmark/method_call.dart | 78 + .../wren/test/benchmark/method_call.lua | 94 + .../wren/test/benchmark/method_call.py | 80 + .../wren/test/benchmark/method_call.rb | 79 + .../wren/test/benchmark/method_call.wren | 68 + .../wren/test/benchmark/string_equals.py | 35 + .../wren/test/benchmark/string_equals.wren | 24 + .../Vendors/wren/test/core/bool/equality.wren | 23 + .../wren/test/core/bool/no_constructor.wren | 1 + .../src/Vendors/wren/test/core/bool/not.wren | 3 + .../wren/test/core/bool/to_string.wren | 2 + .../src/Vendors/wren/test/core/bool/type.wren | 4 + .../wren/test/core/class/equality.wren | 13 + .../Vendors/wren/test/core/class/name.wren | 13 + .../wren/test/core/class/no_constructor.wren | 1 + .../wren/test/core/class/supertype.wren | 15 + .../Vendors/wren/test/core/class/type.wren | 15 + .../Vendors/wren/test/core/fiber/abort.wren | 7 + .../test/core/fiber/abort_main_fiber.wren | 1 + .../test/core/fiber/abort_not_string.wren | 7 + .../wren/test/core/fiber/abort_null.wren | 9 + .../Vendors/wren/test/core/fiber/call.wren | 7 + .../test/core/fiber/call_direct_reenter.wren | 7 + .../wren/test/core/fiber/call_done.wren | 6 + .../wren/test/core/fiber/call_error.wren | 7 + .../core/fiber/call_indirect_reenter.wren | 12 + .../core/fiber/call_return_implicit_null.wren | 5 + .../test/core/fiber/call_return_value.wren | 6 + .../wren/test/core/fiber/call_root.wren | 8 + .../test/core/fiber/call_to_parameter.wren | 7 + .../test/core/fiber/call_transferred.wren | 12 + .../wren/test/core/fiber/call_with_value.wren | 7 + .../fiber/call_with_value_direct_reenter.wren | 7 + .../test/core/fiber/call_with_value_done.wren | 6 + .../core/fiber/call_with_value_error.wren | 7 + .../call_with_value_indirect_reenter.wren | 9 + .../fiber/call_with_value_to_parameter.wren | 7 + .../fiber/call_with_value_transferred.wren | 12 + .../Vendors/wren/test/core/fiber/error.wren | 7 + .../Vendors/wren/test/core/fiber/is_done.wren | 11 + .../test/core/fiber/is_done_after_error.wren | 6 + .../test/core/fiber/new_wrong_arg_type.wren | 1 + .../wren/test/core/fiber/new_wrong_arity.wren | 1 + .../wren/test/core/fiber/resume_caller.wren | 19 + .../wren/test/core/fiber/transfer.wren | 24 + .../core/fiber/transfer_direct_reenter.wren | 9 + .../wren/test/core/fiber/transfer_error.wren | 15 + .../core/fiber/transfer_error_not_string.wren | 10 + .../core/fiber/transfer_indirect_reenter.wren | 18 + .../fiber/transfer_return_call_value.wren | 23 + .../fiber/transfer_return_transfer_value.wren | 13 + .../test/core/fiber/transfer_to_done.wren | 6 + .../test/core/fiber/transfer_to_error.wren | 7 + .../core/fiber/transfer_to_parameter.wren | 24 + .../test/core/fiber/transfer_to_yielded.wren | 9 + .../test/core/fiber/transfer_with_value.wren | 24 + .../transfer_with_value_direct_reenter.wren | 8 + .../transfer_with_value_indirect_reenter.wren | 17 + .../fiber/transfer_with_value_to_done.wren | 6 + .../fiber/transfer_with_value_to_error.wren | 7 + .../transfer_with_value_to_parameter.wren | 24 + .../fiber/transfer_with_value_to_yielded.wren | 9 + .../src/Vendors/wren/test/core/fiber/try.wren | 10 + .../test/core/fiber/try_direct_reenter.wren | 7 + .../wren/test/core/fiber/try_done.wren | 6 + .../wren/test/core/fiber/try_error.wren | 7 + .../test/core/fiber/try_indirect_reenter.wren | 12 + .../test/core/fiber/try_through_call.wren | 49 + .../wren/test/core/fiber/try_value.wren | 12 + .../wren/test/core/fiber/try_value_yield.wren | 16 + .../test/core/fiber/try_without_error.wren | 8 + .../Vendors/wren/test/core/fiber/type.wren | 5 + .../Vendors/wren/test/core/fiber/yield.wren | 14 + .../test/core/fiber/yield_from_import.wren | 14 + .../core/fiber/yield_from_import_module.wren | 4 + .../wren/test/core/fiber/yield_from_main.wren | 3 + .../core/fiber/yield_return_call_value.wren | 12 + .../fiber/yield_return_transfer_value.wren | 20 + .../test/core/fiber/yield_with_no_caller.wren | 12 + .../test/core/fiber/yield_with_value.wren | 14 + .../fiber/yield_with_value_from_main.wren | 3 + .../yield_with_value_with_no_caller.wren | 12 + .../wren/test/core/function/arity.wren | 5 + .../core/function/call_extra_arguments.wren | 16 + .../core/function/call_missing_arguments.wren | 2 + .../core/function/call_runtime_error.wren | 3 + .../wren/test/core/function/equality.wren | 23 + .../core/function/new_wrong_arg_type.wren | 1 + .../wren/test/core/function/to_string.wren | 1 + .../Vendors/wren/test/core/function/type.wren | 4 + .../src/Vendors/wren/test/core/list/add.wren | 8 + .../Vendors/wren/test/core/list/add_all.wren | 11 + .../Vendors/wren/test/core/list/clear.wren | 7 + .../Vendors/wren/test/core/list/contains.wren | 6 + .../Vendors/wren/test/core/list/count.wren | 3 + .../wren/test/core/list/count_predicate.wren | 6 + ...count_predicate_non_bool_returning_fn.wren | 3 + .../count_predicate_non_function_arg.wren | 3 + .../src/Vendors/wren/test/core/list/each.wren | 3 + .../wren/test/core/list/each_no_items.wren | 3 + .../test/core/list/each_non_function_arg.wren | 1 + .../Vendors/wren/test/core/list/filled.wren | 8 + .../test/core/list/filled_size_negative.wren | 1 + .../test/core/list/filled_size_not_int.wren | 1 + .../test/core/list/filled_size_not_num.wren | 1 + .../Vendors/wren/test/core/list/index_of.wren | 8 + .../Vendors/wren/test/core/list/insert.wren | 41 + .../test/core/list/insert_index_not_int.wren | 2 + .../test/core/list/insert_index_not_num.wren | 2 + .../core/list/insert_index_too_large.wren | 2 + .../core/list/insert_index_too_small.wren | 2 + .../Vendors/wren/test/core/list/iterate.wren | 13 + .../core/list/iterate_iterator_not_int.wren | 2 + .../core/list/iterate_iterator_not_num.wren | 2 + .../wren/test/core/list/iterator_value.wren | 5 + .../list/iterator_value_iterator_not_int.wren | 2 + .../list/iterator_value_iterator_not_num.wren | 2 + .../iterator_value_iterator_too_large.wren | 2 + .../iterator_value_iterator_too_small.wren | 2 + .../src/Vendors/wren/test/core/list/join.wren | 24 + .../core/list/join_separator_not_string.wren | 1 + .../src/Vendors/wren/test/core/list/map.wren | 3 + .../Vendors/wren/test/core/list/multiply.wren | 8 + .../test/core/list/multiply_negative.wren | 1 + .../wren/test/core/list/multiply_not_int.wren | 1 + .../wren/test/core/list/multiply_not_num.wren | 1 + .../src/Vendors/wren/test/core/list/new.wren | 6 + .../src/Vendors/wren/test/core/list/not.wren | 2 + .../src/Vendors/wren/test/core/list/plus.wren | 11 + .../test/core/list/plus_not_iterable.wren | 1 + .../Vendors/wren/test/core/list/reduce.wren | 14 + .../wren/test/core/list/reduce_no_items.wren | 1 + .../test/core/list/reduce_single_item.wren | 2 + .../test/core/list/reduce_wrong_arity.wren | 1 + .../Vendors/wren/test/core/list/remove.wren | 18 + .../wren/test/core/list/remove_at.wren | 27 + .../core/list/remove_at_index_not_int.wren | 2 + .../core/list/remove_at_index_not_num.wren | 2 + .../core/list/remove_at_index_too_large.wren | 2 + .../core/list/remove_at_index_too_small.wren | 2 + .../src/Vendors/wren/test/core/list/sort.wren | 9 + .../wren/test/core/list/subscript.wren | 12 + .../test/core/list/subscript_not_int.wren | 2 + .../wren/test/core/list/subscript_range.wren | 39 + .../list/subscript_range_from_not_int.wren | 2 + .../list/subscript_range_from_too_large.wren | 2 + .../list/subscript_range_from_too_small.wren | 2 + ...ubscript_range_to_exclusive_too_large.wren | 2 + ...ubscript_range_to_exclusive_too_small.wren | 2 + .../core/list/subscript_range_to_not_int.wren | 2 + .../list/subscript_range_to_too_large.wren | 2 + .../list/subscript_range_to_too_small.wren | 2 + .../wren/test/core/list/subscript_setter.wren | 23 + .../core/list/subscript_setter_not_int.wren | 2 + .../core/list/subscript_setter_not_num.wren | 2 + .../core/list/subscript_setter_too_large.wren | 2 + .../core/list/subscript_setter_too_small.wren | 2 + .../test/core/list/subscript_too_large.wren | 2 + .../test/core/list/subscript_too_small.wren | 2 + .../test/core/list/subscript_wrong_type.wren | 2 + .../src/Vendors/wren/test/core/list/swap.wren | 9 + .../wren/test/core/list/to_string.wren | 18 + .../src/Vendors/wren/test/core/list/type.wren | 5 + .../Vendors/wren/test/core/list/where.wren | 6 + .../src/Vendors/wren/test/core/map/churn.wren | 11 + .../src/Vendors/wren/test/core/map/clear.wren | 7 + .../wren/test/core/map/contains_key.wren | 11 + .../test/core/map/contains_key_not_value.wren | 1 + .../src/Vendors/wren/test/core/map/count.wren | 12 + .../wren/test/core/map/empty_string_key.wren | 5 + .../Vendors/wren/test/core/map/is_empty.wren | 2 + .../Vendors/wren/test/core/map/iterate.wren | 45 + .../core/map/iterate_iterator_not_int.wren | 2 + .../core/map/iterate_iterator_not_num.wren | 2 + .../wren/test/core/map/iterator_value.wren | 13 + .../map/iterator_value_iterator_not_int.wren | 2 + .../map/iterator_value_iterator_not_num.wren | 2 + .../iterator_value_iterator_too_large.wren | 6 + .../iterator_value_iterator_too_small.wren | 6 + .../wren/test/core/map/key_iterate.wren | 45 + .../map/key_iterate_iterator_not_int.wren | 2 + .../map/key_iterate_iterator_not_num.wren | 2 + .../Vendors/wren/test/core/map/key_types.wren | 45 + Nuake/src/Vendors/wren/test/core/map/new.wren | 4 + .../Vendors/wren/test/core/map/remove.wren | 18 + .../test/core/map/remove_key_not_value.wren | 1 + .../wren/test/core/map/reuse_tombstone.wren | 9 + .../test/core/map/subscript_empty_map.wren | 4 + .../core/map/subscript_key_not_value.wren | 1 + .../map/subscript_setter_key_not_value.wren | 1 + .../Vendors/wren/test/core/map/to_string.wren | 28 + .../src/Vendors/wren/test/core/map/type.wren | 5 + .../wren/test/core/map/value_iterate.wren | 45 + .../map/value_iterate_iterator_not_int.wren | 2 + .../map/value_iterate_iterator_not_num.wren | 2 + .../Vendors/wren/test/core/map_entry/new.wren | 4 + .../wren/test/core/null/no_constructor.wren | 1 + .../src/Vendors/wren/test/core/null/not.wren | 1 + .../src/Vendors/wren/test/core/null/type.wren | 4 + .../Vendors/wren/test/core/number/abs.wren | 6 + .../Vendors/wren/test/core/number/acos.wren | 3 + .../Vendors/wren/test/core/number/asin.wren | 3 + .../Vendors/wren/test/core/number/atan.wren | 2 + .../Vendors/wren/test/core/number/atan2.wren | 4 + .../test/core/number/atan2_x_not_num.wren | 1 + .../wren/test/core/number/bitwise_and.wren | 10 + .../number/bitwise_and_operand_not_num.wren | 1 + .../wren/test/core/number/bitwise_lsh.wren | 13 + .../number/bitwise_lsh_operand_not_num.wren | 1 + .../wren/test/core/number/bitwise_not.wren | 14 + .../wren/test/core/number/bitwise_or.wren | 10 + .../number/bitwise_or_operand_not_num.wren | 1 + .../wren/test/core/number/bitwise_rsh.wren | 13 + .../number/bitwise_rsh_operand_not_num.wren | 1 + .../wren/test/core/number/bitwise_xor.wren | 13 + .../number/bitwise_xor_operand_not_num.wren | 1 + .../Vendors/wren/test/core/number/cbrt.wren | 6 + .../Vendors/wren/test/core/number/ceil.wren | 8 + .../Vendors/wren/test/core/number/clamp.wren | 7 + .../test/core/number/clamp_max_not_num.wren | 1 + .../test/core/number/clamp_min_not_num.wren | 1 + .../wren/test/core/number/comparison.wren | 27 + .../Vendors/wren/test/core/number/cos.wren | 6 + .../core/number/decimal_point_at_eof.wren | 2 + .../Vendors/wren/test/core/number/divide.wren | 12 + .../core/number/divide_operand_not_num.wren | 1 + .../wren/test/core/number/equality.wren | 19 + .../Vendors/wren/test/core/number/exp.wren | 3 + .../Vendors/wren/test/core/number/floor.wren | 8 + .../wren/test/core/number/fraction.wren | 19 + .../wren/test/core/number/from_string.wren | 14 + .../core/number/from_string_not_string.wren | 1 + .../core/number/from_string_too_large.wren | 2 + .../greater_than_equal_operand_not_num.wren | 1 + .../number/greater_than_operand_not_num.wren | 1 + .../test/core/number/invalid_hex_literal.wren | 1 + .../wren/test/core/number/is_infinity.wren | 3 + .../wren/test/core/number/is_integer.wren | 11 + .../Vendors/wren/test/core/number/is_nan.wren | 5 + .../wren/test/core/number/largest.wren | 1 + .../less_than_equal_operand_not_num.wren | 1 + .../number/less_than_operand_not_num.wren | 1 + .../Vendors/wren/test/core/number/log.wren | 3 + .../Vendors/wren/test/core/number/log2.wren | 4 + .../wren/test/core/number/maxSafeInteger.wren | 1 + .../test/core/number/max_other_not_num.wren | 1 + .../wren/test/core/number/minSafeInteger.wren | 1 + .../wren/test/core/number/min_max.wren | 5 + .../test/core/number/min_other_not_num.wren | 1 + .../Vendors/wren/test/core/number/minus.wren | 8 + .../core/number/minus_operand_not_num.wren | 1 + .../Vendors/wren/test/core/number/mod.wren | 17 + .../test/core/number/mod_operand_not_num.wren | 1 + .../wren/test/core/number/multiply.wren | 2 + .../core/number/multiply_operand_not_num.wren | 1 + .../wren/test/core/number/no_constructor.wren | 1 + .../Vendors/wren/test/core/number/not.wren | 2 + .../Vendors/wren/test/core/number/plus.wren | 3 + .../core/number/plus_operand_not_num.wren | 3 + .../Vendors/wren/test/core/number/pow.wren | 4 + .../test/core/number/pow_power_not_num.wren | 2 + .../Vendors/wren/test/core/number/round.wren | 8 + .../Vendors/wren/test/core/number/sign.wren | 6 + .../Vendors/wren/test/core/number/sin.wren | 6 + .../wren/test/core/number/smallest.wren | 1 + .../Vendors/wren/test/core/number/sqrt.wren | 10 + .../Vendors/wren/test/core/number/tan.wren | 3 + .../wren/test/core/number/to_string.wren | 5 + .../wren/test/core/number/truncate.wren | 13 + .../Vendors/wren/test/core/number/type.wren | 4 + .../src/Vendors/wren/test/core/object/is.wren | 33 + .../wren/test/core/object/no_constructor.wren | 1 + .../test/core/object/nonclass_on_right.wren | 1 + .../Vendors/wren/test/core/object/not.wren | 4 + .../Vendors/wren/test/core/object/same.wren | 43 + .../wren/test/core/object/to_string.wren | 4 + .../Vendors/wren/test/core/object/type.wren | 13 + .../wren/test/core/range/contains.wren | 23 + .../wren/test/core/range/equality.wren | 17 + .../range/exclusive_range_wrong_rhs_type.wren | 1 + .../Vendors/wren/test/core/range/from.wren | 25 + .../range/inclusive_range_wrong_rhs_type.wren | 1 + .../wren/test/core/range/is_inclusive.wren | 5 + .../Vendors/wren/test/core/range/iterate.wren | 35 + .../test/core/range/iterate_from_float.wren | 18 + .../test/core/range/iterate_wrong_type.wren | 1 + .../wren/test/core/range/iterator_value.wren | 11 + .../Vendors/wren/test/core/range/join.wren | 4 + .../core/range/join_separator_not_string.wren | 1 + .../src/Vendors/wren/test/core/range/map.wren | 3 + .../src/Vendors/wren/test/core/range/max.wren | 25 + .../src/Vendors/wren/test/core/range/min.wren | 25 + .../wren/test/core/range/no_constructor.wren | 1 + .../Vendors/wren/test/core/range/reduce.wren | 4 + .../src/Vendors/wren/test/core/range/to.wren | 25 + .../wren/test/core/range/to_string.wren | 7 + .../Vendors/wren/test/core/range/type.wren | 7 + .../Vendors/wren/test/core/range/where.wren | 6 + .../Vendors/wren/test/core/sequence/all.wren | 10 + .../core/sequence/all_non_function_arg.wren | 1 + .../Vendors/wren/test/core/sequence/any.wren | 10 + .../core/sequence/any_non_function_arg.wren | 1 + .../wren/test/core/sequence/count.wren | 13 + .../wren/test/core/sequence/is_empty.wren | 11 + .../Vendors/wren/test/core/sequence/map.wren | 48 + .../test/core/sequence/no_constructor.wren | 1 + .../Vendors/wren/test/core/sequence/skip.wren | 25 + .../test/core/sequence/skip_negative.wren | 1 + .../wren/test/core/sequence/skip_not_int.wren | 1 + .../wren/test/core/sequence/skip_not_num.wren | 1 + .../Vendors/wren/test/core/sequence/take.wren | 25 + .../test/core/sequence/take_negative.wren | 1 + .../wren/test/core/sequence/take_not_int.wren | 1 + .../wren/test/core/sequence/take_not_num.wren | 1 + .../wren/test/core/sequence/to_list.wren | 13 + .../wren/test/core/sequence/where.wren | 42 + .../Vendors/wren/test/core/string/bytes.wren | 6 + .../wren/test/core/string/concatenation.wren | 4 + .../string/concatenation_wrong_arg_type.wren | 1 + .../wren/test/core/string/contains.wren | 16 + .../string/contains_argument_not_string.wren | 1 + .../Vendors/wren/test/core/string/count.wren | 18 + .../wren/test/core/string/ends_with.wren | 15 + .../core/string/ends_with_invalid_arg.wren | 1 + .../wren/test/core/string/equality.wren | 28 + .../wren/test/core/string/from_byte.wren | 3 + .../test/core/string/from_byte_not_int.wren | 1 + .../test/core/string/from_byte_not_num.wren | 1 + .../test/core/string/from_byte_too_large.wren | 1 + .../test/core/string/from_byte_too_small.wren | 1 + .../test/core/string/from_code_point.wren | 5 + .../core/string/from_code_point_not_int.wren | 1 + .../core/string/from_code_point_not_num.wren | 1 + .../string/from_code_point_too_large.wren | 3 + .../string/from_code_point_too_small.wren | 1 + .../wren/test/core/string/index_of.wren | 24 + .../core/string/index_of_invalid_arg.wren | 1 + .../wren/test/core/string/index_of_start.wren | 39 + .../core/string/index_of_start_not_int.wren | 1 + .../core/string/index_of_start_not_num.wren | 2 + .../core/string/index_of_start_too_large.wren | 1 + .../core/string/index_of_start_too_small.wren | 1 + .../wren/test/core/string/iterate.wren | 29 + .../core/string/iterate_iterator_not_int.wren | 1 + .../core/string/iterate_iterator_not_num.wren | 1 + .../wren/test/core/string/iterator_value.wren | 19 + .../iterator_value_iterator_not_int.wren | 1 + .../iterator_value_iterator_not_num.wren | 1 + .../iterator_value_iterator_too_large.wren | 1 + .../iterator_value_iterator_too_small.wren | 1 + .../Vendors/wren/test/core/string/join.wren | 10 + .../string/join_separator_not_string.wren | 1 + .../wren/test/core/string/multiply.wren | 3 + .../test/core/string/multiply_negative.wren | 1 + .../test/core/string/multiply_not_int.wren | 1 + .../test/core/string/multiply_not_num.wren | 1 + .../wren/test/core/string/no_constructor.wren | 1 + .../Vendors/wren/test/core/string/not.wren | 2 + .../wren/test/core/string/replace.wren | 17 + .../test/core/string/replace_empty_old.wren | 1 + .../core/string/replace_new_not_string.wren | 1 + .../core/string/replace_old_not_string.wren | 1 + .../Vendors/wren/test/core/string/split.wren | 16 + .../string/split_argument_not_string.wren | 1 + .../core/string/split_empty_seperator.wren | 1 + .../wren/test/core/string/starts_with.wren | 14 + .../core/string/starts_with_invalid_arg.wren | 1 + .../wren/test/core/string/subscript.wren | 46 + .../test/core/string/subscript_not_int.wren | 2 + .../test/core/string/subscript_not_num.wren | 2 + .../test/core/string/subscript_range.wren | 53 + .../string/subscript_range_from_not_int.wren | 2 + .../subscript_range_from_too_large.wren | 2 + .../subscript_range_from_too_small.wren | 2 + ...ubscript_range_to_exclusive_too_large.wren | 2 + ...ubscript_range_to_exclusive_too_small.wren | 2 + .../string/subscript_range_to_not_int.wren | 2 + .../string/subscript_range_to_too_large.wren | 2 + .../string/subscript_range_to_too_small.wren | 2 + .../test/core/string/subscript_too_large.wren | 2 + .../test/core/string/subscript_too_small.wren | 2 + .../wren/test/core/string/to_string.wren | 7 + .../Vendors/wren/test/core/string/trim.wren | 16 + .../core/string/trim_chars_not_string.wren | 1 + .../wren/test/core/string/trim_end.wren | 16 + .../string/trim_end_chars_not_string.wren | 1 + .../wren/test/core/string/trim_start.wren | 16 + .../string/trim_start_chars_not_string.wren | 1 + .../Vendors/wren/test/core/string/type.wren | 4 + .../test/core/string_byte_sequence/count.wren | 15 + .../core/string_byte_sequence/iterate.wren | 21 + .../string_byte_sequence/iterate_not_int.wren | 1 + .../iterate_wrong_type.wren | 1 + .../string_byte_sequence/iterator_value.wren | 24 + .../iterator_value_not_int.wren | 1 + .../iterator_value_not_num.wren | 1 + .../iterator_value_too_large.wren | 1 + .../iterator_value_too_small.wren | 1 + .../core/string_byte_sequence/subscript.wren | 24 + .../subscript_not_int.wren | 1 + .../subscript_not_num.wren | 1 + .../subscript_too_large.wren | 1 + .../subscript_too_small.wren | 1 + .../string_code_point_sequence/count.wren | 18 + .../string_code_point_sequence/iterate.wren | 29 + .../iterate_iterator_not_int.wren | 1 + .../iterate_iterator_not_num.wren | 1 + .../iterator_value.wren | 42 + .../iterator_value_incomplete.wren | 8 + .../iterator_value_not_int.wren | 1 + .../iterator_value_not_num.wren | 1 + .../iterator_value_too_large.wren | 1 + .../iterator_value_too_small.wren | 1 + .../string_code_point_sequence/subscript.wren | 42 + .../subscript_incomplete.wren | 8 + .../subscript_not_int.wren | 1 + .../subscript_not_num.wren | 1 + .../subscript_too_large.wren | 1 + .../subscript_too_small.wren | 1 + .../Vendors/wren/test/core/system/print.wren | 12 + .../wren/test/core/system/print_all.wren | 8 + .../core/system/print_all_not_sequence.wren | 1 + .../test/core/system/print_bad_to_string.wren | 6 + .../wren/test/core/system/write_all.wren | 10 + .../core/system/write_all_not_sequence.wren | 1 + .../test/core/system/write_bad_to_string.wren | 7 + .../language/assignment/associativity.wren | 9 + .../wren/test/language/assignment/global.wren | 8 + .../test/language/assignment/grouping.wren | 2 + .../language/assignment/infix_operator.wren | 3 + .../wren/test/language/assignment/is.wren | 3 + .../wren/test/language/assignment/local.wren | 10 + .../language/assignment/prefix_operator.wren | 2 + .../wren/test/language/assignment/syntax.wren | 11 + .../test/language/assignment/undefined.wren | 1 + .../test/language/bitwise_precedence.wren | 23 + Nuake/src/Vendors/wren/test/language/bom.wren | 2 + .../test/language/break/closure_in_for.wren | 9 + .../test/language/break/closure_in_while.wren | 9 + .../language/break/exit_local_scopes.wren | 18 + .../wren/test/language/break/in_for_loop.wren | 10 + .../language/break/in_function_in_loop.wren | 7 + .../language/break/in_method_in_loop.wren | 9 + .../test/language/break/in_while_loop.wren | 12 + .../test/language/break/nested_for_loop.wren | 19 + .../language/break/nested_while_loop.wren | 25 + .../test/language/break/outside_loop.wren | 1 + .../wren/test/language/chained_newline.wren | 151 + .../language/class/attributes/attributes.wren | 21 + .../class/attributes/compile_only.wren | 9 + .../class/attributes/duplicate_keys.wren | 11 + .../language/class/attributes/groups.wren | 17 + .../class/attributes/invalid_expression.wren | 12 + .../class/attributes/invalid_scope.wren | 11 + .../class/attributes/invalid_toplevel.wren | 4 + .../language/class/attributes/literals.wren | 20 + .../language/class/attributes/methods.wren | 32 + .../language/class/attributes/without.wren | 4 + .../class/field_in_foreign_class.wren | 9 + .../class/foreign_class_inherit_fields.wren | 7 + .../class/lowercase_name_inside_body.wren | 17 + .../class/missing_class_after_foreign.wren | 2 + .../test/language/class/name_inside_body.wren | 16 + .../language/class/newline_after_class.wren | 2 + .../language/class/newline_after_static.wren | 6 + .../wren/test/language/class/syntax.wren | 11 + .../language/closure/assign_to_closure.wren | 25 + .../close_over_function_parameter.wren | 9 + .../closure/close_over_later_variable.wren | 13 + .../closure/close_over_method_parameter.wren | 14 + .../closure/closed_closure_in_function.wren | 10 + .../test/language/closure/nested_closure.wren | 21 + .../closure/open_closure_in_function.wren | 6 + .../reference_closure_multiple_times.wren | 13 + .../language/closure/reuse_closure_slot.wren | 17 + .../closure/shadow_closure_with_local.wren | 11 + .../test/language/closure/unused_closure.wren | 11 + .../closure/unused_later_closure.wren | 19 + .../wren/test/language/comments/block.wren | 5 + .../test/language/comments/block_at_eof.wren | 2 + .../test/language/comments/line_at_eof.wren | 2 + .../language/comments/only_line_comment.wren | 1 + .../comments/only_line_comment_and_line.wren | 1 + .../wren/test/language/comments/unicode.wren | 11 + .../language/comments/unterminated_block.wren | 3 + .../comments/unterminated_nested_block.wren | 4 + .../conditional/conditional_in_then.wren | 1 + .../language/conditional/missing_colon.wren | 2 + .../conditional/missing_condition.wren | 1 + .../language/conditional/missing_else.wren | 1 + .../conditional/missing_question.wren | 1 + .../language/conditional/missing_then.wren | 1 + .../test/language/conditional/newlines.wren | 7 + .../test/language/conditional/precedence.wren | 56 + .../language/conditional/short_circuit.wren | 2 + .../language/constructor/cannot_be_infix.wren | 5 + .../language/constructor/cannot_be_minus.wren | 5 + .../constructor/cannot_be_setter.wren | 5 + .../constructor/cannot_be_static.wren | 4 + .../constructor/cannot_be_subscript.wren | 5 + .../language/constructor/cannot_be_unary.wren | 5 + .../constructor/cannot_call_initializer.wren | 8 + .../constructor/cannot_return_value.wren | 5 + .../wren/test/language/constructor/named.wren | 14 + .../test/language/constructor/no_default.wren | 4 + .../constructor/no_parameter_list.wren | 5 + .../language/constructor/not_inherited.wren | 7 + .../constructor/return_without_value.wren | 18 + .../constructor/super_must_have_args.wren | 7 + .../test/language/constructor/superclass.wren | 40 + .../language/continue/closure_in_for.wren | 9 + .../language/continue/closure_in_while.wren | 9 + .../language/continue/exit_local_scopes.wren | 20 + .../test/language/continue/in_for_loop.wren | 12 + .../continue/in_function_in_loop.wren | 7 + .../language/continue/in_method_in_loop.wren | 9 + .../test/language/continue/in_while_loop.wren | 12 + .../language/continue/nested_for_loop.wren | 17 + .../language/continue/nested_while_loop.wren | 23 + .../test/language/continue/outside_loop.wren | 1 + .../wren/test/language/deeply_nested_gc.wren | 8 + .../wren/test/language/empty_block.wren | 7 + .../wren/test/language/empty_file.wren | 0 .../wren/test/language/fiber/closure.wren | 25 + .../wren/test/language/field/closure.wren | 16 + .../test/language/field/default_to_null.wren | 6 + .../field/in_fn_in_static_method.wren | 5 + .../test/language/field/in_static_method.wren | 5 + .../in_static_method_in_nested_class.wren | 14 + .../wren/test/language/field/multiple.wren | 28 + .../test/language/field/nested_class.wren | 22 + .../test/language/field/object_reference.wren | 33 + .../test/language/field/outside_class.wren | 1 + .../test/language/field/use_before_set.wren | 10 + .../for/close_over_loop_variable.wren | 10 + .../test/language/for/closure_in_body.wren | 11 + .../test/language/for/newline_after_for.wren | 2 + .../test/language/for/newline_before_in.wren | 2 + .../for/only_evaluate_sequence_once.wren | 10 + .../test/language/for/return_closure.wren | 9 + .../wren/test/language/for/return_inside.wren | 8 + .../wren/test/language/for/syntax.wren | 14 + .../Vendors/wren/test/language/for/truth.wren | 32 + .../foreign/foreign_after_static.wren | 3 + .../foreign/foreign_method_with_body.wren | 3 + .../test/language/foreign/unknown_method.wren | 3 + .../test/language/function/empty_body.wren | 2 + .../test/language/function/newline_body.wren | 4 + .../function/newline_in_expression_block.wren | 2 + .../function/no_newline_before_close.wren | 2 + .../test/language/function/no_parameters.wren | 1 + .../test/language/function/parameters.wren | 50 + .../wren/test/language/function/syntax.wren | 25 + .../wren/test/language/if/dangling_else.wren | 3 + .../Vendors/wren/test/language/if/else.wren | 6 + .../src/Vendors/wren/test/language/if/if.wren | 10 + .../test/language/if/newline_after_else.wren | 1 + .../test/language/if/newline_after_if.wren | 2 + .../Vendors/wren/test/language/if/truth.wren | 8 + .../language/ignore_carriage_returns.wren | 6 + .../implicit_receiver/inherited_methods.wren | 27 + .../implicit_receiver/instance_methods.wren | 25 + .../locals_shadow_getter.wren | 19 + .../locals_shadow_setter.wren | 22 + .../implicit_receiver/nested_class.wren | 51 + .../implicit_receiver/static_methods.wren | 21 + .../do_not_inherit_static_methods.wren | 7 + .../language/inheritance/inherit_fields.wren | 39 + .../inheritance/inherit_from_bool.wren | 1 + .../inheritance/inherit_from_class.wren | 1 + .../inheritance/inherit_from_closure.wren | 8 + .../inheritance/inherit_from_fiber.wren | 1 + .../language/inheritance/inherit_from_fn.wren | 1 + .../inheritance/inherit_from_list.wren | 1 + .../inheritance/inherit_from_map.wren | 1 + .../inheritance/inherit_from_nonclass.wren | 1 + .../inheritance/inherit_from_null.wren | 1 + .../inheritance/inherit_from_null_class.wren | 1 + .../inheritance/inherit_from_num.wren | 1 + .../inheritance/inherit_from_range.wren | 1 + .../inheritance/inherit_from_string.wren | 1 + .../language/inheritance/inherit_methods.wren | 25 + .../inherited_fields_in_closure.wren | 36 + .../wren/test/language/inheritance/is.wren | 22 + .../test/language/interpolation/empty.wren | 2 + .../language/interpolation/interpolation.wren | 15 + .../runtime_error_in_expression.wren | 1 + .../language/interpolation/switch_fiber.wren | 8 + .../language/interpolation/unterminated.wren | 2 + .../unterminated_expression.wren | 2 + .../test/language/list/duplicate_comma.wren | 1 + .../list/duplicate_trailing_comma.wren | 1 + .../language/list/empty_list_with_comma.wren | 1 + .../test/language/list/eof_after_comma.wren | 2 + .../test/language/list/eof_after_element.wren | 2 + .../wren/test/language/list/grow_shrink.wren | 11 + .../language/list/newline_before_comma.wren | 2 + .../wren/test/language/list/newlines.wren | 24 + .../test/language/list/trailing_comma.wren | 4 + .../test/language/logical_operator/and.wren | 20 + .../language/logical_operator/and_truth.wren | 8 + .../test/language/logical_operator/or.wren | 20 + .../language/logical_operator/or_truth.wren | 8 + .../test/language/many_reallocations.wren | 16 + .../test/language/map/bad_key_precedence.wren | 3 + .../test/language/map/duplicate_comma.wren | 1 + .../map/duplicate_trailing_comma.wren | 1 + .../language/map/empty_map_with_comma.wren | 1 + .../test/language/map/eof_after_colon.wren | 1 + .../test/language/map/eof_after_comma.wren | 2 + .../wren/test/language/map/eof_after_key.wren | 1 + .../test/language/map/eof_after_value.wren | 2 + .../test/language/map/grow_and_shrink.wren | 81 + .../wren/test/language/map/newlines.wren | 27 + .../wren/test/language/map/precedence.wren | 26 + .../test/language/map/trailing_comma.wren | 7 + .../wren/test/language/method/arity.wren | 41 + .../language/method/call_name_too_long.wren | 4 + .../language/method/duplicate_methods.wren | 12 + .../test/language/method/empty_block.wren | 6 + .../language/method/empty_subscript_call.wren | 3 + .../method/empty_subscript_definition.wren | 3 + .../wren/test/language/method/long_name.wren | 8 + .../test/language/method/many_methods.wren | 2025 + .../test/language/method/name_too_long.wren | 5 + .../wren/test/language/method/newlines.wren | 21 + .../method/no_parameters_new_line.wren | 19 + .../wren/test/language/method/not_found.wren | 5 + .../method/not_found_eleven_arguments.wren | 5 + .../method/not_found_multiple_arguments.wren | 5 + .../method/not_found_one_argument.wren | 5 + .../wren/test/language/method/operators.wren | 41 + .../wren/test/language/method/static.wren | 13 + .../method/static_method_not_found.wren | 3 + .../language/method/static_operators.wren | 52 + .../language/method/subscript_operators.wren | 17 + .../subscript_setter_too_many_arguments.wren | 2 + .../method/subscript_too_many_arguments.wren | 2 + .../language/method/too_many_arguments.wren | 1 + .../language/method/too_many_parameters.wren | 4 + .../change_imported_value.wren | 11 + .../module/change_imported_value/module.wren | 12 + .../module/compile_error/compile_error.wren | 2 + .../language/module/compile_error/module.wren | 2 + .../test/language/module/cyclic_import/a.wren | 9 + .../test/language/module/cyclic_import/b.wren | 9 + .../module/cyclic_import/cyclic_import.wren | 11 + .../implicitly_imports_core.wren | 15 + .../implicitly_imports_core/module.wren | 15 + .../language/module/import_as/import_as.wren | 11 + .../language/module/import_as/module.wren | 7 + .../module/inside_block/inside_block.wren | 10 + .../language/module/inside_block/module.wren | 3 + .../test/language/module/missing_for.wren | 1 + .../module/missing_string_after_import.wren | 1 + .../module/module_dir/module_dir.wren | 3 + .../module/module_dir/something/module.wren | 1 + .../module/multiple_variables/module.wren | 8 + .../multiple_variables.wren | 10 + .../test/language/module/name_collision.wren | 2 + .../test/language/module/newlines/module.wren | 5 + .../language/module/newlines/newlines.wren | 15 + .../language/module/no_variable/module.wren | 2 + .../module/no_variable/no_variable.wren | 2 + .../module/relative_import/module_3.wren | 2 + .../relative_import/relative_import.wren | 8 + .../relative_import/sub/dir/module.wren | 3 + .../relative_import/sub/dir/module_2.wren | 4 + .../module/relative_import/sub/module.wren | 3 + .../module/relative_import/sub/module_2.wren | 2 + .../module/relative_import/sub/module_3.wren | 2 + .../test/language/module/shared_import/a.wren | 5 + .../test/language/module/shared_import/b.wren | 5 + .../language/module/shared_import/shared.wren | 3 + .../module/shared_import/shared_import.wren | 12 + .../language/module/simple_import/module.wren | 3 + .../module/simple_import/simple_import.wren | 4 + .../test/language/module/unknown_module.wren | 1 + .../module/unknown_variable/module.wren | 3 + .../unknown_variable/unknown_variable.wren | 3 + .../test/language/no_trailing_newline.wren | 1 + .../test/language/nonlocal/assignment.wren | 18 + .../language/nonlocal/duplicate_nonlocal.wren | 6 + .../language/nonlocal/in_block_scope.wren | 8 + .../nonlocal/localname_forward_declare.wren | 5 + .../language/nonlocal/mutual_recursion.wren | 12 + .../nonlocal/nonlocal_in_initializer.wren | 2 + .../nonlocal_without_initializer.wren | 2 + .../nonlocal/null_before_defined.wren | 3 + .../test/language/nonlocal/undefined.wren | 4 + .../language/nonlocal/use_in_function.wren | 5 + .../use_in_function_before_definition.wren | 7 + .../test/language/nonlocal/use_in_method.wren | 16 + .../use_in_method_before_definition.wren | 16 + .../wren/test/language/null/literal.wren | 1 + .../test/language/number/hex_literals.wren | 9 + .../test/language/number/hex_too_large.wren | 1 + .../language/number/literal_too_large.wren | 1 + .../wren/test/language/number/literals.wren | 9 + .../scientific_float_missing_exponent.wren | 1 + .../number/scientific_floating_exponent.wren | 1 + .../language/number/scientific_literals.wren | 10 + .../number/scientific_missing_exponent.wren | 1 + .../scientific_missing_fractional_part.wren | 1 + .../number/scientific_multiple_exponants.wren | 1 + .../scientific_multiple_exponent_signs.wren | 1 + .../wren/test/language/precedence.wren | 41 + .../wren/test/language/return/after_else.wren | 3 + .../wren/test/language/return/after_if.wren | 3 + .../test/language/return/after_while.wren | 3 + .../test/language/return/in_function.wren | 6 + .../wren/test/language/return/in_method.wren | 10 + .../return/return_null_if_newline.wren | 6 + .../Vendors/wren/test/language/semicolon.wren | 2 + .../test/language/setter/associativity.wren | 18 + .../wren/test/language/setter/grouping.wren | 6 + .../test/language/setter/infix_operator.wren | 6 + .../wren/test/language/setter/instance.wren | 10 + .../Vendors/wren/test/language/setter/is.wren | 6 + .../test/language/setter/prefix_operator.wren | 6 + .../wren/test/language/setter/result.wren | 7 + .../language/setter/same_name_as_method.wren | 9 + .../wren/test/language/setter/static.wren | 7 + .../wren/test/language/shebang/shebang.wren | 2 + .../test/language/shebang/shebang_at_eof.wren | 1 + .../shebang/shebang_at_other_line.wren | 3 + .../language/shebang/shebang_invalid.wren | 3 + .../test/language/static_field/closure.wren | 16 + .../static_field/default_to_null.wren | 5 + .../static_field/in_instance_method.wren | 27 + .../test/language/static_field/multiple.wren | 25 + .../language/static_field/nested_class.wren | 40 + .../language/static_field/outside_class.wren | 1 + .../language/static_field/use_before_set.wren | 8 + .../test/language/string/byte_escapes.wren | 12 + .../wren/test/language/string/escapes.wren | 8 + .../string/incomplete_byte_escape.wren | 2 + .../string/incomplete_byte_escape_at_eof.wren | 2 + .../incomplete_long_unicode_escape.wren | 2 + .../string/incomplete_unicode_escape.wren | 2 + .../incomplete_unicode_escape_at_eof.wren | 2 + .../language/string/invalid_byte_escape.wren | 2 + .../test/language/string/invalid_escape.wren | 2 + .../string/invalid_unicode_escape.wren | 2 + .../wren/test/language/string/literals.wren | 59 + .../test/language/string/unicode_escapes.wren | 24 + .../unicode_two_bytes_to_long_escape.wren | 2 + .../test/language/string/unterminated.wren | 2 + .../language/string/unterminated_raw.wren | 2 + .../language/super/call_different_arity.wren | 22 + .../language/super/call_other_method.wren | 21 + .../test/language/super/call_same_method.wren | 18 + .../wren/test/language/super/closure.wren | 12 + .../test/language/super/implicit_name.wren | 18 + .../language/super/indirectly_inherited.wren | 20 + .../language/super/no_superclass_method.wren | 8 + .../language/super/super_at_top_level.wren | 4 + .../super_in_closure_in_inherited_method.wren | 13 + .../super/super_in_inherited_method.wren | 11 + .../super/super_in_static_method.wren | 8 + .../super/super_in_top_level_function.wren | 3 + .../wren/test/language/this/closure.wren | 8 + .../wren/test/language/this/nested_class.wren | 26 + .../test/language/this/nested_closure.wren | 8 + .../test/language/this/this_at_top_level.wren | 1 + .../test/language/this/this_in_method.wren | 7 + .../language/this/this_in_static_method.wren | 10 + .../this/this_in_top_level_function.wren | 3 + .../test/language/unexpected_character.wren | 3 + .../language/variable/duplicate_local.wren | 6 + .../variable/duplicate_parameter.wren | 6 + .../variable/global_in_initializer.wren | 1 + .../variable/global_without_initializer.wren | 2 + ...local_collide_with_function_parameter.wren | 3 + .../local_collide_with_method_parameter.wren | 5 + .../variable/local_in_initializer.wren | 4 + .../variable/local_in_middle_of_block.wren | 16 + .../variable/local_in_nested_block.wren | 6 + .../variable/local_outside_method.wren | 22 + .../variable/local_without_initializer.wren | 4 + .../test/language/variable/many_locals.wren | 259 + .../variable/many_nonsimultaneous_locals.wren | 524 + .../variable/newline_after_equals.wren | 5 + .../language/variable/newline_after_var.wren | 2 + .../language/variable/outside_method.wren | 20 + .../wren/test/language/variable/scope_if.wren | 13 + .../scope_reuse_in_different_blocks.wren | 9 + .../test/language/variable/scope_while.wren | 7 + .../language/variable/shadow_and_local.wren | 8 + .../test/language/variable/shadow_global.wren | 6 + .../variable/shadow_in_initializer.wren | 7 + .../test/language/variable/shadow_local.wren | 8 + .../language/variable/too_many_locals.wren | 259 + .../variable/too_many_locals_nested.wren | 267 + .../language/variable/undefined_global.wren | 1 + .../language/variable/undefined_local.wren | 3 + .../language/variable/use_false_as_var.wren | 1 + .../language/variable/use_field_as_var.wren | 1 + .../language/variable/use_null_as_var.wren | 1 + .../language/variable/use_this_as_var.wren | 1 + .../language/variable/use_true_as_var.wren | 1 + .../test/language/while/closure_in_body.wren | 13 + .../language/while/newline_after_while.wren | 2 + .../test/language/while/return_closure.wren | 10 + .../test/language/while/return_inside.wren | 9 + .../wren/test/language/while/syntax.wren | 16 + .../wren/test/language/while/truth.wren | 26 + .../wren/test/language/whitespace.wren | 26 + .../test/limit/interpolation_nesting.wren | 1 + .../Vendors/wren/test/limit/jump_too_far.wren | 291 + .../wren/test/limit/long_function.wren | 1013 + .../Vendors/wren/test/limit/long_string.wren | 13 + .../wren/test/limit/long_variable_name.wren | 2 + .../Vendors/wren/test/limit/loop_too_far.wren | 289 + .../wren/test/limit/many_constants.wren | 65540 +++++++++++++++ .../Vendors/wren/test/limit/many_fields.wren | 262 + .../Vendors/wren/test/limit/many_globals.wren | 65488 +++++++++++++++ .../test/limit/many_inherited_fields.wren | 281 + .../wren/test/limit/reuse_constants.wren | 65550 ++++++++++++++++ .../wren/test/limit/too_many_constants.wren | 65539 +++++++++++++++ .../wren/test/limit/too_many_fields.wren | 262 + .../limit/too_many_function_parameters.wren | 1 + .../test/limit/too_many_inherited_fields.wren | 280 + .../limit/too_much_interpolation_nesting.wren | 1 + .../test/limit/variable_name_too_long.wren | 2 + Nuake/src/Vendors/wren/test/main.c | 58 + .../wren/test/meta/eval_compile_error.wren | 3 + .../meta/eval_existing_scoped_variable.wren | 7 + .../wren/test/meta/eval_not_string.wren | 3 + .../wren/test/meta/get_module_variables.wren | 17 + .../meta/get_module_variables_not_string.wren | 3 + .../get_module_variables_unknown_module.wren | 3 + Nuake/src/Vendors/wren/test/random/float.wren | 13 + .../Vendors/wren/test/random/float_max.wren | 10 + .../wren/test/random/float_min_max.wren | 10 + Nuake/src/Vendors/wren/test/random/int.wren | 13 + .../src/Vendors/wren/test/random/int_max.wren | 14 + .../Vendors/wren/test/random/int_min_max.wren | 18 + Nuake/src/Vendors/wren/test/random/new.wren | 12 + .../wren/test/random/new_empty_sequence.wren | 3 + .../Vendors/wren/test/random/new_number.wren | 12 + .../wren/test/random/new_sequence.wren | 12 + .../wren/test/random/new_wrong_arg_type.wren | 3 + .../test/random/new_wrong_element_type.wren | 3 + .../test/random/sample_count_multiple.wren | 27 + .../wren/test/random/sample_count_one.wren | 23 + .../test/random/sample_count_too_many.wren | 5 + .../wren/test/random/sample_count_zero.wren | 6 + .../Vendors/wren/test/random/sample_one.wren | 20 + .../wren/test/random/sample_one_empty.wren | 5 + .../src/Vendors/wren/test/random/shuffle.wren | 32 + .../src/Vendors/wren/test/regression/428.wren | 6 + .../src/Vendors/wren/test/regression/429.wren | 6 + .../wren/test/regression/442-000005.wren | 15 + .../wren/test/regression/442-000007.wren | 4 + .../wren/test/regression/442-000086.wren | 2 + .../wren/test/regression/442-000088.wren | 2 + .../wren/test/regression/442-000089.wren | 2 + .../wren/test/regression/442-000100.wren | 2 + .../wren/test/regression/442-000115.wren | 6 + .../wren/test/regression/442-000166.wren | 2 + .../wren/test/regression/442-000181.wren | 3 + .../wren/test/regression/442-000182.wren | 5 + .../wren/test/regression/442-000238.wren | 2 + .../wren/test/regression/442-000295.wren | 2 + .../wren/test/regression/442-000321.wren | 2 + .../wren/test/regression/442-000348.wren | 2 + .../wren/test/regression/442-000357.wren | 2 + .../wren/test/regression/442-000440.wren | 2 + .../wren/test/regression/442-000665.wren | 4 + .../src/Vendors/wren/test/regression/494.wren | 3 + .../src/Vendors/wren/test/regression/561.wren | 178 + Nuake/src/Vendors/wren/test/test.c | 480 + Nuake/src/Vendors/wren/test/test.h | 89 + Nuake/src/Vendors/wren/test/unit/main.c | 9 + Nuake/src/Vendors/wren/test/unit/path_test.c | 104 + Nuake/src/Vendors/wren/test/unit/path_test.h | 1 + Nuake/src/Vendors/wren/test/unit/test.c | 29 + Nuake/src/Vendors/wren/test/unit/test.h | 7 + Nuake/src/Vendors/wren/try/main.try.c | 39 + .../wren/try/make.emscripten/wren.make | 171 + .../wren/try/make.emscripten/wren_try.make | 147 + Nuake/src/Vendors/wren/try/readme.md | 30 + Nuake/src/Vendors/wren/util/benchmark.py | 376 + .../wren/util/deploy_docs_from_travis.sh | 36 + .../wren/util/generate_amalgamation.py | 73 + Nuake/src/Vendors/wren/util/generate_docs.py | 199 + .../Vendors/wren/util/generate_projects.py | 50 + Nuake/src/Vendors/wren/util/metrics.py | 131 + Nuake/src/Vendors/wren/util/test.py | 422 + .../src/Vendors/wren/util/wren_to_c_string.py | 54 + Nuake/src/Window.cpp | 15 +- Nuake/src/Window.h | 3 + 1185 files changed, 320199 insertions(+), 486 deletions(-) create mode 100644 Editor/resources/Scenes/level.scene create mode 100644 Editor/resources/Scenes/test.scene create mode 100644 Editor/resources/Scenes/test.scene.scene create mode 100644 Editor/resources/Scripts/Engine.wren create mode 100644 Editor/resources/Scripts/test.wren create mode 100644 Nuake/src/Scripting/Modules/EngineModule.h create mode 100644 Nuake/src/Scripting/Modules/ScriptModule.h delete mode 100644 Nuake/src/Scripting/ScriptModule.h delete mode 100644 Nuake/src/Scripting/ScriptingAPI/HelloWorld.cpp delete mode 100644 Nuake/src/Scripting/ScriptingAPI/HelloWorld.h create mode 100644 Nuake/src/Scripting/WrenScript.cpp create mode 100644 Nuake/src/Scripting/WrenScript.h create mode 100644 Nuake/src/Vendors/wren/.gitignore create mode 100644 Nuake/src/Vendors/wren/.travis.sh create mode 100644 Nuake/src/Vendors/wren/.travis.yml create mode 100644 Nuake/src/Vendors/wren/AUTHORS create mode 100644 Nuake/src/Vendors/wren/CHANGELOG.md create mode 100644 Nuake/src/Vendors/wren/LICENSE create mode 100644 Nuake/src/Vendors/wren/README.md create mode 100644 Nuake/src/Vendors/wren/doc/error-handling.txt create mode 100644 Nuake/src/Vendors/wren/doc/implicit fields.txt create mode 100644 Nuake/src/Vendors/wren/doc/instruction counts.txt create mode 100644 Nuake/src/Vendors/wren/doc/notes/import syntax.md create mode 100644 Nuake/src/Vendors/wren/doc/notes/re-entrancy.md create mode 100644 Nuake/src/Vendors/wren/doc/receiver-less calls 2.txt create mode 100644 Nuake/src/Vendors/wren/doc/receiver-less calls.txt create mode 100644 Nuake/src/Vendors/wren/doc/rfc/0001-smarter-imports.md create mode 100644 Nuake/src/Vendors/wren/doc/site/blog/0-hello-wren.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/blog/1-0.2.0-and-beyond.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/blog/2-0.3.0-released.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/blog/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/blog/rss.xml create mode 100644 Nuake/src/Vendors/wren/doc/site/blog/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/classes.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/io/directory.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/io/file-flags.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/io/file.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/io/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/io/stat.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/io/stdin.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/io/stdout.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/io/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/os/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/os/platform.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/os/process.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/os/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/scheduler/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/scheduler/scheduler.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/scheduler/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/timer/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/timer/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/modules/timer/timer.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/cli/usage.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/concurrency.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/contributing.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/control-flow.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/embedding/calling-c-from-wren.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/embedding/calling-wren-from-c.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/embedding/configuring-the-vm.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/embedding/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/embedding/slots-and-handles.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/embedding/storing-c-data.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/embedding/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/error-handling.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/functions.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/getting-started.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/lists.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/maps.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/method-calls.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modularity.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/bool.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/class.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/fiber.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/fn.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/list.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/map.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/null.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/num.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/object.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/range.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/sequence.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/string.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/system.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/core/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/meta/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/meta/meta.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/meta/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/random/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/random/random.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/random/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/modules/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/performance.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/qa.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/static/codejar-linenumbers.js create mode 100644 Nuake/src/Vendors/wren/doc/site/static/codejar.js create mode 100644 Nuake/src/Vendors/wren/doc/site/static/prism.css create mode 100644 Nuake/src/Vendors/wren/doc/site/static/prism.js create mode 100644 Nuake/src/Vendors/wren/doc/site/static/style.css create mode 100644 Nuake/src/Vendors/wren/doc/site/static/wren.js create mode 100644 Nuake/src/Vendors/wren/doc/site/static/wren.svg create mode 100644 Nuake/src/Vendors/wren/doc/site/static/wren_try.js create mode 100644 Nuake/src/Vendors/wren/doc/site/static/wren_try.wasm create mode 100644 Nuake/src/Vendors/wren/doc/site/syntax.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/try/index.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/try/template.html create mode 100644 Nuake/src/Vendors/wren/doc/site/values.markdown create mode 100644 Nuake/src/Vendors/wren/doc/site/variables.markdown create mode 100644 Nuake/src/Vendors/wren/example/embedding/main.c create mode 100644 Nuake/src/Vendors/wren/example/hello.wren create mode 100644 Nuake/src/Vendors/wren/example/import_module/cthulu.wren create mode 100644 Nuake/src/Vendors/wren/example/import_module/lovecraft.wren create mode 100644 Nuake/src/Vendors/wren/example/mandelbrot.wren create mode 100644 Nuake/src/Vendors/wren/example/skynet.wren create mode 100644 Nuake/src/Vendors/wren/example/syntax.wren create mode 100644 Nuake/src/Vendors/wren/projects/make.bsd/wren.make create mode 100644 Nuake/src/Vendors/wren/projects/make.bsd/wren_shared.make create mode 100644 Nuake/src/Vendors/wren/projects/make.bsd/wren_test.make create mode 100644 Nuake/src/Vendors/wren/projects/make.mac/wren.make create mode 100644 Nuake/src/Vendors/wren/projects/make.mac/wren_shared.make create mode 100644 Nuake/src/Vendors/wren/projects/make.mac/wren_test.make create mode 100644 Nuake/src/Vendors/wren/projects/make/wren.make create mode 100644 Nuake/src/Vendors/wren/projects/make/wren_shared.make create mode 100644 Nuake/src/Vendors/wren/projects/make/wren_test.make create mode 100644 Nuake/src/Vendors/wren/projects/premake/premake5.exe create mode 100644 Nuake/src/Vendors/wren/projects/premake/premake5.lua create mode 100644 Nuake/src/Vendors/wren/projects/vs2017/wren.sln create mode 100644 Nuake/src/Vendors/wren/projects/vs2017/wren.vcxproj create mode 100644 Nuake/src/Vendors/wren/projects/vs2017/wren.vcxproj.filters create mode 100644 Nuake/src/Vendors/wren/projects/vs2017/wren_shared.vcxproj create mode 100644 Nuake/src/Vendors/wren/projects/vs2017/wren_shared.vcxproj.filters create mode 100644 Nuake/src/Vendors/wren/projects/vs2017/wren_test.vcxproj create mode 100644 Nuake/src/Vendors/wren/projects/vs2017/wren_test.vcxproj.filters create mode 100644 Nuake/src/Vendors/wren/projects/vs2019/wren.sln create mode 100644 Nuake/src/Vendors/wren/projects/vs2019/wren.vcxproj create mode 100644 Nuake/src/Vendors/wren/projects/vs2019/wren.vcxproj.filters create mode 100644 Nuake/src/Vendors/wren/projects/vs2019/wren_shared.vcxproj create mode 100644 Nuake/src/Vendors/wren/projects/vs2019/wren_shared.vcxproj.filters create mode 100644 Nuake/src/Vendors/wren/projects/vs2019/wren_test.vcxproj create mode 100644 Nuake/src/Vendors/wren/projects/vs2019/wren_test.vcxproj.filters create mode 100644 Nuake/src/Vendors/wren/projects/xcode/wren.xcodeproj/project.pbxproj create mode 100644 Nuake/src/Vendors/wren/projects/xcode/wren.xcworkspace/contents.xcworkspacedata create mode 100644 Nuake/src/Vendors/wren/projects/xcode/wren_shared.xcodeproj/project.pbxproj create mode 100644 Nuake/src/Vendors/wren/projects/xcode/wren_test.xcodeproj/project.pbxproj create mode 100644 Nuake/src/Vendors/wren/src/README.md create mode 100644 Nuake/src/Vendors/wren/src/include/wren.h create mode 100644 Nuake/src/Vendors/wren/src/include/wren.hpp create mode 100644 Nuake/src/Vendors/wren/src/optional/wren_opt_meta.c create mode 100644 Nuake/src/Vendors/wren/src/optional/wren_opt_meta.h create mode 100644 Nuake/src/Vendors/wren/src/optional/wren_opt_meta.wren create mode 100644 Nuake/src/Vendors/wren/src/optional/wren_opt_meta.wren.inc create mode 100644 Nuake/src/Vendors/wren/src/optional/wren_opt_random.c create mode 100644 Nuake/src/Vendors/wren/src/optional/wren_opt_random.h create mode 100644 Nuake/src/Vendors/wren/src/optional/wren_opt_random.wren create mode 100644 Nuake/src/Vendors/wren/src/optional/wren_opt_random.wren.inc create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_common.h create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_compiler.c create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_compiler.h create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_core.c create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_core.h create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_core.wren create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_core.wren.inc create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_debug.c create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_debug.h create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_math.h create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_opcodes.h create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_primitive.c create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_primitive.h create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_utils.c create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_utils.h create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_value.c create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_value.h create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_vm.c create mode 100644 Nuake/src/Vendors/wren/src/vm/wren_vm.h create mode 100644 Nuake/src/Vendors/wren/test/README.md create mode 100644 Nuake/src/Vendors/wren/test/api/api_tests.c create mode 100644 Nuake/src/Vendors/wren/test/api/api_tests.h create mode 100644 Nuake/src/Vendors/wren/test/api/benchmark.c create mode 100644 Nuake/src/Vendors/wren/test/api/benchmark.h create mode 100644 Nuake/src/Vendors/wren/test/api/call.c create mode 100644 Nuake/src/Vendors/wren/test/api/call.h create mode 100644 Nuake/src/Vendors/wren/test/api/call.wren create mode 100644 Nuake/src/Vendors/wren/test/api/call_calls_foreign.c create mode 100644 Nuake/src/Vendors/wren/test/api/call_calls_foreign.h create mode 100644 Nuake/src/Vendors/wren/test/api/call_calls_foreign.wren create mode 100644 Nuake/src/Vendors/wren/test/api/call_wren_call_root.c create mode 100644 Nuake/src/Vendors/wren/test/api/call_wren_call_root.h create mode 100644 Nuake/src/Vendors/wren/test/api/call_wren_call_root.wren create mode 100644 Nuake/src/Vendors/wren/test/api/error.c create mode 100644 Nuake/src/Vendors/wren/test/api/error.h create mode 100644 Nuake/src/Vendors/wren/test/api/error.wren create mode 100644 Nuake/src/Vendors/wren/test/api/foreign_class.c create mode 100644 Nuake/src/Vendors/wren/test/api/foreign_class.h create mode 100644 Nuake/src/Vendors/wren/test/api/foreign_class.wren create mode 100644 Nuake/src/Vendors/wren/test/api/get_variable.c create mode 100644 Nuake/src/Vendors/wren/test/api/get_variable.h create mode 100644 Nuake/src/Vendors/wren/test/api/get_variable.wren create mode 100644 Nuake/src/Vendors/wren/test/api/get_variable_module.wren create mode 100644 Nuake/src/Vendors/wren/test/api/handle.c create mode 100644 Nuake/src/Vendors/wren/test/api/handle.h create mode 100644 Nuake/src/Vendors/wren/test/api/handle.wren create mode 100644 Nuake/src/Vendors/wren/test/api/lists.c create mode 100644 Nuake/src/Vendors/wren/test/api/lists.h create mode 100644 Nuake/src/Vendors/wren/test/api/lists.wren create mode 100644 Nuake/src/Vendors/wren/test/api/maps.c create mode 100644 Nuake/src/Vendors/wren/test/api/maps.h create mode 100644 Nuake/src/Vendors/wren/test/api/maps.wren create mode 100644 Nuake/src/Vendors/wren/test/api/new_vm.c create mode 100644 Nuake/src/Vendors/wren/test/api/new_vm.h create mode 100644 Nuake/src/Vendors/wren/test/api/new_vm.wren create mode 100644 Nuake/src/Vendors/wren/test/api/reset_stack_after_call_abort.c create mode 100644 Nuake/src/Vendors/wren/test/api/reset_stack_after_call_abort.h create mode 100644 Nuake/src/Vendors/wren/test/api/reset_stack_after_call_abort.wren create mode 100644 Nuake/src/Vendors/wren/test/api/reset_stack_after_foreign_construct.c create mode 100644 Nuake/src/Vendors/wren/test/api/reset_stack_after_foreign_construct.h create mode 100644 Nuake/src/Vendors/wren/test/api/reset_stack_after_foreign_construct.wren create mode 100644 Nuake/src/Vendors/wren/test/api/resolution.c create mode 100644 Nuake/src/Vendors/wren/test/api/resolution.h create mode 100644 Nuake/src/Vendors/wren/test/api/resolution.wren create mode 100644 Nuake/src/Vendors/wren/test/api/slots.c create mode 100644 Nuake/src/Vendors/wren/test/api/slots.h create mode 100644 Nuake/src/Vendors/wren/test/api/slots.wren create mode 100644 Nuake/src/Vendors/wren/test/api/user_data.c create mode 100644 Nuake/src/Vendors/wren/test/api/user_data.h create mode 100644 Nuake/src/Vendors/wren/test/api/user_data.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/README.md create mode 100644 Nuake/src/Vendors/wren/test/benchmark/api_call.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/api_foreign_method.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/binary_trees.dart create mode 100644 Nuake/src/Vendors/wren/test/benchmark/binary_trees.lua create mode 100644 Nuake/src/Vendors/wren/test/benchmark/binary_trees.py create mode 100644 Nuake/src/Vendors/wren/test/benchmark/binary_trees.rb create mode 100644 Nuake/src/Vendors/wren/test/benchmark/binary_trees.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/binary_trees_gc.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/delta_blue.dart create mode 100644 Nuake/src/Vendors/wren/test/benchmark/delta_blue.lua.inprogress create mode 100644 Nuake/src/Vendors/wren/test/benchmark/delta_blue.py create mode 100644 Nuake/src/Vendors/wren/test/benchmark/delta_blue.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/fannkuch.lua create mode 100644 Nuake/src/Vendors/wren/test/benchmark/fannkuch.py create mode 100644 Nuake/src/Vendors/wren/test/benchmark/fannkuch.rb create mode 100644 Nuake/src/Vendors/wren/test/benchmark/fib.dart create mode 100644 Nuake/src/Vendors/wren/test/benchmark/fib.lua create mode 100644 Nuake/src/Vendors/wren/test/benchmark/fib.py create mode 100644 Nuake/src/Vendors/wren/test/benchmark/fib.rb create mode 100644 Nuake/src/Vendors/wren/test/benchmark/fib.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/fibers.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/for.dart create mode 100644 Nuake/src/Vendors/wren/test/benchmark/for.lua create mode 100644 Nuake/src/Vendors/wren/test/benchmark/for.py create mode 100644 Nuake/src/Vendors/wren/test/benchmark/for.rb create mode 100644 Nuake/src/Vendors/wren/test/benchmark/for.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/map_numeric.dart.skip create mode 100644 Nuake/src/Vendors/wren/test/benchmark/map_numeric.lua create mode 100644 Nuake/src/Vendors/wren/test/benchmark/map_numeric.py create mode 100644 Nuake/src/Vendors/wren/test/benchmark/map_numeric.rb create mode 100644 Nuake/src/Vendors/wren/test/benchmark/map_numeric.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/map_string.lua create mode 100644 Nuake/src/Vendors/wren/test/benchmark/map_string.py create mode 100644 Nuake/src/Vendors/wren/test/benchmark/map_string.rb create mode 100644 Nuake/src/Vendors/wren/test/benchmark/map_string.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/method_call.dart create mode 100644 Nuake/src/Vendors/wren/test/benchmark/method_call.lua create mode 100644 Nuake/src/Vendors/wren/test/benchmark/method_call.py create mode 100644 Nuake/src/Vendors/wren/test/benchmark/method_call.rb create mode 100644 Nuake/src/Vendors/wren/test/benchmark/method_call.wren create mode 100644 Nuake/src/Vendors/wren/test/benchmark/string_equals.py create mode 100644 Nuake/src/Vendors/wren/test/benchmark/string_equals.wren create mode 100644 Nuake/src/Vendors/wren/test/core/bool/equality.wren create mode 100644 Nuake/src/Vendors/wren/test/core/bool/no_constructor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/bool/not.wren create mode 100644 Nuake/src/Vendors/wren/test/core/bool/to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/bool/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/class/equality.wren create mode 100644 Nuake/src/Vendors/wren/test/core/class/name.wren create mode 100644 Nuake/src/Vendors/wren/test/core/class/no_constructor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/class/supertype.wren create mode 100644 Nuake/src/Vendors/wren/test/core/class/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/abort.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/abort_main_fiber.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/abort_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/abort_null.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_direct_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_done.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_indirect_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_return_implicit_null.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_return_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_root.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_to_parameter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_transferred.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_with_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_with_value_direct_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_with_value_done.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_with_value_error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_with_value_indirect_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_with_value_to_parameter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/call_with_value_transferred.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/is_done.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/is_done_after_error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/new_wrong_arg_type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/new_wrong_arity.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/resume_caller.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_direct_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_error_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_indirect_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_return_call_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_return_transfer_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_to_done.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_to_error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_to_parameter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_to_yielded.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_with_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_with_value_direct_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_with_value_indirect_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_with_value_to_done.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_with_value_to_error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_with_value_to_parameter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/transfer_with_value_to_yielded.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/try.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/try_direct_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/try_done.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/try_error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/try_indirect_reenter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/try_through_call.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/try_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/try_value_yield.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/try_without_error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield_from_import.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield_from_import_module.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield_from_main.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield_return_call_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield_return_transfer_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield_with_no_caller.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield_with_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield_with_value_from_main.wren create mode 100644 Nuake/src/Vendors/wren/test/core/fiber/yield_with_value_with_no_caller.wren create mode 100644 Nuake/src/Vendors/wren/test/core/function/arity.wren create mode 100644 Nuake/src/Vendors/wren/test/core/function/call_extra_arguments.wren create mode 100644 Nuake/src/Vendors/wren/test/core/function/call_missing_arguments.wren create mode 100644 Nuake/src/Vendors/wren/test/core/function/call_runtime_error.wren create mode 100644 Nuake/src/Vendors/wren/test/core/function/equality.wren create mode 100644 Nuake/src/Vendors/wren/test/core/function/new_wrong_arg_type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/function/to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/function/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/add.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/add_all.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/clear.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/contains.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/count.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/count_predicate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/count_predicate_non_bool_returning_fn.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/count_predicate_non_function_arg.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/each.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/each_no_items.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/each_non_function_arg.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/filled.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/filled_size_negative.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/filled_size_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/filled_size_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/index_of.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/insert.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/insert_index_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/insert_index_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/insert_index_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/insert_index_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/iterate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/iterate_iterator_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/iterate_iterator_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/iterator_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/iterator_value_iterator_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/iterator_value_iterator_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/iterator_value_iterator_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/iterator_value_iterator_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/join.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/join_separator_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/map.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/multiply.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/multiply_negative.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/multiply_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/multiply_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/new.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/not.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/plus.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/plus_not_iterable.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/reduce.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/reduce_no_items.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/reduce_single_item.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/reduce_wrong_arity.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/remove.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/remove_at.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/remove_at_index_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/remove_at_index_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/remove_at_index_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/remove_at_index_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/sort.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_range.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_range_from_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_range_from_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_range_from_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_range_to_exclusive_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_range_to_exclusive_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_range_to_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_range_to_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_range_to_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_setter.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_setter_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_setter_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_setter_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_setter_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/subscript_wrong_type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/swap.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/list/where.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/churn.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/clear.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/contains_key.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/contains_key_not_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/count.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/empty_string_key.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/is_empty.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/iterate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/iterate_iterator_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/iterate_iterator_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/iterator_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/iterator_value_iterator_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/iterator_value_iterator_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/iterator_value_iterator_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/iterator_value_iterator_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/key_iterate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/key_iterate_iterator_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/key_iterate_iterator_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/key_types.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/new.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/remove.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/remove_key_not_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/reuse_tombstone.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/subscript_empty_map.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/subscript_key_not_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/subscript_setter_key_not_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/value_iterate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/value_iterate_iterator_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map/value_iterate_iterator_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/map_entry/new.wren create mode 100644 Nuake/src/Vendors/wren/test/core/null/no_constructor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/null/not.wren create mode 100644 Nuake/src/Vendors/wren/test/core/null/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/abs.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/acos.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/asin.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/atan.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/atan2.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/atan2_x_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_and.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_and_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_lsh.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_lsh_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_not.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_or.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_or_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_rsh.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_rsh_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_xor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/bitwise_xor_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/cbrt.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/ceil.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/clamp.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/clamp_max_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/clamp_min_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/comparison.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/cos.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/decimal_point_at_eof.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/divide.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/divide_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/equality.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/exp.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/floor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/fraction.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/from_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/from_string_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/from_string_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/greater_than_equal_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/greater_than_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/invalid_hex_literal.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/is_infinity.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/is_integer.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/is_nan.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/largest.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/less_than_equal_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/less_than_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/log.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/log2.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/maxSafeInteger.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/max_other_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/minSafeInteger.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/min_max.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/min_other_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/minus.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/minus_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/mod.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/mod_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/multiply.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/multiply_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/no_constructor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/not.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/plus.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/plus_operand_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/pow.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/pow_power_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/round.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/sign.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/sin.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/smallest.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/sqrt.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/tan.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/truncate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/number/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/object/is.wren create mode 100644 Nuake/src/Vendors/wren/test/core/object/no_constructor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/object/nonclass_on_right.wren create mode 100644 Nuake/src/Vendors/wren/test/core/object/not.wren create mode 100644 Nuake/src/Vendors/wren/test/core/object/same.wren create mode 100644 Nuake/src/Vendors/wren/test/core/object/to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/object/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/contains.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/equality.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/exclusive_range_wrong_rhs_type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/from.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/inclusive_range_wrong_rhs_type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/is_inclusive.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/iterate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/iterate_from_float.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/iterate_wrong_type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/iterator_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/join.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/join_separator_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/map.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/max.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/min.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/no_constructor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/reduce.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/to.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/range/where.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/all.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/all_non_function_arg.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/any.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/any_non_function_arg.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/count.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/is_empty.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/map.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/no_constructor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/skip.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/skip_negative.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/skip_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/skip_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/take.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/take_negative.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/take_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/take_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/to_list.wren create mode 100644 Nuake/src/Vendors/wren/test/core/sequence/where.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/bytes.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/concatenation.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/concatenation_wrong_arg_type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/contains.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/contains_argument_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/count.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/ends_with.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/ends_with_invalid_arg.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/equality.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_byte.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_byte_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_byte_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_byte_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_byte_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_code_point.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_code_point_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_code_point_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_code_point_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/from_code_point_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/index_of.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/index_of_invalid_arg.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/index_of_start.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/index_of_start_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/index_of_start_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/index_of_start_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/index_of_start_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/iterate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/iterate_iterator_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/iterate_iterator_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/iterator_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/iterator_value_iterator_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/iterator_value_iterator_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/iterator_value_iterator_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/iterator_value_iterator_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/join.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/join_separator_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/multiply.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/multiply_negative.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/multiply_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/multiply_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/no_constructor.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/not.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/replace.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/replace_empty_old.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/replace_new_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/replace_old_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/split.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/split_argument_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/split_empty_seperator.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/starts_with.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/starts_with_invalid_arg.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_range.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_range_from_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_range_from_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_range_from_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_range_to_exclusive_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_range_to_exclusive_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_range_to_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_range_to_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_range_to_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/subscript_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/trim.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/trim_chars_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/trim_end.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/trim_end_chars_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/trim_start.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/trim_start_chars_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string/type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/count.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/iterate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/iterate_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/iterate_wrong_type.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/iterator_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/iterator_value_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/iterator_value_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/iterator_value_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/iterator_value_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/subscript.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/subscript_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/subscript_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/subscript_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_byte_sequence/subscript_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/count.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/iterate.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/iterate_iterator_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/iterate_iterator_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/iterator_value.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/iterator_value_incomplete.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/iterator_value_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/iterator_value_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/iterator_value_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/iterator_value_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/subscript.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/subscript_incomplete.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/subscript_not_int.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/subscript_not_num.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/subscript_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/core/string_code_point_sequence/subscript_too_small.wren create mode 100644 Nuake/src/Vendors/wren/test/core/system/print.wren create mode 100644 Nuake/src/Vendors/wren/test/core/system/print_all.wren create mode 100644 Nuake/src/Vendors/wren/test/core/system/print_all_not_sequence.wren create mode 100644 Nuake/src/Vendors/wren/test/core/system/print_bad_to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/core/system/write_all.wren create mode 100644 Nuake/src/Vendors/wren/test/core/system/write_all_not_sequence.wren create mode 100644 Nuake/src/Vendors/wren/test/core/system/write_bad_to_string.wren create mode 100644 Nuake/src/Vendors/wren/test/language/assignment/associativity.wren create mode 100644 Nuake/src/Vendors/wren/test/language/assignment/global.wren create mode 100644 Nuake/src/Vendors/wren/test/language/assignment/grouping.wren create mode 100644 Nuake/src/Vendors/wren/test/language/assignment/infix_operator.wren create mode 100644 Nuake/src/Vendors/wren/test/language/assignment/is.wren create mode 100644 Nuake/src/Vendors/wren/test/language/assignment/local.wren create mode 100644 Nuake/src/Vendors/wren/test/language/assignment/prefix_operator.wren create mode 100644 Nuake/src/Vendors/wren/test/language/assignment/syntax.wren create mode 100644 Nuake/src/Vendors/wren/test/language/assignment/undefined.wren create mode 100644 Nuake/src/Vendors/wren/test/language/bitwise_precedence.wren create mode 100644 Nuake/src/Vendors/wren/test/language/bom.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/closure_in_for.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/closure_in_while.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/exit_local_scopes.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/in_for_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/in_function_in_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/in_method_in_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/in_while_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/nested_for_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/nested_while_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/break/outside_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/chained_newline.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/attributes.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/compile_only.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/duplicate_keys.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/groups.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/invalid_expression.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/invalid_scope.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/invalid_toplevel.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/literals.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/methods.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/attributes/without.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/field_in_foreign_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/foreign_class_inherit_fields.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/lowercase_name_inside_body.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/missing_class_after_foreign.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/name_inside_body.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/newline_after_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/newline_after_static.wren create mode 100644 Nuake/src/Vendors/wren/test/language/class/syntax.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/assign_to_closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/close_over_function_parameter.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/close_over_later_variable.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/close_over_method_parameter.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/closed_closure_in_function.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/nested_closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/open_closure_in_function.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/reference_closure_multiple_times.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/reuse_closure_slot.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/shadow_closure_with_local.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/unused_closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/closure/unused_later_closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/comments/block.wren create mode 100644 Nuake/src/Vendors/wren/test/language/comments/block_at_eof.wren create mode 100644 Nuake/src/Vendors/wren/test/language/comments/line_at_eof.wren create mode 100644 Nuake/src/Vendors/wren/test/language/comments/only_line_comment.wren create mode 100644 Nuake/src/Vendors/wren/test/language/comments/only_line_comment_and_line.wren create mode 100644 Nuake/src/Vendors/wren/test/language/comments/unicode.wren create mode 100644 Nuake/src/Vendors/wren/test/language/comments/unterminated_block.wren create mode 100644 Nuake/src/Vendors/wren/test/language/comments/unterminated_nested_block.wren create mode 100644 Nuake/src/Vendors/wren/test/language/conditional/conditional_in_then.wren create mode 100644 Nuake/src/Vendors/wren/test/language/conditional/missing_colon.wren create mode 100644 Nuake/src/Vendors/wren/test/language/conditional/missing_condition.wren create mode 100644 Nuake/src/Vendors/wren/test/language/conditional/missing_else.wren create mode 100644 Nuake/src/Vendors/wren/test/language/conditional/missing_question.wren create mode 100644 Nuake/src/Vendors/wren/test/language/conditional/missing_then.wren create mode 100644 Nuake/src/Vendors/wren/test/language/conditional/newlines.wren create mode 100644 Nuake/src/Vendors/wren/test/language/conditional/precedence.wren create mode 100644 Nuake/src/Vendors/wren/test/language/conditional/short_circuit.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/cannot_be_infix.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/cannot_be_minus.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/cannot_be_setter.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/cannot_be_static.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/cannot_be_subscript.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/cannot_be_unary.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/cannot_call_initializer.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/cannot_return_value.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/named.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/no_default.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/no_parameter_list.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/not_inherited.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/return_without_value.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/super_must_have_args.wren create mode 100644 Nuake/src/Vendors/wren/test/language/constructor/superclass.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/closure_in_for.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/closure_in_while.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/exit_local_scopes.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/in_for_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/in_function_in_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/in_method_in_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/in_while_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/nested_for_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/nested_while_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/continue/outside_loop.wren create mode 100644 Nuake/src/Vendors/wren/test/language/deeply_nested_gc.wren create mode 100644 Nuake/src/Vendors/wren/test/language/empty_block.wren create mode 100644 Nuake/src/Vendors/wren/test/language/empty_file.wren create mode 100644 Nuake/src/Vendors/wren/test/language/fiber/closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/default_to_null.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/in_fn_in_static_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/in_static_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/in_static_method_in_nested_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/multiple.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/nested_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/object_reference.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/outside_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/field/use_before_set.wren create mode 100644 Nuake/src/Vendors/wren/test/language/for/close_over_loop_variable.wren create mode 100644 Nuake/src/Vendors/wren/test/language/for/closure_in_body.wren create mode 100644 Nuake/src/Vendors/wren/test/language/for/newline_after_for.wren create mode 100644 Nuake/src/Vendors/wren/test/language/for/newline_before_in.wren create mode 100644 Nuake/src/Vendors/wren/test/language/for/only_evaluate_sequence_once.wren create mode 100644 Nuake/src/Vendors/wren/test/language/for/return_closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/for/return_inside.wren create mode 100644 Nuake/src/Vendors/wren/test/language/for/syntax.wren create mode 100644 Nuake/src/Vendors/wren/test/language/for/truth.wren create mode 100644 Nuake/src/Vendors/wren/test/language/foreign/foreign_after_static.wren create mode 100644 Nuake/src/Vendors/wren/test/language/foreign/foreign_method_with_body.wren create mode 100644 Nuake/src/Vendors/wren/test/language/foreign/unknown_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/function/empty_body.wren create mode 100644 Nuake/src/Vendors/wren/test/language/function/newline_body.wren create mode 100644 Nuake/src/Vendors/wren/test/language/function/newline_in_expression_block.wren create mode 100644 Nuake/src/Vendors/wren/test/language/function/no_newline_before_close.wren create mode 100644 Nuake/src/Vendors/wren/test/language/function/no_parameters.wren create mode 100644 Nuake/src/Vendors/wren/test/language/function/parameters.wren create mode 100644 Nuake/src/Vendors/wren/test/language/function/syntax.wren create mode 100644 Nuake/src/Vendors/wren/test/language/if/dangling_else.wren create mode 100644 Nuake/src/Vendors/wren/test/language/if/else.wren create mode 100644 Nuake/src/Vendors/wren/test/language/if/if.wren create mode 100644 Nuake/src/Vendors/wren/test/language/if/newline_after_else.wren create mode 100644 Nuake/src/Vendors/wren/test/language/if/newline_after_if.wren create mode 100644 Nuake/src/Vendors/wren/test/language/if/truth.wren create mode 100644 Nuake/src/Vendors/wren/test/language/ignore_carriage_returns.wren create mode 100644 Nuake/src/Vendors/wren/test/language/implicit_receiver/inherited_methods.wren create mode 100644 Nuake/src/Vendors/wren/test/language/implicit_receiver/instance_methods.wren create mode 100644 Nuake/src/Vendors/wren/test/language/implicit_receiver/locals_shadow_getter.wren create mode 100644 Nuake/src/Vendors/wren/test/language/implicit_receiver/locals_shadow_setter.wren create mode 100644 Nuake/src/Vendors/wren/test/language/implicit_receiver/nested_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/implicit_receiver/static_methods.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/do_not_inherit_static_methods.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_fields.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_bool.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_fiber.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_fn.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_list.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_map.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_nonclass.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_null.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_null_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_num.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_range.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_from_string.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherit_methods.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/inherited_fields_in_closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/inheritance/is.wren create mode 100644 Nuake/src/Vendors/wren/test/language/interpolation/empty.wren create mode 100644 Nuake/src/Vendors/wren/test/language/interpolation/interpolation.wren create mode 100644 Nuake/src/Vendors/wren/test/language/interpolation/runtime_error_in_expression.wren create mode 100644 Nuake/src/Vendors/wren/test/language/interpolation/switch_fiber.wren create mode 100644 Nuake/src/Vendors/wren/test/language/interpolation/unterminated.wren create mode 100644 Nuake/src/Vendors/wren/test/language/interpolation/unterminated_expression.wren create mode 100644 Nuake/src/Vendors/wren/test/language/list/duplicate_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/list/duplicate_trailing_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/list/empty_list_with_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/list/eof_after_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/list/eof_after_element.wren create mode 100644 Nuake/src/Vendors/wren/test/language/list/grow_shrink.wren create mode 100644 Nuake/src/Vendors/wren/test/language/list/newline_before_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/list/newlines.wren create mode 100644 Nuake/src/Vendors/wren/test/language/list/trailing_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/logical_operator/and.wren create mode 100644 Nuake/src/Vendors/wren/test/language/logical_operator/and_truth.wren create mode 100644 Nuake/src/Vendors/wren/test/language/logical_operator/or.wren create mode 100644 Nuake/src/Vendors/wren/test/language/logical_operator/or_truth.wren create mode 100644 Nuake/src/Vendors/wren/test/language/many_reallocations.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/bad_key_precedence.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/duplicate_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/duplicate_trailing_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/empty_map_with_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/eof_after_colon.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/eof_after_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/eof_after_key.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/eof_after_value.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/grow_and_shrink.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/newlines.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/precedence.wren create mode 100644 Nuake/src/Vendors/wren/test/language/map/trailing_comma.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/arity.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/call_name_too_long.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/duplicate_methods.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/empty_block.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/empty_subscript_call.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/empty_subscript_definition.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/long_name.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/many_methods.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/name_too_long.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/newlines.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/no_parameters_new_line.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/not_found.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/not_found_eleven_arguments.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/not_found_multiple_arguments.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/not_found_one_argument.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/operators.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/static.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/static_method_not_found.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/static_operators.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/subscript_operators.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/subscript_setter_too_many_arguments.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/subscript_too_many_arguments.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/too_many_arguments.wren create mode 100644 Nuake/src/Vendors/wren/test/language/method/too_many_parameters.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/change_imported_value/change_imported_value.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/change_imported_value/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/compile_error/compile_error.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/compile_error/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/cyclic_import/a.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/cyclic_import/b.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/cyclic_import/cyclic_import.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/implicitly_imports_core/implicitly_imports_core.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/implicitly_imports_core/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/import_as/import_as.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/import_as/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/inside_block/inside_block.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/inside_block/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/missing_for.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/missing_string_after_import.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/module_dir/module_dir.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/module_dir/something/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/multiple_variables/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/multiple_variables/multiple_variables.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/name_collision.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/newlines/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/newlines/newlines.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/no_variable/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/no_variable/no_variable.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/relative_import/module_3.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/relative_import/relative_import.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/relative_import/sub/dir/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/relative_import/sub/dir/module_2.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/relative_import/sub/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/relative_import/sub/module_2.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/relative_import/sub/module_3.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/shared_import/a.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/shared_import/b.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/shared_import/shared.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/shared_import/shared_import.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/simple_import/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/simple_import/simple_import.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/unknown_module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/unknown_variable/module.wren create mode 100644 Nuake/src/Vendors/wren/test/language/module/unknown_variable/unknown_variable.wren create mode 100644 Nuake/src/Vendors/wren/test/language/no_trailing_newline.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/assignment.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/duplicate_nonlocal.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/in_block_scope.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/localname_forward_declare.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/mutual_recursion.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/nonlocal_in_initializer.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/nonlocal_without_initializer.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/null_before_defined.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/undefined.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/use_in_function.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/use_in_function_before_definition.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/use_in_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/nonlocal/use_in_method_before_definition.wren create mode 100644 Nuake/src/Vendors/wren/test/language/null/literal.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/hex_literals.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/hex_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/literal_too_large.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/literals.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/scientific_float_missing_exponent.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/scientific_floating_exponent.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/scientific_literals.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/scientific_missing_exponent.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/scientific_missing_fractional_part.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/scientific_multiple_exponants.wren create mode 100644 Nuake/src/Vendors/wren/test/language/number/scientific_multiple_exponent_signs.wren create mode 100644 Nuake/src/Vendors/wren/test/language/precedence.wren create mode 100644 Nuake/src/Vendors/wren/test/language/return/after_else.wren create mode 100644 Nuake/src/Vendors/wren/test/language/return/after_if.wren create mode 100644 Nuake/src/Vendors/wren/test/language/return/after_while.wren create mode 100644 Nuake/src/Vendors/wren/test/language/return/in_function.wren create mode 100644 Nuake/src/Vendors/wren/test/language/return/in_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/return/return_null_if_newline.wren create mode 100644 Nuake/src/Vendors/wren/test/language/semicolon.wren create mode 100644 Nuake/src/Vendors/wren/test/language/setter/associativity.wren create mode 100644 Nuake/src/Vendors/wren/test/language/setter/grouping.wren create mode 100644 Nuake/src/Vendors/wren/test/language/setter/infix_operator.wren create mode 100644 Nuake/src/Vendors/wren/test/language/setter/instance.wren create mode 100644 Nuake/src/Vendors/wren/test/language/setter/is.wren create mode 100644 Nuake/src/Vendors/wren/test/language/setter/prefix_operator.wren create mode 100644 Nuake/src/Vendors/wren/test/language/setter/result.wren create mode 100644 Nuake/src/Vendors/wren/test/language/setter/same_name_as_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/setter/static.wren create mode 100644 Nuake/src/Vendors/wren/test/language/shebang/shebang.wren create mode 100644 Nuake/src/Vendors/wren/test/language/shebang/shebang_at_eof.wren create mode 100644 Nuake/src/Vendors/wren/test/language/shebang/shebang_at_other_line.wren create mode 100644 Nuake/src/Vendors/wren/test/language/shebang/shebang_invalid.wren create mode 100644 Nuake/src/Vendors/wren/test/language/static_field/closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/static_field/default_to_null.wren create mode 100644 Nuake/src/Vendors/wren/test/language/static_field/in_instance_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/static_field/multiple.wren create mode 100644 Nuake/src/Vendors/wren/test/language/static_field/nested_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/static_field/outside_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/static_field/use_before_set.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/byte_escapes.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/escapes.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/incomplete_byte_escape.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/incomplete_byte_escape_at_eof.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/incomplete_long_unicode_escape.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/incomplete_unicode_escape.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/incomplete_unicode_escape_at_eof.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/invalid_byte_escape.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/invalid_escape.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/invalid_unicode_escape.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/literals.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/unicode_escapes.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/unicode_two_bytes_to_long_escape.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/unterminated.wren create mode 100644 Nuake/src/Vendors/wren/test/language/string/unterminated_raw.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/call_different_arity.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/call_other_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/call_same_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/implicit_name.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/indirectly_inherited.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/no_superclass_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/super_at_top_level.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/super_in_closure_in_inherited_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/super_in_inherited_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/super_in_static_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/super/super_in_top_level_function.wren create mode 100644 Nuake/src/Vendors/wren/test/language/this/closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/this/nested_class.wren create mode 100644 Nuake/src/Vendors/wren/test/language/this/nested_closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/this/this_at_top_level.wren create mode 100644 Nuake/src/Vendors/wren/test/language/this/this_in_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/this/this_in_static_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/this/this_in_top_level_function.wren create mode 100644 Nuake/src/Vendors/wren/test/language/unexpected_character.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/duplicate_local.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/duplicate_parameter.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/global_in_initializer.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/global_without_initializer.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/local_collide_with_function_parameter.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/local_collide_with_method_parameter.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/local_in_initializer.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/local_in_middle_of_block.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/local_in_nested_block.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/local_outside_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/local_without_initializer.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/many_locals.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/many_nonsimultaneous_locals.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/newline_after_equals.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/newline_after_var.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/outside_method.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/scope_if.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/scope_reuse_in_different_blocks.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/scope_while.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/shadow_and_local.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/shadow_global.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/shadow_in_initializer.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/shadow_local.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/too_many_locals.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/too_many_locals_nested.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/undefined_global.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/undefined_local.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/use_false_as_var.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/use_field_as_var.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/use_null_as_var.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/use_this_as_var.wren create mode 100644 Nuake/src/Vendors/wren/test/language/variable/use_true_as_var.wren create mode 100644 Nuake/src/Vendors/wren/test/language/while/closure_in_body.wren create mode 100644 Nuake/src/Vendors/wren/test/language/while/newline_after_while.wren create mode 100644 Nuake/src/Vendors/wren/test/language/while/return_closure.wren create mode 100644 Nuake/src/Vendors/wren/test/language/while/return_inside.wren create mode 100644 Nuake/src/Vendors/wren/test/language/while/syntax.wren create mode 100644 Nuake/src/Vendors/wren/test/language/while/truth.wren create mode 100644 Nuake/src/Vendors/wren/test/language/whitespace.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/interpolation_nesting.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/jump_too_far.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/long_function.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/long_string.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/long_variable_name.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/loop_too_far.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/many_constants.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/many_fields.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/many_globals.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/many_inherited_fields.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/reuse_constants.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/too_many_constants.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/too_many_fields.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/too_many_function_parameters.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/too_many_inherited_fields.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/too_much_interpolation_nesting.wren create mode 100644 Nuake/src/Vendors/wren/test/limit/variable_name_too_long.wren create mode 100644 Nuake/src/Vendors/wren/test/main.c create mode 100644 Nuake/src/Vendors/wren/test/meta/eval_compile_error.wren create mode 100644 Nuake/src/Vendors/wren/test/meta/eval_existing_scoped_variable.wren create mode 100644 Nuake/src/Vendors/wren/test/meta/eval_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/meta/get_module_variables.wren create mode 100644 Nuake/src/Vendors/wren/test/meta/get_module_variables_not_string.wren create mode 100644 Nuake/src/Vendors/wren/test/meta/get_module_variables_unknown_module.wren create mode 100644 Nuake/src/Vendors/wren/test/random/float.wren create mode 100644 Nuake/src/Vendors/wren/test/random/float_max.wren create mode 100644 Nuake/src/Vendors/wren/test/random/float_min_max.wren create mode 100644 Nuake/src/Vendors/wren/test/random/int.wren create mode 100644 Nuake/src/Vendors/wren/test/random/int_max.wren create mode 100644 Nuake/src/Vendors/wren/test/random/int_min_max.wren create mode 100644 Nuake/src/Vendors/wren/test/random/new.wren create mode 100644 Nuake/src/Vendors/wren/test/random/new_empty_sequence.wren create mode 100644 Nuake/src/Vendors/wren/test/random/new_number.wren create mode 100644 Nuake/src/Vendors/wren/test/random/new_sequence.wren create mode 100644 Nuake/src/Vendors/wren/test/random/new_wrong_arg_type.wren create mode 100644 Nuake/src/Vendors/wren/test/random/new_wrong_element_type.wren create mode 100644 Nuake/src/Vendors/wren/test/random/sample_count_multiple.wren create mode 100644 Nuake/src/Vendors/wren/test/random/sample_count_one.wren create mode 100644 Nuake/src/Vendors/wren/test/random/sample_count_too_many.wren create mode 100644 Nuake/src/Vendors/wren/test/random/sample_count_zero.wren create mode 100644 Nuake/src/Vendors/wren/test/random/sample_one.wren create mode 100644 Nuake/src/Vendors/wren/test/random/sample_one_empty.wren create mode 100644 Nuake/src/Vendors/wren/test/random/shuffle.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/428.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/429.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000005.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000007.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000086.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000088.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000089.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000100.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000115.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000166.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000181.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000182.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000238.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000295.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000321.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000348.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000357.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000440.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/442-000665.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/494.wren create mode 100644 Nuake/src/Vendors/wren/test/regression/561.wren create mode 100644 Nuake/src/Vendors/wren/test/test.c create mode 100644 Nuake/src/Vendors/wren/test/test.h create mode 100644 Nuake/src/Vendors/wren/test/unit/main.c create mode 100644 Nuake/src/Vendors/wren/test/unit/path_test.c create mode 100644 Nuake/src/Vendors/wren/test/unit/path_test.h create mode 100644 Nuake/src/Vendors/wren/test/unit/test.c create mode 100644 Nuake/src/Vendors/wren/test/unit/test.h create mode 100644 Nuake/src/Vendors/wren/try/main.try.c create mode 100644 Nuake/src/Vendors/wren/try/make.emscripten/wren.make create mode 100644 Nuake/src/Vendors/wren/try/make.emscripten/wren_try.make create mode 100644 Nuake/src/Vendors/wren/try/readme.md create mode 100644 Nuake/src/Vendors/wren/util/benchmark.py create mode 100644 Nuake/src/Vendors/wren/util/deploy_docs_from_travis.sh create mode 100644 Nuake/src/Vendors/wren/util/generate_amalgamation.py create mode 100644 Nuake/src/Vendors/wren/util/generate_docs.py create mode 100644 Nuake/src/Vendors/wren/util/generate_projects.py create mode 100644 Nuake/src/Vendors/wren/util/metrics.py create mode 100644 Nuake/src/Vendors/wren/util/test.py create mode 100644 Nuake/src/Vendors/wren/util/wren_to_c_string.py diff --git a/.gitignore b/.gitignore index f14bb3fa..69048e50 100644 --- a/.gitignore +++ b/.gitignore @@ -789,6 +789,8 @@ ASALocalRun/ # MFractors (Xamarin productivity tool) working folder .mfractor/ +./bin +./bin-int/ # Local History for Visual Studio .localhistory/ diff --git a/Editor/Editor.cpp b/Editor/Editor.cpp index 5a728644..cf7a6533 100644 --- a/Editor/Editor.cpp +++ b/Editor/Editor.cpp @@ -86,15 +86,15 @@ public: void OnUpdate(Timestep ts) { - if (Input::IsKeyPress(GLFW_KEY_W)) + if (Input::IsKeyDown(GLFW_KEY_W)) velocity.z = 5.0f; - else if (Input::IsKeyPress(GLFW_KEY_S)) + else if (Input::IsKeyDown(GLFW_KEY_S)) velocity.z = -5.0f; else velocity.z = 0.0f; - if (Input::IsKeyPress(GLFW_KEY_A)) + if (Input::IsKeyDown(GLFW_KEY_A)) velocity.x = 5.0f; - else if (Input::IsKeyPress(GLFW_KEY_D)) + else if (Input::IsKeyDown(GLFW_KEY_D)) velocity.x = -5.0f; else velocity.x = 0.0f; @@ -159,16 +159,18 @@ int main() while (!Engine::GetCurrentWindow()->ShouldClose()) { + Engine::Tick(); + Engine::Draw(); - if (Input::IsKeyPress(GLFW_KEY_F8)) + if (Input::IsKeyPressed(GLFW_KEY_F8)) Engine::ExitPlayMode(); editor.Draw(); Engine::EndDraw(); - Engine::Tick(); + } Engine::Close(); diff --git a/Editor/resources/Interface/Testing.css b/Editor/resources/Interface/Testing.css index ef92915e..2eead7f5 100644 --- a/Editor/resources/Interface/Testing.css +++ b/Editor/resources/Interface/Testing.css @@ -1,6 +1,8 @@ -.button { - width: 100%; - height: 100%; + + +.hello{ + width: 400px; + height: 200px; } .screen{ @@ -8,20 +10,11 @@ width: 100%; justify-content: center; flex-direction: row; - align-content:flex-end; + align-content:flex-start; } -.container { - height: 50px; - width: 50%; - flex-direction: row; - justify-content: space-between; - align-content: center; - align-self:center; - padding: 8px; -} +.rect{ + height: 200px; + width: 200px; -.items{ - height: 30px; - width: 30px; } diff --git a/Editor/resources/Interface/Testing.interface b/Editor/resources/Interface/Testing.interface index c8a25d58..c12e00d1 100644 --- a/Editor/resources/Interface/Testing.interface +++ b/Editor/resources/Interface/Testing.interface @@ -1,23 +1,12 @@ - -

Hello world!

- - - - - - - - - - +

Hello, world

+ +
diff --git a/Editor/resources/Scenes/level.scene b/Editor/resources/Scenes/level.scene new file mode 100644 index 00000000..fbddfefa --- /dev/null +++ b/Editor/resources/Scenes/level.scene @@ -0,0 +1,62 @@ +{ + "Entities": [ + { + "GetComponent()": { + "Name": "Camera" + }, + "GetComponent()": { + "HasParent": false, + "Type": "ParentComponent" + }, + "GetComponent()": { + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Translation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Type": "TransformComponent" + } + } + ], + "Name": "", + "m_Environement": { + "AmbientColor": { + "w": 1.0141871010880041e-38, + "x": 4.489836626909252e+21, + "y": 7.618957098799247e+31, + "z": 1.0141871010880041e-38 + }, + "ProceduralSkybox": { + "AtmosphereRadius": 6380000.0, + "MieScattering": { + "x": 1.9999999494757503e-05, + "y": 1.9999999494757503e-05, + "z": 1.9999999494757503e-05 + }, + "RayleighScattering": { + "x": 5.80000005356851e-06, + "y": 1.3500000022759195e-05, + "z": 3.310000101919286e-05 + }, + "SunDirection": { + "x": 0.20000000298023224, + "y": 0.9591699838638306, + "z": 0.20000000298023224 + }, + "SunIntensity": 100.0, + "SurfaceRadius": 6360000.0 + }, + "VolumetricFog": 0.949999988079071, + "VolumetricStepCount": 100.0 + } +} \ No newline at end of file diff --git a/Editor/resources/Scenes/test.scene b/Editor/resources/Scenes/test.scene new file mode 100644 index 00000000..e2584be9 --- /dev/null +++ b/Editor/resources/Scenes/test.scene @@ -0,0 +1,108 @@ +{ + "Entities": [ + { + "NameComponent": { + "Name": "Trenchbroom map" + }, + "ParentComponent": { + "HasParent": false + }, + "QuakeMapComponent": { + "HasCollisions": false, + "Path": "C:\\Dev\\Nuake\\Editor\\resources\\Maps\\texture_test.map" + }, + "TransformComponent": { + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Translation": { + "x": 9.199999809265137, + "y": 5.599999904632568, + "z": 0.0 + }, + "Type": "TransformComponent" + } + }, + { + "LightComponent": { + "CastShadows": true, + "Color": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Direction": { + "x": 0.20000000298023224, + "y": 0.9591699838638306, + "z": 0.20000000298023224 + }, + "IsVolumetric": false, + "Strength": 10.0, + "SyncDirectionWithSky": true, + "Type": 0 + }, + "NameComponent": { + "Name": "Light" + }, + "ParentComponent": { + "HasParent": false + }, + "TransformComponent": { + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Translation": { + "x": 7.035792350769043, + "y": 5.795107364654541, + "z": -0.9431453943252563 + }, + "Type": "TransformComponent" + } + } + ], + "Name": "", + "m_Environement": { + "AmbientColor": { + "w": 0.0, + "x": null, + "y": 0.0, + "z": 0.0 + }, + "ProceduralSkybox": { + "AtmosphereRadius": 6380000.0, + "MieScattering": { + "x": 1.9999999494757503e-05, + "y": 1.9999999494757503e-05, + "z": 1.9999999494757503e-05 + }, + "RayleighScattering": { + "x": 5.80000005356851e-06, + "y": 1.3500000022759195e-05, + "z": 3.310000101919286e-05 + }, + "SunDirection": { + "x": 0.20000000298023224, + "y": 0.9591699838638306, + "z": 0.20000000298023224 + }, + "SunIntensity": 100.0, + "SurfaceRadius": 6360000.0 + }, + "VolumetricFog": 0.949999988079071, + "VolumetricStepCount": 100.0 + } +} \ No newline at end of file diff --git a/Editor/resources/Scenes/test.scene.scene b/Editor/resources/Scenes/test.scene.scene new file mode 100644 index 00000000..0f285f04 --- /dev/null +++ b/Editor/resources/Scenes/test.scene.scene @@ -0,0 +1,70 @@ +{ + "Entities": [ + { + "CameraComponent": { + "CameraInstance": { + "AspectRatio": 1.7777777910232544, + "Exposure": 1.0, + "Fov": 88.0, + "Speed": 1.0, + "m_Type": 1 + } + }, + "NameComponent": { + "Name": "Camera" + }, + "ParentComponent": { + "HasParent": false + }, + "TransformComponent": { + "Rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "Translation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Type": "TransformComponent" + } + } + ], + "Name": "", + "m_Environement": { + "AmbientColor": { + "w": 9.275544859982045e-39, + "x": 1.0193902624158886e-38, + "y": 8.449025394560124e-39, + "z": 9.275544859982045e-39 + }, + "ProceduralSkybox": { + "AtmosphereRadius": 6380000.0, + "MieScattering": { + "x": 1.9999999494757503e-05, + "y": 1.9999999494757503e-05, + "z": 1.9999999494757503e-05 + }, + "RayleighScattering": { + "x": 5.80000005356851e-06, + "y": 1.3500000022759195e-05, + "z": 3.310000101919286e-05 + }, + "SunDirection": { + "x": 0.20000000298023224, + "y": 0.9591699838638306, + "z": 0.20000000298023224 + }, + "SunIntensity": 100.0, + "SurfaceRadius": 6360000.0 + }, + "VolumetricFog": 0.949999988079071, + "VolumetricStepCount": 100.0 + } +} \ No newline at end of file diff --git a/Editor/resources/Scripts/Engine.wren b/Editor/resources/Scripts/Engine.wren new file mode 100644 index 00000000..4ccbd944 --- /dev/null +++ b/Editor/resources/Scripts/Engine.wren @@ -0,0 +1,15 @@ +class Engine { + foreign static Log(msg) +} + +class Vector3 { + construct new(x, y, z) { + _x = x + _y = y + _z = z + } +} + +class Entity { + foreign GetComponent(type) +} \ No newline at end of file diff --git a/Editor/resources/Scripts/test.wren b/Editor/resources/Scripts/test.wren new file mode 100644 index 00000000..fc35bfea --- /dev/null +++ b/Editor/resources/Scripts/test.wren @@ -0,0 +1,18 @@ +import "Scripts/Engine" for Engine +class Test { + init() { + System.print("hello init") + } + + update(t) { + System.print("hello update %(t)") + } + + exit() { + System.print("hello exit ") + } + + static hello() { + Engine.Log("Hello from foreign") + } +} \ No newline at end of file diff --git a/Editor/src/EditorInterface.cpp b/Editor/src/EditorInterface.cpp index 49559889..dc84726b 100644 --- a/Editor/src/EditorInterface.cpp +++ b/Editor/src/EditorInterface.cpp @@ -675,10 +675,10 @@ void EditorInterface::DrawDirectoryExplorer() } } - ImGui::EndTable(); + } - + ImGui::EndTable(); } ImGui::End(); } diff --git a/Nuake/Engine.cpp b/Nuake/Engine.cpp index 93fadfb0..23c1ccca 100644 --- a/Nuake/Engine.cpp +++ b/Nuake/Engine.cpp @@ -1,6 +1,8 @@ #include "Engine.h" #include "src/Core/Physics/PhysicsManager.h" #include + +#include "../Core/Input.h" #include "src/Core/FileSystem.h" #include "src/Scripting/ScriptingEngine.h" @@ -47,9 +49,11 @@ void Engine::Tick() // Play mode update vs editor update. if (Engine::IsPlayMode) - GetCurrentScene()->Update(timestep); + CurrentWindow->Update(timestep); else GetCurrentScene()->EditorUpdate(timestep); + + Input::Update(); } void Engine::EnterPlayMode() diff --git a/Nuake/src/Core/FileSystem.cpp b/Nuake/src/Core/FileSystem.cpp index 3bdce5b4..eadf4f07 100644 --- a/Nuake/src/Core/FileSystem.cpp +++ b/Nuake/src/Core/FileSystem.cpp @@ -124,7 +124,7 @@ std::string FileSystem::ReadFile(const std::string& path, bool absolute) // Use a while loop together with the getline() function to read the file line by line while (getline(MyReadFile, fileContent)) { - allFile.append(fileContent); + allFile.append(fileContent + "\n"); } // Close the file diff --git a/Nuake/src/Core/Input.cpp b/Nuake/src/Core/Input.cpp index 7655a32a..043920e2 100644 --- a/Nuake/src/Core/Input.cpp +++ b/Nuake/src/Core/Input.cpp @@ -3,39 +3,70 @@ #include Input* Input::s_Instance; -// TODO: Key press, and release system. +std::map Input::m_Keys = std::map(); +bool Input::m_MouseButtons[5] = { false, false, false, false, false }; +#pragma region Keys +// Only true if the key is currently being pressed +bool Input::IsKeyDown(int keycode) +{ + auto window = Window::Get()->GetHandle(); + int state = glfwGetKey(window, keycode); + bool result = state == GLFW_PRESS; + + m_Keys[keycode] = state; + + return result; +} + +// Only true if the key is pressed for the first frame. no repeat. bool Input::IsKeyPressed(int keycode) { auto window = Window::Get()->GetHandle(); - int state = glfwGetKey(window, keycode); + bool result = state == GLFW_PRESS; - return state == GLFW_PRESS || state == GLFW_REPEAT; + // First time pressed? + if (m_Keys.find(keycode) == m_Keys.end() || m_Keys[keycode] == false) + { + if (result) + m_Keys[keycode] = true; + + return result; + } + + return false; } -bool Input::IsKeyPress(int keycode) -{ - auto window = Window::Get()->GetHandle(); - int state = glfwGetKey(window, keycode); - return state == GLFW_PRESS; -} bool Input::IsKeyReleased(int keycode) { auto window = Window::Get()->GetHandle(); int state = glfwGetKey(window, keycode); - return state == GLFW_RELEASE; -} + bool result = state == GLFW_RELEASE; + // First time pressed? + if (m_Keys.find(keycode) == m_Keys.end()) + return result; + + if (result && m_Keys[keycode] == true) + { + return true; + } + + + return false; +} +#pragma endregion + +#pragma region Mouse + +// Visibility void Input::HideMouse() { auto window = Window::Get()->GetHandle(); glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); } - - -// TODO: Rename bool Input::IsMouseHidden() { auto window = Window::Get()->GetHandle(); return glfwGetInputMode(window, GLFW_CURSOR) == GLFW_CURSOR_DISABLED; @@ -46,7 +77,9 @@ void Input::ShowMouse() { glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); } -bool Input::IsMouseButtonPressed(int button) + +// Action +bool Input::IsMouseButtonDown(int button) { auto window = Window::Get()->GetHandle(); auto state = glfwGetMouseButton(window, button); @@ -54,6 +87,29 @@ bool Input::IsMouseButtonPressed(int button) return state == GLFW_PRESS; } +bool Input::IsMouseButtonPressed(int button) +{ + auto window = Window::Get()->GetHandle(); + auto state = glfwGetMouseButton(window, button); + + if (m_MouseButtons[button] == false && state == GLFW_PRESS) + { + m_MouseButtons[button] = true; + return true; + } + + return false; +} + +bool Input::IsMouseButtonReleased(int button) +{ + auto window = Window::Get()->GetHandle(); + auto state = glfwGetMouseButton(window, button); + + return state == GLFW_RELEASE && m_MouseButtons[button] == true; +} + +// Position float Input::GetMouseX() { auto window = Window::Get()->GetHandle(); @@ -74,15 +130,16 @@ float Input::GetMouseY() return (float)ypos; } -std::pair Input::GetMousePosition() +Vector2 Input::GetMousePosition() { auto window = Window::Get()->GetHandle(); double xpos, ypos; glfwGetCursorPos(window, &xpos, &ypos); - return { (float)xpos, (float)ypos }; + return Vector2(xpos, ypos); } +#pragma endregion bool Input::Init() { @@ -91,4 +148,20 @@ bool Input::Init() return false; } +void Input::Update() +{ + // Reset all input to false. + for (auto& k : m_Keys) + { + if(!IsKeyDown(k.first)) + k.second = false; + } + + for (int i = 0; i < 5; i++) + { + if(!IsMouseButtonDown(i)) + m_MouseButtons[i] = false; + } +} + diff --git a/Nuake/src/Core/Input.h b/Nuake/src/Core/Input.h index 382b6d86..d3dd7c50 100644 --- a/Nuake/src/Core/Input.h +++ b/Nuake/src/Core/Input.h @@ -1,25 +1,31 @@ #pragma once #include - - +#include "../Core/Maths.h" +#include class Input { +private: + static bool m_MouseButtons[5]; + static std::map m_Keys; public: static bool IsKeyPressed(int keycode); - static bool IsKeyPress(int keycode); + static bool IsKeyDown(int keycode); static bool IsKeyReleased(int keycode); - static bool IsMouseButtonPressed(int button); - + static void HideMouse(); static void ShowMouse(); static bool IsMouseHidden(); + static bool IsMouseButtonPressed(int button); + static bool IsMouseButtonDown(int button); + static bool IsMouseButtonReleased(int button); static float GetMouseX(); static float GetMouseY(); - static std::pair GetMousePosition(); + static Vector2 GetMousePosition(); static bool Init(); + static void Update(); Input* Get() { return s_Instance; } diff --git a/Nuake/src/Rendering/Renderer2D.cpp b/Nuake/src/Rendering/Renderer2D.cpp index d9018ddd..61eaae8a 100644 --- a/Nuake/src/Rendering/Renderer2D.cpp +++ b/Nuake/src/Rendering/Renderer2D.cpp @@ -76,25 +76,33 @@ void Renderer2D::DrawString(const std::string& str, TextStyle style, Matrix4 mod style.font->FontAtlas->Bind(5); TextShader->SetUniform1i("msdf", 5); + + float lineHeight = 0.0f; for (char const& c : str) { Char& letter = style.font->GetChar((int)c); - Matrix4 mat = Matrix4(1.0f); - mat = glm::translate(model, Vector3(advance, (letter.PlaneBounds.top * style.fontSize), 0.f)); + if (letter.PlaneBounds.top - letter.PlaneBounds.bottom > lineHeight) + lineHeight = letter.PlaneBounds.top - letter.PlaneBounds.bottom ; + } + + lineHeight *= style.fontSize; + + for (char const& c : str) { + Char& letter = style.font->GetChar((int)c); + Matrix4 mat = glm::translate(model, Vector3(advance, -(letter.PlaneBounds.top) + (lineHeight), 0.f)); float scaleX = letter.PlaneBounds.right - letter.PlaneBounds.left; float scaleY = letter.PlaneBounds.top - letter.PlaneBounds.bottom; - mat = glm::scale(mat, Vector3(scaleX * style.fontSize, scaleY * style.fontSize, 0.f)); - + mat = glm::scale(mat, Vector3(scaleX, scaleY, 0.f)); TextShader->SetUniform2f("texPos", letter.AtlasBounds.Pos.x, letter.AtlasBounds.Pos.y); TextShader->SetUniform2f("texScale", letter.AtlasBounds.Size.x, letter.AtlasBounds.Size.y); TextShader->SetUniformMat4f("model", mat); //TextShader->SetUniform4f("bgColor", 0, 0, 1, 1); - TextShader->SetUniform4f("bgColor", 0.f, 0.f, 0.f, 0.f); + TextShader->SetUniform4f("bgColor", 1.f, 0.f, 0.f, 0.f); TextShader->SetUniform4f("fgColor", 1.f, 1.f, 1.f, 1.f); //TextShader->SetUniform1f("pxRange", 32); glBindVertexArray(VAO); glDrawArrays(GL_TRIANGLES, 0, 6); - advance += letter.Advance * style.fontSize; + advance += letter.Advance; } } diff --git a/Nuake/src/Scene/EditorCamera.cpp b/Nuake/src/Scene/EditorCamera.cpp index 9969bd0c..a13d2062 100644 --- a/Nuake/src/Scene/EditorCamera.cpp +++ b/Nuake/src/Scene/EditorCamera.cpp @@ -22,9 +22,9 @@ void EditorCamera::Update(Timestep ts) Input::HideMouse(); // Should probably not have speed binding in here. - if (Input::IsKeyPress(GLFW_KEY_UP)) + if (Input::IsKeyDown(GLFW_KEY_UP)) Speed += 0.1f; - else if (Input::IsKeyPress(GLFW_KEY_DOWN)) + else if (Input::IsKeyDown(GLFW_KEY_DOWN)) Speed -= 0.1f; if (Speed < 0) diff --git a/Nuake/src/Scene/Scene.cpp b/Nuake/src/Scene/Scene.cpp index 1f570469..d1f3a962 100644 --- a/Nuake/src/Scene/Scene.cpp +++ b/Nuake/src/Scene/Scene.cpp @@ -145,7 +145,6 @@ void Scene::Update(Timestep ts) } - } @@ -155,14 +154,13 @@ void Scene::EditorUpdate(Timestep ts) for (auto i : m_Interfaces) { - //i->Calculate(1280,720); + i->Update(ts); } } void Scene::DrawShadows() { - auto modelView = m_Registry.view(); auto quakeView = m_Registry.view(); auto view = m_Registry.view(); @@ -363,14 +361,10 @@ void Scene::EditorDraw() glDisable(GL_DEPTH_TEST); Ref env = GetEnvironment(); - //if (env->ProceduralSkybox) - //{ - // env->ProceduralSkybox->Draw(m_EditorCamera); - //} - - - - + if (env->ProceduralSkybox) + { + env->ProceduralSkybox->Draw(m_EditorCamera); + } Renderer::m_Shader->Bind(); env->Push(); @@ -406,7 +400,7 @@ void Scene::EditorDraw() Renderer::m_Shader->Bind(); Renderer::m_Shader->SetUniform1i("u_ShowNormal", 0); - /*if (m_EditorCamera) + if (m_EditorCamera) { Renderer::m_Shader->SetUniform1f("u_Exposure", m_EditorCamera->Exposure); @@ -518,9 +512,7 @@ void Scene::EditorDraw() t.Scale = (box.Radius * 2.f) * transform.Scale; Renderer::DrawSphere(t, glm::vec4(0.0f, 0.0f, 0.9f, 0.2f)); } - }*/ - - + } } std::vector Scene::GetAllEntities() { diff --git a/Nuake/src/Scripting/Modules/EngineModule.h b/Nuake/src/Scripting/Modules/EngineModule.h new file mode 100644 index 00000000..ae5664cd --- /dev/null +++ b/Nuake/src/Scripting/Modules/EngineModule.h @@ -0,0 +1,38 @@ +#pragma once +#include "wren.h" +#include +#include +#include "ScriptModule.h" +#include +#include + +namespace ScriptAPI +{ + class EngineModule : public ScriptModule + { + std::string ModuleName = "Engine"; + std::string WrenAPI = "class Engine { \n" + "foreign static Log(msg) \n" + "}" + ""; + + std::string GetModuleName() override + { + return "Engine"; + } + + void RegisterModule(WrenVM* vm) override + { + RegisterMethod("Log(_)", (void*)Log); + WrenInterpretResult result = wrenInterpret(vm, "main", WrenAPI.c_str()); + } + + static void Log(WrenVM* vm) + { + std::string msg = wrenGetSlotString(vm, 1); + Logger::Log(msg); + } + }; + + +} \ No newline at end of file diff --git a/Nuake/src/Scripting/Modules/ScriptModule.h b/Nuake/src/Scripting/Modules/ScriptModule.h new file mode 100644 index 00000000..e8a380d6 --- /dev/null +++ b/Nuake/src/Scripting/Modules/ScriptModule.h @@ -0,0 +1,27 @@ +#pragma once +#include +#include +struct WrenVM; +class ScriptModule +{ +private: + std::map Methods = std::map(); + + std::string WrenAPI; +public: + std::string ModuleName; + virtual void RegisterModule(WrenVM*) = 0; + virtual std::string GetModuleName() = 0; + + void RegisterMethod(const std::string& signature, void* ptr) + { + Methods[signature] = ptr; + } + + void* GetMethodPointer(const std::string& signature) + { + return Methods[signature]; + } + + +}; \ No newline at end of file diff --git a/Nuake/src/Scripting/ScriptLoader.cpp b/Nuake/src/Scripting/ScriptLoader.cpp index d14b0f62..e8ef5a64 100644 --- a/Nuake/src/Scripting/ScriptLoader.cpp +++ b/Nuake/src/Scripting/ScriptLoader.cpp @@ -9,17 +9,7 @@ bool ScriptLoader::RegisterScript(ScriptableEntity* script) bool ScriptLoader::LoadModule(const std::string& path) { - HMODULE loadedLib = LoadLibraryA(path.c_str()); - if (!loadedLib) { - printf("Failed to load library\n"); - return false; - } - - printf("Library loaded\n"); - - ScriptModuleRegister* functionPointer = (ScriptModuleRegister*)GetProcAddress(loadedLib, "Register"); - - functionPointer(); + return true; diff --git a/Nuake/src/Scripting/ScriptLoader.h b/Nuake/src/Scripting/ScriptLoader.h index a226feb1..cbabad8f 100644 --- a/Nuake/src/Scripting/ScriptLoader.h +++ b/Nuake/src/Scripting/ScriptLoader.h @@ -1,6 +1,5 @@ #pragma once -#include "ScriptModule.h" #include #include #include "../Scene/Entities/ScriptableEntity.h" diff --git a/Nuake/src/Scripting/ScriptModule.h b/Nuake/src/Scripting/ScriptModule.h deleted file mode 100644 index 642b0688..00000000 --- a/Nuake/src/Scripting/ScriptModule.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -class ScriptModule -{ -public: - virtual void Register(); -}; diff --git a/Nuake/src/Scripting/ScriptingAPI/HelloWorld.cpp b/Nuake/src/Scripting/ScriptingAPI/HelloWorld.cpp deleted file mode 100644 index 192d5517..00000000 --- a/Nuake/src/Scripting/ScriptingAPI/HelloWorld.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "HelloWorld.h" - - - -int ScriptingAPI::HelloWorld(lua_State* L) -{ - - - return 1; // Successful -} diff --git a/Nuake/src/Scripting/ScriptingAPI/HelloWorld.h b/Nuake/src/Scripting/ScriptingAPI/HelloWorld.h deleted file mode 100644 index c550d2ff..00000000 --- a/Nuake/src/Scripting/ScriptingAPI/HelloWorld.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once -struct lua_State; -namespace ScriptingAPI -{ - int HelloWorld(lua_State* L); -} \ No newline at end of file diff --git a/Nuake/src/Scripting/ScriptingEngine.cpp b/Nuake/src/Scripting/ScriptingEngine.cpp index 1165dd51..c88a0535 100644 --- a/Nuake/src/Scripting/ScriptingEngine.cpp +++ b/Nuake/src/Scripting/ScriptingEngine.cpp @@ -1,77 +1,112 @@ #include "ScriptingEngine.h" -#include -#include -#include +#include "WrenScript.h" +#include "../Core/FileSystem.h" +#include +#include +WrenVM* ScriptingEngine::m_WrenVM; -inline void my_panic(sol::optional maybe_msg) { - std::cerr << "Lua script error detected!" << std::endl; - if (maybe_msg) { - const std::string& msg = maybe_msg.value(); - std::cerr << "\terror message: " << msg << std::endl; - } + +std::map> ScriptingEngine::m_Scripts; + +std::map> ScriptingEngine::Modules; + +void errorFn(WrenVM* vm, WrenErrorType errorType, + const char* module, const int line, + const char* msg) +{ + switch (errorType) + { + case WREN_ERROR_COMPILE: + { + printf("[%s line %d] [Error] %s\n", module, line, msg); + } break; + case WREN_ERROR_STACK_TRACE: + { + printf("[%s line %d] in %s\n", module, line, msg); + } break; + case WREN_ERROR_RUNTIME: + { + printf("[Runtime Error] %s\n", msg); + } break; + } } -sol::state ScriptingEngine::lua = sol::state(sol::c_call); + +void writeFn(WrenVM* vm, const char* text) { + printf("%s", text); +} + + +WrenLoadModuleResult myLoadModule(WrenVM* vm, const char* name) { + WrenLoadModuleResult result = { 0 }; + std::string str = FileSystem::ReadFile("resources/" + std::string(name) + ".wren", true); + char* c = strcpy(new char[str.length() + 1], str.c_str()); + result.source = c; + return result; +} + +Ref ScriptingEngine::RegisterScript(const std::string& path, const std::string& mod) +{ + std::string query = "import \"" + path + "\" for " + mod; + wrenInterpret(m_WrenVM, "main", query.c_str()); + return CreateRef(path, mod); +} + +void ScriptingEngine::RegisterModule(Ref scriptModule) +{ + Modules[scriptModule->GetModuleName()] = scriptModule; + scriptModule->RegisterModule(m_WrenVM); +} + + +void ScriptingEngine::InitScript(Ref script) +{ + script->CallInit(); +} + +void ScriptingEngine::UpdateScript(Ref script, Timestep timestep) +{ + script->CallUpdate(timestep); +} + +void ScriptingEngine::ExitScript(Ref script) +{ + script->CallExit(); +} void ScriptingEngine::Init() { - lua.open_libraries(sol::lib::base, sol::lib::package); + m_Scripts = std::map>(); + WrenConfiguration config; + wrenInitConfiguration(&config); + config.loadModuleFn = &myLoadModule; + config.errorFn = &errorFn; + config.writeFn = &writeFn; + config.bindForeignMethodFn = &bindForeignMethod; + m_WrenVM = wrenNewVM(&config); + + Ref engineModule = CreateRef(); + RegisterModule(engineModule); } -void ScriptingEngine::RunFile(const std::string& path) -{ - -} - -void ScriptingEngine::RunCode(const std::string& code) -{ - lua.script(code); - bool isfullscreen = lua["config"]["fullscreen"]; - sol::table config = lua["config"]; - float x = lua["config"]["resolution"]["x"]; - return; - -} - -void ScriptingEngine::UpdateScript(const std::string& path) -{ - std::string fileContent; - std::string allFile = ""; - // Read from the text file - std::ifstream MyReadFile("resources/Scripts/test.lua"); - - // Use a while loop together with the getline() function to read the file line by line - while (getline(MyReadFile, fileContent)) { - allFile.append(fileContent); - } - - // Close the file - MyReadFile.close(); - - try { - auto bad_code_result = lua.script(allFile); - // it did not work - if (!bad_code_result.valid()) - { - printf(std::to_string((int)(bad_code_result.status())).c_str()); - return; - } - - int result = lua["update"](); - } - catch (int e) - { - - } - - - - - return; -} void ScriptingEngine::Close() { + wrenFreeVM(m_WrenVM); +} -} \ No newline at end of file +WrenForeignMethodFn ScriptingEngine::bindForeignMethod(WrenVM* vm, const char* module, const char* className, bool isStatic, const char* signature) +{ + if (Modules.find(className) != Modules.end()) + { + Ref mod = Modules[className]; + void* ptr = mod->GetMethodPointer(signature); + return (WrenForeignMethodFn)ptr; + } +} + +WrenVM* ScriptingEngine::GetWrenVM() +{ + return m_WrenVM; +} diff --git a/Nuake/src/Scripting/ScriptingEngine.h b/Nuake/src/Scripting/ScriptingEngine.h index 515f18f3..5e4414ad 100644 --- a/Nuake/src/Scripting/ScriptingEngine.h +++ b/Nuake/src/Scripting/ScriptingEngine.h @@ -1,26 +1,36 @@ #pragma once #include -#include "sol/forward.hpp" #include #include +#include "src/Core/Core.h" +#include "src/Vendors/wren/src/include/wren.hpp" +#include +class WrenScript; +class ScriptModule; class ScriptingEngine { private: - static sol::state lua; - static std::map m_Scripts; - + static WrenVM* m_WrenVM; + static std::map> m_Scripts; + static std::map> Modules; public: + static Ref RegisterScript(const std::string& path, const std::string& mod); + static void RegisterModule(Ref module); + static void RegisterMethod(void* method, const std::string& module, const std::string& signature); + static void InitScript(Ref script); + static void UpdateScript(Ref script, Timestep timestep); + static void ExitScript(Ref script); static void Init(); - - static void RegisterScript(std::string path); - - static void InitScript(std::string path); - static void UpdateScript(std::string path); - static void ExitScript(std::string path); - - static void RunFile(const std::string& path); - static void UpdateScript(const std::string& path); static void RunCode(const std::string& code); static void Close(); + + static WrenForeignMethodFn bindForeignMethod( + WrenVM* vm, + const char* module, + const char* className, + bool isStatic, + const char* signature); + + static WrenVM* GetWrenVM(); }; \ No newline at end of file diff --git a/Nuake/src/Scripting/WrenScript.cpp b/Nuake/src/Scripting/WrenScript.cpp new file mode 100644 index 00000000..27200976 --- /dev/null +++ b/Nuake/src/Scripting/WrenScript.cpp @@ -0,0 +1,62 @@ +#include "WrenScript.h" +#include "../Core/FileSystem.h" +#include +WrenScript::WrenScript(const std::string& path, const std::string& mod) +{ + + WrenVM* vm = ScriptingEngine::GetWrenVM(); + + + wrenEnsureSlots(vm, 1); + wrenGetVariable(vm, "main", mod.c_str(), 0); + + this->m_Instance = wrenGetSlotHandle(vm, 0); + + this->m_OnInitHandle = wrenMakeCallHandle(vm, "init()"); + this->m_OnUpdateHandle = wrenMakeCallHandle(vm, "update(_)"); + this->m_OnExitHandle = wrenMakeCallHandle(vm, "exit()"); +} + +void WrenScript::CallInit() +{ + WrenVM* vm = ScriptingEngine::GetWrenVM(); + wrenSetSlotHandle(vm, 0, this->m_Instance); + WrenInterpretResult result = wrenCall(vm, this->m_OnInitHandle); +} + +void WrenScript::CallUpdate(float timestep) +{ + + WrenVM* vm = ScriptingEngine::GetWrenVM(); + wrenEnsureSlots(vm, 2); + wrenSetSlotHandle(vm, 0, this->m_Instance); + wrenSetSlotDouble(vm, 1, timestep); + WrenInterpretResult result = wrenCall(vm, this->m_OnUpdateHandle); +} + +void WrenScript::CallExit() +{ + WrenVM* vm = ScriptingEngine::GetWrenVM(); + wrenSetSlotHandle(vm, 0, this->m_Instance); + WrenInterpretResult result = wrenCall(vm, this->m_OnExitHandle); +} + +void WrenScript::RegisterMethod(const std::string& signature) +{ + WrenVM* vm = ScriptingEngine::GetWrenVM(); + WrenHandle* handle = wrenMakeCallHandle(vm, signature.c_str()); + methods.emplace(signature, handle); +} + +void WrenScript::CallMethod(const std::string& signature) +{ + WrenVM* vm = ScriptingEngine::GetWrenVM(); + + + // Not found. maybe try to register it? + if (methods.find(signature) == methods.end()) + return; + wrenSetSlotHandle(vm, 0, this->m_Instance); + WrenHandle* handle = methods[signature]; + WrenInterpretResult result = wrenCall(vm, handle); +} diff --git a/Nuake/src/Scripting/WrenScript.h b/Nuake/src/Scripting/WrenScript.h new file mode 100644 index 00000000..4e5a5987 --- /dev/null +++ b/Nuake/src/Scripting/WrenScript.h @@ -0,0 +1,24 @@ +#pragma once +#include "ScriptingEngine.h" +#include +#include + +class WrenHandle; +class WrenScript +{ +public: + std::map methods; + WrenHandle* m_Instance; + WrenHandle* m_OnInitHandle; + WrenHandle* m_OnUpdateHandle; + WrenHandle* m_OnExitHandle; + + WrenScript(const std::string& path, const std::string& mod); + + void CallInit(); + void CallUpdate(float timestep); + void CallExit(); + + void RegisterMethod(const std::string& signature); + void CallMethod(const std::string& signature); +}; \ No newline at end of file diff --git a/Nuake/src/UI/InterfaceParser.cpp b/Nuake/src/UI/InterfaceParser.cpp index 545bad35..35fa8105 100644 --- a/Nuake/src/UI/InterfaceParser.cpp +++ b/Nuake/src/UI/InterfaceParser.cpp @@ -2,28 +2,276 @@ Ref InterfaceParser::Root = CreateRef(); -void InterfaceParser::Iterate(const pugi::xml_node& xml_node, Ref node) +void InterfaceParser::Iterate(const pugi::xml_node& xml_node, Ref node, int depth) { + int currentDepth = depth + 1; for (auto& e : xml_node.children()) { std::string type = e.name(); + Ref newNode; + if (type == "Canvas") - { - Ref canvas = CreateCanvas(e); - node->Childrens.push_back(canvas); - Iterate(e, canvas); - } + newNode = CreateCanvas(e); else if (type == "Rect") - { - Ref newNode = CreateNode(e); - node->Childrens.push_back(newNode); - Iterate(e, newNode); - } + newNode = CreateNode(e); else if (type == "p") + newNode = CreateTextNode(e); + else + continue; + newNode->Depth = currentDepth; + node->Childrens.push_back(newNode); + Iterate(e, newNode, currentDepth); + } +} + +Ref InterfaceParser::Parse(const std::string path) +{ + pugi::xml_document doc; + pugi::xml_parse_result result = doc.load_file(path.c_str()); + std::string name = doc.first_child().name(); + if (name != "Canvas") + { + Logger::Log("InterfaceParser error: First child should be a canvas - " + path); + return nullptr; + } + + Root = CreateCanvas(doc.first_child()); + Root->Depth = 0; + Iterate(doc.first_child(), Root, 0); + return Root; +} + +Ref InterfaceParser::CreateTextNode(const pugi::xml_node& xml_node) +{ + Ref node = CreateRef(); + node->content = xml_node.text().as_string(); + node->Type = NodeType::Text; + TextStyle style{ + FontManager::GetFont("resources/Fonts/RobotoMono-Regular.ttf"), + 2.0, + Color(255, 255, 255, 255) + }; + + node->SetTextStyle(style); + for (auto& a : xml_node.attributes()) + { + std::string name = a.name(); + if (name == "groups") { - Ref textnode = CreateTextNode(e); - node->Childrens.push_back(textnode); - Iterate(e, textnode); + for (auto& g : split(a.value(), ' ')) + { + node->AddGroup(g); + } + } + if (name == "height") + node->Height = GetUnit(a.value()); + if (name == "width") + node->Width = GetUnit(a.value()); + if (name == "margin") + node->Margin = GetVec4Unit(a.value()); + if (name == "padding") + node->Padding = GetVec4Unit(a.value()); + if (name == "border") + node->Border = GetVec4Unit(a.value()); + if (name == "position") + node->Position = GetVec4Unit(a.value()); + if (name == "color") + node->BackgroundColor = GetColor(a.value()); + } + return node; +} + +Ref InterfaceParser::CreateNode(const pugi::xml_node& xml_node) +{ + Ref node = CreateRef(); + + node->Root = Root; + for (auto& a : xml_node.attributes()) + { + std::string name = a.name(); + if (name == "groups") + { + for (auto& g : split(a.value(), ' ')) + { + node->AddGroup(g); + } + } + if (name == "height") + node->Height = GetUnit(a.value()); + if (name == "width") + node->Width = GetUnit(a.value()); + if (name == "margin") + node->Margin = GetVec4Unit(a.value()); + if (name == "padding") + node->Padding = GetVec4Unit(a.value()); + if (name == "border") + node->Border = GetVec4Unit(a.value()); + if (name == "position") + node->Position = GetVec4Unit(a.value()); + if (name == "color") + node->BackgroundColor = GetColor(a.value()); + if (name == "onclick") + { + std::string signature = a.value(); + Root->Script->RegisterMethod(a.value()); + node->OnClickSignature = a.value(); } } + + return node; +} + +Layout::LayoutUnit InterfaceParser::GetUnit(const std::string& value) +{ + std::regex only_number("[0-9]+"); + std::regex not_number("[^0-9]+"); + + // is percentage + std::smatch match_value; + if (std::regex_search(value.begin(), value.end(), match_value, only_number)) + { + std::smatch match_type; + if (std::regex_search(value.begin(), value.end(), match_type, not_number)) + { + float value = std::stof(match_value[0]); + + if (match_type[0] == "%") + { + return Layout::LayoutUnit{ + value, + Layout::Unit::PERCENT + }; + } + else if (match_type[0] == "px") + { + return Layout::LayoutUnit{ + value, + Layout::Unit::PIXEL + }; + } + } + } +} + +std::vector InterfaceParser::split(std::string const& str, const char delim) +{ + std::vector result; + size_t start; + size_t end = 0; + + while ((start = str.find_first_not_of(delim, end)) != std::string::npos) + { + end = str.find(delim, start); + result.push_back(str.substr(start, end - start)); + } + + return result; +} + +Layout::LayoutVec4 InterfaceParser::GetVec4Unit(const std::string& value) +{ + std::regex regex("[0-9]+[^ ]+"); + std::smatch match_value; + Layout::LayoutVec4 result; + + std::vector splits = split(value, ' '); + int idx = 0; + for (auto& s : splits) + { + if (std::regex_search(value.begin(), value.end(), match_value, regex)) + { + if (idx == 0) + { + result.Left = GetUnit(s); + } + else if (idx == 1) + { + result.Right = GetUnit(s); + } + else if (idx == 2) + { + result.Top = GetUnit(s); + } + else + { + result.Bottom = GetUnit(s); + } + idx++; + } + } + return result; +} + +Color InterfaceParser::GetColor(const std::string& value) +{ + std::regex regex("[0-9]+[^ ]+"); + std::smatch match_value; + Color result; + + std::vector splits = split(value, ' '); + int idx = 0; + for (auto& s : splits) + { + if (std::regex_search(value.begin(), value.end(), match_value, regex)) + { + if (idx == 0) + { + result.r = std::stof(s); + } + else if (idx == 1) + { + result.g = std::stof(s); + } + else if (idx == 2) + { + result.b = std::stof(s); + } + else + { + result.a = std::stof(s); + } + idx++; + } + } + return result; +} + +Ref InterfaceParser::CreateCanvas(const pugi::xml_node& xml_node) +{ + Ref node = CreateRef(); + node->Root = Root; + for (auto& a : xml_node.attributes()) + { + std::string name = a.name(); + if (name == "groups") + { + for (auto& g : split(a.value(), ' ')) + { + node->AddGroup(g); + } + } + if (name == "height") + node->Height = GetUnit(a.value()); + if (name == "width") + node->Width = GetUnit(a.value()); + if (name == "margin") + node->Margin = GetVec4Unit(a.value()); + if (name == "padding") + node->Padding = GetVec4Unit(a.value()); + if (name == "border") + node->Border = GetVec4Unit(a.value()); + if (name == "position") + node->Position = GetVec4Unit(a.value()); + if (name == "color") + node->BackgroundColor = GetColor(a.value()); + if (name == "script") + { + auto s = split(a.value(), ' '); + std::string path = s[0]; + std::string module = s[1]; + node->Script = ScriptingEngine::RegisterScript(path, module); + } + } + + return node; } \ No newline at end of file diff --git a/Nuake/src/UI/InterfaceParser.h b/Nuake/src/UI/InterfaceParser.h index 2a0c2e71..d63c5328 100644 --- a/Nuake/src/UI/InterfaceParser.h +++ b/Nuake/src/UI/InterfaceParser.h @@ -8,229 +8,23 @@ #include #include "Nodes/TextNode.h" #include "Font/FontManager.h" +#include "../Scripting/ScriptingEngine.h" class InterfaceParser { - static Ref Root; - private: - + static Ref Root; public: - static Ref Parse(const std::string path) - { - pugi::xml_document doc; - pugi::xml_parse_result result = doc.load_file(path.c_str()); + static Ref Parse(const std::string path); - std::string name = doc.first_child().name(); - if (name != "Canvas") - { - Logger::Log("InterfaceParser error: First child should be a canvas - " + path); - return nullptr; - } - - Root = CreateCanvas(doc.first_child()); + static void Iterate(const pugi::xml_node& xml_node, Ref node, int depth); - Iterate(doc.first_child(), Root); - return Root; - } + static Ref CreateNode(const pugi::xml_node& xml_node); + static Ref CreateCanvas(const pugi::xml_node& xml_node); + static Ref CreateTextNode(const pugi::xml_node& xml_node); + static std::vector split(std::string const& str, const char delim); - - static void Iterate(const pugi::xml_node& xml_node, Ref node); - - static Ref CreateTextNode(const pugi::xml_node& xml_node) - { - Ref node = CreateRef(); - node->content = xml_node.text().as_string(); - - TextStyle style{ - FontManager::GetFont("resources/Fonts/OpenSans-Regular.ttf"), - 2.0, - Color(255, 255, 255, 255) - }; - - node->SetTextStyle(style); - return node; - } - - static Ref CreateNode(const pugi::xml_node& xml_node) - { - Ref node = CreateRef(); - for (auto& a : xml_node.attributes()) - { - std::string name = a.name(); - if (name == "groups") - { - for (auto& g : split(a.value(), ' ')) - { - node->AddGroup(g); - } - } - if (name == "height") - node->Height = GetUnit(a.value()); - if (name == "width") - node->Width = GetUnit(a.value()); - if (name == "margin") - node->Margin = GetVec4Unit(a.value()); - if (name == "padding") - node->Padding = GetVec4Unit(a.value()); - if (name == "border") - node->Border = GetVec4Unit(a.value()); - if (name == "position") - node->Position = GetVec4Unit(a.value()); - if (name == "color") - node->BackgroundColor = GetColor(a.value()); - } - - return node; - } - - static Layout::LayoutUnit GetUnit(const std::string& value) - { - std::regex only_number("[0-9]+"); - std::regex not_number("[^0-9]+"); - - // is percentage - std::smatch match_value; - if (std::regex_search(value.begin(), value.end(), match_value, only_number)) - { - std::smatch match_type; - if (std::regex_search(value.begin(), value.end(), match_type, not_number)) - { - float value = std::stof(match_value[0]); - - if (match_type[0] == "%") - { - return Layout::LayoutUnit{ - value, - Layout::Unit::PERCENT - }; - } - else if (match_type[0] == "px") - { - return Layout::LayoutUnit{ - value, - Layout::Unit::PIXEL - }; - } - } - } - } - - static std::vector split(std::string const& str, const char delim) - { - std::vector result; - size_t start; - size_t end = 0; - - while ((start = str.find_first_not_of(delim, end)) != std::string::npos) - { - end = str.find(delim, start); - result.push_back(str.substr(start, end - start)); - } - - return result; - } - - static Layout::LayoutVec4 GetVec4Unit(const std::string& value) - { - std::regex regex("[0-9]+[^ ]+"); - std::smatch match_value; - Layout::LayoutVec4 result; - - std::vector splits = split(value, ' '); - int idx = 0; - for (auto& s : splits) - { - if (std::regex_search(value.begin(), value.end(), match_value, regex)) - { - if (idx == 0) - { - result.Left = GetUnit(s); - } - else if (idx == 1) - { - result.Right = GetUnit(s); - } - else if (idx == 2) - { - result.Top = GetUnit(s); - } - else - { - result.Bottom = GetUnit(s); - } - idx++; - } - } - return result; - } - - static Color GetColor(const std::string& value) - { - std::regex regex("[0-9]+[^ ]+"); - std::smatch match_value; - Color result; - - std::vector splits = split(value, ' '); - int idx = 0; - for (auto& s : splits) - { - if (std::regex_search(value.begin(), value.end(), match_value, regex)) - { - if (idx == 0) - { - result.r = std::stof(s); - } - else if (idx == 1) - { - result.g = std::stof(s); - } - else if (idx == 2) - { - result.b = std::stof(s); - } - else - { - result.a = std::stof(s); - } - idx++; - } - } - return result; - } - - - static Ref CreateCanvas(const pugi::xml_node& xml_node) - { - Ref node = CreateRef(); - for (auto& a : xml_node.attributes()) - { - std::string name = a.name(); - if (name == "groups") - { - for (auto& g : split(a.value(), ' ')) - { - node->AddGroup(g); - } - } - if (name == "height") - node->Height = GetUnit(a.value()); - if (name == "width") - node->Width = GetUnit(a.value()); - if (name == "margin") - node->Margin = GetVec4Unit(a.value()); - if (name == "padding") - node->Padding = GetVec4Unit(a.value()); - if (name == "border") - node->Border = GetVec4Unit(a.value()); - if (name == "position") - node->Position = GetVec4Unit(a.value()); - if (name == "color") - node->BackgroundColor = GetColor(a.value()); - - } - - return node; - - } + static Layout::LayoutUnit GetUnit(const std::string& value); + static Layout::LayoutVec4 GetVec4Unit(const std::string& value); + static Color GetColor(const std::string& value); }; \ No newline at end of file diff --git a/Nuake/src/UI/Nodes/Canvas.h b/Nuake/src/UI/Nodes/Canvas.h index 9b83700d..ecf43074 100644 --- a/Nuake/src/UI/Nodes/Canvas.h +++ b/Nuake/src/UI/Nodes/Canvas.h @@ -1,5 +1,8 @@ #pragma once #include "Node.h" +#include "../Core/Core.h" +#include "../Scripting/WrenScript.h" +#include // Base container for UI. class Canvas : public Node { @@ -7,7 +10,6 @@ private: // Script here public: + Ref Script; Canvas(); - - }; \ No newline at end of file diff --git a/Nuake/src/UI/Nodes/Node.cpp b/Nuake/src/UI/Nodes/Node.cpp index 202db3c2..daf4bfd0 100644 --- a/Nuake/src/UI/Nodes/Node.cpp +++ b/Nuake/src/UI/Nodes/Node.cpp @@ -1,5 +1,24 @@ #include "Node.h" +Node::Node() +{ + Childrens = std::vector>(); + Groups = std::vector(); + PositionType = Layout::PositionType::RELATIVE; + Position = Layout::LayoutVec4(); + Height = MaxHeight = MinHeight = Layout::LayoutUnit(); + Margin = Padding = Border = Layout::LayoutVec4(); + Direction = Layout::LayoutDirection::LTR; + FlexDirection = Layout::FlexDirection::ROW; + FlexWrap = Layout::FlexWrap::WRAP; + FlexGrow = 0.f; + FlexShrink = 1.f; + FlexBasis = 10.f; + AspectRatio = 1.f; + AlignItems = Layout::AlignItems::AUTO; + AlignSelf = Layout::AlignItems::AUTO; +} + void Node::ApplyStyle(Ref stylegroup) { for (auto& s : stylegroup->GetProps()) @@ -90,21 +109,33 @@ void Node::ApplyStyle(Ref stylegroup) } } -Node::Node() +bool Node::IsPositionInside(Vector2 position) { - Childrens = std::vector>(); - Groups = std::vector(); - PositionType = Layout::PositionType::RELATIVE; - Position = Layout::LayoutVec4(); - Height = MaxHeight = MinHeight = Layout::LayoutUnit(); - Margin = Padding = Border = Layout::LayoutVec4(); - Direction = Layout::LayoutDirection::LTR; - FlexDirection = Layout::FlexDirection::ROW; - FlexWrap = Layout::FlexWrap::WRAP; - FlexGrow = 0.f; - FlexShrink = 1.f; - FlexBasis = 10.f; - AspectRatio = 1.f; - AlignItems = Layout::AlignItems::AUTO; - AlignSelf = Layout::AlignItems::AUTO; + float width = YGNodeLayoutGetWidth(YogaNode); + float height = YGNodeLayoutGetHeight(YogaNode); + float padding = YGNodeLayoutGetPadding(YogaNode, YGEdgeLeft); + float left = YGNodeLayoutGetLeft(YogaNode); //+ offset.x; + float top = YGNodeLayoutGetTop(YogaNode);// +offset.y; + + float parentLeft = 0.0f; + float parentTop = 0.0f; + auto parent = YGNodeGetParent(YogaNode); + if (parent) + { + parentLeft = YGNodeLayoutGetLeft(YGNodeGetParent(YogaNode)); + parentTop = YGNodeLayoutGetTop(YGNodeGetParent(YogaNode)); + float parentPaddingTop = YGNodeLayoutGetPadding(parent, YGEdgeTop); + float parentPaddingLeft = YGNodeLayoutGetPadding(parent, YGEdgeTop); + // Overflow hidden. + float parentwidth = YGNodeLayoutGetWidth(parent); + if (parentwidth - YGNodeLayoutGetMargin(YogaNode, YGEdgeLeft) < width) + width = parentwidth - parentPaddingLeft; + float parentHeight = YGNodeLayoutGetHeight(parent); + if (parentHeight < height) + height = parentHeight - parentPaddingTop; + } + + left += parentLeft; + top += parentTop; + return position.x > left && position.x < left + width && position.y > top && position.y < top + height; } \ No newline at end of file diff --git a/Nuake/src/UI/Nodes/Node.h b/Nuake/src/UI/Nodes/Node.h index cc22b0b9..b658d2fe 100644 --- a/Nuake/src/UI/Nodes/Node.h +++ b/Nuake/src/UI/Nodes/Node.h @@ -65,47 +65,56 @@ namespace Layout } +enum class NodeType +{ + Normal, + Text +}; + // Base UI node. class Node { public: - Ref Parent; - YGNodeRef YogaNode; + int Depth; + Ref Root; + Ref Parent; + std::vector Groups; std::vector> Childrens = std::vector>(); - void ApplyStyle(Ref stylegroup); + std::string OnClickSignature = ""; + + NodeType Type = NodeType::Normal; + + YGNodeRef YogaNode; + Ref