diff options
author | Martin Odersky <odersky@gmail.com> | 2013-07-19 20:14:08 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-07-19 23:54:31 +0200 |
commit | a39551f990be08dc7168374e74228b9388160aec (patch) | |
tree | 34d1e2015f78abf2cb6aa837088d52f8b12f359f /src/dotty/tools/dotc/core/TyperState.scala | |
parent | 919310a29daebabe3335d428f5f5e52ed6295cbd (diff) | |
download | dotty-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.scala | 24 |
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?) } } |