]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve lexer/parser/macros/strings
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 15 Mar 2021 00:16:18 +0000 (01:16 +0100)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 15 Mar 2021 00:16:18 +0000 (01:16 +0100)
ast
src/parse/check.c
tests/error/func_no_match.gw
tests/pp/already_defined.gw
tests/pp/call_too_many.gw
tests/pp/undefined_macro.gw

diff --git a/ast b/ast
index 0bcba3a1156c0ca3c5af5488336e5fb092ac2cf8..7d64efec6200c89dd2e02dd5ee70ceacb1cea8a2 160000 (submodule)
--- a/ast
+++ b/ast
@@ -1 +1 @@
-Subproject commit 0bcba3a1156c0ca3c5af5488336e5fb092ac2cf8
+Subproject commit 7d64efec6200c89dd2e02dd5ee70ceacb1cea8a2
index ed9e1218c9e7989b7cb8405ee12298c85e45fdf0..d2545a038b9364185b68a32c9b7d1c92fdfb9877 100644 (file)
@@ -543,7 +543,7 @@ ANN static void print_arg(Arg_List e) {
 }
 
 ANN2(1) static void function_alternative(const Env env, const Type f, const Exp args, const loc_t pos){
-  if(env->context->error) // needed for ufcs
+  if(env->context && env->context->error) // needed for ufcs
     return;
   gwerr_basic("Argument type mismatch", "call site", "valid alternatives:",
     env->name, pos, 0);
@@ -728,7 +728,8 @@ ANN Type check_exp_call1(const Env env, Exp_Call *const exp) {
     exp->func->type = func->value_ref->type;
     return func->def->base->ret_type;
   }
-  function_alternative(env, exp->func->type, exp->args, exp->args->pos);
+  const loc_t pos = exp->args ? exp->args->pos : exp->func->pos;
+  function_alternative(env, exp->func->type, exp->args, pos);
   return NULL;
 }
 
index 05961a5bf48cc7a58a181e74b4c1776d587677a4..be3996f8a29c58f905cc53dfb7c2f23dfaaf0456 100644 (file)
@@ -1,4 +1,4 @@
-#! [contains] argument type(s) do not match for fun
+#! [contains] Argument type mismatch
 fun void test(){}
 fun void test(int i[], int j[]){}
 test(1,2);
index 6af0964da67ebe150070cb529c45f170861ff4aa..4dabbcf1ff8c4ae27252e47be2c9381ecb97e16f 100644 (file)
@@ -1,3 +1,3 @@
-#! [contains] macro already defined
+#! [contains] Already defined
 #define macro
 #define macro
index b133de5a4107d5cdfabb6afec054a876a54a47a4..6c41b569e1daad07b4ac9abb732ebb174a4b32ba 100644 (file)
@@ -1,3 +1,3 @@
-#! [contains] too many arguments
+#! [contains] Too many arguments
 #define macro(a) a
 <<< macro(1,2) >>>;
index 5efd75d3fbe16558194bfa51c1facc85b60e201b..fbb6985054895ff0f97ce08c3b51b5d4c92f434f 100644 (file)
@@ -1,2 +1,2 @@
-#! [contains] undefined macro
+#! [contains] Undefined
 #undef macro