blob: 3859e987625399d28003c1264b3002d757e52428 [file] [log] [blame]
-------------------------------------------------------------------------------
-- Copyright (c) 2006-2013 Fabien Fleutot and others.
--
-- All rights reserved.
--
-- This program and the accompanying materials are made available
-- under the terms of the Eclipse Public License v1.0 which
-- accompanies this distribution, and is available at
-- http://www.eclipse.org/legal/epl-v10.html
--
-- This program and the accompanying materials are also made available
-- under the terms of the MIT public license which accompanies this
-- distribution, and is available at http://www.lua.org/license.html
--
-- Contributors:
-- Fabien Fleutot - API and implementation
--
-------------------------------------------------------------------------------
-- WARNING, this is undertested, especially in cases where mutliple
-- modules have their own fenvs. Use at your own risks.
require 'strict'
local function decl_builder(x)
local ids, vals = unpack(x)
local ids_as_strings = table.imap(|x| `String{x[1]}, ids)
local decl = `Call{ +{getmetatable(getfenv()).__newglobal},
unpack(ids_as_strings) }
if vals then return { decl, `Set{ ids, vals } }
else return decl end
end
mlp.lexer:add 'global'
mlp.stat:add{
'global', mlp.id_list, gg.onkeyword{ '=', mlp.expr_list },
builder = decl_builder }
return +{ require (-{ `String{ package.metalua_extension_prefix .. 'xglobal-runtime' } }) }