Selaa lähdekoodia

details (mainly error messages)

Roberto Ierusalimschy 28 vuotta sitten
vanhempi
commit
80b3d28f4a
16 muutettua tiedostoa jossa 89 lisäystä ja 92 poistoa
  1. 3 3
      lapi.c
  2. 16 1
      lauxlib.c
  3. 3 1
      lauxlib.h
  4. 12 27
      lbuiltin.c
  5. 3 2
      ldo.c
  6. 5 5
      lfunc.c
  7. 1 2
      lgc.c
  8. 4 4
      liolib.c
  9. 4 4
      llex.c
  10. 6 19
      lmathlib.c
  11. 3 3
      lstring.c
  12. 4 4
      lstrlib.c
  13. 2 2
      ltable.c
  14. 5 3
      lua.h
  15. 15 9
      lua.stx
  16. 3 3
      lvm.c

+ 3 - 3
lapi.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lapi.c,v 1.10 1997/11/27 18:25:14 roberto Exp roberto $
+** $Id: lapi.c,v 1.11 1997/11/28 16:56:05 roberto Exp roberto $
 ** Lua API
 ** See Copyright Notice in lua.h
 */
@@ -142,7 +142,7 @@ lua_Object lua_rawgettable (void)
 {
   checkCparams(2);
   if (ttype(L->stack.top-2) != LUA_T_ARRAY)
-    lua_error("indexed expression not a table in raw gettable");
+    lua_error("indexed expression not a table in rawgettable");
   else {
     TObject *h = luaH_get(avalue(L->stack.top-2), L->stack.top-1);
     --L->stack.top;
@@ -490,7 +490,7 @@ char *lua_getobjname (lua_Object o, char **name)
 void lua_beginblock (void)
 {
   if (L->numCblocks >= MAX_C_BLOCKS)
-    lua_error("`lua_beginblock': too many nested blocks");
+    lua_error("too many nested blocks");
   L->Cblocks[L->numCblocks] = L->Cstack;
   L->numCblocks++;
 }

+ 16 - 1
lauxlib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lauxlib.c,v 1.3 1997/11/04 15:27:53 roberto Exp roberto $
+** $Id: lauxlib.c,v 1.4 1997/11/21 19:00:46 roberto Exp roberto $
 ** Auxiliar functions for building Lua libraries
 ** See Copyright Notice in lua.h
 */
@@ -55,6 +55,21 @@ double luaL_opt_number (int numArg, double def)
 {
   return (lua_getparam(numArg) == LUA_NOOBJECT) ? def :
                               luaL_check_number(numArg);
+}  
+
+
+lua_Object luaL_tablearg (int arg)
+{
+  lua_Object o = lua_getparam(arg);
+  luaL_arg_check(lua_istable(o), arg, "table expected");
+  return o;
+}
+
+lua_Object luaL_functionarg (int arg)
+{
+  lua_Object o = lua_getparam(arg);
+  luaL_arg_check(lua_isfunction(o), arg, "function expected");
+  return o;
 }
 
 lua_Object luaL_nonnullarg (int numArg)

+ 3 - 1
lauxlib.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lauxlib.h,v 1.2 1997/09/26 15:02:26 roberto Exp roberto $
+** $Id: lauxlib.h,v 1.3 1997/11/21 19:00:46 roberto Exp roberto $
 ** Auxiliar functions for building Lua libraries
 ** See Copyright Notice in lua.h
 */
@@ -23,6 +23,8 @@ char *luaL_check_string (int numArg);
 char *luaL_opt_string (int numArg, char *def);
 double luaL_check_number (int numArg);
 double luaL_opt_number (int numArg, double def);
+lua_Object luaL_functionarg (int arg);
+lua_Object luaL_tablearg (int arg);
 lua_Object luaL_nonnullarg (int numArg);
 void luaL_verror (char *fmt, ...);
 

+ 12 - 27
lbuiltin.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lbuiltin.c,v 1.13 1997/11/28 12:39:45 roberto Exp roberto $
+** $Id: lbuiltin.c,v 1.14 1997/12/01 20:30:44 roberto Exp roberto $
 ** Built-in functions
 ** See Copyright Notice in lua.h
 */
@@ -23,21 +23,6 @@
 
 
 
-static lua_Object tablearg (int arg)
-{
-  lua_Object o = lua_getparam(arg);
-  luaL_arg_check(lua_istable(o), arg, "table expected");
-  return o;
-}
-
-static lua_Object functionarg (int arg)
-{
-  lua_Object o = lua_getparam(arg);
-  luaL_arg_check(lua_isfunction(o), arg, "function expected");
-  return o;
-}
-
-
 static void pushstring (TaggedString *s)
 {
   TObject o;
@@ -71,7 +56,7 @@ static void nextvar (void)
 
 static void foreachvar (void)
 {
-  TObject f = *luaA_Address(functionarg(1));
+  TObject f = *luaA_Address(luaL_functionarg(1));
   GCnode *g;
   StkId name = L->Cstack.base++;  /* place to keep var name (to avoid GC) */
   ttype(L->stack.stack+name) = LUA_T_NIL;
@@ -95,7 +80,7 @@ static void foreachvar (void)
 
 static void next (void)
 {
-  lua_Object o = tablearg(1);
+  lua_Object o = luaL_tablearg(1);
   lua_Object r = luaL_nonnullarg(2);
   Node *n = luaH_next(luaA_Address(o), luaA_Address(r));
   if (n) {
@@ -107,8 +92,8 @@ static void next (void)
 
 static void foreach (void)
 {
-  TObject t = *luaA_Address(tablearg(1));
-  TObject f = *luaA_Address(functionarg(2));
+  TObject t = *luaA_Address(luaL_tablearg(1));
+  TObject f = *luaA_Address(luaL_functionarg(2));
   int i;
   for (i=0; i<avalue(&t)->nhash; i++) {
     Node *nd = &(avalue(&t)->node[i]);
@@ -165,7 +150,9 @@ static char *to_string (lua_Object obj)
     }
     case LUA_T_NIL:
       return "nil";
-    default: return "<unknown object>";
+    default: 
+      lua_error("internal error");
+      return NULL;  /* to avoid warnings */
   }
 }
 
@@ -203,9 +190,7 @@ static void lua_obj2number (void)
 
 static void luaI_error (void)
 {
-  char *s = lua_getstring(lua_getparam(1));
-  if (s == NULL) s = "(no message)";
-  lua_error(s);
+  lua_error(lua_getstring(lua_getparam(1)));
 }
 
 
@@ -262,7 +247,7 @@ static int getnarg (lua_Object table)
 static void luaI_call (void)
 {
   lua_Object f = luaL_nonnullarg(1);
-  lua_Object arg = tablearg(2);
+  lua_Object arg = luaL_tablearg(2);
   char *options = luaL_opt_string(3, "");
   lua_Object err = lua_getparam(4);
   int narg = getnarg(arg);
@@ -302,7 +287,7 @@ static void luaI_call (void)
 
 static void settag (void)
 {
-  lua_Object o = tablearg(1);
+  lua_Object o = luaL_tablearg(1);
   lua_pushobject(o);
   lua_settag(luaL_check_number(2));
 }
@@ -354,7 +339,7 @@ static void gettagmethod (void)
 
 static void seterrormethod (void)
 {
-  lua_Object nf = functionarg(1);
+  lua_Object nf = luaL_functionarg(1);
   lua_pushobject(nf);
   lua_pushobject(lua_seterrormethod());
 }

+ 3 - 2
ldo.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ldo.c,v 1.12 1997/11/26 20:44:52 roberto Exp roberto $
+** $Id: ldo.c,v 1.13 1997/11/27 18:25:14 roberto Exp roberto $
 ** Stack and Call structure of Lua
 ** See Copyright Notice in lua.h
 */
@@ -381,6 +381,7 @@ int lua_dofile (char *filename)
 
 
 #define SIZE_PREF 20  /* size of string prefix to appear in error messages */
+#define SSIZE_PREF "20"
 
 
 int lua_dostring (char *str)
@@ -390,7 +391,7 @@ int lua_dostring (char *str)
   char *temp;
   ZIO z;
   if (str == NULL) return 1;
-  sprintf(buff, "(dostring) >> %.20s", str);
+  sprintf(buff, "(dostring) >> %." SSIZE_PREF "s", str);
   temp = strchr(buff, '\n');
   if (temp) *temp = 0;  /* end string after first line */
   luaZ_sopen(&z, str);

+ 5 - 5
lfunc.c

@@ -1,6 +1,6 @@
 /*
-** $Id: lfunc.c,v 1.5 1997/10/24 17:17:24 roberto Exp roberto $
-** Lua Funcion auxiliar
+** $Id: lfunc.c,v 1.6 1997/11/19 17:29:23 roberto Exp roberto $
+** Auxiliar functions to manipulate prototypes and closures
 ** See Copyright Notice in lua.h
 */
 
@@ -11,8 +11,8 @@
 #include "lmem.h"
 #include "lstate.h"
 
-#define gcsizeproto(p)	5
-#define gcsizeclosure(c) 1
+#define gcsizeproto(p)	5  /* approximate "weight" for a prototype */
+#define gcsizeclosure(c) 1  /* approximate "weight" for a closure */
 
 
 
@@ -83,7 +83,7 @@ void luaF_freeclosure (Closure *l)
 
 
 /*
-** Look for n-esim local variable at line "line" in function "func".
+** Look for n-th local variable at line "line" in function "func".
 ** Returns NULL if not found.
 */
 char *luaF_getlocalname (TProtoFunc *func, int local_number, int line)

+ 1 - 2
lgc.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lgc.c,v 1.9 1997/11/27 15:59:25 roberto Exp roberto $
+** $Id: lgc.c,v 1.10 1997/12/01 20:31:25 roberto Exp roberto $
 ** Garbage Collector
 ** See Copyright Notice in lua.h
 */
@@ -268,7 +268,6 @@ long lua_collectgarbage (long limit)
   luaF_freeclosure(freeclos);
   luaM_clearbuffer();
   recovered = recovered-L->nblocks;
-/*printf("==total %ld  coletados %ld\n", L->nblocks+recovered, recovered);*/
   L->GCthreshold = (limit == 0) ? 2*L->nblocks : L->nblocks+limit;
   return recovered;
 }

+ 4 - 4
liolib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: liolib.c,v 1.7 1997/11/27 15:59:44 roberto Exp roberto $
+** $Id: liolib.c,v 1.8 1997/11/28 12:40:37 roberto Exp roberto $
 ** Standard I/O (and system) library
 ** See Copyright Notice in lua.h
 */
@@ -28,7 +28,7 @@
 #define LC_MONETARY	0
 #define LC_NUMERIC	0
 #define LC_TIME		0
-#define strerror(e)	"O.S. is unable to define the error"
+#define strerror(e)	"(no error message provided by operating system)"
 #endif
 
 
@@ -72,7 +72,7 @@ static int ishandler (lua_Object f)
 {
   if (lua_isuserdata(f)) {
     if (lua_tag(f) == gettag(CLOSEDTAG))
-      lua_error("trying to access a closed file");
+      lua_error("cannot access a closed file");
     return lua_tag(f) == gettag(IOTAG);
   }
   else return 0;
@@ -82,7 +82,7 @@ static FILE *getfile (char *name)
 {
   lua_Object f = lua_getglobal(name);
   if (!ishandler(f))
-      luaL_verror("global variable %.50s is not a file handle", name);
+      luaL_verror("global variable `%.50s' is not a file handle", name);
   return lua_getuserdata(f);
 }
 

+ 4 - 4
llex.c

@@ -1,5 +1,5 @@
 /*
-** $Id: llex.c,v 1.8 1997/11/21 19:00:46 roberto Exp roberto $
+** $Id: llex.c,v 1.9 1997/12/02 12:43:54 roberto Exp roberto $
 ** Lexical Analizer
 ** See Copyright Notice in lua.h
 */
@@ -166,7 +166,7 @@ static void inclinenumber (LexState *LS)
         /* go through */
       case 5:  /* if */
         if (LS->iflevel == MAX_IFS-1)
-          luaY_syntaxerror("too many nested `$ifs'", "$if");
+          luaY_syntaxerror("too many nested $ifs", "$if");
         readname(LS, buff);
         LS->iflevel++;
         LS->ifstate[LS->iflevel].elsepart = 0;
@@ -181,7 +181,7 @@ static void inclinenumber (LexState *LS)
                                       LS->ifstate[LS->iflevel].condition;
         break;
       default:
-        luaY_syntaxerror("invalid pragma", buff);
+        luaY_syntaxerror("unknown pragma", buff);
     }
     skipspace(LS);
     if (LS->current == '\n')  /* pragma must end with a '\n' ... */
@@ -414,7 +414,7 @@ int luaY_lex (YYSTYPE *l)
       case EOZ:
         save(LS, 0);
         if (LS->iflevel > 0)
-          luaY_error("missing $endif");
+          luaY_syntaxerror("input ends inside a $if", "");
         return 0;
 
       default:

+ 6 - 19
lmathlib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lmathlib.c,v 1.5 1997/11/19 18:16:33 roberto Exp roberto $
+** $Id: lmathlib.c,v 1.6 1997/11/28 12:39:22 roberto Exp roberto $
 ** Lua standard mathematical library
 ** See Copyright Notice in lua.h
 */
@@ -12,28 +12,15 @@
 #include "lua.h"
 #include "lualib.h"
 
-#ifndef PI
+#ifdef M_PI
+#define PI                      M_PI
+#else
 #define PI          ((double)3.14159265358979323846)
 #endif
 
 
-
-#define FROMRAD(a) ((a)/torad())
-#define TORAD(a)    ((a)*torad())
-
-
-static double torad (void)
-{
-  char *s = luaL_opt_string(2, "d");
-  switch (*s) {
-    case 'd' : return PI/180.0;
-    case 'r' : return (double)1.0;
-    case 'g' : return PI/50.0;
-    default:
-      luaL_arg_check(0, 2, "invalid mode");
-      return 0;  /* to avoid warnings */
-  }
-}
+#define FROMRAD(a) ((a)*(180.0/PI))
+#define TORAD(a)    ((a)*(PI/180.0))
 
 
 static void math_abs (void)

+ 3 - 3
lstring.c

@@ -1,6 +1,6 @@
 /*
-** $Id: lstring.c,v 1.6 1997/11/21 19:00:46 roberto Exp roberto $
-** String table (keep all strings handled by Lua)
+** $Id: lstring.c,v 1.7 1997/12/01 20:31:25 roberto Exp roberto $
+** String table (keeps all strings handled by Lua)
 ** See Copyright Notice in lua.h
 */
 
@@ -17,7 +17,7 @@
 #define NUM_HASHS  61
 
 
-#define gcsizestring(l)	(1+(l/64))
+#define gcsizestring(l)	(1+(l/64))  /* "weight" for a string with length 'l' */
 
 
 

+ 4 - 4
lstrlib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lstrlib.c,v 1.1 1997/09/16 19:25:59 roberto Exp roberto $
+** $Id: lstrlib.c,v 1.2 1997/11/26 18:53:45 roberto Exp roberto $
 ** Standard library for strings and pattern-matching
 ** See Copyright Notice in lua.h
 */
@@ -283,7 +283,7 @@ static char *matchitem (char *s, char *p, int level, char **ep)
     else if (*p == 'b') {  /* balanced string */
       p++;
       if (*p == 0 || *(p+1) == 0)
-        lua_error("bad balanced pattern specification");
+        lua_error("unbalanced pattern");
       *ep = p+2;
       return matchbalance(s, *p, *(p+1));
     }
@@ -484,7 +484,7 @@ static void str_format (void)
       arg++;
       strncpy(form+1, initf, strfrmt-initf+1); /* +1 to include convertion */
       form[strfrmt-initf+2] = 0;
-      buff = openspace(1000);  /* to store the formated value */
+      buff = openspace(1000);  /* to store the formatted value */
       switch (*strfrmt++) {
         case 'q':
           luaI_addquoted(luaL_check_string(arg));
@@ -503,7 +503,7 @@ static void str_format (void)
           sprintf(buff, form, luaL_check_number(arg));
           break;
         default:  /* also treat cases 'pnLlh' */
-          lua_error("invalid format option in function `format'");
+          lua_error("invalid option in `format'");
       }
       lbuffer.size += strlen(buff);
     }

+ 2 - 2
ltable.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ltable.c,v 1.6 1997/11/19 17:29:23 roberto Exp roberto $
+** $Id: ltable.c,v 1.7 1997/11/21 19:00:46 roberto Exp roberto $
 ** Lua tables (hash)
 ** See Copyright Notice in lua.h
 */
@@ -44,7 +44,7 @@ static long int hashindex (TObject *ref)
       break;
     default:
       lua_error("unexpected type to index table");
-      h = 0;  /* UNREACHEABLE */
+      h = 0;  /* to avoid warnings */
   }
   return (h >= 0 ? h : -(h+1));
 }

+ 5 - 3
lua.h

@@ -1,13 +1,15 @@
 /*
-** $Id: lua.h,v 1.7 1997/11/27 18:25:14 roberto Exp roberto $
+** $Id: lua.h,v 1.8 1997/12/01 20:31:25 roberto Exp roberto $
 ** Lua - An Extensible Extension Language
 ** TeCGraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil
 ** e-mail: [email protected]
+** www: http://www.tecgraf.puc-rio.br/lua/
 */
 
 /*********************************************************************
-* Copyright  © 1994-1996 TeCGraf, PUC-Rio.  Written by Waldemar Ce­
-* les Filho, Roberto Ierusalimschy and Luiz Henrique de Figueiredo.
+* Copyright  © 1994-1996 TeCGraf, PUC-Rio.
+* Written by Waldemar Celes Filho, Roberto Ierusalimschy and
+* Luiz Henrique de Figueiredo.
 * All rights reserved.
 * 
 * Permission is hereby granted, without written agreement and with­

+ 15 - 9
lua.stx

@@ -1,6 +1,6 @@
 %{
 /*
-** $Id: lua.stx,v 1.19 1997/11/21 19:00:46 roberto Exp roberto $
+** $Id: lua.stx,v 1.20 1997/12/02 12:43:54 roberto Exp roberto $
 ** Syntax analizer and code generator
 ** See Copyright Notice in lua.h
 */
@@ -26,6 +26,10 @@
 int luaY_parse (void);
 
 
+#define AMES_LIM(x)		#x
+#define MES_LIM(x)	"(limit=" AMES_LIM(x) ")"
+
+
 /* size of a "normal" jump instruction: OpCode + 1 byte */
 #define JMPSIZE	2
 
@@ -43,6 +47,8 @@ int luaY_parse (void);
 /* maximum number of upvalues */
 #define MAXUPVALUES 16
 
+
+
 /*
 ** Variable descriptor:
 ** if 0<n<MINGLOBAL, represents local variable indexed by (n-1);
@@ -132,7 +138,7 @@ static void deltastack (int delta)
   L->currState->stacksize += delta;
   if (L->currState->stacksize > L->currState->maxstacksize) {
     if (L->currState->stacksize > 255)
-      luaY_error("function/expression too complex (limit 256)");
+      luaY_error("function/expression too complex");
     L->currState->maxstacksize = L->currState->stacksize;
   }
 }
@@ -156,7 +162,7 @@ static int code_oparg_at (int pc, OpCode op, int builtin, int arg, int delta)
     L->currState->f->code[pc+2] = arg>>8;
     return 3;
   }
-  else luaY_error("code too long (limit 64K)");
+  else luaY_error("code too long " MES_LIM(64K));
   return 0;   /* to avoid warnings */
 }
 
@@ -314,7 +320,7 @@ static void store_localvar (TaggedString *name, int n)
   if (L->currState->nlocalvar+n < MAXLOCALS)
     L->currState->localvar[L->currState->nlocalvar+n] = name;
   else
-    luaY_error("too many local variables (limit 32)");
+    luaY_error("too many local variables " MES_LIM(MAXLOCALS));
   luaI_registerlocalvar(name, L->lexstate->linenumber);
 }
 
@@ -341,7 +347,7 @@ static vardesc var2store (vardesc var)
 static void add_varbuffer (vardesc var, int n)
 {
   if (n >= MAXVAR)
-    luaY_error("variable buffer overflow (limit 32)");
+    luaY_error("variable buffer overflow " MES_LIM(MAXVAR));
   L->currState->varbuffer[n] = var2store(var);
 }
 
@@ -379,7 +385,7 @@ static int indexupvalue (TaggedString *n)
   }
   /* new one */
   if (++(L->currState->nupvalues) > MAXUPVALUES)
-    luaY_error("too many upvalues in a single function (limit 16)");
+    luaY_error("too many upvalues in a single function " MES_LIM(MAXUPVALUES));
   L->currState->upvalues[i] = v;  /* i = L->currState->nupvalues - 1 */
   return i;
 }
@@ -493,7 +499,7 @@ static int lua_codestore (int i, int left)
   }
   else {  /* indexed var with values in between*/
     code_oparg(SETTABLE, 0, left+i, -1);
-    return left+2;  /* table/index are not poped, since they are not on top */
+    return left+2;  /* table/index are not popped, since they are not on top */
   }
 }
 
@@ -580,7 +586,7 @@ static void init_state (TaggedString *filename)
 static void init_func (void)
 {
   if (L->currState-L->mainState >= MAXSTATES-1)
-    luaY_error("too many nested functions (limit 6)");
+    luaY_error("too many nested functions " MES_LIM(MAXSTATES));
   L->currState++;
   init_state(L->mainState->f->fileName);
   luaY_codedebugline(L->lexstate->linenumber);
@@ -604,7 +610,7 @@ static TProtoFunc *close_func (void)
 
 
 /*
-** Parse LUA code.
+** Parse Lua code.
 */
 TProtoFunc *luaY_parser (ZIO *z, char *chunkname)
 {

+ 3 - 3
lvm.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lvm.c,v 1.14 1997/11/19 17:29:23 roberto Exp roberto $
+** $Id: lvm.c,v 1.15 1997/11/21 19:00:46 roberto Exp roberto $
 ** Lua virtual machine
 ** See Copyright Notice in lua.h
 */
@@ -213,7 +213,7 @@ static void call_binTM (IMS event, char *msg)
 
 static void call_arith (IMS event)
 {
-  call_binTM(event, "unexpected type at arithmetic operation");
+  call_binTM(event, "unexpected type in arithmetic operation");
 }
 
 
@@ -229,7 +229,7 @@ static void comparison (lua_Type ttype_less, lua_Type ttype_equal,
   else if (ttype(l) == LUA_T_STRING && ttype(r) == LUA_T_STRING)
     result = strcoll(svalue(l), svalue(r));
   else {
-    call_binTM(op, "unexpected type at comparison");
+    call_binTM(op, "unexpected type in comparison");
     return;
   }
   S->top--;