diff --git a/src/main/java/de/hhu/stups/codegenerator/generators/ImportGenerator.java b/src/main/java/de/hhu/stups/codegenerator/generators/ImportGenerator.java index 33b19da010a8b9d75e235a6d6c83433cd0327060..06b1fbcda8a1bbf5cd443d84a7ccd655fb8a0b3b 100755 --- a/src/main/java/de/hhu/stups/codegenerator/generators/ImportGenerator.java +++ b/src/main/java/de/hhu/stups/codegenerator/generators/ImportGenerator.java @@ -19,6 +19,7 @@ import de.prob.parser.ast.types.IntegerType; import de.prob.parser.ast.types.RecordType; import de.prob.parser.ast.types.SetType; import de.prob.parser.ast.types.StringType; +import de.prob.parser.ast.types.UntypedType; import org.stringtemplate.v4.ST; import org.stringtemplate.v4.STGroup; @@ -86,7 +87,8 @@ public class ImportGenerator { importBFreetype(); importFreetype((FreetypeType) type); importBBoolean(); - } else { + } else if (type != null && !(type instanceof UntypedType)) { + // null and untyped slip through sometimes, just ignore those throw new IllegalArgumentException("Unsupported type: " + type); } } diff --git a/src/main/resources/de/hhu/stups/codegenerator/JavaTemplate.stg b/src/main/resources/de/hhu/stups/codegenerator/JavaTemplate.stg index 690cd64939710f55fc74aea87fe1ad09f484d7fc..51ab4188545b4809c478cc4e37f4873b1d7f5e46 100644 --- a/src/main/resources/de/hhu/stups/codegenerator/JavaTemplate.stg +++ b/src/main/resources/de/hhu/stups/codegenerator/JavaTemplate.stg @@ -599,7 +599,7 @@ public static abstract class <name> extends BFreetype { } public final BBoolean unequal(<name> o) { - return this.equal(o).not(); + return new BBoolean(!this.equals(o)); } @Override @@ -612,6 +612,41 @@ public static abstract class <name> extends BFreetype { public abstract String toString(); } + +public static final class <name>Set implements BObject { + + public static final <name>Set INSTANCE = new <name>Set(); + + private <name>Set() { + } + + public BBoolean elementOf(<name> o) { + return new BBoolean(true); + } + + public BBoolean equal(<name>Set o) { + return new BBoolean(true); + } + + public BBoolean unequal(<name>Set o) { + return new BBoolean(false); + } + + @Override + public boolean equals(Object o) { + return o instanceof <name>Set; + } + + @Override + public int hashCode() { + return <name>Set.class.hashCode(); + } + + @Override + public String toString() { + return "<name>"; + } +} >> freetype_element_declaration(name,freetype) ::= << @@ -757,7 +792,7 @@ freetype_import() ::= << >> freetype_call(name) ::= << -<name> +<name>Set.INSTANCE >> freetype_element_call(name) ::= <<