From 040f6802ef02f6541e0213de0440f9b1b758d9fc Mon Sep 17 00:00:00 2001 From: Li Jin Date: Wed, 21 May 2025 16:19:10 +0800 Subject: Added support for mark global var const without initial value. --- spec/inputs/global.yue | 1 + src/yuescript/yue_compiler.cpp | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/spec/inputs/global.yue b/spec/inputs/global.yue index 8316d16..4e3b8aa 100644 --- a/spec/inputs/global.yue +++ b/spec/inputs/global.yue @@ -86,4 +86,5 @@ do global const class A global const Flag = 1 global const const, x, y = "const", 1, 2 + global const math, table diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index 452ffbd..5cd2804 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.28.0"sv; +const std::string_view version = "0.28.1"sv; const std::string_view extension = "yue"sv; class CompileError : public std::logic_error { @@ -9569,12 +9569,13 @@ private: markVarGlobalConst(name); } } else { - if (global->constAttrib) { - throw CompileError("missing initial value for global const", global->constAttrib); - } for (auto name : values->nameList->names.objects()) { auto var = static_cast(name); - addGlobalVar(variableToString(var), var); + auto varName = variableToString(var); + addGlobalVar(varName, var); + if (global->constAttrib) { + markVarGlobalConst(varName); + } } } break; -- cgit v1.2.3-55-g6feb