summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-05-26 05:20:15 -0700
committerPaul Phillips <paulp@improving.org>2013-05-26 05:20:15 -0700
commit0da2b2c96b6dc91d95a54725bc04381fc0eda43b (patch)
tree3645f00f5398786279f0a070c3595d30fc27cd99 /src
parentf81a4f92967a2dd69784864e9ab9e1624d7db35b (diff)
parentd9c8ccce14bdd4f9364af4941cd47edbfec0c8ce (diff)
downloadscala-0da2b2c96b6dc91d95a54725bc04381fc0eda43b.tar.gz
scala-0da2b2c96b6dc91d95a54725bc04381fc0eda43b.tar.bz2
scala-0da2b2c96b6dc91d95a54725bc04381fc0eda43b.zip
Merge pull request #2588 from retronym/ticket/7509
SI-7509 Avoid crasher as erronous args flow through NamesDefaults
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala b/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
index f3736f1519..802df39f01 100644
--- a/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
@@ -333,9 +333,12 @@ trait NamesDefaults { self: Analyzer =>
// type the application without names; put the arguments in definition-site order
val typedApp = doTypedApply(tree, funOnly, reorderArgs(namelessArgs, argPos), mode, pt)
typedApp match {
- // Extract the typed arguments, restore the call-site evaluation order (using
- // ValDef's in the block), change the arguments to these local values.
- case Apply(expr, typedArgs) if !(typedApp :: typedArgs).exists(_.isErrorTyped) => // bail out with erroneous args, see SI-7238
+ case Apply(expr, typedArgs) if (typedApp :: typedArgs).exists(_.isErrorTyped) =>
+ setError(tree) // bail out with and erroneous Apply *or* erroneous arguments, see SI-7238, SI-7509
+ case Apply(expr, typedArgs) =>
+ // Extract the typed arguments, restore the call-site evaluation order (using
+ // ValDef's in the block), change the arguments to these local values.
+
// typedArgs: definition-site order
val formals = formalTypes(expr.tpe.paramTypes, typedArgs.length, removeByName = false, removeRepeated = false)
// valDefs: call-site order