summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-06-06 14:51:34 +0200
committerJason Zaugg <jzaugg@gmail.com>2013-06-13 11:51:52 -0400
commita95432168204964e4f6c4571e781559c1640f2d8 (patch)
treef9d38be6e94260f95c46d40438cae2c4dbff331e /src/reflect
parent5312d6305530eb14d369d0f4acaf7ca4e278ea72 (diff)
downloadscala-a95432168204964e4f6c4571e781559c1640f2d8.tar.gz
scala-a95432168204964e4f6c4571e781559c1640f2d8.tar.bz2
scala-a95432168204964e4f6c4571e781559c1640f2d8.zip
SI-7439 Avoid NPE in `isMonomorphicType` with stub symbols.
`originalInfo` can return null for stub symbols; deal with that as we used to before a regression in 016bc3db. After this change, we can once again delete A_1.class and still compile code instantiating B_1. (A_1 is only referred to in a method signature of B_1 which is not called from our code.) scala> new B_1 warning: Class A_1 not found - continuing with a stub. res0: B_1 = B_1@5284b8f9 In practice, this situation arises when someone uses a third party class that was compiled against other libraries not avaialable on the current compilation classpath.
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/Symbols.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala
index f3cea1fd00..db5250b7f3 100644
--- a/src/reflect/scala/reflect/internal/Symbols.scala
+++ b/src/reflect/scala/reflect/internal/Symbols.scala
@@ -752,7 +752,9 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
final def isMonomorphicType =
isType && {
val info = originalInfo
- info.isComplete && !info.isHigherKinded
+ ( (info eq null)
+ || (info.isComplete && !info.isHigherKinded)
+ )
}
def isStrictFP = hasAnnotation(ScalaStrictFPAttr) || (enclClass hasAnnotation ScalaStrictFPAttr)