diff --git a/interface/src/main/java/xsbti/api/AbstractLazy.java b/interface/src/main/java/xsbti/api/AbstractLazy.java index bd21f166f..bd49deded 100644 --- a/interface/src/main/java/xsbti/api/AbstractLazy.java +++ b/interface/src/main/java/xsbti/api/AbstractLazy.java @@ -3,11 +3,17 @@ */ package xsbti.api; - import java.io.ObjectStreamException; +import java.io.ObjectStreamException; public abstract class AbstractLazy implements Lazy, java.io.Serializable { - private Object writeReplace() throws ObjectStreamException + // `writeReplace` must be `protected`, so that the `Impl` subclass + // inherits the serialization override. + // + // (See source-dependencies/java-analysis-serialization-error, which would + // crash trying to serialize an AbstractLazy, because it pulled in an + // unserializable type eventually.) + protected Object writeReplace() throws ObjectStreamException { return new StrictLazy(get()); } diff --git a/sbt/src/sbt-test/source-dependencies/java-analysis-serialization-error/Outer.java b/sbt/src/sbt-test/source-dependencies/java-analysis-serialization-error/Outer.java new file mode 100644 index 000000000..0cf8276a9 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/java-analysis-serialization-error/Outer.java @@ -0,0 +1 @@ +public class Outer { private class T extends Thread {} } \ No newline at end of file diff --git a/sbt/src/sbt-test/source-dependencies/java-analysis-serialization-error/build.sbt b/sbt/src/sbt-test/source-dependencies/java-analysis-serialization-error/build.sbt new file mode 100644 index 000000000..1b1ddefb9 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/java-analysis-serialization-error/build.sbt @@ -0,0 +1 @@ +incOptions := incOptions.value.withNameHashing(true).withApiDebug(true) diff --git a/sbt/src/sbt-test/source-dependencies/java-analysis-serialization-error/test b/sbt/src/sbt-test/source-dependencies/java-analysis-serialization-error/test new file mode 100644 index 000000000..5df2af1f3 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/java-analysis-serialization-error/test @@ -0,0 +1 @@ +> compile