]> Nishi Git Mirror - gwion.git/commitdiff
:art: foreach
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Fri, 14 Aug 2020 10:43:31 +0000 (12:43 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Fri, 14 Aug 2020 10:43:31 +0000 (12:43 +0200)
13 files changed:
ast
examples/auto.gw
src/parse/check.c
tests/error/auto_not_array.gw
tests/error/null_auto.gw
tests/range/range_char.gw
tests/range/range_int.gw
tests/tree/auto_array.gw
tests/tree/auto_fun.gw
tests/tree/auto_ptr.gw
tests/tree/cpy_ast.gw
tests/tree/set_obj.gw
tests/tree/typedef_auto_loop.gw

diff --git a/ast b/ast
index a900e6c56c8d1e6d89221df0401dc27150218b0d..793836da41b41f3a4ff1e968f6849275d0224ba9 160000 (submodule)
--- a/ast
+++ b/ast
@@ -1 +1 @@
-Subproject commit a900e6c56c8d1e6d89221df0401dc27150218b0d
+Subproject commit 793836da41b41f3a4ff1e968f6849275d0224ba9
index 13a427c0e97f574ae7b900bfcfa12cc83621362e..bb91217b4c26823dde10c0b06617344e07ba1691 100644 (file)
@@ -1,3 +1,3 @@
 Object i[4];
-for(auto a: i)
+foreach(a: i)
   <<< a >>>;
index bbeee4600f2940a019be8e2a79228ca781b25164..c69730729ff25b5b2f0b0b0cbeaa8fed6983a32d 100644 (file)
@@ -831,8 +831,10 @@ ANN static Type check_exp_binary(const Env env, const Exp_Binary* bin) {
   CHECK_OO(check_exp(env, bin->lhs))
   const m_bool is_auto = bin->rhs->exp_type == ae_exp_decl && bin->rhs->d.exp_decl.type == env->gwion->type[et_auto];
   if(is_auto)
-    bin->rhs->info->type = bin->rhs->d.exp_decl.type = bin->lhs->info->type;
+    bin->rhs->d.exp_decl.type = bin->lhs->info->type;
   CHECK_OO(check_exp(env, bin->rhs))
+  if(is_auto)
+    bin->rhs->info->type = bin->lhs->info->type;
   struct Op_Import opi = { .op=bin->op, .lhs=bin->lhs->info->type,
     .rhs=bin->rhs->info->type, .data=(uintptr_t)bin, .pos=exp_self(bin)->pos, .op_type=op_binary };
   const Type ret = op_check(env, &opi);
index 95170ee8bab6cc3c46a7d888e64341a92e5b2a1e..6a36420705348cf33830ecc3fca4716aeeeebd7c 100644 (file)
@@ -1,4 +1,4 @@
 #! [contains]  not allowed in auto loop
 Object i;
-for(auto a: i)
+foreach(a: i)
   <<< a >>>;
index 673ee992b90dbf506c72dad29c95490e8d7a7f54..08638ea7e695b6a93c7bdeeb581a25fc6f426f9f 100644 (file)
@@ -1,4 +1,4 @@
 #! [contains] NullPtrException
 int i[];
-for(auto a : i)
+foreach(a : i)
  <<< a >>>;
index 39c40da41dff82292405af8c2eb508b166337400..7be542854355f3308b113734cf28e8d40719ea9f 100644 (file)
@@ -1,3 +1,3 @@
 #! [contains] b
-for(auto a : [ 'a' : 'c' ])
+foreach(a : [ 'a' : 'c' ])
    <<< a >>>;
index 7aaa7a38ba65718e75fa83aa4d2daa001d0fba59..870d1fd17557c2a1ffbbe96ec37511aad8d7ad7a 100644 (file)
@@ -1,3 +1,3 @@
 #! [contains] \-5
-for(auto a : [ -1 : -6 ])
+foreach(a : [ -1 : -6 ])
    <<< a >>>;
index f4d33e6ea8411c502698963952458e6c302a1c5c..0306b9b0209ae014bfbb270b9e1653b0591feb0b 100644 (file)
@@ -1,4 +1,4 @@
 int i[2][2];
-for(auto ref a : i)
+foreach(ref a : i)
    <<< a >>>;
 <<< i >>>;
index 30eaf3d33fad1db1bd79f80157b47f6e10a4b212..12d1d89beab1ffeaab84b347eec46437858090de 100644 (file)
@@ -4,6 +4,6 @@ class C {
 
 C i[2];
 
-for(auto ref a : i)
+foreach(ref a : i)
      <<< a >>>;
 
index 10af68c8dcd0f25bcb5789ecefebcc764440300d..b8fe29efb541e20a9490351f94c110f97cff9d14 100644 (file)
@@ -1,5 +1,5 @@
 <~int~>Ptr ptr;
 int i[4];
-for(auto ref a : i)
+foreach(ref a : i)
   <<< *a >>>;
 <<< ptr >>>;
index c0d2c2f93838064aeed2b38067562e98d645bf6a..1266d89d048a7360107989b85fc4cfb91b9298e5 100644 (file)
@@ -15,7 +15,7 @@ class <~A~>C {
   for(int; i < 1; ++i);
   int array[2];
   array[0];
-  for(auto a : array);
+  foreach(a : array);
   repeat(1);
   match i,2 {
     case 12 when 0:;
index 043de2bc43419d81245a7a598057c6432f353552..30e835ce97d5d391136dc28322ff3b55b63c1af9 100644 (file)
@@ -1,4 +1,4 @@
 typedef int[2]Type;
 Type nonnull type;
 <<<type>>>;
-for(auto ref a : type);
+foreach(ref a : type);
index cadca626b9bd273f37766722f91258039ad11a80..37e58a13df7161d1cc564c4bef73259d365ba333 100644 (file)
@@ -1,3 +1,3 @@
 typedef int[2] Type;
 Type type;
-for(auto a : type);
+foreach(a : type);