Changeset 13477


Ignore:
Timestamp:
Sep 13, 2019 6:43:45 PM (3 months ago)
Author:
amartensen
Message:

#5840 merge from trunk

Location:
branches/dev-2468
Files:
24 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/dev-2468

  • branches/dev-2468/Compiler/ModelicaFlatTree/src/jastadd/FlatAPI/FlatAPI.jrag

    r13357 r13477  
    3535import org.jmodelica.common.GUIDManager;
    3636import org.jmodelica.util.streams.StreamGobbler;
     37import org.jmodelica.common.ast.prefixes.CausalityConnectorPrefix.CausalPortsEvaluator;
    3738
    3839aspect FlatAPI {
     
    31633164   
    31643165    syn boolean FAbstractVariable.isInput() = false;
    3165     eq FVariable.isInput() = getCausalityConnectorPrefix().inputCausality();
    31663166    syn boolean FAbstractVariable.isOutput() = false;
    3167     eq FVariable.isOutput() = getCausalityConnectorPrefix().outputCausality();
    3168      
     3167    eq FVariable.isInput()          = getCausalityConnectorPrefix().inputCausality (this);
     3168    eq FVariable.isOutput()         = getCausalityConnectorPrefix().outputCausality(this);
     3169    eq FFunctionVariable.isInput()  = getCausalityConnectorPrefix().inputCausality (this);
     3170    eq FFunctionVariable.isOutput() = getCausalityConnectorPrefix().outputCausality(this);
     3171   
     3172    ASTNode implements CausalPortsEvaluator;
     3173    syn boolean ASTNode.useCausalPorts() = myOptions().causal_ports.getValue();
    31693174}
    31703175
  • branches/dev-2468/Compiler/ModelicaFlatTree/src/jastadd/FlatUtil.jrag

    r13396 r13477  
    707707    }
    708708   
     709   
     710    public abstract FAccess FAccess.copyAndAddSuffix(String suffix);
     711   
     712    public FAccessString FAccessEmpty.copyAndAddSuffix(String suffix) {
     713        throw new UnsupportedOperationException();
     714    }
     715   
     716    public FAccessString FAccessString.copyAndAddSuffix(String suffix) {
     717        String name = getName();
     718        String end = "";
     719        if (name.endsWith("'")) {
     720            name = name.substring(0, name.length() - 1);
     721            end = "'";
     722        }
     723        return new FAccessString(name + suffix + end);
     724    }
     725   
     726    public FAccessFull FAccessFull.copyAndAddSuffix(String suffix) {
     727        FAccessFull res = fullCopy();
     728        String name = res.getFAccessPart(0).getName();
     729        String end = "";
     730        if (name.endsWith("'")) {
     731            name = name.substring(0, name.length() - 1);
     732            end = "'";
     733        }
     734        res.getFAccessPart(0).setName(name + suffix + end);
     735        return res;
     736    }
     737   
    709738    /**
    710739     * Create a copy of the name, with an FSubscript added to the last part.
     
    11121141    syn boolean FFunctionCall.isPartialFunctionCall() = false;
    11131142    eq FPartialFunctionCall.isPartialFunctionCall()   = true;
    1114      
    1115      syn boolean FFunctionVariable.isInput()  = getCausalityConnectorPrefix().inputCausality();
    1116      syn boolean FFunctionVariable.isOutput() = getCausalityConnectorPrefix().outputCausality();
    11171143     
    11181144     /**
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/jastadd/flattening/Flattening.jrag

    r13396 r13477  
    12381238                f.addFVariable(fv);
    12391239            }
     1240            if (fv.getCausalityConnectorPrefix().isStream() && useCausalPorts()) {
     1241                FVariable inStream = fv.treeCopy();
     1242                FAccess inStreamAccess = createInStreamAccess(inStream.getFAccess());
     1243                inStream.setFAccess(inStreamAccess);
     1244                inStream.setCausalityConnectorPrefix(CausalityConnectorPrefix.INSTREAM);
     1245                fv.annotation().vendorNode().forPath("internal/instream").setValue(new FStringLitExp(inStreamAccess.name()));
     1246                f.addFVariable(inStream);
     1247            }
    12401248            flattenMyType(f);
    12411249            clearModificationLevel(oldLevels);
    12421250        }
     1251    }
     1252   
     1253    inh FAccess InstAssignable.createInStreamAccess(FAccess streamAccess);
     1254    eq InstClassDecl.getChild().createInStreamAccess(FAccess streamAccess) {
     1255        FAccess result = streamAccess.copyAndAddSuffix("__instream_");
     1256        int i = 2;
     1257        while (componentExists(new QualifiedName(result.name()))) {
     1258            result = streamAccess.copyAndAddSuffix("__instream_" + i);
     1259            i++;
     1260        }
     1261        return result;
    12431262    }
    12441263   
     
    21392158    syn boolean InstComponentDecl.isBuiltIn() = false;
    21402159    eq InstBuiltIn.isBuiltIn()                = true;
     2160    syn boolean InstBuiltInClassDecl.isBuiltIn()                = true;
     2161    syn boolean SrcBuiltInClassDecl.isBuiltIn()       = true;
     2162    syn boolean SrcClassDecl.isBuiltIn() = ((SourceRoot) root()).getProgram().getBuiltInTypes().hasChild(this)
     2163            || ((SourceRoot) root()).getProgram().getBuiltInFunctions().hasChild(this);
     2164   
     2165    public boolean List.hasChild(ASTNode node) {
     2166        for(ASTNode child : children) {
     2167            if(child == node) {
     2168                return true;
     2169            }
     2170        }
     2171        return false;
     2172    }
     2173   
    21412174
    21422175    public void InstComponentModification.collectAttributes(Flattener f,
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/jastadd/flattening/FlatteningStatements.jrag

    r12184 r13477  
    245245    eq Root.getChild().breakCondName() = null;
    246246
    247     public boolean InstClassDecl.componentExists(String name) {
     247    public boolean InstNode.componentExists(String name) {
    248248        for (InstComponentDecl decl : allInstComponentDecls()) {
    249249            if (decl.name().equals(name)) {
    250250                return true;
    251251            }
     252        }
     253        return false;
     254    }
     255   
     256    public boolean InstNode.componentExists(Iterator<String> qualifiedName) {
     257        if (!qualifiedName.hasNext()) {
     258            return true;
     259        }
     260        String name = qualifiedName.next();
     261        if (componentExists(name)) {
     262            return memberInstComponent(name).targetOrNull().componentExists(qualifiedName);
    252263        }
    253264        return false;
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/jastadd/flattening/connections/Connections.jrag

    r13357 r13477  
    8282    protected FExp FInStream.expandInStreamExp() {
    8383        // Always create expression from the connection set where the variable is an inside connector.
    84         String name = getFExp().asCommonAccess().name();
    85         ConnectionSet cs = myFClass().getConnectionSetManager().getStreamConnectionSet(name, false);
     84        FAccess name = getFExp().asCommonAccess().asFAccess();
     85        ConnectionSet cs = myFClass().getConnectionSetManager().getStreamConnectionSet(name.name(), false);
    8686        return cs.expandInStreamExp(name);
    8787    }
     
    470470         * @param name  the name of the variable to generate name for
    471471         */
    472         public FExp expandInStreamExp(String name) {
     472        public FExp expandInStreamExp(FAccess name) {
    473473            throw new UnsupportedOperationException();
    474474        }
     
    537537        public void generateEquations(Flattener f) {
    538538            ConnectionSetEntry fst = first();
    539             if (size() == 1 && fst.isInside() && fst.getVar().isTopLevelCausalOrConnector()) {
     539            InstComponentDecl fstVar = fst.getVar();
     540            if (size() == 1 && fst.isInside() && fstVar.isTopLevelCausalOrConnector()
     541                    && (fstVar.isInput() || fstVar.isOutput() || fstVar.useCausalPorts())) {
    540542                return;
    541543            }
     
    550552
    551553    public class StreamConnectionSet extends ConnectionSet {
     554       
     555        private static final String inStreamSuffix = "__instream_";
    552556
    553557        private double nominal = Double.MAX_VALUE;
     
    579583         * @param name  the name of the variable to generate name for
    580584         */
    581         public FExp expandInStreamExp(String name) {
     585        @Override
     586        public FExp expandInStreamExp(FAccess access) {
     587            String name = access.name();
    582588            ConnectionSetEntry e = getConnectionSetEntry(name, false);
    583             FExp exp = expandInStreamExp(e, name, new FAccessExp(name));
     589            if (access.useCausalPorts()) {
     590                AnnotationNode instreamAnnotation = access.myFV().annotation().vendorNode().forPath("internal/instream");
     591                if (instreamAnnotation.exists()) {
     592                    String instreamName = instreamAnnotation.ceval().stringValue();
     593                    access = nameWithSubscripts(instreamName, name);
     594                }
     595            }
     596            FExp exp = expandInStreamExp(e, name, new FAccessExp(access));
    584597            exp.enableStreamsRewrite();
    585598            return exp;
    586599        }
     600       
     601        public FAccess nameWithSubscripts(String name, String access) {
     602            String subscripts = (access.endsWith("]")) ? access.substring(access.lastIndexOf("[")) : "";
     603            return new FAccessString(name + subscripts);
     604       }
    587605
    588606        /**
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/jastadd/instance/InstLookupComponents.jrag

    r13317 r13477  
    2323    interface InstCallable  extends    InstLookupResult.Item {}
    2424
     25        /**
     26         * Indicates that the target was not found.
     27         */
     28        public static <T extends Item> InstLookupResult<T> InstLookupResult.notFound() {
     29            return (InstLookupResult<T>) NOT_FOUND;
     30        }
     31
     32        /**
     33         * Indicates that the target was found.
     34         *
     35         * Includes the found class or component.
     36         */
     37        public static <T extends Item> InstLookupResult<T> InstLookupResult.found(T target) {
     38            return new Found(target);
     39        }
     40
     41        /**
     42         * Indicates that the target was found, but not accessible due to a constrainedby clause.
     43         *
     44         * Includes the declaration with the limiting constrainedby clause.
     45         */
     46        public static <T extends Item> InstLookupResult<T> InstLookupResult.constrained(T target, InstNode constr) {
     47            return new Constrained(target, constr);
     48        }
     49
     50        /**
     51         * Indicates that the target was found, but not accessible due to a constrainedby clause.
     52         *
     53         * Includes the declaration with the limiting constrainedby clause.
     54         */
     55        public static <T extends Item> InstLookupResult<T> InstLookupResult.constrained(InstLookupResult<T> res, InstNode constr) {
     56            return new Constrained(res.target(), constr);
     57        }
     58       
     59        /**
     60         * Indicates that the target was found as an outer, target() returns the corresponding inner.
     61         */
     62        public static InstLookupResult<InstComponentDecl> InstLookupResult.outer(InstComponentDecl outer) {
     63            return new Outer(outer);
     64        }
     65
     66
    2567    /**
    2668     * Result class for lookups in the instance tree.
     
    3375            public InstLookupResult<InstComponentDecl> memberInstComponent(String name);
    3476            public InstCallable asCallable();
    35         }
    36        
    37         /**
    38          * Indicates that the target was not found.
    39          */
    40         public static <T extends Item> InstLookupResult<T> notFound() {
    41             return (InstLookupResult<T>) NOT_FOUND;
    42         }
    43 
    44         /**
    45          * Indicates that the target was found.
    46          *
    47          * Includes the found class or component.
    48          */
    49         public static <T extends Item> InstLookupResult<T> found(T target) {
    50             return new Found(target);
    51         }
    52 
    53         /**
    54          * Indicates that the target was found, but not accessible due to a constrainedby clause.
    55          *
    56          * Includes the declaration with the limiting constrainedby clause.
    57          */
    58         public static <T extends Item> InstLookupResult<T> constrained(T target, InstNode constr) {
    59             return new Constrained(target, constr);
    60         }
    61 
    62         /**
    63          * Indicates that the target was found, but not accessible due to a constrainedby clause.
    64          *
    65          * Includes the declaration with the limiting constrainedby clause.
    66          */
    67         public static <T extends Item> InstLookupResult<T> constrained(InstLookupResult<T> res, InstNode constr) {
    68             return new Constrained(res.target(), constr);
    69         }
    70        
    71         /**
    72          * Indicates that the target was found as an outer, target() returns the corresponding inner.
    73          */
    74         public static InstLookupResult<InstComponentDecl> outer(InstComponentDecl outer) {
    75             return new Outer(outer);
    76         }
    77 
     77            public InstNode asInstNode();
     78        }
     79       
    7880        /**
    7981         * Did the lookup succeed?
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/jastadd/instance/Types.jrag

    r12962 r13477  
    6666    eq InstPrimitive.isPrimitiveType()     = true;
    6767    eq InstClassDecl.isPrimitiveType()     = isPrimitive();
     68   
     69    syn boolean SrcBaseNode.isPrimitiveType() = false;
     70    eq SrcClassDecl.isPrimitiveType() = isPrimitive();
    6871
    6972    public static String InstNode.subTypeMessage(String name, String message) {
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/jastadd/util/Util.jrag

    r13396 r13477  
    16201620    }
    16211621   
     1622    syn InstClassDecl InstNode.asInstClassDecl() {
     1623        throw new UnsupportedOperationException();
     1624    }
    16221625    syn InstClassDecl InstClassDecl.asInstClassDecl() = this;
    16231626    syn InstClassDecl InstPartialFunction.asInstClassDecl()  = unknownInstClassDecl();
     
    16291632    syn InstClassDecl InstPartialFunction.actualInstClassDecl() = myInstClass().actualInstClass();
    16301633   
    1631     syn InstNode InstClassDecl.asInstNode() = this;
    1632     syn InstNode InstPartialFunction.asInstNode()  = this;
     1634    syn InstNode InstNode.asInstNode() = this;
    16331635   
    16341636    syn InstCallable InstFunctionCall.myInstCallable() = getName().myInstCallable();
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/ast/prefixes/CausalityConnectorPrefix.java

    r13357 r13477  
    2222    }
    2323   
    24     public boolean inputCausality() {
    25         return this == INPUT || this == FLOW || this == INSTREAM;
     24    public boolean isStream() {
     25        return this == STREAM;
    2626    }
    2727   
    28     public boolean outputCausality() {
    29         return this == OUTPUT || this == POTENTIAL || this == STREAM;
     28    public interface CausalPortsEvaluator {
     29        boolean useCausalPorts();
     30    }
     31   
     32    /**
     33     * We use a {@link CausalPortsEvaluator} here instead of an evaluated boolean
     34     * to reduce the number of calls to useCausalPorts().
     35     * Replace with a Predicate when updating to Java 8.
     36     */
     37    public boolean inputCausality(CausalPortsEvaluator evaluator) {
     38        if (this == INPUT) {
     39            return true;
     40        }
     41        if (this == FLOW || this == INSTREAM) {
     42            return evaluator.useCausalPorts();
     43        }
     44        return false;
     45    }
     46   
     47    public boolean outputCausality(CausalPortsEvaluator evaluator) {
     48        if (this == OUTPUT) {
     49            return true;
     50        }
     51        if (this == POTENTIAL || this == STREAM) {
     52            return evaluator.useCausalPorts();
     53        }
     54        return false;
    3055    }
    3156   
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/junit/TestTreeRunner.java

    r12940 r13477  
    100100            }
    101101            if (!(test instanceof TestTree)) {
    102                 String maybeSubTestName = test.getName();
     102                String uniqueName = nc.makeUnique(testName);
     103                test.setName(uniqueName);
    103104                // TODO: Upgrade JUnit version, then use createTestDescription(String, String) instead
    104                 String descStr = String.format("%s(%s)", nc.makeUnique(testName), packageName);
     105                String descStr = String.format("%s(%s)", uniqueName, packageName);
    105106                chDesc = Description.createSuiteDescription(descStr);
    106                 caseDesc.put(maybeSubTestName, chDesc);
     107                caseDesc.put(uniqueName, chDesc);
    107108                if(outputFailing) {
    108109                    if(name.equals(testFile.getName())) { //Top-level test
    109                         modelNames.put(maybeSubTestName, testName);
     110                        modelNames.put(uniqueName, testName);
    110111                    } else {
    111                         modelNames.put(maybeSubTestName, String.format("%s.%s", name, testName));
     112                        modelNames.put(uniqueName, String.format("%s.%s", name, testName));
    112113                    }
    113114                }
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/util/collections/ListUtil.java

    r13396 r13477  
    101101     */
    102102    @SafeVarargs
    103     public static <T> ArrayList<T> concatenate(List<T>... lists) {
     103    public static <T> ArrayList<T> concatenate(List<? extends T>... lists) {
    104104        return buildList(lists);
    105105    }
     
    112112     */
    113113    @SafeVarargs
    114     public static <T> ArrayList<T> buildList(Collection<T>... collections) {
     114    public static <T> ArrayList<T> buildList(Collection<? extends T>... collections) {
    115115        int size = 0;
    116         for (Collection<T> list : collections) {
     116        for (Collection<? extends T> list : collections) {
    117117            size += list.size();
    118118        }
    119119        ArrayList<T> res = new ArrayList<T>(size);
    120         for (Collection<T> list : collections) {
     120        for (Collection<? extends T> list : collections) {
    121121            res.addAll(list);
    122122        }
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/util/test/GenericTestTreeNode.java

    r7909 r13477  
    2020    public String getName();
    2121
     22    public void setName(String name);
     23
    2224}
  • branches/dev-2468/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/util/test/TestTree.java

    r12940 r13477  
    4141
    4242    public TestTree exit() {
    43         if (children.isEmpty() && parent != null)
     43        if (children.isEmpty() && parent != null) {
    4444            parent.children.remove(parentIndex);
     45        }
    4546        return parent;
    4647    }
     
    5455        return name;
    5556    }
     57   
     58    @Override
     59    public void setName(String name) {
     60        this.name = name;
     61    }
    5662
    5763    public int numChildren() {
  • branches/dev-2468/Compiler/ModelicaFrontEnd/test/modelica/ConnectTests.mo

    r13103 r13477  
    316316 a1[2].x = a2[2].x;
    317317 - a1[2].y - a2[2].y = 0.0;
     318 a1[1].y = 0.0;
     319 a1[2].y = 0.0;
     320 a2[1].y = 0.0;
     321 a2[2].y = 0.0;
    318322end ConnectTests.ConnectTest7;
    319323")})));
     
    352356 a[3].x = a[4].x;
    353357 - a[1].y - a[2].y - a[3].y - a[4].y = 0.0;
     358 a[1].y = 0.0;
     359 a[2].y = 0.0;
     360 a[3].y = 0.0;
     361 a[4].y = 0.0;
    354362end ConnectTests.ConnectTest8;
    355363")})));
     
    380388 a[1].x = a[2].x;
    381389 - a[1].y - a[2].y = 0.0;
     390 a[1].y = 0.0;
     391 a[2].y = 0.0;
    382392end ConnectTests.ConnectTest9;
    383393")})));
     
    454464 c1.b2.x = c2.b2.x;
    455465 - c1.b2.y - c2.b2.y = 0.0;
     466 c1.b1.y = 0.0;
     467 c1.b2.y = 0.0;
     468 c2.b1.y = 0.0;
     469 c2.b2.y = 0.0;
    456470end ConnectTests.ConnectTest11;
    457471")})));
     
    549563 b[3,2].a[2].x = b[3,3].a[2].x;
    550564 - b[1,1].a[1].y - b[1,1].a[2].y - b[1,2].a[1].y - b[1,2].a[2].y - b[1,3].a[1].y - b[1,3].a[2].y - b[1,4].a[1].y - b[2,1].a[1].y - b[2,1].a[2].y - b[2,2].a[1].y - b[2,2].a[2].y - b[2,3].a[1].y - b[2,3].a[2].y - b[2,4].a[1].y - b[3,1].a[2].y - b[3,2].a[2].y - b[3,3].a[2].y = 0.0;
     565 b[1,1].a[1].y = 0.0;
     566 b[1,1].a[2].y = 0.0;
     567 b[1,2].a[1].y = 0.0;
     568 b[1,2].a[2].y = 0.0;
     569 b[1,3].a[1].y = 0.0;
     570 b[1,3].a[2].y = 0.0;
     571 b[1,4].a[1].y = 0.0;
     572 b[1,4].a[2].y = 0.0;
     573 b[2,1].a[1].y = 0.0;
     574 b[2,1].a[2].y = 0.0;
     575 b[2,2].a[1].y = 0.0;
     576 b[2,2].a[2].y = 0.0;
     577 b[2,3].a[1].y = 0.0;
     578 b[2,3].a[2].y = 0.0;
     579 b[2,4].a[1].y = 0.0;
     580 b[2,4].a[2].y = 0.0;
     581 b[3,1].a[1].y = 0.0;
     582 b[3,1].a[2].y = 0.0;
     583 b[3,2].a[1].y = 0.0;
     584 b[3,2].a[2].y = 0.0;
     585 b[3,3].a[1].y = 0.0;
     586 b[3,3].a[2].y = 0.0;
     587 b[3,4].a[1].y = 0.0;
     588 b[3,4].a[2].y = 0.0;
    551589end ConnectTests.ConnectTest12;
    552590")})));
     
    595633 b[2].a[2].x = b[3].a[2].x;
    596634 - b[1].a[2].y - b[2].a[2].y - b[3].a[2].y = 0.0;
     635 b[1].a[1].y = 0.0;
     636 b[1].a[2].y = 0.0;
     637 b[2].a[1].y = 0.0;
     638 b[2].a[2].y = 0.0;
     639 b[3].a[1].y = 0.0;
     640 b[3].a[2].y = 0.0;
    597641end ConnectTests.ConnectTest13;
    598642")})));
     
    670714 b1[2,2].a[2].x = b2[2,2].a[2].x;
    671715 - b1[2,2].a[2].y - b2[2,2].a[2].y = 0.0;
     716 b1[1,1].a[1].y = 0.0;
     717 b1[1,1].a[2].y = 0.0;
     718 b1[1,2].a[1].y = 0.0;
     719 b1[1,2].a[2].y = 0.0;
     720 b1[2,1].a[1].y = 0.0;
     721 b1[2,1].a[2].y = 0.0;
     722 b1[2,2].a[1].y = 0.0;
     723 b1[2,2].a[2].y = 0.0;
     724 b2[1,1].a[1].y = 0.0;
     725 b2[1,1].a[2].y = 0.0;
     726 b2[1,2].a[1].y = 0.0;
     727 b2[1,2].a[2].y = 0.0;
     728 b2[2,1].a[1].y = 0.0;
     729 b2[2,1].a[2].y = 0.0;
     730 b2[2,2].a[1].y = 0.0;
     731 b2[2,2].a[2].y = 0.0;
    672732end ConnectTests.ConnectTest14;
    673733")})));
     
    744804 b[1,2,2].a[2].x = b[2,2,2].a[2].x;
    745805 - b[1,2,2].a[2].y - b[2,2,2].a[2].y = 0.0;
     806 b[1,1,1].a[1].y = 0.0;
     807 b[1,1,1].a[2].y = 0.0;
     808 b[1,1,2].a[1].y = 0.0;
     809 b[1,1,2].a[2].y = 0.0;
     810 b[1,2,1].a[1].y = 0.0;
     811 b[1,2,1].a[2].y = 0.0;
     812 b[1,2,2].a[1].y = 0.0;
     813 b[1,2,2].a[2].y = 0.0;
     814 b[2,1,1].a[1].y = 0.0;
     815 b[2,1,1].a[2].y = 0.0;
     816 b[2,1,2].a[1].y = 0.0;
     817 b[2,1,2].a[2].y = 0.0;
     818 b[2,2,1].a[1].y = 0.0;
     819 b[2,2,1].a[2].y = 0.0;
     820 b[2,2,2].a[1].y = 0.0;
     821 b[2,2,2].a[2].y = 0.0;
    746822end ConnectTests.ConnectTest15;
    747823")})));
     
    11251201 a1.b[2].x = a2.b[2].x;
    11261202 - a1.b[2].y - a2.b[2].y = 0.0;
     1203 a1.b[1].y = 0.0;
     1204 a1.b[2].y = 0.0;
     1205 a2.b[1].y = 0.0;
     1206 a2.b[2].y = 0.0;
    11271207end ConnectTests.ConnectTest26;
    11281208")})));
     
    15701650 Real b.d.c2.y;
    15711651equation
     1652 c1.y = 0.0;
    15721653 b.c2.x = c1.x;
    15731654 - b.c2.y - c1.y = 0.0;
     
    26192700    end for;
    26202701
    2621     annotation(__JModelica(UnitTesting(tests={
    2622         TransformCanonicalTestCase(
    2623             name="StreamTest6",
    2624             description="Check that inStream() using out-of-bounds array access does not cause crash when used in inactive if branch",
    2625             flatModel="
     2702annotation(__JModelica(UnitTesting(tests={
     2703    TransformCanonicalTestCase(
     2704        name="StreamTest6",
     2705        description="Check that inStream() using out-of-bounds array access does not cause crash when used in inactive if branch",
     2706        eliminate_alias_variables=false,
     2707        variability_propagation=false,
     2708        flatModel="
    26262709fclass ConnectTests.StreamTest6
    26272710 structural parameter Integer n = 2 /* 2 */;
     
    26532736 - a[2].b + b[2].a.b = 0.0;
    26542737 a[2].c = b[2].a.c;
     2738 a[1].b = 0.0;
     2739 a[2].b = 0.0;
    26552740end ConnectTests.StreamTest6;
    26562741")})));
     
    27142799        name="Cardinality2",
    27152800        description="cardinality(): basic test",
     2801        eliminate_alias_variables=false,
     2802        variability_propagation=false,
    27162803        flatModel="
    27172804fclass ConnectTests.Cardinality2
     
    31543241        name="TopLevelIO2",
    31553242        description="",
     3243        eliminate_alias_variables=false,
     3244        variability_propagation=false,
    31563245        flatModel="
    31573246fclass ConnectTests.TopLevelIO2
     
    31633252 - c1.f + m.c2.f = 0.0;
    31643253 c1.x = m.c2.x;
     3254 c1.f = 0.0;
    31653255end ConnectTests.TopLevelIO2;
    31663256")})));
  • branches/dev-2468/Compiler/ModelicaFrontEnd/test/modelica/ExpandableConnectorArrays.mo

    r13104 r13477  
    394394 flow Real c5.b;
    395395equation
     396 c1.b = 0.0;
     397 c2.b = 0.0;
     398 c3.b = 0.0;
     399 c4.b = 0.0;
     400 c5.b = 0.0;
    396401 c1.a = ec1[1].x.a;
    397402 ec1[1].x.a = ec2[1].x.a;
     
    652657 flow Real c[4].f;
    653658equation
     659 c[1].f = 0.0;
     660 c[2].f = 0.0;
     661 c[3].f = 0.0;
     662 c[4].f = 0.0;
    654663 - c[1].f - c[3].f - ec1[1].a.f - ec2[1].a.f - ec3[1].a.f = 0.0;
    655664 c[1].p = c[3].p;
  • branches/dev-2468/Compiler/ModelicaFrontEnd/test/modelica/ExpandableConnectors.mo

    r13103 r13477  
    105105 flow Real c5.b;
    106106equation
     107 c1.b = 0.0;
     108 c2.b = 0.0;
     109 c3.b = 0.0;
     110 c4.b = 0.0;
     111 c5.b = 0.0;
    107112 c1.a = c3.a;
    108113 c3.a = c5.a;
     
    27102715 Real ec.x.c[2];
    27112716equation
     2717 c[1].a[1:1] = zeros(1);
     2718 c[1].b = 0.0;
    27122719 - c[1].a[1:1] - ec.x.a[1:1] = zeros(1);
    27132720 - c[1].b - ec.x.b = 0.0;
     
    27542761 Real ec.x[2].c[2];
    27552762equation
     2763 c[1].a[1:1] = zeros(1);
     2764 c[1].b = 0.0;
     2765 c[2].a[1:1] = zeros(1);
     2766 c[2].b = 0.0;
    27562767 - c[1].a[1:1] - ec.x[1].a[1:1] = zeros(1);
    27572768 - c[1].b - ec.x[1].b = 0.0;
     
    28062817 Real ec.x[2].c[2];
    28072818equation
     2819 c[1].a[1:1] = zeros(1);
     2820 c[1].b = 0.0;
     2821 c[2].a[1:1] = zeros(1);
     2822 c[2].b = 0.0;
     2823 c[3].a[1:1] = zeros(1);
     2824 c[3].b = 0.0;
    28082825 - c[2].a[1:1] - ec.x[1].a[1:1] = zeros(1);
    28092826 - c[2].b - ec.x[1].b = 0.0;
     
    28592876 Real ec.x[3].c[2];
    28602877equation
     2878 c1.a[1:1] = zeros(1);
     2879 c1.b = 0.0;
     2880 c2.a[1:1] = zeros(1);
     2881 c2.b = 0.0;
    28612882 - c1.a[1:1] - ec.x[1].a[1:1] = zeros(1);
    28622883 - c1.b - ec.x[1].b = 0.0;
     
    29132934 Real ec.x[2].b[3];
    29142935equation
     2936 c[1].a[1:2] = zeros(2);
     2937 c[2].a[1:3] = zeros(3);
    29152938 - c[1].a[1:2] - ec.x[1].a[1:2] = zeros(2);
    29162939 c[1].b[1:2] = ec.x[1].b[1:2];
     
    29622985 Real ec.x[3].c;
    29632986equation
     2987 c1.a = 0.0;
     2988 c2.a = 0.0;
    29642989 - c1.a - ec.x[1].a = 0.0;
    29652990 c1.b = inStream(ec.x[1].b);
  • branches/dev-2468/Compiler/ModelicaFrontEnd/test/modelica/NameTests.mo

    r13317 r13477  
    38133813 - b1.af.x - b2.af.x = 0.0;
    38143814 b1.ap.x = b2.ap.x;
     3815 b1.af.x = 0.0;
     3816 b2.af.x = 0.0;
    38153817end NameTests.InheritFlowTest1;
    38163818")})));
  • branches/dev-2468/Compiler/ModelicaFrontEnd/test/modelica/OperatorRecordTests.mo

    r13441 r13477  
    14981498 c2.x = c3.x;
    14991499 OperatorRecordTests.Cplx.'-'.sub(OperatorRecordTests.Cplx.'-'.sub(OperatorRecordTests.Cplx.'-'.neg(c1.y), c2.y), c3.y) = OperatorRecordTests.Cplx.'0'();
     1500 c1.y = OperatorRecordTests.Cplx.'0'();
     1501 c2.y = OperatorRecordTests.Cplx.'0'();
     1502 c3.y = OperatorRecordTests.Cplx.'0'();
    15001503
    15011504public
     
    17141717 potential OperatorRecordTests.Cplx c.x;
    17151718 flow OperatorRecordTests.Cplx c.y;
     1719equation
     1720 c.y = OperatorRecordTests.Cplx.'0'();
    17161721
    17171722public
  • branches/dev-2468/Compiler/ModelicaFrontEnd/test/modelica/OverconstrainedConnection.mo

    r13103 r13477  
    335335 potential Real c1.x;
    336336 flow Real c1.y;
     337equation
     338 c1.y = 0.0;
    337339end OverconstrainedConnection.OverconstrainedCorrect6;
    338340")})));
  • branches/dev-2468/Compiler/ModelicaFrontEnd/test/modelica/RedeclareTests.mo

    r13103 r13477  
    72457245fclass RedeclareTests.Prefix.RedeclarePrefix9
    72467246 flow Real c.x;
     7247equation
     7248 c.x = 0.0;
    72477249end RedeclareTests.Prefix.RedeclarePrefix9;
    72487250")})));
     
    72707272equation
    72717273 - c1.x - c2.x = 0.0;
     7274 c1.x = 0.0;
     7275 c2.x = 0.0;
    72727276end RedeclareTests.Prefix.RedeclarePrefix10;
    72737277")})));
  • branches/dev-2468/Compiler/ModelicaFrontEnd/test/modelica/StreamTests.mo

    r13370 r13477  
    229229            description="Using actualStream() on array of stream variables.",
    230230            eliminate_alias_variables=false,
     231            variability_propagation=false,
    231232            flatModel="
    232233fclass StreamTests.StreamTest6
     
    235236 stream Real d.b[2];
    236237 potential Real d.c;
    237  constant Real f[1] = 1;
    238  constant Real f[2] = 2;
    239 equation
    240  1.0 = d.b[1];
    241  2.0 = d.b[2];
     238 Real f[1];
     239 Real f[2];
     240equation
     241 f[1] = d.b[1];
     242 f[2] = d.b[2];
     243 f[1] = 1;
     244 f[2] = 2;
    242245 d.c = 0;
     246 d.a = 0.0;
    243247end StreamTests.StreamTest6;
    244248")})));
     
    270274            description="",
    271275            eliminate_alias_variables=false,
     276            variability_propagation=false,
    272277            flatModel="
    273278fclass StreamTests.StreamTest7
     
    286291 g.b = f.e.b;
    287292 f.e.c = g.c;
     293 g.a = 0.0;
    288294end StreamTests.StreamTest7;
    289295")})));
     
    595601 a.c.p = c.p;
    596602 c.s = a.c.s;
     603 c.f = 0.0;
    597604 a.c.p = 2;
    598605 a.c.s = 1;
     
    799806 a2.c.p = c.p;
    800807 c.s = (_stream_positiveMax_1 * a1.c.s + _stream_positiveMax_2 * a2.c.s) / (_stream_positiveMax_1 + _stream_positiveMax_2);
     808 c.f = 0.0;
    801809 a1.c.p = 4;
    802810 a1.c.f = time;
     
    877885 c1.s = (_stream_positiveMax_1 * a.c.s + _stream_positiveMax_2 * c2.s) / (_stream_positiveMax_1 + _stream_positiveMax_2);
    878886 c2.s = (_stream_positiveMax_3 * a.c.s + _stream_positiveMax_4 * c1.s) / (_stream_positiveMax_3 + _stream_positiveMax_4);
     887 c1.f = 0.0;
     888 c2.f = 0.0;
    879889 a.c.p = 2;
    880890 a.c.s = 1;
     
    10761086 c1.s = (_stream_positiveMax_1 * a1.c.s + _stream_positiveMax_2 * a2.c.s + _stream_positiveMax_3 * c2.s) / (_stream_positiveMax_1 + _stream_positiveMax_2 + _stream_positiveMax_3);
    10771087 c2.s = (_stream_positiveMax_4 * a1.c.s + _stream_positiveMax_5 * a2.c.s + _stream_positiveMax_6 * c1.s) / (_stream_positiveMax_4 + _stream_positiveMax_5 + _stream_positiveMax_6);
     1088 c1.f = 0.0;
     1089 c2.f = 0.0;
    10781090 a1.c.p = 4;
    10791091 a1.c.f = time;
     
    11631175 c1.s = (_stream_positiveMax_1 * a2.c.s + _stream_positiveMax_2 * c2.s) / (_stream_positiveMax_1 + _stream_positiveMax_2);
    11641176 c2.s = a2.c.s;
     1177 c1.f = 0.0;
     1178 c2.f = 0.0;
    11651179 a1.c.p = 4;
    11661180 a1.c.f = time + 1;
     
    12281242 c1.s = a2.c.s;
    12291243 c2.s = a2.c.s;
     1244 c1.f = 0.0;
     1245 c2.f = 0.0;
    12301246 a1.c.p = 4;
    12311247 a1.c.f = time + 1;
     
    12851301 c1.s = c2.s;
    12861302 c2.s = 0.0;
     1303 c1.f = 0.0;
     1304 c2.f = 0.0;
    12871305 a1.c.p = 4;
    12881306 a1.c.f = time + 1;
     
    19441962 c1.s = (_stream_positiveMax_1 * a1.c.s + _stream_positiveMax_2 * a2.c.s + _stream_positiveMax_3 * c2.s) / (_stream_positiveMax_1 + _stream_positiveMax_2 + _stream_positiveMax_3);
    19451963 c2.s = (_stream_positiveMax_4 * a1.c.s + _stream_positiveMax_5 * a2.c.s + _stream_positiveMax_6 * c1.s) / (_stream_positiveMax_4 + _stream_positiveMax_5 + _stream_positiveMax_6);
     1964 c1.f = 0.0;
     1965 c2.f = 0.0;
    19461966 a1.c.p = 4;
    19471967 a1.c.f = 1;
     
    20812101 c1[2].s = (_stream_positiveMax_7 * a1[2].c.s + _stream_positiveMax_8 * a2[2].c.s + _stream_positiveMax_9 * c2[2].s) / (_stream_positiveMax_7 + _stream_positiveMax_8 + _stream_positiveMax_9);
    20822102 c2[2].s = (_stream_positiveMax_10 * a1[2].c.s + _stream_positiveMax_11 * a2[2].c.s + _stream_positiveMax_12 * c1[2].s) / (_stream_positiveMax_10 + _stream_positiveMax_11 + _stream_positiveMax_12);
     2103 c1[1].f = 0.0;
     2104 c1[2].f = 0.0;
     2105 c2[1].f = 0.0;
     2106 c2[2].f = 0.0;
    20832107 a1[1].c.p = 3;
    20842108 a1[1].c.f = 1;
  • branches/dev-2468/Compiler/ModelicaMiddleEnd/module.options

    r12631 r13477  
    6464
    6565*******************************************************************************
     66BOOLEAN causal_ports compiler experimental false
     67
     68"Treat top level connector variables as causal variables. Flow and instream
     69variables as inputs, potential and stream variables as outputs."
     70
     71*******************************************************************************
  • branches/dev-2468/Compiler/ModelicaMiddleEnd/src/jastadd/optimizations/AliasElimination.jrag

    r12902 r13477  
    165165    eq FVariable.canBeAlias() = !getFAccess().myDerFV(order() + 1).isDummyDerivativeVariable()
    166166            && !isPreVariable() && !isNonDummyDerivativeVariable()
    167             && !isInput() && !isOutput() && !isIndependentParameter()
     167            && getCausalityConnectorPrefix().isNone() && !isIndependentParameter()
    168168            && !isInterface();
    169169
Note: See TracChangeset for help on using the changeset viewer.