aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TyperState.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-07-19 20:14:08 +0200
committerMartin Odersky <odersky@gmail.com>2013-07-19 23:54:31 +0200
commita39551f990be08dc7168374e74228b9388160aec (patch)
tree34d1e2015f78abf2cb6aa837088d52f8b12f359f /src/dotty/tools/dotc/core/TyperState.scala
parent919310a29daebabe3335d428f5f5e52ed6295cbd (diff)
downloaddotty-a39551f990be08dc7168374e74228b9388160aec.tar.gz
dotty-a39551f990be08dc7168374e74228b9388160aec.tar.bz2
dotty-a39551f990be08dc7168374e74228b9388160aec.zip
Integrated reporting into TyperState.
Diffstat (limited to 'src/dotty/tools/dotc/core/TyperState.scala')
-rw-r--r--src/dotty/tools/dotc/core/TyperState.scala24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/dotty/tools/dotc/core/TyperState.scala b/src/dotty/tools/dotc/core/TyperState.scala
index 89589c164..6bf2378ba 100644
--- a/src/dotty/tools/dotc/core/TyperState.scala
+++ b/src/dotty/tools/dotc/core/TyperState.scala
@@ -6,9 +6,9 @@ import Types._
import Flags._
import Contexts._
import util.SimpleMap
-import reporting.Reporter.Diagnostic
+import reporting._
-class TyperState extends DotClass {
+class TyperState(val reporter: Reporter = ThrowingReporter) extends DotClass {
/** The current constraint set */
def constraint: Constraint = new Constraint(SimpleMap.Empty)
@@ -16,38 +16,38 @@ class TyperState extends DotClass {
/** The currently uninstantiated TypeVars */
def undetVars: List[TypeVar] = Nil
- /** The currently outstanding errors, warnings, or infos */
- def diagnostics: List[Diagnostic] = Nil
-
def constraint_=(c: Constraint): Unit = {}
def undetVars_=(vs: List[TypeVar]): Unit = unsupported("undetVars_=")
- def diagnostics_=(ds: List[Diagnostic]): Unit = unsupported("diagnostics_=")
def fresh: TyperState = this
+ def commit()(implicit ctx: Context): Unit = unsupported("commit")
+
def copyFrom(tp: TyperState): Unit = unsupported("copyFrom")
}
-class MutableTyperState (previous: TyperState) extends TyperState {
+class MutableTyperState(previous: TyperState, reporter: Reporter)
+extends TyperState(reporter) {
private var myConstraint: Constraint = previous.constraint
private var myUndetVars: List[TypeVar] = previous.undetVars
- private var myDiagnostics: List[Diagnostic] = Nil
override def constraint = myConstraint
override def undetVars = myUndetVars
- override def diagnostics = myDiagnostics
override def constraint_=(c: Constraint) = myConstraint = c
override def undetVars_=(vs: List[TypeVar]) = myUndetVars = vs
- override def diagnostics_=(ds: List[Diagnostic]) = myDiagnostics = ds
- override def fresh: TyperState = new MutableTyperState(this)
+ override def fresh: TyperState = new MutableTyperState(this, new StoreReporter)
+
+ override def commit()(implicit ctx: Context) = {
+ ctx.typerState.copyFrom(this)
+ reporter.flush()
+ }
override def copyFrom(state: TyperState): Unit = {
constraint = state.constraint
undetVars = state.undetVars
- // todo: do something about diagnostics (put reporter in state?)
}
}