diff --git a/Compiler/NFFrontEnd/NFConnector.mo b/Compiler/NFFrontEnd/NFConnector.mo index 5328eb56059..6e773a8d226 100644 --- a/Compiler/NFFrontEnd/NFConnector.mo +++ b/Compiler/NFFrontEnd/NFConnector.mo @@ -236,7 +236,9 @@ protected conns := splitImpl(c, t, face, source, cty, conns); end for; else - conns := CONNECTOR(name, ty, face, cty, source) :: conns; + if not Type.isEmptyArray(ty) then + conns := CONNECTOR(name, ty, face, cty, source) :: conns; + end if; end if; then conns; diff --git a/Compiler/NFFrontEnd/NFInst.mo b/Compiler/NFFrontEnd/NFInst.mo index cce8c614408..2c66c263d9e 100644 --- a/Compiler/NFFrontEnd/NFInst.mo +++ b/Compiler/NFFrontEnd/NFInst.mo @@ -97,6 +97,7 @@ import FlatModel = NFFlatModel; import ElementSource; import SimplifyModel = NFSimplifyModel; import Record = NFRecord; +import Variable = NFVariable; import OperatorOverloading = NFOperatorOverloading; import EvalConstants = NFEvalConstants; @@ -167,6 +168,9 @@ algorithm // Scalarize array components in the flat model. if Flags.isSet(Flags.NF_SCALARIZE) then flat_model := Scalarize.scalarize(flat_model, name); + else + // Remove empty arrays from variables + flat_model.variables := List.filterOnFalse(flat_model.variables, Variable.isEmptyArray); end if; // Convert the flat model to a DAE. diff --git a/Compiler/NFFrontEnd/NFVariable.mo b/Compiler/NFFrontEnd/NFVariable.mo index 0a8987568ae..d3fa23ff987 100644 --- a/Compiler/NFFrontEnd/NFVariable.mo +++ b/Compiler/NFFrontEnd/NFVariable.mo @@ -84,5 +84,10 @@ public variable.attributes.variability <= Variability.STRUCTURAL_PARAMETER; end isStructural; + function isEmptyArray + input Variable variable; + output Boolean isEmpty = Type.isEmptyArray(variable.ty); + end isEmptyArray; + annotation(__OpenModelica_Interface="frontend"); end NFVariable;