Opened 10 years ago
Last modified 4 years ago
#2712 closed defect
Accessing connector array with dynamic index results in C code compile error — at Initial Version
Reported by: | Owned by: | Lennart Ochel | |
---|---|---|---|
Priority: | normal | Milestone: | 1.16.0 |
Component: | Code Generation | Version: | 1.9.0Beta |
Keywords: | Cc: |
Description
The simple model below results in bad C code generation (does not compile). It was tested with OpenModelica 1.9.0 (r17628).
The problem seems to be acessing a connector in an array of connections by an index integer variable that changes with time:
cValue = if condition then inConnections[index].value else 0;
model ConnectionArrayBug
connector RealConn
Real value;
end RealConn;
model ValueSource
parameter Real value;
RealConn connection;
equation
connection.value = value;
end ValueSource;
model BuggedModel
parameter Integer nConn;
RealConn inConnections[nConn];
protected
Boolean condition;
Integer index;
Real cValue;
equation
condition = true;
index = if time > 0.5 then 1 else 2;
cValue = if condition then inConnections[index].value else 0;
end BuggedModel;
ValueSource s1(value = 1);
ValueSource s2(value = 2);
BuggedModel m1(nConn = 2);
equation
connect(s1.connection,m1.inConnections[1]);
connect(s2.connection,m1.inConnections[2]);
end ConnectionArrayBug;