diff options
author | Martin Odersky <odersky@gmail.com> | 2015-10-26 09:41:25 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-10-26 09:43:50 +0100 |
commit | d4f30d1a268a51ee74c98f6ae0f45136274536af (patch) | |
tree | 18a7e21c87f31a9e90f3cf5c40d0cd2c9be19763 /src/dotty/tools/dotc/reporting/Reporter.scala | |
parent | 75ac4010609c7d3ac856523d8f2d59e710a4c58c (diff) | |
download | dotty-d4f30d1a268a51ee74c98f6ae0f45136274536af.tar.gz dotty-d4f30d1a268a51ee74c98f6ae0f45136274536af.tar.bz2 dotty-d4f30d1a268a51ee74c98f6ae0f45136274536af.zip |
Keep separate chain of outer reporters for StoreReporters
Used in rewritten `errorsReported` method. This fixes #866. The problem
before was that `TyperState#trywithFallBack` temporarily updates
the reporter, so crawling up the context chain to check for reporters
with errors missed some reported errors, which triggered the assertion
in `Tree#withType`.
Diffstat (limited to 'src/dotty/tools/dotc/reporting/Reporter.scala')
-rw-r--r-- | src/dotty/tools/dotc/reporting/Reporter.scala | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/reporting/Reporter.scala b/src/dotty/tools/dotc/reporting/Reporter.scala index 086575fb4..7c9d1fa79 100644 --- a/src/dotty/tools/dotc/reporting/Reporter.scala +++ b/src/dotty/tools/dotc/reporting/Reporter.scala @@ -173,8 +173,6 @@ trait Reporting { this: Context => throw ex } } - - def errorsReported: Boolean = outersIterator exists (_.reporter.hasErrors) } /** @@ -213,6 +211,11 @@ abstract class Reporter { def hasErrors = errorCount > 0 def hasWarnings = warningCount > 0 + /** Have errors been reported by this reporter, or in the + * case where this is a StoreReporter, by an outer reporter? + */ + def errorsReported = hasErrors + val unreportedWarnings = new mutable.HashMap[String, Int] { override def default(key: String) = 0 } |