Changeset 12133


Ignore:
Timestamp:
Dec 12, 2018 5:23:46 PM (12 months ago)
Author:
Jonathan Kämpe
Message:

#5714 Merging some refactoring to trunk

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/Compiler/ModelicaFrontEnd/src/jastadd/util/Util.jrag

    r11971 r12133  
    12071207    eq FVariable.isTemporary()                  = getVisibilityType().isTemporary();
    12081208
     1209    syn boolean FAbstractVariable.isInterface() = false;
     1210    eq FVariable.isInterface()                  = getVisibilityType().isInterface();
     1211
    12091212    syn boolean FAbstractVariable.isFromExpandableConnector() = false;
    12101213    eq FVariable.isFromExpandableConnector()                  =
  • trunk/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/ast/prefixes/VisibilityType.java

    r11419 r12133  
    22
    33public enum VisibilityType {
    4 
    5     PUBLIC,
    6     PROTECTED,
     4    /*
     5     * ordinal() is used for alias elimination so the order
     6     * here is important.
     7     */
     8    HIDDEN,
    79    TEMPORARY,
    810    EXPANDABLE,
     11    PROTECTED,
     12    PUBLIC,
    913    RUNTIME_OPTION,
    10     HIDDEN;
     14    INTERFACE;
     15   
     16    public boolean isInterface() {
     17        return this == INTERFACE;
     18    }
    1119   
    1220    public boolean isPublic() {
  • trunk/Compiler/ModelicaMiddleEnd/src/jastadd/optimizations/AliasElimination.jrag

    r12006 r12133  
    165165    eq FVariable.canBeAlias() = !getFAccess().myDerFV(order() + 1).isDummyDerivativeVariable()
    166166            && !isPreVariable() && !isNonDummyDerivativeVariable()
    167             && !isInput() && !isOutput() && !isIndependentParameter();
     167            && !isInput() && !isOutput() && !isIndependentParameter()
     168            && !isInterface();
    168169
    169170    syn int FExp.aliasSign() = 1;
  • trunk/Compiler/ModelicaMiddleEnd/src/jastadd/optimizations/AliasVariables.jadd

    r11753 r12133  
    923923    syn long FVariable.aliasHeuristicScore() {
    924924        long score = 0;
    925 
    926         if (!getVisibilityType().isHidden()) {
    927             score += 1;
    928         }
    929 
    930         // Temporary variables added during transformations or in expandable connectors.
    931         score *= 10;
    932         if (isFromExpandableConnector()) {
    933             score += 1;
    934         } else if (!isTemporary()) {
    935             score += 2;
    936         }
    937 
    938         // Input
    939         score *= 10;
    940         if (isInput()) {
    941             score += 1;
    942         }
    943 
     925       
     926        VisibilityType t = getVisibilityType();
     927        if (t.isProtected()) {
     928            // Some models fail to simulate without this
     929            t = VisibilityType.PUBLIC;
     930        }
     931        score += t.ordinal();
     932       
    944933        // Parameter
    945934        score *= 10;
  • trunk/Compiler/ModelicaMiddleEnd/test/modelica/TransformCanonicalTests.mo

    r12006 r12133  
    14031403")})));
    14041404    end AliasTest36;
     1405
     1406model AliasVisibility1
     1407    Real a;
     1408protected
     1409    Real b(start=1);
     1410equation
     1411    a = b;
     1412    a = time;
     1413
     1414    annotation(__JModelica(UnitTesting(tests={
     1415        TransformCanonicalTestCase(
     1416         name="AliasVisibility1",
     1417         description="",
     1418         flatModel="
     1419fclass TransformCanonicalTests.AliasVisibility1
     1420protected
     1421 Real b(start = 1);
     1422equation
     1423 b = time;
     1424end TransformCanonicalTests.AliasVisibility1;
     1425")})));
     1426end AliasVisibility1;
    14051427
    14061428model AliasFuncTest1
Note: See TracChangeset for help on using the changeset viewer.