Skip to content

Commit

Permalink
Fixes for bug #1275:
Browse files Browse the repository at this point in the history
- Allow arrays in instBuiltinAttribute when checkModel is used, so that
  checkModel can be used on array types with modifications.
- Added test case libraries/msl31/Modelica.Mechanics.MultiBody.


git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@6134 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
perost committed Sep 15, 2010
1 parent 5869308 commit 91cb5d0
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion Compiler/Inst.mo
Expand Up @@ -2254,14 +2254,24 @@ algorithm
local
Values.Value v; DAE.Type t_1,bindTp; DAE.Exp bind1;
DAE.Const c;
DAE.Dimension d;

case(cache,env,id,SOME(v),bind,expectedTp,DAE.PROP(bindTp,c))
equation
failure(equality(c=DAE.C_VAR));
(bind1,t_1) = Types.matchType(bind,bindTp,expectedTp,true);
then DAE.TYPES_VAR(id,DAE.ATTR(false,false,SCode.RO(),SCode.PARAM(),Absyn.BIDIR(),Absyn.UNSPECIFIED()),
false,t_1,DAE.EQBOUND(bind1,SOME(v),DAE.C_PARAM(),DAE.BINDING_FROM_DEFAULT_VALUE()),NONE());


case(cache,env,id,SOME(v),bind,expectedTp,DAE.PROP(bindTp as (DAE.T_ARRAY(arrayDim = d),_),c))
equation
failure(equality(c=DAE.C_VAR));
true = OptManager.getOption("checkModel");
expectedTp = Types.liftArray(expectedTp, d);
(bind1,t_1) = Types.matchType(bind,bindTp,expectedTp,true);
then DAE.TYPES_VAR(id,DAE.ATTR(false,false,SCode.RO(),SCode.PARAM(),Absyn.BIDIR(),Absyn.UNSPECIFIED()),
false,t_1,DAE.EQBOUND(bind1,SOME(v),DAE.C_PARAM(),DAE.BINDING_FROM_DEFAULT_VALUE()),NONE());

case(cache,env,id,_,bind,expectedTp,DAE.PROP(bindTp,c))
equation
failure(equality(c=DAE.C_VAR));
Expand All @@ -2270,6 +2280,16 @@ algorithm
then DAE.TYPES_VAR(id,DAE.ATTR(false,false,SCode.RO(),SCode.PARAM(),Absyn.BIDIR(),Absyn.UNSPECIFIED()),
false,t_1,DAE.EQBOUND(bind1,SOME(v),DAE.C_PARAM(),DAE.BINDING_FROM_DEFAULT_VALUE()),NONE());

case(cache,env,id,_,bind,expectedTp,DAE.PROP(bindTp as (DAE.T_ARRAY(arrayDim = d),_),c))
equation
failure(equality(c=DAE.C_VAR));
true = OptManager.getOption("checkModel");
expectedTp = Types.liftArray(expectedTp, d);
(bind1,t_1) = Types.matchType(bind,bindTp,expectedTp,true);
(cache,v,_) = Ceval.ceval(cache,env, bind1, false, NONE, NONE, Ceval.NO_MSG());
then DAE.TYPES_VAR(id,DAE.ATTR(false,false,SCode.RO(),SCode.PARAM(),Absyn.BIDIR(),Absyn.UNSPECIFIED()),
false,t_1,DAE.EQBOUND(bind1,SOME(v),DAE.C_PARAM(),DAE.BINDING_FROM_DEFAULT_VALUE()),NONE());

case(cache,env,id,_,bind,expectedTp,DAE.PROP(bindTp,c))
equation
failure(equality(c=DAE.C_VAR));
Expand Down

0 comments on commit 91cb5d0

Please sign in to comment.