summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-11-21 11:40:52 +0100
committerJason Zaugg <jzaugg@gmail.com>2013-11-21 11:41:56 +0100
commit33a086b97a5a7763acbf70e42edadace4d4cff95 (patch)
treedb6518ebf245d157565468ca831e29b97d854256
parentc243435f113615b2f7407fbd683c93ec16c73749 (diff)
downloadscala-33a086b97a5a7763acbf70e42edadace4d4cff95.tar.gz
scala-33a086b97a5a7763acbf70e42edadace4d4cff95.tar.bz2
scala-33a086b97a5a7763acbf70e42edadace4d4cff95.zip
Handle TypeApply(fun, ...) for symbol-less funs
Such as class literals, as one could conjure in `classOf[Int][Int]` Before, this would crash with a `NullPointerException`
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala2
-rw-r--r--test/files/neg/class-of-double-targs.check4
-rw-r--r--test/files/neg/class-of-double-targs.scala3
3 files changed, 8 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index fa704adde2..8594309818 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -5051,7 +5051,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
// @M: fun is typed in TAPPmode because it is being applied to its actual type parameters
val fun1 = typed(fun, mode.forFunMode | TAPPmode)
- val tparams = fun1.symbol.typeParams
+ val tparams = if (fun1.symbol == null) Nil else fun1.symbol.typeParams
//@M TODO: val undets_fun = context.undetparams ?
// "do args first" (by restoring the context.undetparams) in order to maintain context.undetparams on the function side.
diff --git a/test/files/neg/class-of-double-targs.check b/test/files/neg/class-of-double-targs.check
new file mode 100644
index 0000000000..f7e2094f97
--- /dev/null
+++ b/test/files/neg/class-of-double-targs.check
@@ -0,0 +1,4 @@
+class-of-double-targs.scala:2: error: expression of type Class[Int](classOf[scala.Int]) does not take type parameters.
+ classOf[Int][Int]
+ ^
+one error found
diff --git a/test/files/neg/class-of-double-targs.scala b/test/files/neg/class-of-double-targs.scala
new file mode 100644
index 0000000000..26a2fa8381
--- /dev/null
+++ b/test/files/neg/class-of-double-targs.scala
@@ -0,0 +1,3 @@
+object Test {
+ classOf[Int][Int]
+}