aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Contexts.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-09-06 22:15:47 +0200
committerMartin Odersky <odersky@gmail.com>2013-09-06 22:15:47 +0200
commit2aa0615594744a7fd92f5f4d017b47e5c42a793a (patch)
tree90e4458cf2cbfdc03152588eebacb031513197ac /src/dotty/tools/dotc/core/Contexts.scala
parentf7ab848229e8b9b0de1b719725816209aa1271c8 (diff)
downloaddotty-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.scala12
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