diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2015-02-25 15:42:55 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2015-02-25 15:42:55 +1000 |
commit | 8a332d9e66ac2aa517b4eda33ff3a39159110fa0 (patch) | |
tree | f18e6282d58e85e503a06c4660f92168ab425d0f /test/files | |
parent | dff479907919f59f35c4efa75e46950d8a239b5b (diff) | |
download | scala-8a332d9e66ac2aa517b4eda33ff3a39159110fa0.tar.gz scala-8a332d9e66ac2aa517b4eda33ff3a39159110fa0.tar.bz2 scala-8a332d9e66ac2aa517b4eda33ff3a39159110fa0.zip |
SI-9170 Fix resident compilation / specialization NPE
The resident compiler does its best to clean the decks at
the conclusion of a compilation batch.
One part of this is as follows: if the run was erroneous,
reset the info of top level symbols defined in this run
to the initial state, that is, to a `SourceFileLoader`.
However, if the errors came late in the compilation pipeline,
the map from symbols to the source files includes the results
of the specialization transformation, which ends up with
mappings like `Function1$sp... -> null`.
This results in a `NullPointerException` on subsequent runs.
This commits filters out null source files during the reset
process.
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/res/t9170.check | 7 | ||||
-rw-r--r-- | test/files/res/t9170.res | 2 | ||||
-rw-r--r-- | test/files/res/t9170/A.scala | 4 |
3 files changed, 13 insertions, 0 deletions
diff --git a/test/files/res/t9170.check b/test/files/res/t9170.check new file mode 100644 index 0000000000..6d40b6ba8d --- /dev/null +++ b/test/files/res/t9170.check @@ -0,0 +1,7 @@ + +nsc> t9170/A.scala:3: error: double definition: +def f[A](a: => A): Int at line 2 and +def f[A](a: => Either[Exception,A]): Int at line 3 +have same type after erasure: (a: Function0)Int + def f[A](a: => Either[Exception, A]) = 2 + ^ diff --git a/test/files/res/t9170.res b/test/files/res/t9170.res new file mode 100644 index 0000000000..c2aec2f8dd --- /dev/null +++ b/test/files/res/t9170.res @@ -0,0 +1,2 @@ +t9170/A.scala +t9170/A.scala diff --git a/test/files/res/t9170/A.scala b/test/files/res/t9170/A.scala new file mode 100644 index 0000000000..239df89679 --- /dev/null +++ b/test/files/res/t9170/A.scala @@ -0,0 +1,4 @@ +object Y { + def f[A](a: => A) = 1 + def f[A](a: => Either[Exception, A]) = 2 +} |