summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2016-05-23 17:32:10 -0700
committerAdriaan Moors <adriaan@lightbend.com>2016-05-23 17:32:10 -0700
commit207e32df30fd733e4dd1cb28fb8cb5c3153c21a6 (patch)
treed28478f31fb4d85857fc1a2b7996edfbc0b80d99
parent0659af2d180232ab0ec9c2e4230a0057029ad4c2 (diff)
parent6be9fc678b8af5df915905059fd31f0fc1d9d821 (diff)
downloadscala-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.scala4
-rw-r--r--test/files/neg/t9781.check4
-rw-r--r--test/files/neg/t9781.scala4
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
+}