Opened 12 years ago

Closed 12 years ago

#1980 closed defect (invalid)

SCodeFlatten fails to rename imports

Reported by: Martin Sjölund Owned by: Per Östlund
Priority: high Milestone: 1.9.0
Component: Frontend Version: trunk
Keywords: Cc:

Description (last modified by Per Östlund)

SCodeFlatten fails to rename imports that are part of a path

package N
  import N.X.x;
  package X
    Real x = 1.0;
  end X;
end N;

model M
  import N.X.x;
  Real r1 = N.x;
  Real r2 = x;
end M;

Change History (8)

comment:1 by Per Östlund, 12 years ago

Description: modified (diff)

Renamed component r to x so that the model is valid.

comment:2 by Per Östlund, 12 years ago

This model actually seems to work as intended. It only looked like it was failing because of using r instead of x at first, and bad error reporting for missing imports (see #1977). You'll have to submit a better model :)

comment:3 by Martin Sjölund, 12 years ago

These are lots of fun:

package N
  import Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
end N;

model M
  import Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
  // Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r1 = N.simpleWaterConstants;
  // Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r2 = simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r3 = Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
end M;

comment:4 by Per Östlund, 12 years ago

saveTotalSCode on M with the latest MSL 3.2.1 and a clean trunk gives:

model M 
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r1 = .Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r2 = .Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r3 = Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
end M;

Seems correct to me, and the model instantiates fine it seems.

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

With saveTotalSCode I get:

model M 
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r1 = N.simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r2 = simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r3 = Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
end M;

I guess I will try make clean.

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

Nope. Make clean still gives me the same output (which is different from yours).

comment:7 by Adrian Pop, 12 years ago

I get the same output as Per for

adrpo@testone:~/om/build/bin$ cat m.mos
loadModel(Modelica); getErrorString();
loadFile("m.mo"); getErrorString();
saveTotalSCode("m-total.mo", M); getErrorString();
readFile("m-total.mo"); getErrorString();

File m.mo

adrpo@testone:~/om/build/bin$ cat m.mo
package N
  import Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
end N;

model M
  import Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r1 = N.simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r2 = simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r3 = Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
end M;

result:

adrpo@testone:~/om/build/bin$ ./omc m.mos | grep -5 "model M"
package N end N;
model M
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r1 = .Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r2 = .Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
  Modelica.Media.Water.ConstantPropertyLiquidWater.FluidConstants[1] r3 = Modelica.Media.Water.ConstantPropertyLiquidWater.simpleWaterConstants;
end M;

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

Resolution: invalid
Status: newclosed

Ok. rm -rf Compiler works, make clean did not. Go figure, it works in trunk so I'll just close this.

Note: See TracTickets for help on using tickets.