Skip to content

Commit 24ccfa0

Browse files
Konstantin FedorovKonstantin Fedorov
authored andcommitted
SI-8398 - unused warning reports lazy val as a method
Compiler internals treat lazy vals as methods. Therefore, we need to have a special case for them when assembling the warning message.
1 parent 2ac6dc0 commit 24ccfa0

File tree

3 files changed

+23
-19
lines changed

3 files changed

+23
-19
lines changed

src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ trait TypeDiagnostics {
532532
if (sym.isDefaultGetter) "default argument"
533533
else if (sym.isConstructor) "constructor"
534534
else if (sym.isVar || sym.isGetter && sym.accessed.isVar) "var"
535-
else if (sym.isVal || sym.isGetter && sym.accessed.isVal) "val"
535+
else if (sym.isVal || sym.isGetter && sym.accessed.isVal || sym.isLazy) "val"
536536
else if (sym.isSetter) "setter"
537537
else if (sym.isMethod) "method"
538538
else if (sym.isModule) "object"

test/files/neg/warn-unused-privates.check

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,57 +10,60 @@ warn-unused-privates.scala:6: warning: private val in class Bippy is never used
1010
warn-unused-privates.scala:13: warning: private val in object Bippy is never used
1111
private val HEY_INSTANCE: Int = 1000 // warn
1212
^
13-
warn-unused-privates.scala:35: warning: private val in class Boppy is never used
13+
warn-unused-privates.scala:14: warning: private val in object Bippy is never used
14+
private lazy val BOOL: Boolean = true // warn
15+
^
16+
warn-unused-privates.scala:36: warning: private val in class Boppy is never used
1417
private val hummer = "def" // warn
1518
^
16-
warn-unused-privates.scala:42: warning: private var in trait Accessors is never used
19+
warn-unused-privates.scala:43: warning: private var in trait Accessors is never used
1720
private var v1: Int = 0 // warn
1821
^
19-
warn-unused-privates.scala:42: warning: private setter in trait Accessors is never used
22+
warn-unused-privates.scala:43: warning: private setter in trait Accessors is never used
2023
private var v1: Int = 0 // warn
2124
^
22-
warn-unused-privates.scala:43: warning: private setter in trait Accessors is never used
25+
warn-unused-privates.scala:44: warning: private setter in trait Accessors is never used
2326
private var v2: Int = 0 // warn, never set
2427
^
25-
warn-unused-privates.scala:44: warning: private var in trait Accessors is never used
28+
warn-unused-privates.scala:45: warning: private var in trait Accessors is never used
2629
private var v3: Int = 0 // warn, never got
2730
^
28-
warn-unused-privates.scala:56: warning: private default argument in trait DefaultArgs is never used
31+
warn-unused-privates.scala:57: warning: private default argument in trait DefaultArgs is never used
2932
private def bippy(x1: Int, x2: Int = 10, x3: Int = 15): Int = x1 + x2 + x3
3033
^
31-
warn-unused-privates.scala:56: warning: private default argument in trait DefaultArgs is never used
34+
warn-unused-privates.scala:57: warning: private default argument in trait DefaultArgs is never used
3235
private def bippy(x1: Int, x2: Int = 10, x3: Int = 15): Int = x1 + x2 + x3
3336
^
34-
warn-unused-privates.scala:67: warning: local var in method f0 is never used
37+
warn-unused-privates.scala:68: warning: local var in method f0 is never used
3538
var x = 1 // warn
3639
^
37-
warn-unused-privates.scala:74: warning: local val in method f1 is never used
40+
warn-unused-privates.scala:75: warning: local val in method f1 is never used
3841
val b = new Outer // warn
3942
^
40-
warn-unused-privates.scala:84: warning: private object in object Types is never used
43+
warn-unused-privates.scala:85: warning: private object in object Types is never used
4144
private object Dongo { def f = this } // warn
4245
^
43-
warn-unused-privates.scala:94: warning: local object in method l1 is never used
46+
warn-unused-privates.scala:95: warning: local object in method l1 is never used
4447
object HiObject { def f = this } // warn
4548
^
46-
warn-unused-privates.scala:78: warning: local var x in method f2 is never set - it could be a val
49+
warn-unused-privates.scala:79: warning: local var x in method f2 is never set - it could be a val
4750
var x = 100 // warn about it being a var
4851
^
49-
warn-unused-privates.scala:85: warning: private class Bar1 in object Types is never used
52+
warn-unused-privates.scala:86: warning: private class Bar1 in object Types is never used
5053
private class Bar1 // warn
5154
^
52-
warn-unused-privates.scala:87: warning: private type Alias1 in object Types is never used
55+
warn-unused-privates.scala:88: warning: private type Alias1 in object Types is never used
5356
private type Alias1 = String // warn
5457
^
55-
warn-unused-privates.scala:95: warning: local class Hi is never used
58+
warn-unused-privates.scala:96: warning: local class Hi is never used
5659
class Hi { // warn
5760
^
58-
warn-unused-privates.scala:99: warning: local class DingDongDoobie is never used
61+
warn-unused-privates.scala:100: warning: local class DingDongDoobie is never used
5962
class DingDongDoobie // warn
6063
^
61-
warn-unused-privates.scala:102: warning: local type OtherThing is never used
64+
warn-unused-privates.scala:103: warning: local type OtherThing is never used
6265
type OtherThing = String // warn
6366
^
6467
error: No warnings can be incurred under -Xfatal-warnings.
65-
21 warnings found
68+
22 warnings found
6669
one error found

test/files/neg/warn-unused-privates.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ object Bippy {
1111
def hi(x: Bippy) = x.HI_COMPANION
1212
private val HI_INSTANCE: Int = 500 // no warn, accessed from instance
1313
private val HEY_INSTANCE: Int = 1000 // warn
14+
private lazy val BOOL: Boolean = true // warn
1415
}
1516

1617
class A(val msg: String)

0 commit comments

Comments
 (0)