diff options
author | Martin Odersky <odersky@gmail.com> | 2004-04-20 12:12:02 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-04-20 12:12:02 +0000 |
commit | bda037d7c6d4cd869df23ab3f4eb5805551417d8 (patch) | |
tree | b0c4470c0af6f260b9db5102f1a66b1e1cf827b5 | |
parent | 77f339b1011924a21e463739f9132bde850c17c6 (diff) | |
download | scala-bda037d7c6d4cd869df23ab3f4eb5805551417d8.tar.gz scala-bda037d7c6d4cd869df23ab3f4eb5805551417d8.tar.bz2 scala-bda037d7c6d4cd869df23ab3f4eb5805551417d8.zip |
*** empty log message ***
-rw-r--r-- | sources/scala/tools/scalac/typechecker/Analyzer.scala | 11 | ||||
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 2 | ||||
-rw-r--r-- | test/files/neg/Y.check | 2 |
3 files changed, 12 insertions, 3 deletions
diff --git a/sources/scala/tools/scalac/typechecker/Analyzer.scala b/sources/scala/tools/scalac/typechecker/Analyzer.scala index 9550011d61..2ddef1d71c 100644 --- a/sources/scala/tools/scalac/typechecker/Analyzer.scala +++ b/sources/scala/tools/scalac/typechecker/Analyzer.scala @@ -2060,7 +2060,16 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer( if ((mode & TYPEmode) != 0) { val sym: Symbol = tree1.symbol(); - if ((mode & FUNmode) == 0 && sym != null && sym.typeParams().length != 0) { + def typeParamCount = sym.primaryConstructor().rawInfo() match { + case t: LazyTreeType => + t.tree match { + case Tree$ClassDef(_, _, tparams, _, _, _) => tparams.length + case Tree$AliasTypeDef(_, _, tparams, _) => tparams.length + case _ => 0 + } + case _ => sym.typeParams().length + } + if ((mode & FUNmode) == 0 && sym != null && typeParamCount != 0) { error(tree.pos, "" + sym + " takes type parameters."); return errorTree(tree); } diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index f00f33184c..46c436a901 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -3,7 +3,7 @@ ** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL ** ** /_____/\____/\___/\____/____/ ** ** -** $Id$ + \* */ //todo check significance of JAVA flag. diff --git a/test/files/neg/Y.check b/test/files/neg/Y.check index fca14d1c0b..c4c0c91e54 100644 --- a/test/files/neg/Y.check +++ b/test/files/neg/Y.check @@ -1,4 +1,4 @@ -/home/odersky/scala/test/files/neg/Y.scala:3: `match' needs to be applied fully +Y.scala:3: `match' needs to be applied fully def f(x: Object): java.lang.Object /* !!! Object */ = x.match; ^ one error found |