summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2016-06-28 16:20:10 -0400
committerSom Snytt <som.snytt@gmail.com>2016-11-25 13:24:06 -0800
commit55c6ad4f8a191e691efdbee0a1bbddc4efb66f35 (patch)
treed92698009f8e07b4c9540de9f7e3ac37b4ad62f7 /test
parent35f8908c214b5458ffe32c782dc81055773f5fb4 (diff)
downloadscala-55c6ad4f8a191e691efdbee0a1bbddc4efb66f35.tar.gz
scala-55c6ad4f8a191e691efdbee0a1bbddc4efb66f35.tar.bz2
scala-55c6ad4f8a191e691efdbee0a1bbddc4efb66f35.zip
SI-9834 Improve error on failed op=
If rewriting `x += y` fails to typecheck, emit error messages for both the original tree and the assignment. If rewrite is not attempted because `x` is a val, then say so. The error message at `tree.pos` is updated with the additional advice. SI-8763 Crash in update conversion When there are already errors, don't attempt mechanical rewrites.
Diffstat (limited to 'test')
-rw-r--r--test/files/neg/t0903.check1
-rw-r--r--test/files/neg/t1215.check1
-rw-r--r--test/files/neg/t8763.check6
-rw-r--r--test/files/neg/t8763.scala11
-rw-r--r--test/files/neg/t9834.check8
-rw-r--r--test/files/neg/t9834.scala6
6 files changed, 33 insertions, 0 deletions
diff --git a/test/files/neg/t0903.check b/test/files/neg/t0903.check
index 2dd05cd3ee..f9dc28bf16 100644
--- a/test/files/neg/t0903.check
+++ b/test/files/neg/t0903.check
@@ -1,4 +1,5 @@
t0903.scala:3: error: value += is not a member of Int
+ Expression does not convert to assignment because receiver is not assignable.
x += 1
^
t0903.scala:4: error: reassignment to val
diff --git a/test/files/neg/t1215.check b/test/files/neg/t1215.check
index 1f9dd6bf38..4cbd0d85f3 100644
--- a/test/files/neg/t1215.check
+++ b/test/files/neg/t1215.check
@@ -1,4 +1,5 @@
t1215.scala:2: error: value += is not a member of Int
+ Expression does not convert to assignment because receiver is not assignable.
val x = 1 += 1
^
one error found
diff --git a/test/files/neg/t8763.check b/test/files/neg/t8763.check
new file mode 100644
index 0000000000..4659e57be6
--- /dev/null
+++ b/test/files/neg/t8763.check
@@ -0,0 +1,6 @@
+t8763.scala:9: error: type mismatch;
+ found : Char
+ required: String
+ names_times(fields(0)) += fields(1).toLong
+ ^
+one error found
diff --git a/test/files/neg/t8763.scala b/test/files/neg/t8763.scala
new file mode 100644
index 0000000000..08ce1b471a
--- /dev/null
+++ b/test/files/neg/t8763.scala
@@ -0,0 +1,11 @@
+
+import collection.mutable
+
+object Foo {
+ def bar() {
+ val names_times = mutable.Map[String, mutable.Set[Long]]()
+ val line = ""
+ val Array(fields) = line.split("\t")
+ names_times(fields(0)) += fields(1).toLong
+ }
+}
diff --git a/test/files/neg/t9834.check b/test/files/neg/t9834.check
new file mode 100644
index 0000000000..eaf85abdcd
--- /dev/null
+++ b/test/files/neg/t9834.check
@@ -0,0 +1,8 @@
+t9834.scala:5: error: value += is not a member of Int
+ Expression does not convert to assignment because:
+ type mismatch;
+ found : String
+ required: Int
+ x() += "42"
+ ^
+one error found
diff --git a/test/files/neg/t9834.scala b/test/files/neg/t9834.scala
new file mode 100644
index 0000000000..1ecda7a2b8
--- /dev/null
+++ b/test/files/neg/t9834.scala
@@ -0,0 +1,6 @@
+
+object x { def apply() = 42 ; def update(i: Int) = () }
+
+trait Test {
+ x() += "42"
+}