File tree Expand file tree Collapse file tree 2 files changed +19
-8
lines changed
compiler/src/dotty/tools/dotc/core Expand file tree Collapse file tree 2 files changed +19
-8
lines changed Original file line number Diff line number Diff line change @@ -292,16 +292,20 @@ trait TypeOps { this: Context => // TODO: Make standalone object.
292
292
if (! sym.exists || (sym eq defn.LanguageModuleClass )) " "
293
293
else toPrefix(sym.owner) + sym.name + " ."
294
294
def featureName = toPrefix(owner) + feature
295
- def hasImport (implicit ctx : Context ): Boolean =
296
- ctx.importInfo != null && {
297
- ctx.importInfo.site.widen.typeSymbol == owner &&
298
- ! ctx.importInfo.excluded.contains(feature) &&
299
- ctx.importInfo.originals.contains(feature) || {
300
- var c = ctx.outer
301
- while (c.importInfo eq ctx.importInfo) c = c.outer
302
- hasImport(c)
295
+ def hasImport (implicit ctx : Context ): Boolean = {
296
+ if (ctx.importInfo eq null ) false
297
+ else {
298
+ val isImportOwner = ctx.importInfo.site.widen.typeSymbol eq owner
299
+ if (isImportOwner && ctx.importInfo.excluded.contains(feature)) false
300
+ else if (isImportOwner && ctx.importInfo.originals.contains(feature)) true
301
+ else {
302
+ def nextImportInfoContext (c : Context ): Context =
303
+ if (c.importInfo ne ctx.importInfo) c
304
+ else nextImportInfoContext(c.outer)
305
+ hasImport(nextImportInfoContext(ctx.outer))
303
306
}
304
307
}
308
+ }
305
309
def hasOption = ctx.base.settings.language.value exists (s => s == featureName || s == " _" )
306
310
hasImport(ctx.withPhase(ctx.typerPhase)) || hasOption
307
311
}
Original file line number Diff line number Diff line change
1
+ import foo .dynamics
2
+
3
+ class Foo () extends Dynamic // error: extension of type scala.Dynamic needs to be enabled
4
+
5
+ package foo {
6
+ class dynamic
7
+ }
You can’t perform that action at this time.
0 commit comments