Browse Source

Correct line in error message for constant function

Roberto Ierusalimschy 2 months ago
parent
commit
7dc6aae290
2 changed files with 8 additions and 1 deletions
  1. 1 1
      lparser.c
  2. 7 0
      testes/goto.lua

+ 1 - 1
lparser.c

@@ -1858,8 +1858,8 @@ static void funcstat (LexState *ls, int line) {
   expdesc v, b;
   luaX_next(ls);  /* skip FUNCTION */
   ismethod = funcname(ls, &v);
-  body(ls, &b, ismethod, line);
   check_readonly(ls, &v);
+  body(ls, &b, ismethod, line);
   luaK_storevar(ls->fs, &v, &b);
   luaK_fixline(ls->fs, line);  /* definition "happens" in the first line */
 }

+ 7 - 0
testes/goto.lua

@@ -342,6 +342,13 @@ do
     global foo <const>;
     function foo (x) return end   -- ERROR: foo is read-only
   ]], "assign to const variable 'foo'")
+
+  checkerr([[
+    global foo <const>;
+    function foo (x)    -- ERROR: foo is read-only
+      return
+    end
+  ]], "%:2%:")   -- correct line in error message
   
 end