diff options
author | Martin Odersky <odersky@gmail.com> | 2013-09-06 22:15:47 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-09-06 22:15:47 +0200 |
commit | 2aa0615594744a7fd92f5f4d017b47e5c42a793a (patch) | |
tree | 90e4458cf2cbfdc03152588eebacb031513197ac /src/dotty/tools/dotc/core/Contexts.scala | |
parent | f7ab848229e8b9b0de1b719725816209aa1271c8 (diff) | |
download | dotty-2aa0615594744a7fd92f5f4d017b47e5c42a793a.tar.gz dotty-2aa0615594744a7fd92f5f4d017b47e5c42a793a.tar.bz2 dotty-2aa0615594744a7fd92f5f4d017b47e5c42a793a.zip |
Improvements in implicits error reporting
Plus a few bugfixes for implicits
Diffstat (limited to 'src/dotty/tools/dotc/core/Contexts.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Contexts.scala | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/core/Contexts.scala b/src/dotty/tools/dotc/core/Contexts.scala index 0898321e5..4307c81d4 100644 --- a/src/dotty/tools/dotc/core/Contexts.scala +++ b/src/dotty/tools/dotc/core/Contexts.scala @@ -158,11 +158,11 @@ object Contexts { def implicits: ContextualImplicits = { if (implicitsCache == null ) implicitsCache = { - val implicitRefs: Set[TermRef] = + val implicitRefs: List[TermRefBySym] = if (isClassDefContext) owner.thisType.implicitMembers else if (isImportContext) importInfo.importedImplicits else if (isNonEmptyScopeContext) scope.implicitDecls - else Set() + else Nil if (implicitRefs.isEmpty) outer.implicits else new ContextualImplicits(implicitRefs, outer.implicits.ctx)(this) } @@ -325,7 +325,7 @@ object Contexts { owner = NoSymbol sstate = settings.defaultState tree = untpd.EmptyTree - runInfo = new RunInfo + runInfo = new RunInfo(this) diagnostics = None moreProperties = Map.empty typeComparer = new TypeComparer(this) @@ -333,7 +333,7 @@ object Contexts { object NoContext extends Context { lazy val base = unsupported("base") - override def implicits: ContextualImplicits = new ContextualImplicits(Set(), this)(this) + override def implicits: ContextualImplicits = new ContextualImplicits(Nil, this)(this) } /** A context base defines state and associated methods that exist once per @@ -453,7 +453,9 @@ object Contexts { } /** Info that changes on each compiler run */ - class RunInfo(implicit val ctx: Context) extends ImplicitRunInfo + class RunInfo(initctx: Context) extends ImplicitRunInfo { + implicit val ctx = initctx + } /** Initial size of superId table */ private final val InitialSuperIdsSize = 4096 |