From 0cece2cad82bcd95bcb20f3d984817f7085fd4f8 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Thu, 29 Jan 2026 15:16:07 +0800 Subject: Added more format function specs. --- spec/inputs/test/format_spec.yue | 73 +++++++++++++++++++++++++++++-------- spec/outputs/test/format_spec.lua | 75 ++++++++++++++++++++++++++++++--------- src/yuescript/yue_ast.cpp | 2 +- src/yuescript/yue_compiler.cpp | 2 +- 4 files changed, 119 insertions(+), 33 deletions(-) diff --git a/spec/inputs/test/format_spec.yue b/spec/inputs/test/format_spec.yue index 6b94540..4da3f7e 100644 --- a/spec/inputs/test/format_spec.yue +++ b/spec/inputs/test/format_spec.yue @@ -1,7 +1,12 @@ files = [ + "spec/inputs/import_global.yue" + "spec/inputs/nil_coalesce_precedence.yue" "spec/inputs/macro_export.yue" + "spec/inputs/props.yue" "spec/inputs/attrib.yue" + "spec/inputs/upvalue_func.yue" "spec/inputs/macro.yue" + "spec/inputs/export_mixed.yue" "spec/inputs/using.yue" "spec/inputs/whitespace.yue" "spec/inputs/nil_coalescing.yue" @@ -11,6 +16,7 @@ files = [ "spec/inputs/string.yue" "spec/inputs/local.yue" "spec/inputs/tables.yue" + "spec/inputs/pipe_chain_combo.yue" "spec/inputs/operators.yue" "spec/inputs/lists.yue" "spec/inputs/compile_doc.yue" @@ -18,9 +24,11 @@ files = [ "spec/inputs/multiline_chain.yue" "spec/inputs/existential.yue" "spec/inputs/export_default.yue" + "spec/inputs/with_scope_shadow.yue" "spec/inputs/assign.yue" "spec/inputs/literals.yue" "spec/inputs/luarocks_upload.yue" + "spec/inputs/comprehension_nested.yue" "spec/inputs/ambiguous.yue" "spec/inputs/bubbling.yue" "spec/inputs/try_catch.yue" @@ -41,17 +49,63 @@ files = [ "spec/inputs/loops.yue" "spec/inputs/class.yue" "spec/inputs/vararg.yue" + "spec/inputs/destructure_defaults.yue" "spec/inputs/goto.yue" "spec/inputs/metatable.yue" "spec/inputs/syntax.yue" "spec/inputs/global.yue" "spec/inputs/plus.yue" + "spec/inputs/test/with_spec.yue" + "spec/inputs/test/try_catch_spec.yue" + "spec/inputs/test/operator_advanced_spec.yue" + "spec/inputs/test/with_statement_spec.yue" + "spec/inputs/test/literals_spec.yue" + "spec/inputs/test/varargs_assignment_spec.yue" + "spec/inputs/test/advanced_macro_spec.yue" + "spec/inputs/test/pipe_spec.yue" + "spec/inputs/test/export_spec.yue" + "spec/inputs/test/existential_spec.yue" + "spec/inputs/test/metatable_spec.yue" + "spec/inputs/test/multiline_args_spec.yue" + "spec/inputs/test/format_spec.yue" + "spec/inputs/test/do_statement_spec.yue" "spec/inputs/test/class_spec.yue" + "spec/inputs/test/stub_spec.yue" + "spec/inputs/test/whitespace_spec.yue" + "spec/inputs/test/in_expression_spec.yue" + "spec/inputs/test/param_destructure_spec.yue" + "spec/inputs/test/operators_spec.yue" + "spec/inputs/test/comprehension_spec.yue" + "spec/inputs/test/attrib_spec.yue" + "spec/inputs/test/nil_coalescing_spec.yue" + "spec/inputs/test/table_comprehension_spec.yue" + "spec/inputs/test/slicing_spec.yue" + "spec/inputs/test/close_attribute_spec.yue" + "spec/inputs/test/named_varargs_spec.yue" "spec/inputs/test/table_spreading_spec.yue" + "spec/inputs/test/macro_spec.yue" + "spec/inputs/test/chaining_comparison_spec.yue" + "spec/inputs/test/table_append_spec.yue" + "spec/inputs/test/destructure_spec.yue" + "spec/inputs/test/vararg_spec.yue" + "spec/inputs/test/string_spec.yue" + "spec/inputs/test/implicit_object_spec.yue" + "spec/inputs/test/backcall_spec.yue" + "spec/inputs/test/while_assignment_spec.yue" + "spec/inputs/test/switch_spec.yue" + "spec/inputs/test/functions_advanced_spec.yue" + "spec/inputs/test/config_spec.yue" + "spec/inputs/test/yaml_string_spec.yue" + "spec/inputs/test/const_attribute_spec.yue" + "spec/inputs/test/cond_spec.yue" + "spec/inputs/test/import_spec.yue" + "spec/inputs/test/reverse_index_spec.yue" + "spec/inputs/test/prefixed_return_spec.yue" + "spec/inputs/test/goto_spec.yue" + "spec/inputs/test/return_spec.yue" "spec/inputs/test/loops_spec.yue" - "spec/inputs/test/format_spec.yue" - "spec/inputs/upvalue_func.yue" - "spec/inputs/import_global.yue" + "spec/inputs/test/if_assignment_spec.yue" + "spec/inputs/test/tables_advanced_spec.yue" "spec/inputs/unicode/macro_export.yue" "spec/inputs/unicode/attrib.yue" "spec/inputs/unicode/macro.yue" @@ -63,6 +117,7 @@ files = [ "spec/inputs/unicode/string.yue" "spec/inputs/unicode/local.yue" "spec/inputs/unicode/tables.yue" + "spec/inputs/unicode/pipe_chain_combo.yue" "spec/inputs/unicode/operators.yue" "spec/inputs/unicode/lists.yue" "spec/inputs/unicode/switch.yue" @@ -95,18 +150,6 @@ files = [ "spec/inputs/unicode/syntax.yue" "spec/inputs/unicode/global.yue" "spec/inputs/unicode/plus.yue" - "spec/inputs/pipe_chain_combo.yue" - "spec/inputs/destructure_defaults.yue" - "spec/inputs/nil_coalesce_precedence.yue" - "spec/inputs/comprehension_nested.yue" - "spec/inputs/with_scope_shadow.yue" - "spec/inputs/export_mixed.yue" - "spec/inputs/unicode/pipe_chain_combo.yue" - "spec/inputs/test/destructure_spec.yue" - "spec/inputs/test/nil_coalescing_spec.yue" - "spec/inputs/test/pipe_spec.yue" - "spec/inputs/test/try_catch_spec.yue" - "spec/inputs/test/comprehension_spec.yue" ] import "yue" diff --git a/spec/outputs/test/format_spec.lua b/spec/outputs/test/format_spec.lua index 74a511d..8307f6a 100644 --- a/spec/outputs/test/format_spec.lua +++ b/spec/outputs/test/format_spec.lua @@ -1,7 +1,12 @@ local files = { + "spec/inputs/import_global.yue", + "spec/inputs/nil_coalesce_precedence.yue", "spec/inputs/macro_export.yue", + "spec/inputs/props.yue", "spec/inputs/attrib.yue", + "spec/inputs/upvalue_func.yue", "spec/inputs/macro.yue", + "spec/inputs/export_mixed.yue", "spec/inputs/using.yue", "spec/inputs/whitespace.yue", "spec/inputs/nil_coalescing.yue", @@ -11,6 +16,7 @@ local files = { "spec/inputs/string.yue", "spec/inputs/local.yue", "spec/inputs/tables.yue", + "spec/inputs/pipe_chain_combo.yue", "spec/inputs/operators.yue", "spec/inputs/lists.yue", "spec/inputs/compile_doc.yue", @@ -18,9 +24,11 @@ local files = { "spec/inputs/multiline_chain.yue", "spec/inputs/existential.yue", "spec/inputs/export_default.yue", + "spec/inputs/with_scope_shadow.yue", "spec/inputs/assign.yue", "spec/inputs/literals.yue", "spec/inputs/luarocks_upload.yue", + "spec/inputs/comprehension_nested.yue", "spec/inputs/ambiguous.yue", "spec/inputs/bubbling.yue", "spec/inputs/try_catch.yue", @@ -41,17 +49,63 @@ local files = { "spec/inputs/loops.yue", "spec/inputs/class.yue", "spec/inputs/vararg.yue", + "spec/inputs/destructure_defaults.yue", "spec/inputs/goto.yue", "spec/inputs/metatable.yue", "spec/inputs/syntax.yue", "spec/inputs/global.yue", "spec/inputs/plus.yue", + "spec/inputs/test/with_spec.yue", + "spec/inputs/test/try_catch_spec.yue", + "spec/inputs/test/operator_advanced_spec.yue", + "spec/inputs/test/with_statement_spec.yue", + "spec/inputs/test/literals_spec.yue", + "spec/inputs/test/varargs_assignment_spec.yue", + "spec/inputs/test/advanced_macro_spec.yue", + "spec/inputs/test/pipe_spec.yue", + "spec/inputs/test/export_spec.yue", + "spec/inputs/test/existential_spec.yue", + "spec/inputs/test/metatable_spec.yue", + "spec/inputs/test/multiline_args_spec.yue", + "spec/inputs/test/format_spec.yue", + "spec/inputs/test/do_statement_spec.yue", "spec/inputs/test/class_spec.yue", + "spec/inputs/test/stub_spec.yue", + "spec/inputs/test/whitespace_spec.yue", + "spec/inputs/test/in_expression_spec.yue", + "spec/inputs/test/param_destructure_spec.yue", + "spec/inputs/test/operators_spec.yue", + "spec/inputs/test/comprehension_spec.yue", + "spec/inputs/test/attrib_spec.yue", + "spec/inputs/test/nil_coalescing_spec.yue", + "spec/inputs/test/table_comprehension_spec.yue", + "spec/inputs/test/slicing_spec.yue", + "spec/inputs/test/close_attribute_spec.yue", + "spec/inputs/test/named_varargs_spec.yue", "spec/inputs/test/table_spreading_spec.yue", + "spec/inputs/test/macro_spec.yue", + "spec/inputs/test/chaining_comparison_spec.yue", + "spec/inputs/test/table_append_spec.yue", + "spec/inputs/test/destructure_spec.yue", + "spec/inputs/test/vararg_spec.yue", + "spec/inputs/test/string_spec.yue", + "spec/inputs/test/implicit_object_spec.yue", + "spec/inputs/test/backcall_spec.yue", + "spec/inputs/test/while_assignment_spec.yue", + "spec/inputs/test/switch_spec.yue", + "spec/inputs/test/functions_advanced_spec.yue", + "spec/inputs/test/config_spec.yue", + "spec/inputs/test/yaml_string_spec.yue", + "spec/inputs/test/const_attribute_spec.yue", + "spec/inputs/test/cond_spec.yue", + "spec/inputs/test/import_spec.yue", + "spec/inputs/test/reverse_index_spec.yue", + "spec/inputs/test/prefixed_return_spec.yue", + "spec/inputs/test/goto_spec.yue", + "spec/inputs/test/return_spec.yue", "spec/inputs/test/loops_spec.yue", - "spec/inputs/test/format_spec.yue", - "spec/inputs/upvalue_func.yue", - "spec/inputs/import_global.yue", + "spec/inputs/test/if_assignment_spec.yue", + "spec/inputs/test/tables_advanced_spec.yue", "spec/inputs/unicode/macro_export.yue", "spec/inputs/unicode/attrib.yue", "spec/inputs/unicode/macro.yue", @@ -63,6 +117,7 @@ local files = { "spec/inputs/unicode/string.yue", "spec/inputs/unicode/local.yue", "spec/inputs/unicode/tables.yue", + "spec/inputs/unicode/pipe_chain_combo.yue", "spec/inputs/unicode/operators.yue", "spec/inputs/unicode/lists.yue", "spec/inputs/unicode/switch.yue", @@ -94,19 +149,7 @@ local files = { "spec/inputs/unicode/metatable.yue", "spec/inputs/unicode/syntax.yue", "spec/inputs/unicode/global.yue", - "spec/inputs/unicode/plus.yue", - "spec/inputs/pipe_chain_combo.yue", - "spec/inputs/destructure_defaults.yue", - "spec/inputs/nil_coalesce_precedence.yue", - "spec/inputs/comprehension_nested.yue", - "spec/inputs/with_scope_shadow.yue", - "spec/inputs/export_mixed.yue", - "spec/inputs/unicode/pipe_chain_combo.yue", - "spec/inputs/test/destructure_spec.yue", - "spec/inputs/test/nil_coalescing_spec.yue", - "spec/inputs/test/pipe_spec.yue", - "spec/inputs/test/try_catch_spec.yue", - "spec/inputs/test/comprehension_spec.yue" + "spec/inputs/unicode/plus.yue" } local yue = require("yue") local rewriteLineCol diff --git a/src/yuescript/yue_ast.cpp b/src/yuescript/yue_ast.cpp index cfd4cc6..89b8d3f 100644 --- a/src/yuescript/yue_ast.cpp +++ b/src/yuescript/yue_ast.cpp @@ -860,7 +860,7 @@ std::string CompForEach_t::to_string(void* ud) const { std::string CompForNum_t::to_string(void* ud) const { auto line = "for "s + varName->to_string(ud) + " = "s + startValue->to_string(ud) + ", "s + stopValue->to_string(ud); if (stepValue) { - line += stepValue->to_string(ud); + line += ", "s + stepValue->to_string(ud); } return line; } diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index 835a70a..370cee4 100644 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp @@ -78,7 +78,7 @@ static std::unordered_set Metamethods = { "close"s // Lua 5.4 }; -const std::string_view version = "0.32.6"sv; +const std::string_view version = "0.32.7"sv; const std::string_view extension = "yue"sv; class CompileError : public std::logic_error { -- cgit v1.2.3-55-g6feb