From fced0c4f4101ad7c8d81432a0e8c45d38b72616c Mon Sep 17 00:00:00 2001 From: Li Jin Date: Thu, 15 Jan 2026 17:07:11 +0800 Subject: Added `import global` syntax. --- spec/inputs/import_global.yue | 86 ++++++++++++++++++++++ spec/outputs/codes_from_doc.lua | 142 +++++++++++++++++++++---------------- spec/outputs/codes_from_doc_zh.lua | 142 +++++++++++++++++++++---------------- spec/outputs/import_global.lua | 120 +++++++++++++++++++++++++++++++ 4 files changed, 370 insertions(+), 120 deletions(-) create mode 100644 spec/inputs/import_global.yue create mode 100644 spec/outputs/import_global.lua (limited to 'spec') diff --git a/spec/inputs/import_global.yue b/spec/inputs/import_global.yue new file mode 100644 index 0000000..30a274e --- /dev/null +++ b/spec/inputs/import_global.yue @@ -0,0 +1,86 @@ + +do + import global + print "hello" + math.random 10 + +do + import global + value = 1 + value += 2 + print value + +do + local print = (msg) -> + return msg + do + import global + print "local" + math.random 1 + +do + import global + local tostring = (v) -> "local" + tostring "value" + print tostring 123 + +do + func = (x, y) -> + import global + return type x, tostring y, print + func 1, 2 + +do + import global + try + func "hello #{world}" + catch err + print err + +do + import global + global FLAG + print FLAG + FLAG = 123 + +do + import global + global Foo = 10 + print Foo + Foo += 2 + +do + import global + global Bar, Baz + Bar = 1 + Baz = 2 + print Bar, Baz + +do + import global + global * + x = 3434 + if y then + x = 10 + +do + import global + global ^ + foobar = "all #{lowercase}" + FooBar = "pascal case" + FOOBAR = "all #{Uppercase}" + +do + import global + global const class A + global const Flag = 1 + global const const, x, y = "const", 1, 2 + global const math, table + print math, table + +do + import global + with X + \func 1, 2, 3 + .tag = "abc" + diff --git a/spec/outputs/codes_from_doc.lua b/spec/outputs/codes_from_doc.lua index de5abdd..02f36d1 100644 --- a/spec/outputs/codes_from_doc.lua +++ b/spec/outputs/codes_from_doc.lua @@ -408,6 +408,17 @@ local tb = { } } } +do + local math = math + local print = print + print("hello") + math.random(3) +end +do + local print = print + print(FLAG) + FLAG = 123 +end do local insert, concat = table.insert, table.concat local C, Ct, Cmt @@ -737,36 +748,6 @@ end local first = select(1, ...) return print(ok, count, first) end)(fn(true)) -local f -f = function(...) - local t = { - n = select("#", ...), - ... - } - print("argument count:", t.n) - print("table length:", #t) - for i = 1, t.n do - print(t[i]) - end -end -f(1, 2, 3) -f("a", "b", "c", "d") -f() -local process -process = function(...) - local args = { - n = select("#", ...), - ... - } - local sum = 0 - for i = 1, args.n do - if args[i] ~= nil and type(args[i]) == "number" then - sum = sum + args[i] - end - end - return sum -end -process(1, nil, 3, nil, 5) Rx.Observable.fromRange(1, 8):filter(function(x) return x % 2 == 0 end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) @@ -1000,6 +981,36 @@ local arg1 = { a = 0 } f2(arg1, arg2) +local f +f = function(...) + local t = { + n = select("#", ...), + ... + } + print("argument count:", t.n) + print("table length:", #t) + for i = 1, t.n do + print(t[i]) + end +end +f(1, 2, 3) +f("a", "b", "c", "d") +f() +local process +process = function(...) + local args = { + n = select("#", ...), + ... + } + local sum = 0 + for i = 1, args.n do + if args[i] ~= nil and type(args[i]) == "number" then + sum = sum + args[i] + end + end + return sum +end +process(1, nil, 3, nil, 5) f(function() return print("hello") end) @@ -2916,6 +2927,17 @@ local tb = { } } } +do + local math = math + local print = print + print("hello") + math.random(3) +end +do + local print = print + print(FLAG) + FLAG = 123 +end do local insert, concat = table.insert, table.concat local C, Ct, Cmt @@ -3245,36 +3267,6 @@ end local first = select(1, ...) return print(ok, count, first) end)(fn(true)) -local f -f = function(...) - local t = { - n = select("#", ...), - ... - } - print("argument count:", t.n) - print("table length:", #t) - for i = 1, t.n do - print(t[i]) - end -end -f(1, 2, 3) -f("a", "b", "c", "d") -f() -local process -process = function(...) - local args = { - n = select("#", ...), - ... - } - local sum = 0 - for i = 1, args.n do - if args[i] ~= nil and type(args[i]) == "number" then - sum = sum + args[i] - end - end - return sum -end -process(1, nil, 3, nil, 5) Rx.Observable.fromRange(1, 8):filter(function(x) return x % 2 == 0 end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) @@ -3538,6 +3530,36 @@ findFirstEven = function(list) end return nil end +local f +f = function(...) + local t = { + n = select("#", ...), + ... + } + print("argument count:", t.n) + print("table length:", #t) + for i = 1, t.n do + print(t[i]) + end +end +f(1, 2, 3) +f("a", "b", "c", "d") +f() +local process +process = function(...) + local args = { + n = select("#", ...), + ... + } + local sum = 0 + for i = 1, args.n do + if args[i] ~= nil and type(args[i]) == "number" then + sum = sum + args[i] + end + end + return sum +end +process(1, nil, 3, nil, 5) f(function() return print("hello") end) diff --git a/spec/outputs/codes_from_doc_zh.lua b/spec/outputs/codes_from_doc_zh.lua index 6a6c38c..87944e0 100644 --- a/spec/outputs/codes_from_doc_zh.lua +++ b/spec/outputs/codes_from_doc_zh.lua @@ -408,6 +408,17 @@ local tb = { } } } +do + local math = math + local print = print + print("hello") + math.random(3) +end +do + local print = print + print(FLAG) + FLAG = 123 +end do local insert, concat = table.insert, table.concat local C, Ct, Cmt @@ -737,36 +748,6 @@ end local first = select(1, ...) return print(ok, count, first) end)(fn(true)) -local f -f = function(...) - local t = { - n = select("#", ...), - ... - } - print("参数个数:", t.n) - print("表长度:", #t) - for i = 1, t.n do - print(t[i]) - end -end -f(1, 2, 3) -f("a", "b", "c", "d") -f() -local process -process = function(...) - local args = { - n = select("#", ...), - ... - } - local sum = 0 - for i = 1, args.n do - if args[i] ~= nil and type(args[i]) == "number" then - sum = sum + args[i] - end - end - return sum -end -process(1, nil, 3, nil, 5) Rx.Observable.fromRange(1, 8):filter(function(x) return x % 2 == 0 end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) @@ -994,6 +975,36 @@ local arg1 = { a = 0 } f2(arg1, arg2) +local f +f = function(...) + local t = { + n = select("#", ...), + ... + } + print("参数个数:", t.n) + print("表长度:", #t) + for i = 1, t.n do + print(t[i]) + end +end +f(1, 2, 3) +f("a", "b", "c", "d") +f() +local process +process = function(...) + local args = { + n = select("#", ...), + ... + } + local sum = 0 + for i = 1, args.n do + if args[i] ~= nil and type(args[i]) == "number" then + sum = sum + args[i] + end + end + return sum +end +process(1, nil, 3, nil, 5) f(function() return print("hello") end) @@ -2910,6 +2921,17 @@ local tb = { } } } +do + local math = math + local print = print + print("hello") + math.random(3) +end +do + local print = print + print(FLAG) + FLAG = 123 +end do local insert, concat = table.insert, table.concat local C, Ct, Cmt @@ -3239,36 +3261,6 @@ end local first = select(1, ...) return print(ok, count, first) end)(fn(true)) -local f -f = function(...) - local t = { - n = select("#", ...), - ... - } - print("参数个数:", t.n) - print("表长度:", #t) - for i = 1, t.n do - print(t[i]) - end -end -f(1, 2, 3) -f("a", "b", "c", "d") -f() -local process -process = function(...) - local args = { - n = select("#", ...), - ... - } - local sum = 0 - for i = 1, args.n do - if args[i] ~= nil and type(args[i]) == "number" then - sum = sum + args[i] - end - end - return sum -end -process(1, nil, 3, nil, 5) Rx.Observable.fromRange(1, 8):filter(function(x) return x % 2 == 0 end):concat(Rx.Observable.of('who do we appreciate')):map(function(value) @@ -3526,6 +3518,36 @@ findFirstEven = function(list) end return nil end +local f +f = function(...) + local t = { + n = select("#", ...), + ... + } + print("参数个数:", t.n) + print("表长度:", #t) + for i = 1, t.n do + print(t[i]) + end +end +f(1, 2, 3) +f("a", "b", "c", "d") +f() +local process +process = function(...) + local args = { + n = select("#", ...), + ... + } + local sum = 0 + for i = 1, args.n do + if args[i] ~= nil and type(args[i]) == "number" then + sum = sum + args[i] + end + end + return sum +end +process(1, nil, 3, nil, 5) f(function() return print("hello") end) diff --git a/spec/outputs/import_global.lua b/spec/outputs/import_global.lua new file mode 100644 index 0000000..08a90e2 --- /dev/null +++ b/spec/outputs/import_global.lua @@ -0,0 +1,120 @@ +do + local math = math + local print = print + print("hello") + math.random(10) +end +do + local print = print + local value = 1 + value = value + 2 + print(value) +end +do + local print + print = function(msg) + return msg + end + do + local math = math + print("local") + math.random(1) + end +end +do + local print = print + local tostring + tostring = function(v) + return "local" + end + tostring("value") + print(tostring(123)) +end +do + local func + func = function(x, y) + local tostring = tostring + local print = print + local type = type + return type(x, tostring(y, print)) + end + func(1, 2) +end +do + local print = print + local tostring = tostring + local func = func + local world = world + local xpcall = xpcall + xpcall(function() + return func("hello " .. tostring(world)) + end, function(err) + return print(err) + end) +end +do + local print = print + print(FLAG) + FLAG = 123 +end +do + local print = print + Foo = 10 + print(Foo) + Foo = Foo + 2 +end +do + local print = print + Bar = 1 + Baz = 2 + print(Bar, Baz) +end +do + local y = y + x = 3434 + if y then + x = 10 + end +end +do + local tostring = tostring + local Uppercase = Uppercase + local lowercase = lowercase + local foobar = "all " .. tostring(lowercase) + FooBar = "pascal case" + FOOBAR = "all " .. tostring(Uppercase) +end +do + local print = print + local setmetatable = setmetatable + do + local _class_0 + local _base_0 = { } + if _base_0.__index == nil then + _base_0.__index = _base_0 + end + _class_0 = setmetatable({ + __init = function() end, + __base = _base_0, + __name = "A" + }, { + __index = _base_0, + __call = function(cls, ...) + local _self_0 = setmetatable({ }, _base_0) + cls.__init(_self_0, ...) + return _self_0 + end + }) + _base_0.__class = _class_0 + A = _class_0 + end + Flag = 1 + const, x, y = "const", 1, 2 + print(math, table) +end +do + local X = X + X:func(1, 2, 3) + X.tag = "abc" + return X +end -- cgit v1.2.3-55-g6feb