diff --git a/monticore-grammar/src/main/java/de/monticore/types/check/SymTypeExpressionFactory.java b/monticore-grammar/src/main/java/de/monticore/types/check/SymTypeExpressionFactory.java index e91e429d1d..523befde55 100644 --- a/monticore-grammar/src/main/java/de/monticore/types/check/SymTypeExpressionFactory.java +++ b/monticore-grammar/src/main/java/de/monticore/types/check/SymTypeExpressionFactory.java @@ -141,11 +141,15 @@ public static SymTypeOfRegEx createTypeRegEx(String regex) { /** * creates the "Void"-type, i.e. a pseudotype that represents the absence of a real type - * - * @return */ public static SymTypeVoid createTypeVoid() { - return new SymTypeVoid(); + Optional type = BasicSymbolsMill.globalScope() + .resolveTypeLocally(BasicSymbolsMill.VOID); + if (type.isEmpty()) { + Log.error("0x893F63 Internal Error: Non primitive type " + + BasicSymbolsMill.VOID + " stored as constant."); + } + return new SymTypeVoid(type.orElseThrow()); } public static SymTypeObscure createObscureType() { diff --git a/monticore-grammar/src/main/java/de/monticore/types/check/SymTypeVoid.java b/monticore-grammar/src/main/java/de/monticore/types/check/SymTypeVoid.java index 9418139c2c..9106cbc007 100644 --- a/monticore-grammar/src/main/java/de/monticore/types/check/SymTypeVoid.java +++ b/monticore-grammar/src/main/java/de/monticore/types/check/SymTypeVoid.java @@ -3,6 +3,7 @@ import de.monticore.symbols.basicsymbols.BasicSymbolsMill; +import de.monticore.symbols.basicsymbols._symboltable.TypeSymbol; import de.monticore.symbols.basicsymbols._symboltable.TypeSymbolSurrogate; import de.monticore.types3.ISymTypeVisitor; @@ -16,6 +17,10 @@ public SymTypeVoid() { typeSymbol = new TypeSymbolSurrogate(BasicSymbolsMill.VOID); typeSymbol.setEnclosingScope(BasicSymbolsMill.scope()); } + + protected SymTypeVoid(TypeSymbol symbol) { + + } @Override public boolean isVoidType() {