diff options
author | Som Snytt <som.snytt@gmail.com> | 2016-09-15 23:16:40 -0700 |
---|---|---|
committer | Som Snytt <som.snytt@gmail.com> | 2017-03-11 23:38:08 -0800 |
commit | 94b938bb290a231694e5721368023bd6693bb2ed (patch) | |
tree | ce8366bfa9b301add12d53f2ddf13fe7e05b235a /src/reflect/scala/reflect/internal/TreeGen.scala | |
parent | bd280077d04a3ac84ca48f549faaa8915d46ef2e (diff) | |
download | scala-94b938bb290a231694e5721368023bd6693bb2ed.tar.gz scala-94b938bb290a231694e5721368023bd6693bb2ed.tar.bz2 scala-94b938bb290a231694e5721368023bd6693bb2ed.zip |
SI-8040 Warn unused flags
Introduce `-Ywarn-unused:x,y,z` and exploit `-Ywarn-unused:patvars`.
Although the tree attachment for shielding patvars from warnings
is not structural, sneaking the settings flag into the reflection
internal TreeGen is awkward.
Add test to ensure isolation of patvars warning from others.
`-Ywarn-unused-import` is an alias for `-Ywarn-unused:imports`.
`-Xlint:unused` is an alias for `-Ywarn-unused`, but not enabled
yet. The help text advises to use `-Ywarn-unused`. The future can
decide if `-Xlint:unused-imports` is warranted.
Diffstat (limited to 'src/reflect/scala/reflect/internal/TreeGen.scala')
-rw-r--r-- | src/reflect/scala/reflect/internal/TreeGen.scala | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/reflect/scala/reflect/internal/TreeGen.scala b/src/reflect/scala/reflect/internal/TreeGen.scala index 373758d0a5..ade9ee84ac 100644 --- a/src/reflect/scala/reflect/internal/TreeGen.scala +++ b/src/reflect/scala/reflect/internal/TreeGen.scala @@ -899,8 +899,8 @@ abstract class TreeGen { case Ident(name) if treeInfo.isVarPattern(tree) && name != nme.WILDCARD => atPos(tree.pos) { val b = Bind(name, atPos(tree.pos.focus) (Ident(nme.WILDCARD))) - if (forFor) b updateAttachment AtBoundIdentifierAttachment - else b + if (!forFor && isPatVarWarnable) b + else b updateAttachment AtBoundIdentifierAttachment } case Typed(id @ Ident(name), tpt) if treeInfo.isVarPattern(id) && name != nme.WILDCARD => atPos(tree.pos.withPoint(id.pos.point)) { @@ -922,7 +922,13 @@ abstract class TreeGen { tree } } + + /** Can be overridden to depend on settings.warnUnusedPatvars. */ + def isPatVarWarnable: Boolean = true + + /** Not in for comprehensions, whether to warn unused pat vars depends on flag. */ object patvarTransformer extends PatvarTransformer(forFor = false) + /** Tag pat vars in for comprehensions. */ object patvarTransformerForFor extends PatvarTransformer(forFor = true) |