Opened 10 years ago
Closed 6 years ago
#3183 closed defect (fixed)
Unknown dimensions during record construction
Reported by: | Rüdiger Franke | Owned by: | somebody |
---|---|---|---|
Priority: | high | Milestone: | Future |
Component: | Frontend | Version: | trunk |
Keywords: | Cc: |
Description
In case someone digs into the details of #3182, here is a related problem with the construction of records that contain arrays with dimensions determined by parameters of the records.
package UnknownSize record R parameter Integer nr; Real[nr] vr; end R; operator record S parameter Integer ns; Real[ns] vs; end S; function precalculation input R r; output S s(ns = r.nr); algorithm s.vs := 2*r.vr; end precalculation; model M1 "Translation error: Could not evaluate structural parameter (or constant): ns which gives dimensions of array: vs[ns]. Array dimensions must be known at compile time. " parameter R r(nr = 2, vr = {1, 2}); parameter S s = precalculation(r); end M1; model M2 "Translation error: Type mismatch for named argument in UnknownSize.R(vr={1, 2}). The argument has type: Integer[2] expected type: Real[nr] " parameter R r = R(nr = 2, vr = {1.0, 2.0}); parameter R r2 = R(nr = 2, vr = {1, 2}); parameter S s = precalculation(r); end M2; model M3 "Compilation error: UnknownSize.M3_06inz.c:54:31: error: use of undeclared identifier '$Ps$Pr$Pnr' $Ps$Pns = (modelica_integer)$Ps$Pr$Pnr; ^ " parameter R r(nr = 2, vr = {1, 2}); record S2 = S(ns = r.nr); parameter S2 s = precalculation(r); end M3; end UnknownSize;
UnknownSize.M1
fails to evaluate the structural parameter s.ns
during flattening.
UnknownSize.M2
is able to calculate evaluate r.nr
if a record constructor is used (instead of the arbitrary function precalculation
). The record constructor fails to instantiate the Real array r2.vr
with an Integer array though.
UnknownSize.M3
introduces S2
as a workaround to pass the frontend; afterwards it fails during compilation though.
Change History (8)
comment:1 by , 10 years ago
Milestone: | 1.9.2 → 1.9.3 |
---|
comment:6 by , 8 years ago
Milestone: | 1.11.0 → 1.12.0 |
---|
Milestone moved to 1.12.0 due to 1.11.0 already being released.
comment:7 by , 7 years ago
Milestone: | 1.12.0 → Future |
---|
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.
comment:8 by , 6 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
The three reported test cases work fine with -d=newInst
in version 1.13.0-dev.beta1
Milestone changed to 1.9.3 since 1.9.2 was released.