File tree 2 files changed +33
-0
lines changed
src/dotty/tools/dotc/transform
2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -275,6 +275,23 @@ class PostTyper extends MacroTransform with IdentityDenotTransformer { thisTran
275
275
case tpe => tpe
276
276
}
277
277
)
278
+ case Import (expr, selectors) =>
279
+ val exprTpe = expr.tpe
280
+ def checkIdent (ident : Ident ): Unit = {
281
+ val name = ident.name.asTermName.encode
282
+ def isDottyLanguageFeature = { // TODO Add new language features to scala.language
283
+ exprTpe =:= defn.LanguageModuleClass .typeRef &&
284
+ name == nme.noAutoTupling // or any other new feature
285
+ }
286
+ if (name != nme.WILDCARD && ! exprTpe.member(name).exists && ! exprTpe.member(name.toTypeName).exists && ! isDottyLanguageFeature)
287
+ ctx.error(s " ${ident.name} is not a member of ${expr.show}" , ident.pos)
288
+ }
289
+ selectors.foreach {
290
+ case ident : Ident => checkIdent(ident)
291
+ case Thicket ((ident : Ident ) :: _) => checkIdent(ident)
292
+ case _ =>
293
+ }
294
+ super .transform(tree)
278
295
case tree =>
279
296
super .transform(tree)
280
297
}
Original file line number Diff line number Diff line change
1
+ import scala .idontexist // error
2
+ import scala .io .Idontexist // error
3
+
4
+ import scala .io
5
+ import io .Idontexist2 // error
6
+
7
+ import scala .io .{ AnsiColor , Idontexist3 } // error
8
+
9
+ import scala .io .{ Idontexist4 => Foo } // error
10
+ import scala .io .{ Idontexist5 => _ } // error
11
+
12
+ import scala .language .dynamics
13
+ import scala .language .noAutoTupling
14
+ import scala .language .idontexist // error
15
+
16
+ object Test
You can’t perform that action at this time.
0 commit comments