File tree Expand file tree Collapse file tree 5 files changed +12
-7
lines changed Expand file tree Collapse file tree 5 files changed +12
-7
lines changed Original file line number Diff line number Diff line change @@ -12,7 +12,7 @@ abstract class Driver extends DotClass {
12
12
13
13
protected def newCompiler (): Compiler
14
14
15
- protected def emptyReporter : Reporter = new StoreReporter
15
+ protected def emptyReporter : Reporter = new StoreReporter ( null )
16
16
17
17
protected def doCompile (compiler : Compiler , fileNames : List [String ])(implicit ctx : Context ): Reporter =
18
18
if (fileNames.nonEmpty)
Original file line number Diff line number Diff line change @@ -146,7 +146,7 @@ object Trees {
146
146
* type. (Overridden by empty trees)
147
147
*/
148
148
def withType (tpe : Type )(implicit ctx : Context ): ThisTree [Type ] = {
149
- if (tpe == ErrorType ) assert(ctx.errorsReported)
149
+ if (tpe == ErrorType ) assert(ctx.reporter. errorsReported)
150
150
withTypeUnchecked(tpe)
151
151
}
152
152
Original file line number Diff line number Diff line change @@ -98,7 +98,7 @@ extends TyperState(r) {
98
98
99
99
100
100
override def fresh (isCommittable : Boolean ): TyperState =
101
- new MutableTyperState (this , new StoreReporter , isCommittable)
101
+ new MutableTyperState (this , new StoreReporter (reporter) , isCommittable)
102
102
103
103
override def withReporter (reporter : Reporter ) =
104
104
new MutableTyperState (this , reporter, isCommittable)
@@ -169,7 +169,7 @@ extends TyperState(r) {
169
169
* found a better solution.
170
170
*/
171
171
override def tryWithFallback [T ](op : => T )(fallback : => T )(implicit ctx : Context ): T = {
172
- val storeReporter = new StoreReporter
172
+ val storeReporter = new StoreReporter (myReporter)
173
173
val savedReporter = myReporter
174
174
myReporter = storeReporter
175
175
val savedConstraint = myConstraint
Original file line number Diff line number Diff line change @@ -173,8 +173,6 @@ trait Reporting { this: Context =>
173
173
throw ex
174
174
}
175
175
}
176
-
177
- def errorsReported : Boolean = outersIterator exists (_.reporter.hasErrors)
178
176
}
179
177
180
178
/**
@@ -213,6 +211,11 @@ abstract class Reporter {
213
211
def hasErrors = errorCount > 0
214
212
def hasWarnings = warningCount > 0
215
213
214
+ /** Have errors been reported by this reporter, or in the
215
+ * case where this is a StoreReporter, by an outer reporter?
216
+ */
217
+ def errorsReported = hasErrors
218
+
216
219
val unreportedWarnings = new mutable.HashMap [String , Int ] {
217
220
override def default (key : String ) = 0
218
221
}
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ import config.Printers._
10
10
/**
11
11
* This class implements a Reporter that stores all messages
12
12
*/
13
- class StoreReporter extends Reporter {
13
+ class StoreReporter ( outer : Reporter ) extends Reporter {
14
14
15
15
private var infos : mutable.ListBuffer [Diagnostic ] = null
16
16
@@ -33,4 +33,6 @@ class StoreReporter extends Reporter {
33
33
infos foreach ctx.reporter.report
34
34
infos = null
35
35
}
36
+
37
+ override def errorsReported = hasErrors || outer.errorsReported
36
38
}
You can’t perform that action at this time.
0 commit comments