Skip to content

Commit 48409b7

Browse files
committed
Ignore language version imports
1 parent f06137e commit 48409b7

File tree

4 files changed

+7
-5
lines changed

4 files changed

+7
-5
lines changed

compiler/src/dotty/tools/dotc/core/Contexts.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import Nullables._
2020
import Implicits.ContextualImplicits
2121
import config.Settings._
2222
import config.Config
23+
import config.SourceVersion.allSourceVersionNames
2324
import reporting._
2425
import io.{AbstractFile, NoAbstractFile, PlainFile, Path}
2526
import scala.io.Codec
@@ -1031,7 +1032,8 @@ object Contexts:
10311032

10321033
// register an import
10331034
def +=(info: ImportInfo)(using Context): Unit =
1034-
if ctx.settings.WunusedHas.imports && !ctx.owner.is(Enum) && !ctx.compilationUnit.isJava then
1035+
def isLanguageImport = info.isLanguageImport && allSourceVersionNames.exists(info.forwardMapping.contains)
1036+
if ctx.settings.WunusedHas.imports && !isLanguageImport && !ctx.owner.is(Enum) && !ctx.compilationUnit.isJava then
10351037
importInfos(ctx.compilationUnit) ::= ((info, ctx.owner))
10361038

10371039
// mark a selector as used

compiler/src/dotty/tools/dotc/typer/ImportInfo.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,7 @@ class ImportInfo(symf: Context ?=> Symbol,
187187
assert(myUnimported != null)
188188
myUnimported.uncheckedNN
189189

190-
@unused
191-
private val isLanguageImport: Boolean = untpd.languageImport(qualifier).isDefined
190+
val isLanguageImport: Boolean = untpd.languageImport(qualifier).isDefined
192191

193192
private var myUnimported: Symbol | Null = _
194193

@@ -211,6 +210,7 @@ class ImportInfo(symf: Context ?=> Symbol,
211210
else None
212211
case _ => None
213212
feature match
213+
case _ if !isLanguageImport => None
214214
case QualifiedName(prefix, name) => test(prefix, name)
215215
case _ => test(EmptyTermName, feature)
216216

compiler/src/dotty/tools/dotc/typer/Typer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -947,7 +947,7 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
947947
val tag = withTag(defn.TypeTestClass.typeRef.appliedTo(pt, tpe))
948948
.orElse(withTag(defn.ClassTagClass.typeRef.appliedTo(tpe)))
949949
.getOrElse(tree)
950-
if tag.symbol.maybeOwner == defn.ClassTagClass && config.Feature.sourceVersion.isAtLeast(config.SourceVersion.future) then
950+
if tag.symbol.maybeOwner == defn.ClassTagClass && sourceVersion.isAtLeast(future) then
951951
report.warning("Use of `scala.reflect.ClassTag` for type testing may be unsound. Consider using `scala.reflect.TypeTest` instead.", tree.srcPos)
952952
tag
953953
}

tests/neg-with-compiler/unused-imports.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// scalac: -Wunused:imports -Werror -feature
22

3-
//import language.future
3+
import language.future
44
import language.implicitConversions
55
import language.postfixOps // error
66
import scala.concurrent.* // error

0 commit comments

Comments
 (0)