Opened 13 years ago

Closed 12 years ago

#1707 closed defect (fixed)

type mismatch

Reported by: mohamed Owned by: Martin Sjölund
Priority: blocker Milestone: 1.9.0
Component: Frontend Version:
Keywords: Cc: mohamed

Description (last modified by Martin Sjölund)

Have you any idea how can I solve this problem,

model tableau
 String tab[8];
equation
 tab=getVariableNameTable(2,8);
end tableau;

function getVariableNameTable
  extends modelInExpressionBase;
public
  input Integer indexModel ;
  input Integer dim;
  output String variableNameTable[dim] ;
algorithm
   if indexModel == 1 then   // model1
    variableNameTable[1:size(model2,1)]  := model1[:];
   elseif indexModel == 2 then  // model2  
    variableNameTable [1:size(model2,1)]:= model2[:];
   end if;
end getVariableNameTable;

record modelInExpressionBase
public
    final constant String model1[8] =    {"a", "b", "c", "d", "e", "f", "g","h"};
    final constant String model2[8] = {"a", "b", "c", "d", "e", "f", "g", "i"};
end modelInExpressionBase;
Error: Type mismatch in assignment in variableNameTable[{1,2,3,4,5,6,7,8}] := {\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\"} of String[dim] := String[8]
Error:
 Error occurred while flattening model tableau


Thank you in advance,

Best regards,

Change History (6)

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

Note that a function may not extend from a record (see 7.1.3 in https://modelica.org/documents/ModelicaSpec32Revision1.pdf), and that the constants have to be protected.

{{{function getVariableNameTable

extends modelInExpressionBase;

public

input Integer indexModel ;
input Integer dim;
output String variableNameTable[dim] ;

algorithm

for i in 1:dim loop

variableNameTable[i] := if indexModel == 1 then model1[i] else model2[i];

end for;

end getVariableNameTable;}}}

Does work (except code generation needs to be fixed)

Version 0, edited 13 years ago by Martin Sjölund (next)

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

Using the function I posted below now works properly (r11265). It type-checks and compiles fine.

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

Cc: mohamed, → mohamed
Component: Backend
Description: modified (diff)
Milestone: 1.9.0

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

Component: BackendFrontend

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

Owner: changed from mohamed to Martin Sjölund
Status: newassigned

The initial code now works in r12755. Regression testing in SpliceUnknownDest.mo.

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

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.