Opened 9 years ago

Last modified 9 years ago

#3653 closed defect

Evaluation of lists (stringReal looses type?) — at Version 1

Reported by: Henning Kiel Owned by: Lennart Ochel
Priority: critical Milestone: 1.9.4
Component: Code Generation Version:
Keywords: Cc: Martin Sjölund

Description (last modified by Henning Kiel)

I have the following simple code:

package Main

public function main
  input list<String> args;
  output list<String> out;
protected
  list<Real> r_arr;
  list<String> s_arr;
algorithm
  r_arr := list(stringReal(s) for s in args);
  s_arr := list(String(r) for r in r_arr);
  out := listAppend(args,s_arr);
end main;

end Main;

I run it with omc +g=MetaModelica and the following script:

loadFile("Main.mo");
getErrorString();
Main.main({"1","2","3","4","5","6","7","8"});
getErrorString();

and get the following error:

true
""

"Error: Error building simulator. Build log: clang -I"/Users/henning/src/OpenModelica/build/include/omc/c"  -g  -O0 -march=native   -c -o Main_main.o Main_main.c
/Users/henning/src/OpenModelica/mmc/Main.mo:11:16: warning: implicit declaration of function 'modelica_metatype_to_modelica_string' is invalid in C99 [-Wimplicit-function-declaration]
        tmp4 = modelica_metatype_to_modelica_string(_r, ((modelica_integer) 0), 1);
               ^
/Users/henning/src/OpenModelica/mmc/Main.mo:11:14: warning: incompatible integer to pointer conversion assigning to 'modelica_string' (aka 'void *') from 'int' [-Wint-conversion]
        tmp4 = modelica_metatype_to_modelica_string(_r, ((modelica_integer) 0), 1);
             ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
clang -I"/Users/henning/src/OpenModelica/build/include/omc/c"  -g  -O0 -march=native   -c -o Main_main_records.o Main_main_records.c
clang -single_module -dynamiclib -flat_namespace -o Main_main.dylib Main_main.o Main_main_records.o  -I"/Users/henning/src/OpenModelica/build/include/omc/c"  -g  -O0 -march=native   -L"/Users/henning/src/OpenModelica/build/lib/x86_64-darwin15.3.0/omc" -Wl,-rpath,'/Users/henning/src/OpenModelica/build/lib/x86_64-darwin15.3.0/omc'    -lOpenModelicaRuntimeC -llapack -lblas -lm -lm
Undefined symbols for architecture x86_64:
  "_modelica_metatype_to_modelica_string", referenced from:
      _omc_Main_main in Main_main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Main_main] Error 1
"

So, list(stringReal(...)...) seems to loose information of element type (should be modelica_real, but is modelica_metatype).

Change History (1)

comment:1 by Henning Kiel, 9 years ago

Description: modified (diff)
Summary: Evaluation of listsEvaluation of lists (stringReal looses type?)
Note: See TracTickets for help on using tickets.