Opened 10 years ago

Last modified 7 years ago

#2967 new defect

Pantelides fails for arrays

Reported by: Martin Sjölund Owned by: somebody
Priority: high Milestone: Future
Component: Backend Version: trunk
Keywords: Cc: Willi Braun, Lennart Ochel

Description

Pantelides fails for the following models using arrays:

package ModelicaCompliance  "A semantics compliance suite for the Modelica language" 
  extends Icons.TestPackage;

  package Algorithms  
    extends Icons.TestPackage;

    package For  
      extends Icons.TestPackage;

      model BoolRange  
        extends Icons.TestCase;
        Boolean[Boolean] b;
      algorithm
        for i in false:true loop
          b[i] := i;
        end for;
        assert(b[false] == false, "b[false] was not set correctly.");
        assert(b[true] == true, "b[true] was not set correctly.");
        annotation(__ModelicaAssociation(TestCase(shouldPass = true, section = {"11.2.2"})), experiment(StopTime = 0.01)); 
      end BoolRange;
    end For;
  end Algorithms;

  package Icons  
    model TestCase  end TestCase;

    package TestPackage  end TestPackage;
  end Icons;
  annotation(version = "3.2"); 
end ModelicaCompliance;

model BoolRange_total
  extends ModelicaCompliance.Algorithms.For.BoolRange;
 annotation(__ModelicaAssociation(TestCase(shouldPass = true, section = {"11.2.2"})), experiment(StopTime = 0.01));
end BoolRange_total;
package ModelicaCompliance  "A semantics compliance suite for the Modelica language" 
  extends Icons.TestPackage;

  package Algorithms  
    extends Icons.TestPackage;

    package For  
      extends Icons.TestPackage;

      model EnumRange  
        extends Icons.TestCase;
        type TwoEnums = enumeration(one, two);
        TwoEnums[TwoEnums] te;
      algorithm
        for e in TwoEnums.one:TwoEnums.two loop
          te[e] := e;
        end for;
        assert(te[TwoEnums.one] == TwoEnums.one, "te[TwoEnums.one] was not set correctly.");
        assert(te[TwoEnums.two] == TwoEnums.two, "te[TwoEnums.two] was not set correctly.");
        annotation(__ModelicaAssociation(TestCase(shouldPass = true, section = {"11.2.2"})), experiment(StopTime = 0.01)); 
      end EnumRange;
    end For;
  end Algorithms;

  package Icons  
    model TestCase  end TestCase;

    package TestPackage  end TestPackage;
  end Icons;
  annotation(version = "3.2"); 
end ModelicaCompliance;

model EnumRange_total
  extends ModelicaCompliance.Algorithms.For.EnumRange;
 annotation(__ModelicaAssociation(TestCase(shouldPass = true, section = {"11.2.2"})), experiment(StopTime = 0.01));
end EnumRange_total;

Change History (8)

comment:1 by Martin Sjölund, 10 years ago

Milestone: 1.9.21.9.3

Milestone changed to 1.9.3 since 1.9.2 was released.

comment:2 by Martin Sjölund, 9 years ago

Milestone: 1.9.31.9.4

Moved to new milestone 1.9.4

comment:3 by Henning Kiel, 9 years ago

When I run

function EnumRange
  type TwoEnums = enumeration(one, two);
  output TwoEnums te[TwoEnums];
algorithm
  for e in TwoEnums.one : TwoEnums.two loop
    te[e] := e;
  end for;
assert(te[TwoEnums.one] == TwoEnums.one, "te[TwoEnums.one] was not set correctly.");
assert(te[TwoEnums.two] == TwoEnums.two, "te[TwoEnums.two] was not set correctly.");
end EnumRange;

with

loadFile("enumRange.mo");
EnumRange();

everything works as expected. How can I trigger the error? (I see it fail when I run the ModelicaCompliance Suite locally)

BoolRange works btw., it is EnumRange() RealRange and StringRange() that fail in the Compliance Suite.

comment:4 by Martin Sjölund, 9 years ago

Milestone: 1.9.41.9.5

Milestone pushed to 1.9.5

comment:5 by Martin Sjölund, 9 years ago

Milestone: 1.9.51.10.0

Milestone renamed

comment:6 by Martin Sjölund, 8 years ago

Milestone: 1.10.01.11.0

Ticket retargeted after milestone closed

comment:7 by Martin Sjölund, 8 years ago

Milestone: 1.11.01.12.0

Milestone moved to 1.12.0 due to 1.11.0 already being released.

comment:8 by Francesco Casella, 7 years ago

Milestone: 1.12.0Future

The milestone of this ticket has been reassigned to "Future".

If you think the issue is still valid and relevant for you, please select milestone 1.13.0 for back-end, code generation and run-time issues, or 2.0.0 for front-end issues.

If you are aware that the problem is no longer present, please select the milestone corresponding to the version of OMC you used to check that, and set the status to "worksforme".

In both cases, a short informative comment would be welcome.

Note: See TracTickets for help on using tickets.