diff --git a/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/PassPersistance.java b/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/PassPersistance.java index d73d4f89e742..838a148e7a0b 100644 --- a/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/PassPersistance.java +++ b/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/PassPersistance.java @@ -3,6 +3,7 @@ import java.io.IOException; import org.enso.compiler.pass.analyse.alias.Graph; import org.enso.compiler.pass.analyse.alias.Info; +import org.enso.compiler.pass.analyse.types.TypeInference; import org.enso.compiler.pass.resolve.DocumentationComments; import org.enso.compiler.pass.resolve.DocumentationComments$; import org.enso.compiler.pass.resolve.ExpressionAnnotations$; @@ -74,6 +75,7 @@ id = 1265, allowInlining = false) @Persistable(clazz = Graph.Link.class, id = 1266, allowInlining = false) +@Persistable(clazz = TypeInference.class, id = 1280) public final class PassPersistance { private PassPersistance() {} diff --git a/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/types/AtomTypeInterfaceFromBindingsMap.java b/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/types/AtomTypeInterfaceFromBindingsMap.java index 3fd8b6a0315f..dce35aface59 100644 --- a/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/types/AtomTypeInterfaceFromBindingsMap.java +++ b/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/types/AtomTypeInterfaceFromBindingsMap.java @@ -7,8 +7,17 @@ import scala.jdk.javaapi.CollectionConverters$; /** Implementation of {@link AtomTypeInterface} that is built from a {@link BindingsMap.Type}. */ -record AtomTypeInterfaceFromBindingsMap(BindingsMap.Type type) implements AtomTypeInterface { - // needed for serialization +public final class AtomTypeInterfaceFromBindingsMap implements AtomTypeInterface { + private final BindingsMap.Type type; + + public AtomTypeInterfaceFromBindingsMap(BindingsMap.Type type) { + this.type = type; + } + + // Needed for Persistable + public BindingsMap.Type type() { + return type; + } @Override public List constructors() { diff --git a/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/types/TypeInferencePersistance.java b/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/types/TypeInferencePersistance.java new file mode 100644 index 000000000000..405ea82f6f53 --- /dev/null +++ b/engine/runtime-compiler/src/main/java/org/enso/compiler/pass/analyse/types/TypeInferencePersistance.java @@ -0,0 +1,48 @@ +package org.enso.compiler.pass.analyse.types; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import org.enso.persist.Persistable; +import org.enso.persist.Persistance; +import org.openide.util.lookup.ServiceProvider; + +@Persistable(clazz = InferredType.class, id = 34000) +@Persistable(clazz = TypeRepresentation.TopType.class, id = 34001) +@Persistable(clazz = TypeRepresentation.TypeObject.class, id = 34002) +@Persistable(clazz = TypeRepresentation.ArrowType.class, id = 34003) +@Persistable(clazz = TypeRepresentation.AtomType.class, id = 34004) +@Persistable(clazz = TypeRepresentation.IntersectionType.class, id = 34005) +@Persistable(clazz = TypeRepresentation.SumType.class, id = 34006) +@Persistable(clazz = TypeRepresentation.UnresolvedSymbol.class, id = 34007) +@Persistable(clazz = AtomTypeInterfaceFromBindingsMap.class, id = 34010) +public final class TypeInferencePersistance { + private TypeInferencePersistance() {} + + @ServiceProvider(service = Persistance.class) + public static final class PersistJavaList extends Persistance { + public PersistJavaList() { + super(List.class, true, 34011); + } + + @Override + protected void writeObject(List list, Output out) throws IOException { + var size = list.size(); + out.writeInt(size); + for (var i = 0; i < size; i++) { + out.writeObject(list.get(i)); + } + } + + @Override + protected List readObject(Input in) throws IOException, ClassNotFoundException { + var size = in.readInt(); + var list = new ArrayList<>(size); + for (var i = 0; i < size; i++) { + var elem = in.readObject(); + list.add(elem); + } + return list; + } + } +} diff --git a/engine/runtime-parser/src/main/java/org/enso/compiler/core/ir/IrPersistance.java b/engine/runtime-parser/src/main/java/org/enso/compiler/core/ir/IrPersistance.java index b502f3612e81..140d781b4194 100644 --- a/engine/runtime-parser/src/main/java/org/enso/compiler/core/ir/IrPersistance.java +++ b/engine/runtime-parser/src/main/java/org/enso/compiler/core/ir/IrPersistance.java @@ -68,6 +68,8 @@ @Persistable(clazz = Unused.FunctionArgument.class, id = 787) @Persistable(clazz = Warning.DuplicatedImport.class, id = 788) @Persistable(clazz = Warning.WrongBuiltinMethod.class, id = 789) +@Persistable(clazz = Warning.NotInvokable.class, id = 791) +@Persistable(clazz = Warning.TypeMismatch.class, id = 792) @Persistable(clazz = Operator.Binary.class, id = 790) public final class IrPersistance { private IrPersistance() {}