File tree Expand file tree Collapse file tree 1 file changed +14
-1
lines changed
compiler/src/dotty/tools/dotc/reporting Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -154,7 +154,20 @@ abstract class Reporter extends interfaces.ReporterResult {
154154 val key = w.enablingOption.name
155155 addUnreported(key, 1 )
156156 case _ =>
157- if ! isHidden(dia) then // avoid isHidden test for summarized warnings so that message is not forced
157+ val hide = if ! errorsReported && dia.isInstanceOf [Error ] then
158+ // We bump up errorCount so errorsReported is true while executing isHidden.
159+ // We use errorsReported as a predicate for broken code.
160+ // So now any code `isHidden` runs won't cause, for instance,
161+ // assertion errors and thus compiler crashes.
162+ // This normally amounts to forcing the message, which might run more code
163+ // to generate useful hints for the user.
164+ try
165+ _errorCount += 1
166+ isHidden(dia)
167+ finally
168+ _errorCount -= 1 // decrease rather than set back to `oldErrorCount` so we only ever decrease by 1
169+ else isHidden(dia)
170+ if ! hide then // avoid isHidden test for summarized warnings so that message is not forced
158171 markReported(dia)
159172 withMode(Mode .Printing )(doReport(dia))
160173 dia match {
You can’t perform that action at this time.
0 commit comments