]> git.lizzy.rs Git - metalua.git/commitdiff
fixes suggested by D. M.
authorFabien Fleutot <metalua@gmail.com>
Thu, 26 Feb 2009 12:31:16 +0000 (13:31 +0100)
committerFabien Fleutot <metalua@gmail.com>
Thu, 26 Feb 2009 12:31:16 +0000 (13:31 +0100)
src/build-utils/bootstrap.lua
src/compiler/gg.lua
src/compiler/mlp_misc.lua
src/compiler/mlp_stat.lua
src/lib/strict.lua
src/make.sh

index ba13651f2f46840bb976746d904882f905e98d28..a4b6fa50c7e7a82f06970bb2a13de089e9a90a46 100644 (file)
@@ -12,7 +12,7 @@ for _, a in ipairs(arg) do
    if var then cfg[var] = val else table.insert (cfg.inputs, a) end
 end
 
--- metalua.mlc doesn't exit yet; this preload manager loads a mockup which is just
+-- metalua.mlc doesn't exist yet; this preload manager loads a mockup which is just
 -- sufficient to compile the real mlc.mlua
 package.preload['metalua.mlc'] = function()
 
index 0c0af636432d435bf52d6dae98c6911c5cb3a429..db0d91c16f9b982f1ccc33eaba41e7980acd40af 100644 (file)
@@ -210,7 +210,7 @@ function sequence (p)
    elseif type(p[1])=="string" then -- find name based on 1st keyword
       if #p==1 then p.name=p[1]
       elseif type(p[#p])=="string" then
-         p.name = p[1] .. " ... " . p[#p]
+         p.name = p[1] .. " ... " .. p[#p]
       else p.name = p[1] .. " ..." end
    else -- can't find a decent name
       p.name = "<anonymous>"
index 51d180eb632cc25e752e341a2dbb9e7a82b02214..bfdc376588c11d9682018afd8140a86d4c88ded2 100644 (file)
@@ -135,7 +135,7 @@ function id2string (id)
       -- That is, without sugar:
       return {tag="String",  {tag="Index", {tag="Splice", id[1] }, 
                                            {tag="Number", 1 } } }
-   else error ("Identifier expected: ".._G.table.tostring(id)) end
+   else error ("Identifier expected: ".._G.table.tostring(id, 'nohash')) end
 end
 
 --------------------------------------------------------------------------------
index 282954edcb3231748a0d3ed305ea1808355208d0..c6edad170388cd004499347b0a4128981e8d940a 100644 (file)
@@ -174,13 +174,15 @@ local function assign_or_call_stat_parser (lx)
             "separated by semicolons, or not separated at all") end
       if e[1].tag ~= "Call" and e[1].tag ~= "Invoke" then
          local typename
-         if e[1].tag == 'Id' then typename = "an identifier"
-         elseif e[1].tag == 'Op' then typename = "an arithmetic operation"
-         else typename = "of type '"..(e[1].tag or "<list>".."'" end
-
-         gg.parse_error (lx, "This expression is " .. typename ..
-            "; only function and method call expressions "..
-            "can be used as statements");
+         if e[1].tag == 'Id' then 
+            typename = '("'..e[1][1]..'") is an identifier'
+         elseif e[1].tag == 'Op' then 
+            typename = "is an arithmetic operation"
+         else typename = "is of type '"..(e[1].tag or "<list>").."'" end
+
+         gg.parse_error (lx, "This expression " .. typename ..
+            "; a statement was expected, and only function and method call "..
+            "expressions can be used as statements");
       end
       return e[1]
    end
index 8ca18fab3f11536010344977037c58d365963cae..772fc109b9f01060cd965af56773b703a9f7a3c2 100644 (file)
@@ -6,18 +6,25 @@
 -- anywhere or assigned to inside a function.
 --
 
+local getinfo, error, rawset, rawget = debug.getinfo, error, rawset, rawget
+
 local mt = getmetatable(_G)
 if mt == nil then
   mt = {}
   setmetatable(_G, mt)
 end
 
-__STRICT = true
+__strict = true
 mt.__declared = {}
 
+local function what ()
+  local d = getinfo(3, "S")
+  return d and d.what or "C"
+end
+
 mt.__newindex = function (t, n, v)
-  if __STRICT and not mt.__declared[n] then
-    local w = debug.getinfo(2, "S").what
+  if __strict and not mt.__declared[n] then
+    local w = what()
     if w ~= "main" and w ~= "C" then
       error("assign to undeclared variable '"..n.."'", 2)
     end
@@ -27,7 +34,7 @@ mt.__newindex = function (t, n, v)
 end
   
 mt.__index = function (t, n)
-  if not mt.__declared[n] and debug.getinfo(2, "S").what ~= "C" then
+  if __strict and not mt.__declared[n] and what() ~= "C" then
     error("variable '"..n.."' is not declared", 2)
   end
   return rawget(t, n)
index b6e52ab6a35685807c2586bfc9f6ce438d462cae..bf6cc343a62e8644803ff95c6cbd555e322569fd 100755 (executable)
@@ -9,7 +9,7 @@ BASE=${PWD}
 # Upon installation, everything will be moved to ${INSTALL_LIB} and ${INSTALL_BIN}
 
 if [ -z "${BUILD}" ]; then
-  BUILD= $(cd ../build; pwd)
+  BUILD=$(mkdir -p ../build; cd ../build; pwd)
 fi
 
 if [ -z "${BUILD_BIN}" ]; then