From 47f4e3fef1775a58f0f33313346193923a72ff91 Mon Sep 17 00:00:00 2001 From: Allan Renucci Date: Tue, 25 Sep 2018 18:17:20 +0200 Subject: [PATCH] Fix offset of token EOF Previously was `in.length - 1`, now `in.length` --- compiler/src/dotty/tools/dotc/parsing/CharArrayReader.scala | 6 +++--- compiler/test-resources/repl/i2213 | 6 ++++-- tests/neg/i2494.scala | 3 ++- tests/neg/i4373a.scala | 3 ++- tests/neg/i4373b.scala | 3 ++- tests/neg/i4373c.scala | 3 ++- tests/neg/parser-stability-1.scala | 3 ++- tests/neg/parser-stability-10.scala | 3 ++- tests/neg/parser-stability-11.scala | 3 ++- tests/neg/parser-stability-12.scala | 3 ++- tests/neg/parser-stability-14.scala | 3 ++- tests/neg/parser-stability-15.scala | 3 ++- tests/neg/parser-stability-16.scala | 3 ++- tests/neg/parser-stability-18.scala | 3 ++- tests/neg/parser-stability-19.scala | 3 ++- tests/neg/parser-stability-2.scala | 3 ++- tests/neg/parser-stability-20.scala | 3 ++- tests/neg/parser-stability-21.scala | 3 ++- tests/neg/parser-stability-22.scala | 3 ++- tests/neg/parser-stability-3.scala | 3 ++- tests/neg/parser-stability-4.scala | 3 ++- tests/neg/parser-stability-5.scala | 3 ++- tests/neg/parser-stability-9.scala | 3 ++- tests/neg/parser-stability.scala | 3 ++- 24 files changed, 51 insertions(+), 27 deletions(-) diff --git a/compiler/src/dotty/tools/dotc/parsing/CharArrayReader.scala b/compiler/src/dotty/tools/dotc/parsing/CharArrayReader.scala index 30c15fa75d1a..431ec041772c 100644 --- a/compiler/src/dotty/tools/dotc/parsing/CharArrayReader.scala +++ b/compiler/src/dotty/tools/dotc/parsing/CharArrayReader.scala @@ -39,12 +39,12 @@ abstract class CharArrayReader { self => final def nextChar(): Unit = { val idx = charOffset lastCharOffset = idx + charOffset = idx + 1 if (idx >= buf.length) { ch = SU } else { val c = buf(idx) ch = c - charOffset = idx + 1 if (c == '\\') potentialUnicode() else if (c < ' ') { skipCR(); potentialLineEnd() } } @@ -59,12 +59,12 @@ abstract class CharArrayReader { self => final def nextRawChar(): Unit = { val idx = charOffset lastCharOffset = idx + charOffset = idx + 1 if (idx >= buf.length) { ch = SU } else { - val c = buf(charOffset) + val c = buf(idx) ch = c - charOffset = idx + 1 if (c == '\\') potentialUnicode() } } diff --git a/compiler/test-resources/repl/i2213 b/compiler/test-resources/repl/i2213 index 79bdb08fef92..f5bc4e50badc 100644 --- a/compiler/test-resources/repl/i2213 +++ b/compiler/test-resources/repl/i2213 @@ -2,6 +2,8 @@ scala> def x 1 | def x | ^ | missing return type -1 | def x + +scala> def x: Int +1 | def x: Int | ^ - | '=' expected, but eof found + |declaration of method x not allowed here: only classes can have declared but undefined members diff --git a/tests/neg/i2494.scala b/tests/neg/i2494.scala index 21c11242878d..fb4d338128fb 100644 --- a/tests/neg/i2494.scala +++ b/tests/neg/i2494.scala @@ -1,2 +1,3 @@ enum -object // error // error +object // error +// error \ No newline at end of file diff --git a/tests/neg/i4373a.scala b/tests/neg/i4373a.scala index d0e9505b8c44..caff428fcc9b 100644 --- a/tests/neg/i4373a.scala +++ b/tests/neg/i4373a.scala @@ -1,3 +1,4 @@ // ==> 040fb47fbaf718cecb11a7d51ac5a48bf4f6a1fe.scala <== object x0 { - val x0 : _ with // error // error // error + val x0 : _ with // error // error +// error \ No newline at end of file diff --git a/tests/neg/i4373b.scala b/tests/neg/i4373b.scala index dee55114da66..50c8ef0813e7 100644 --- a/tests/neg/i4373b.scala +++ b/tests/neg/i4373b.scala @@ -1,4 +1,5 @@ // ==> 05bef7805687ba94da37177f7568e3ba7da1f91c.scala <== class x0 { x1: // error - x0 | _ // error // error + x0 | _ // error +// error \ No newline at end of file diff --git a/tests/neg/i4373c.scala b/tests/neg/i4373c.scala index 8f0246b6cdee..44d744856f3f 100644 --- a/tests/neg/i4373c.scala +++ b/tests/neg/i4373c.scala @@ -1,3 +1,4 @@ // ==> 18b253a4a89a84c5674165c6fc3efafad535eee3.scala <== object x0 { - def x1[x2 <:_[ // error // error // error + def x1[x2 <:_[ // error // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-1.scala b/tests/neg/parser-stability-1.scala index 454b9d770418..661ab87e31e5 100644 --- a/tests/neg/parser-stability-1.scala +++ b/tests/neg/parser-stability-1.scala @@ -1,3 +1,4 @@ object x0 { x1 match // error -def this // error // error +def this // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-10.scala b/tests/neg/parser-stability-10.scala index 0eebcb9a6078..661e386b440e 100644 --- a/tests/neg/parser-stability-10.scala +++ b/tests/neg/parser-stability-10.scala @@ -10,4 +10,5 @@ def unapply(i1: Int)(i6: List[Int]): Int = { object i5 { import collection.mutable._ try { ??? mutable { case i1(i5, i3, i4) => i5 }} // error // error // error -} // error +} +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-11.scala b/tests/neg/parser-stability-11.scala index ae9d6cde7b6a..582bcfb88117 100644 --- a/tests/neg/parser-stability-11.scala +++ b/tests/neg/parser-stability-11.scala @@ -2,4 +2,5 @@ package x0 { case class x0 // error // error } package x0 -class x0 // error // error +class x0 // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-12.scala b/tests/neg/parser-stability-12.scala index 956e80768cf5..706235f4ab4a 100644 --- a/tests/neg/parser-stability-12.scala +++ b/tests/neg/parser-stability-12.scala @@ -1,3 +1,4 @@ trait x0[] // error trait x1[x1 <:x0] - extends x1[ // error + extends x1[ +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-14.scala b/tests/neg/parser-stability-14.scala index a34e8f9096d1..9e2794ee17c7 100644 --- a/tests/neg/parser-stability-14.scala +++ b/tests/neg/parser-stability-14.scala @@ -1,4 +1,5 @@ object x0 { { val x1 x0 // error -object x1 // error // error +object x1 // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-15.scala b/tests/neg/parser-stability-15.scala index 89748da11dd6..a979cac8bdc9 100644 --- a/tests/neg/parser-stability-15.scala +++ b/tests/neg/parser-stability-15.scala @@ -3,4 +3,5 @@ class x0 { def x1 = x2 match // error ] // error -case x3[] => x0 // error // error // error // error +case x3[] => x0 // error // error // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-16.scala b/tests/neg/parser-stability-16.scala index f6f6f19aa890..1afa9c8c04bc 100644 --- a/tests/neg/parser-stability-16.scala +++ b/tests/neg/parser-stability-16.scala @@ -2,4 +2,5 @@ class x0[x0] { val x1 : x0 } trait x3 extends x0 { -x1 = 0 object // error // error +x1 = 0 object // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-18.scala b/tests/neg/parser-stability-18.scala index 3eefbbcbd333..17a8f19f404a 100644 --- a/tests/neg/parser-stability-18.scala +++ b/tests/neg/parser-stability-18.scala @@ -1,4 +1,5 @@ trait x0 { class x1 (x1:x0 { -type x1 <: List[x1 <: // error // error +type x1 <: List[x1 <: // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-19.scala b/tests/neg/parser-stability-19.scala index 306b9479a2e4..07938c846f4a 100644 --- a/tests/neg/parser-stability-19.scala +++ b/tests/neg/parser-stability-19.scala @@ -1,4 +1,5 @@ object x0 { case class x0[] // error // error def x0( ) ] // error // error - def x0 ( x0:x0 ):x0.type = x1 x0 // error // error // error + def x0 ( x0:x0 ):x0.type = x1 x0 // error // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-2.scala b/tests/neg/parser-stability-2.scala index d730a16cba9c..f485e81fd21e 100644 --- a/tests/neg/parser-stability-2.scala +++ b/tests/neg/parser-stability-2.scala @@ -1,2 +1,3 @@ trait x0 { -new _ // error // error +new _ // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-20.scala b/tests/neg/parser-stability-20.scala index bb1165042410..7163044ccca0 100644 --- a/tests/neg/parser-stability-20.scala +++ b/tests/neg/parser-stability-20.scala @@ -2,4 +2,5 @@ object x0 { def unapply= Array x0 match x0 // error -case x0( // error // error +case x0( // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-21.scala b/tests/neg/parser-stability-21.scala index 97bbe74c6068..908e2b9bb12f 100644 --- a/tests/neg/parser-stability-21.scala +++ b/tests/neg/parser-stability-21.scala @@ -1,2 +1,3 @@ class x0[x1[]] // error - extends x1[ // error // error + extends x1[ // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-22.scala b/tests/neg/parser-stability-22.scala index 83e21b31816c..021144f1c1dd 100644 --- a/tests/neg/parser-stability-22.scala +++ b/tests/neg/parser-stability-22.scala @@ -1,3 +1,4 @@ package x0.x0 {} object x0 { - def x0 (implicit // error // error + def x0 (implicit // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-3.scala b/tests/neg/parser-stability-3.scala index 6fd00d2701de..280561eeb41b 100644 --- a/tests/neg/parser-stability-3.scala +++ b/tests/neg/parser-stability-3.scala @@ -1,4 +1,5 @@ object x0 { def x0(x1: x2 = 0, x1 x3) x4 = // error // error // error x5 x6 x7[x8[x9 x2]] = x0 -val x10 = x0( ) // error // error +val x10 = x0( ) // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-4.scala b/tests/neg/parser-stability-4.scala index 5c3466faba5e..cbaaa357759f 100644 --- a/tests/neg/parser-stability-4.scala +++ b/tests/neg/parser-stability-4.scala @@ -1,2 +1,3 @@ class x0{ - def x0: x0 = (x0 => x0) => x0) // error // error + def x0: x0 = (x0 => x0) => x0) // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-5.scala b/tests/neg/parser-stability-5.scala index 007c80a37cf1..c9ad5f76fb9b 100644 --- a/tests/neg/parser-stability-5.scala +++ b/tests/neg/parser-stability-5.scala @@ -1,3 +1,4 @@ trait x0 { x1 : { // error -var x2 // error // error +var x2 // error +// error \ No newline at end of file diff --git a/tests/neg/parser-stability-9.scala b/tests/neg/parser-stability-9.scala index 85ff109ab5d8..932f6a15ad52 100644 --- a/tests/neg/parser-stability-9.scala +++ b/tests/neg/parser-stability-9.scala @@ -1 +1,2 @@ -import // error +import +// error \ No newline at end of file diff --git a/tests/neg/parser-stability.scala b/tests/neg/parser-stability.scala index 38ae2efc3c81..31f4881fdb40 100644 --- a/tests/neg/parser-stability.scala +++ b/tests/neg/parser-stability.scala @@ -1,2 +1,3 @@ class I2[I2] { - def I2: I2 = (I2 => I2) => I2 // error // error + def I2: I2 = (I2 => I2) => I2 // error +// error \ No newline at end of file