diff options
author | Adriaan Moors <adriaan@lightbend.com> | 2016-05-23 17:32:10 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan@lightbend.com> | 2016-05-23 17:32:10 -0700 |
commit | 207e32df30fd733e4dd1cb28fb8cb5c3153c21a6 (patch) | |
tree | d28478f31fb4d85857fc1a2b7996edfbc0b80d99 | |
parent | 0659af2d180232ab0ec9c2e4230a0057029ad4c2 (diff) | |
parent | 6be9fc678b8af5df915905059fd31f0fc1d9d821 (diff) | |
download | scala-207e32df30fd733e4dd1cb28fb8cb5c3153c21a6.tar.gz scala-207e32df30fd733e4dd1cb28fb8cb5c3153c21a6.tar.bz2 scala-207e32df30fd733e4dd1cb28fb8cb5c3153c21a6.zip |
Merge pull request #5179 from liff/topic/SI-9781
Check left side of an assignment expression for errors; fixes SI-9781
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 4 | ||||
-rw-r--r-- | test/files/neg/t9781.check | 4 | ||||
-rw-r--r-- | test/files/neg/t9781.scala | 4 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index 329ce8c23b..1aed9c3a64 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -4494,7 +4494,9 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper val opeqStart = if (Statistics.canEnable) Statistics.startTimer(failedOpEqNanos) else null def onError(reportError: => Tree): Tree = fun match { - case Select(qual, name) if !mode.inPatternMode && nme.isOpAssignmentName(newTermName(name.decode)) => + case Select(qual, name) + if !mode.inPatternMode && nme.isOpAssignmentName(newTermName(name.decode)) && !qual.exists(_.isErroneous) => + val qual1 = typedQualifier(qual) if (treeInfo.isVariableOrGetter(qual1)) { if (Statistics.canEnable) Statistics.stopTimer(failedOpEqNanos, opeqStart) diff --git a/test/files/neg/t9781.check b/test/files/neg/t9781.check new file mode 100644 index 0000000000..422c51013a --- /dev/null +++ b/test/files/neg/t9781.check @@ -0,0 +1,4 @@ +t9781.scala:3: error: not found: value undefinedSymbol + c(undefinedSymbol) += 1 + ^ +one error found diff --git a/test/files/neg/t9781.scala b/test/files/neg/t9781.scala new file mode 100644 index 0000000000..70234dcca5 --- /dev/null +++ b/test/files/neg/t9781.scala @@ -0,0 +1,4 @@ +object T9781 { + val c: collection.mutable.Map[Int, Int] = ??? + c(undefinedSymbol) += 1 +} |