File tree 1 file changed +14
-1
lines changed
compiler/src/dotty/tools/dotc/reporting
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 {
154
154
val key = w.enablingOption.name
155
155
addUnreported(key, 1 )
156
156
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
158
171
markReported(dia)
159
172
withMode(Mode .Printing )(doReport(dia))
160
173
dia match {
You can’t perform that action at this time.
0 commit comments