﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
4873	Issue with enumeration-indexed arrays in NF	Francesco Casella	Per Östlund	"Please consider the model [https://libraries.openmodelica.org/branches/newInst/Modelica_3.2.2/files/Modelica_3.2.2_Modelica.Electrical.Digital.Examples.FlipFlop.sim Modelica.Electrical.Digital.Examples.FlipFlop]. The following runtime error is reported by the NF:
{{{
assert            | error   | Dimension 1 has bounds 1..9, got array subscript 0
assert            | info    | simulation terminated by an assertion at initialization
}}}
In the old FE, equations such as this one were flattened:
{{{
  FF.RS2.Nor2.auxiliary_n = {Modelica.Electrical.Digital.Interfaces.Logic.'U', Modelica.Electrical.Digital.Interfaces.Logic.'X', Modelica.Electrical.Digital.Interfaces.Logic.'1', Modelica.Electrical.Digital.Interfaces.Logic.'0', Modelica.Electrical.Digital.Interfaces.Logic.'X', Modelica.Electrical.Digital.Interfaces.Logic.'X', Modelica.Electrical.Digital.Interfaces.Logic.'1', Modelica.Electrical.Digital.Interfaces.Logic.'0', Modelica.Electrical.Digital.Interfaces.Logic.'X'}[FF.RS2.Nor2.auxiliary[2]];
}}}
In the NF, this is obtained instead:
{{{
  FF.RS2.Nor2.auxiliary_n = Modelica.Electrical.Digital.Tables.NotTable[FF.RS2.Nor2.auxiliary[2]];

  constant enumeration('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-') Modelica.Electrical.Digital.Tables.NotTable[Modelica.Electrical.Digital.Interfaces.Logic.'U'] = Modelica.Electrical.Digital.Interfaces.Logic.'U' ""9-value logic for 'not'"";
  constant enumeration('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-') Modelica.Electrical.Digital.Tables.NotTable[Modelica.Electrical.Digital.Interfaces.Logic.'X'] = Modelica.Electrical.Digital.Interfaces.Logic.'X' ""9-value logic for 'not'"";
  constant enumeration('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-') Modelica.Electrical.Digital.Tables.NotTable[Modelica.Electrical.Digital.Interfaces.Logic.'0'] = Modelica.Electrical.Digital.Interfaces.Logic.'1' ""9-value logic for 'not'"";
  constant enumeration('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-') Modelica.Electrical.Digital.Tables.NotTable[Modelica.Electrical.Digital.Interfaces.Logic.'1'] = Modelica.Electrical.Digital.Interfaces.Logic.'0' ""9-value logic for 'not'"";
  constant enumeration('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-') Modelica.Electrical.Digital.Tables.NotTable[Modelica.Electrical.Digital.Interfaces.Logic.'Z'] = Modelica.Electrical.Digital.Interfaces.Logic.'X' ""9-value logic for 'not'"";
  constant enumeration('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-') Modelica.Electrical.Digital.Tables.NotTable[Modelica.Electrical.Digital.Interfaces.Logic.'W'] = Modelica.Electrical.Digital.Interfaces.Logic.'X' ""9-value logic for 'not'"";
  constant enumeration('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-') Modelica.Electrical.Digital.Tables.NotTable[Modelica.Electrical.Digital.Interfaces.Logic.'L'] = Modelica.Electrical.Digital.Interfaces.Logic.'1' ""9-value logic for 'not'"";
  constant enumeration('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-') Modelica.Electrical.Digital.Tables.NotTable[Modelica.Electrical.Digital.Interfaces.Logic.'H'] = Modelica.Electrical.Digital.Interfaces.Logic.'0' ""9-value logic for 'not'"";
  constant enumeration('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-') Modelica.Electrical.Digital.Tables.NotTable[Modelica.Electrical.Digital.Interfaces.Logic.'-'] = Modelica.Electrical.Digital.Interfaces.Logic.'X' ""9-value logic for 'not'"";
}}}
I'm not sure how this is actually rendered in terms of internal data structures, but it seems that the new one is not accepted by the subsequent code generation phases."	defect	new	high	2.0.0	New Instantiation				
