@@ -1304,12 +1304,18 @@ protected function addForLoopScopeConst "function: addForLoopScopeConst
13041304 input Ident i;
13051305 input DAE.Type typ;
13061306 output Env.Env env_2;
1307- list<Env.Frame> env_1,env_2;
1307+ list<Env.Frame> env_1,env_2; // Two env_2?
13081308algorithm
13091309 env_1 := Env.openScope(env, false, SOME("$for loop scope$")) "encapsulated?" ;
1310- env_2 := Env.extendFrameV(env_1,
1310+ // Defining the iterator as a parameter causes it to be constant evaluated in
1311+ // cases such as 'r[i] for i in 1:n' => 'r[1]', so it should probably be a
1312+ // variable instead.
1313+ /*env_2 := Env.extendFrameV(env_1,
13111314 DAE.TYPES_VAR(i,DAE.ATTR(false,false,SCode.RW(),SCode.PARAM(),Absyn.BIDIR(),Absyn.UNSPECIFIED()),
1312- false,typ,DAE.VALBOUND(Values.INTEGER(1))), NONE, Env.VAR_UNTYPED(), {});
1315+ false,typ,DAE.VALBOUND(Values.INTEGER(1))), NONE, Env.VAR_UNTYPED(), {});*/
1316+ env_2 := Env.extendFrameV(env_1,
1317+ DAE.TYPES_VAR(i,DAE.ATTR(false,false,SCode.RW(),SCode.VAR(),Absyn.BIDIR(),Absyn.UNSPECIFIED()),
1318+ false,typ,DAE.UNBOUND()), NONE, Env.VAR_UNTYPED(), {});
13131319end addForLoopScopeConst;
13141320
13151321protected function elabCallReduction
0 commit comments