Przeglądaj źródła

fix `read_literal`

blueloveTH 8 miesięcy temu
rodzic
commit
3688f69123
2 zmienionych plików z 4 dodań i 3 usunięć
  1. 1 1
      include/pocketpy/objects/error.h
  2. 3 2
      src/compiler/compiler.c

+ 1 - 1
include/pocketpy/objects/error.h

@@ -6,7 +6,7 @@
 typedef struct{
     SourceData_ src;
     int lineno;
-    char msg[100];
+    char msg[512];
 } Error;
 
 void py_BaseException__stpush(py_Ref, SourceData_ src, int lineno, const char* func_name);

+ 3 - 2
src/compiler/compiler.c

@@ -2346,7 +2346,9 @@ static Error* read_literal(Compiler* self, py_Ref out) {
             }
             return NULL;
         }
-        default: py_newnil(out); return NULL;
+        default: {
+            return SyntaxError(self, "expected a literal, got '%s'", TokenSymbols[prev()->type]);
+        }
     }
 }
 
@@ -2385,7 +2387,6 @@ static Error* _compile_f_args(Compiler* self, FuncDecl* decl, bool is_lambda) {
                 consume(TK_ASSIGN);
                 py_TValue value;
                 check(read_literal(self, &value));
-                if(py_isnil(&value)) return SyntaxError(self, "default argument must be a literal");
                 FuncDecl__add_kwarg(decl, name, &value);
             } break;
             case 3: