diff options
Diffstat (limited to 'src/dotty/tools/dotc/core/Contexts.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Contexts.scala | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/Contexts.scala b/src/dotty/tools/dotc/core/Contexts.scala index 0202a641b..b12ed0226 100644 --- a/src/dotty/tools/dotc/core/Contexts.scala +++ b/src/dotty/tools/dotc/core/Contexts.scala @@ -164,8 +164,10 @@ object Contexts { else if (isImportContext) importInfo.importedImplicits else if (isNonEmptyScopeContext) scope.implicitDecls else Nil - if (implicitRefs.isEmpty) outer.implicits - else new ContextualImplicits(implicitRefs, outer.implicits.ctx)(this) + if (implicitRefs.isEmpty && !(isImportContext && importInfo.isRootImport)) + outer.implicits // record root imports because they hide implicits in same import further out + else + new ContextualImplicits(implicitRefs, outer.implicits)(this) } implicitsCache } @@ -346,7 +348,7 @@ object Contexts { object NoContext extends Context { lazy val base = unsupported("base") - override def implicits: ContextualImplicits = new ContextualImplicits(Nil, this)(this) + override val implicits: ContextualImplicits = new ContextualImplicits(Nil, null)(this) } /** A context base defines state and associated methods that exist once per |