Changeset 2894deef in OpenModelica


Ignore:
Timestamp:
2016-04-06T19:48:13+02:00 (8 years ago)
Author:
Martin Sjölund <martin.sjolund@…>
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:
000a65f
Parents:
96898a5d
git-author:
Martin Sjölund <martin.sjolund@…> (04/06/16 19:26:25)
git-committer:
Martin Sjölund <martin.sjolund@…> (04/06/16 19:48:13)
Message:

Do not allocate memory to traverse prefix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Compiler/FrontEnd/PrefixUtil.mo

    raea896ce r2894deef  
    301301  output Absyn.Path outPath;
    302302algorithm
    303   outPath := matchcontinue (inPrefix)
     303  outPath := match inPrefix
     304    local
     305      Prefix.ComponentPrefix ss;
     306    case Prefix.PREFIX(ss,_) then componentPrefixToPath(ss);
     307  end match;
     308end prefixToPath;
     309
     310protected function componentPrefixToPath "Convert a Prefix to a Path"
     311  input Prefix.ComponentPrefix pre;
     312  output Absyn.Path path;
     313algorithm
     314  path := match pre
    304315    local
    305316      String s;
    306       Absyn.Path p;
    307317      Prefix.ComponentPrefix ss;
    308       Prefix.ClassPrefix cp;
    309 
    310     case Prefix.NOPRE()
    311       equation
    312         /*Print.printBuf("#-- Error: Cannot convert empty prefix to a path\n");*/
    313       then
    314         fail();
    315     case Prefix.PREFIX(Prefix.PRE(prefix = s,next = Prefix.NOCOMPPRE()),_) then Absyn.IDENT(s);
    316     case Prefix.PREFIX(Prefix.PRE(prefix = s,next = ss),cp)
    317       equation
    318         p = prefixToPath(Prefix.PREFIX(ss,cp));
    319       then
    320         Absyn.QUALIFIED(s,p);
    321   end matchcontinue;
    322 end prefixToPath;
     318    case Prefix.PRE(prefix = s,next = Prefix.NOCOMPPRE())
     319      then Absyn.IDENT(s);
     320    case Prefix.PRE(prefix = s,next = ss)
     321      then Absyn.QUALIFIED(s,componentPrefixToPath(ss));
     322  end match;
     323end componentPrefixToPath;
    323324
    324325public function prefixCref "Prefix a ComponentRef variable by adding the supplied prefix to
Note: See TracChangeset for help on using the changeset viewer.