Skip to content

Commit 05cd6bf

Browse files
committed
Warn nopos & tests/init refactor for warn tests
[Cherry-picked 19b7386][modified]
1 parent c5d3a93 commit 05cd6bf

File tree

155 files changed

+255
-243
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+255
-243
lines changed

Diff for: compiler/test/dotty/tools/dotc/CompilationTests.scala

+1
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ class CompilationTests {
208208
implicit val testGroup: TestGroup = TestGroup("checkInit")
209209
val options = defaultOptions.and("-Ysafe-init", "-Xfatal-warnings")
210210
compileFilesInDir("tests/init/neg", options).checkExpectedErrors()
211+
compileFilesInDir("tests/init/warn", defaultOptions.and("-Ysafe-init")).checkWarnings()
211212
compileFilesInDir("tests/init/pos", options).checkCompile()
212213
compileFilesInDir("tests/init/crash", options.without("-Xfatal-warnings")).checkCompile()
213214

Diff for: compiler/test/dotty/tools/vulpix/ParallelTesting.scala

+7-4
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
755755
end maybeFailureMessage
756756

757757
def getWarnMapAndExpectedCount(files: Seq[JFile]): (HashMap[String, Integer], Int) =
758-
val comment = raw"//( *)warn".r
758+
val comment = raw"//( *)(nopos-)?warn".r
759759
val map = new HashMap[String, Integer]()
760760
var count = 0
761761
def bump(key: String): Unit =
@@ -766,8 +766,11 @@ trait ParallelTesting extends RunnerOrchestration { self =>
766766
files.filter(isSourceFile).foreach { file =>
767767
Using(Source.fromFile(file, StandardCharsets.UTF_8.name)) { source =>
768768
source.getLines.zipWithIndex.foreach { case (line, lineNbr) =>
769-
comment.findAllMatchIn(line).foreach { _ =>
770-
bump(s"${file.getPath}:${lineNbr+1}")
769+
comment.findAllMatchIn(line).foreach { m =>
770+
m.group(2) match
771+
case "nopos-" =>
772+
bump("nopos")
773+
case _ => bump(s"${file.getPath}:${lineNbr+1}")
771774
}
772775
}
773776
}.get
@@ -788,7 +791,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
788791
val key = s"${relativize(srcpos.source.file.toString())}:${srcpos.line + 1}"
789792
if !seenAt(key) then unexpected += key
790793
else
791-
unpositioned += relativize(srcpos.source.file.toString())
794+
if(!seenAt("nopos")) unpositioned += relativize(srcpos.source.file.toString())
792795

793796
reporterWarnings.foreach(sawDiagnostic)
794797

Diff for: tests/init/neg/early-promote2.scala

-6
This file was deleted.

Diff for: tests/init/neg/i12544.scala

-19
This file was deleted.

Diff for: tests/init/neg/inner9.scala

-20
This file was deleted.

Diff for: tests/init/neg/simple1.scala

-4
This file was deleted.

Diff for: tests/init/neg/soundness4.scala

-3
This file was deleted.

Diff for: tests/init/neg/AbstractFile.scala renamed to tests/init/warn/AbstractFile.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ abstract class AbstractFile {
44
}
55

66
class RemoteFile(url: String) extends AbstractFile {
7-
val localFile: String = s"${url.##}.tmp" // error: usage of `localFile` before it's initialized
7+
val localFile: String = s"${url.##}.tmp" // warn: usage of `localFile` before it's initialized
88
def name: String = localFile
99
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
class Foo {
22
val self = this
33
val x = self.n
4-
val n = 10 // error
4+
val n = 10 // warn
55
}

Diff for: tests/init/neg/apply.scala renamed to tests/init/warn/apply.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ object A:
66

77
class B:
88
val a = A(this)
9-
val a2 = A.foo(this) // error
9+
val a2 = A.foo(this) // warn
1010
val a3 = A.bar(this)
1111

1212
// test receiver is ThisRef
@@ -20,7 +20,7 @@ object O:
2020

2121
class B:
2222
val a = A(this)
23-
val a2 = A.foo(this) // error
23+
val a2 = A.foo(this) // warn
2424
val a3 = A.bar(this)
2525

2626
val b = new B
@@ -38,7 +38,7 @@ class M(n: N):
3838

3939
class B:
4040
val a = A(this)
41-
val a2 = A.foo(this) // error
41+
val a2 = A.foo(this) // warn
4242
val a3 = A.bar(this)
4343
end M
4444

Diff for: tests/init/neg/apply2.scala renamed to tests/init/warn/apply2.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
object O:
1+
class O:
22
case class A(b: B):
33
println(n)
44

55
class B:
6-
val a = A(this) // error
6+
val a = A(this) // warn
77

88
val b = new B
99
val n = 10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
final class MyAsInstanceOfClass(o: MyAsInstanceOfClass) {
22
val other: MyAsInstanceOfClass = {
33
if (o.asInstanceOf[MyAsInstanceOfClass].oRef ne null) o
4-
else new MyAsInstanceOfClass(this) // error
4+
else new MyAsInstanceOfClass(this) // warn
55
}
66
val oRef = o
77
}

Diff for: tests/init/neg/by-name-error.scala renamed to tests/init/warn/by-name-error.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ object Foo {
88
}
99

1010
class A {
11-
val foo = implicitly[Foo] // error
11+
val foo = implicitly[Foo] // warn
1212
assert(foo eq foo.next)
1313
}

Diff for: tests/init/neg/closureLeak.scala renamed to tests/init/warn/closureLeak.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ class Outer {
88
}
99

1010
val l: List[A] = List(new A(5), new A(10))
11-
l.foreach(a => a.addX(this)) // error
11+
l.foreach(a => a.addX(this)) // warn
1212
val p = 10
1313
}

Diff for: tests/init/neg/cold-insert-hot-array.scala renamed to tests/init/warn/cold-insert-hot-array.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ object A:
33

44
class B {
55
var a = new Array[B](2)
6-
A.foo(this, a) // error
6+
A.foo(this, a) // warn
77
println(a(0).i)
88
val i = 99
99
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
case class A(b: B) {
22
val x1 = b.x
3-
val x = B(this) // error
3+
val x = B(this) // warn
44
val y = x.a
55
}
66

77
case class B(a: A) {
88
val x1 = a.x
9-
val x = A(this) // error
9+
val x = A(this) // warn
1010
val h = x.b
1111
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
class A(x: B) {
22
println(x.b)
3-
val a = new B(this) // error
3+
val a = new B(this) // warn
44
val d = a.b
55
}
66

77
class B(x: A) {
88
println(x.a)
9-
val b = new A(this) // error
9+
val b = new A(this) // warn
1010
val d = b.a
1111
}

Diff for: tests/init/neg/default-this.scala renamed to tests/init/warn/default-this.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class A {
66
class B extends A {
77
def updateThenCompare(c: Int): Boolean = {
88
x = c
9-
compare() // error
9+
compare() // warn
1010
}
1111
val result = updateThenCompare(5)
1212
}

Diff for: tests/init/neg/early-promote.scala renamed to tests/init/warn/early-promote.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class A { // checking A
2424
def c = new C
2525
}
2626
val b = new B()
27-
println(b) // error: the checker simply issue warnings for objects that contain inner classes
27+
println(b) // warn: the checker simply issue warnings for objects that contain inner classes
2828
val af = 42
2929
}
3030

Diff for: tests/init/warn/early-promote2.scala

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class M {
2+
println(this) // warn
3+
foo()
4+
private val a = 5 // warn
5+
def foo() = a
6+
}

Diff for: tests/init/neg/early-promote3.scala renamed to tests/init/warn/early-promote3.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ abstract class A {
66
}
77

88
class M extends A {
9-
def bar() = promote(this) // error
9+
def bar() = promote(this) // warn
1010
def promote(m: M) = m.foo()
1111
}

Diff for: tests/init/neg/early-promote4.scala renamed to tests/init/warn/early-promote4.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ class Outer {
1616

1717
class Dummy {
1818
val m: Int = n + 4
19-
val n: Int = 10 // error
19+
val n: Int = 10 // warn
2020
}

Diff for: tests/init/neg/early-promote5.scala renamed to tests/init/warn/early-promote5.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ class Outer {
1414

1515
class Container {
1616
val o = new Outer
17-
val m = new o.M(this) // error
17+
val m = new o.M(this) // warn
1818
val s = "hello"
1919
}
2020

2121
class Dummy {
2222
val m: Int = n + 4
23-
val n: Int = 10 // error
23+
val n: Int = 10 // warn
2424
}

Diff for: tests/init/neg/escape1.scala renamed to tests/init/warn/escape1.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
class Foo {
2-
val a = Foo.bar(this) // error
2+
val a = Foo.bar(this) // warn
33
val b = "hello"
44
}
55

Diff for: tests/init/neg/features-high-order.scala renamed to tests/init/warn/features-high-order.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ abstract class Parent {
44
}
55
class Child extends Parent {
66
val a = f()
7-
val b = "hello" // error
7+
val b = "hello" // warn
88
def message: String = b
99
}

Diff for: tests/init/neg/features-linearization.scala renamed to tests/init/warn/features-linearization.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
trait TA {
2-
val x = "world" // error
2+
val x = "world" // warn
33
}
44

55
trait TB {

Diff for: tests/init/neg/features-trees.scala renamed to tests/init/warn/features-trees.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ class Trees {
22
class ValDef { counter += 1 }
33
class EmptyValDef extends ValDef
44
val theEmptyValDef = new EmptyValDef
5-
private var counter = 0 // error
5+
private var counter = 0 // warn
66
}

Diff for: tests/init/neg/final-fields.scala renamed to tests/init/warn/final-fields.scala

+9-9
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ trait U {
1212
val f2: Int
1313
}
1414

15-
object Test0 extends U {
15+
class Test0 extends U {
1616
final val f1 = 1
1717
final val f2 = 2
1818
final val f3 = f1 + f2
1919
val f4: 3 = f3
2020
}
2121

22-
object Test1 extends U {
22+
class Test1 extends U {
2323
final val f1 = 1
2424
final val f3 = f1 + f2
2525
final val f2 = 2
@@ -28,16 +28,16 @@ object Test1 extends U {
2828

2929
}
3030

31-
object Test extends T {
32-
override final val f1 = /*super.f1*/ 1 + f2 // error
33-
override final val f2 = 2 // error
34-
override final val f3 = {println(3); 3} // error
35-
override val f4 = f3 + 1 // error
31+
class Test extends T {
32+
override final val f1 = /*super.f1*/ 1 + f2 // warn
33+
override final val f2 = 2 // warn
34+
override final val f3 = {println(3); 3} // warn
35+
override val f4 = f3 + 1 // warn
3636

3737
def g: 3 = { println("g"); 3 }
3838
final val x = g + 1
3939
def main(args: Array[String]): Unit = {
40-
Test0
41-
Test1
40+
new Test0
41+
new Test1
4242
}
4343
}

Diff for: tests/init/neg/flow2.scala renamed to tests/init/warn/flow2.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
class Foo {
22
val len = list.size
3-
val list = List(4, 6) // error
3+
val list = List(4, 6) // warn
44

55
lazy val len2 = list2.size // ok
66
val list2 = List(4, 6)

Diff for: tests/init/neg/function-loop.scala renamed to tests/init/warn/function-loop.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ class Foo {
22
val f: Int => Foo = (x: Int) => if x > 0 then f(x) else this
33
f(10).n
44

5-
val n = 10 // error
5+
val n = 10 // warn
66
}

Diff for: tests/init/neg/function1.scala renamed to tests/init/warn/function1.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ class Foo {
44
val fun2: Int => Int = n => 1 + n + list.size
55
fun2(5)
66

7-
List(5, 9).map(n => 2 + n + list.size) // error
7+
List(5, 9).map(n => 2 + n + list.size) // warn
88

9-
final val list = List(1, 2, 3) // error
9+
final val list = List(1, 2, 3) // warn
1010

1111
List(5, 9).map(n => 3 + n + list.size)
1212
}

Diff for: tests/init/neg/function10.scala renamed to tests/init/warn/function10.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
class Base { self =>
2-
(0 to 10).foreach { i => // error
2+
(0 to 10).foreach { i => // warn
33
println(a)
44
}
55

Diff for: tests/init/neg/function11.scala renamed to tests/init/warn/function11.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
final class Capture {
2-
private[this] var m: Boolean = false
2+
private var m: Boolean = false
33

4-
(0 to 10).foreach { i => // error
4+
(0 to 10).foreach { i => // warn
55
f()
66
}
77

@@ -14,7 +14,7 @@ final class Capture {
1414
}
1515

1616
final class Capture2 {
17-
private[this] var m: Boolean = false
17+
private var m: Boolean = false
1818

1919
(0 to 10).foreach { i =>
2020
f()

0 commit comments

Comments
 (0)