diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-06-11 01:11:37 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-06-11 01:11:37 -0700 |
commit | de6989a068982a216621082c01dd1db3861940f8 (patch) | |
tree | ab10b728c6b64bb02f9966028edbcf54ed0f24db /src | |
parent | 0a07bb962f87053e217dc34b88f5e46e046bd95a (diff) | |
parent | fc6ea96f1946712a889b7db50a520be49ea2e208 (diff) | |
download | scala-de6989a068982a216621082c01dd1db3861940f8.tar.gz scala-de6989a068982a216621082c01dd1db3861940f8.tar.bz2 scala-de6989a068982a216621082c01dd1db3861940f8.zip |
Merge pull request #698 from retronym/ticket/5696
SI-5696 Detect excess constructor argument lists.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala | 5 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala index a2f0e053a8..bcf2ba6b71 100644 --- a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala +++ b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala @@ -224,6 +224,11 @@ trait ContextErrors { def SuperConstrArgsThisReferenceError(tree: Tree) = NormalTypeError(tree, "super constructor arguments cannot reference unconstructed `this`") + def TooManyArgumentListsForConstructor(tree: Tree) = { + issueNormalTypeError(tree, "too many argument lists for constructor invocation") + setError(tree) + } + // typedValDef def VolatileValueError(vdef: Tree) = issueNormalTypeError(vdef, "values cannot be volatile") diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index fec5063bd0..2bdae4164a 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -4950,6 +4950,8 @@ trait Typers extends Modes with Adaptations with Tags { else new ApplyToImplicitArgs(Select(tag, nme.newArray), args) } typed(newArrayApp, mode, pt) + case Apply(Select(fun, nme.apply), _) if treeInfo.isSuperConstrCall(fun) => //SI-5696 + TooManyArgumentListsForConstructor(tree) case tree1 => tree1 } |