Changeset 5ed2c5e in OpenModelica


Ignore:
Timestamp:
2016-04-01T19:22:48+02:00 (8 years ago)
Author:
hudson <openmodelica@…>
Branches:
Added-citation-metadata, maintenance/v1.14, maintenance/v1.15, maintenance/v1.16, maintenance/v1.17, maintenance/v1.18, maintenance/v1.19, maintenance/v1.20, maintenance/v1.21, maintenance/v1.22, maintenance/v1.23, master, omlib-staging
Children:
141c87f0
Parents:
c914d20
git-author:
Martin Sjölund <martin.sjolund@…> (04/01/16 19:22:48)
git-committer:
hudson <openmodelica@…> (04/01/16 19:22:48)
Message:

Detect cardinality being used

Location:
Compiler/FrontEnd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Compiler/FrontEnd/NFSCodeDependency.mo

    rd41fb978 r5ed2c5e  
    278278  input Env inEnv;
    279279algorithm
    280   _ := matchcontinue(inItem, inEnv)
     280  // Check if the item is already marked as used, then we can stop here.
     281  if NFSCodeEnv.isItemUsed(inItem) then
     282    return;
     283  end if;
     284  _ := match(inItem, inEnv)
    281285    local
    282286      SCode.ClassDef cdef;
     
    288292      SCode.Comment cmt;
    289293
    290     // Check if the item is already marked as used, then we can stop here.
    291     case (_, _)
    292       equation
    293         true = NFSCodeEnv.isItemUsed(inItem);
    294       then
    295         ();
    296 
    297294    // A component, mark it and it's environment as used.
    298295    case (NFSCodeEnv.VAR(), env)
     
    312309        markItemAsUsed(inItem, env);
    313310        env = NFSCodeEnv.enterFrame(cls_env, env);
     311        if (if cls.name=="cardinality" then match inEnv case {NFSCodeEnv.FRAME(name=NONE())} then true; else false; end match else false) then
     312          System.setUsesCardinality(true);
     313        end if;
    314314        analyseClassDef(cdef, res, env, false, info);
    315315        analyseMetaType(res, env, info);
     
    329329        fail();
    330330
    331   end matchcontinue;
     331  end match;
    332332end analyseItem;
    333333
  • Compiler/FrontEnd/NFSCodeFlatten.mo

    redeb3209 r5ed2c5e  
    115115        System.tmpTickResetIndex(0, NFSCodeEnv.tmpTickIndex);
    116116        System.tmpTickResetIndex(1, NFSCodeEnv.extendsTickIndex);
     117        System.setUsesCardinality(false);
    117118        // TODO: Enable this when NFSCodeEnv.tmpTickIndex is removed.
    118119        //System.tmpTickResetIndex(0, NFSCodeEnv.tmpTickIndex);
     
    123124
    124125        (prog, env) = NFSCodeDependency.analyse(inClassName, env, prog);
    125         checkForCardinality(env);
    126126        (prog, env) = NFSCodeFlattenImports.flattenProgram(prog, env);
    127127
     
    143143  end matchcontinue;
    144144end flattenClassInProgram;
    145 
    146 protected function checkForCardinality
    147   "Checks if the cardinality operator is used or not and sets the system flag,
    148   so that some work can be avoided in Inst if cardinality isn't used."
    149   input Env inEnv;
    150 algorithm
    151   _ := matchcontinue(inEnv)
    152     case _
    153       equation
    154         (_, _, _) = NFSCodeLookup.lookupNameSilent(Absyn.IDENT("cardinality"),
    155           inEnv, Absyn.dummyInfo);
    156         System.setUsesCardinality(true);
    157       then
    158         ();
    159 
    160     else
    161       equation
    162         System.setUsesCardinality(false);
    163       then
    164         ();
    165 
    166   end matchcontinue;
    167 end checkForCardinality;
    168145
    169146public function flattenCompleteProgram
Note: See TracChangeset for help on using the changeset viewer.