From 0731d4fce42ba2f13c4d8f8ecba1680f79d48065 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Sat, 10 Aug 2024 08:44:30 +0800 Subject: add a reusable macro env. --- src/yuescript/yue_compiler.cpp | 2 +- src/yuescript/yuescript.h | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index 9e778d7..8ec131f 100644 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp @@ -5117,7 +5117,7 @@ private: newArgs.emplace_back(_parser.toString(argsDef->varArg)); } } - std::string macroCodes = "_ENV=yue:require('yue'),:_G,:(k,v)=>_G[k]=v\n("s + join(newArgs, ","sv) + ")->"s + _parser.toString(macroLit->body); + std::string macroCodes = "_ENV=require('yue').macro_env\n("s + join(newArgs, ","sv) + ")->"s + _parser.toString(macroLit->body); auto chunkName = "=(macro "s + macroName + ')'; pushCurrentModule(); // cur int top = lua_gettop(L) - 1; diff --git a/src/yuescript/yuescript.h b/src/yuescript/yuescript.h index 97ebdef..f6d12dc 100644 --- a/src/yuescript/yuescript.h +++ b/src/yuescript/yuescript.h @@ -225,4 +225,10 @@ yue.pcall = yue_call yue.require = yue_require yue.p = p yue.traceback = yue_traceback +yue.macro_env = setmetatable({yue = yue}, { + __index = _G, + __newindex = function(_, k, v) + _G[k] = v + end +}) )yuescript_codes"; -- cgit v1.2.3-55-g6feb