Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid diagnostic message forcing crashing the compiler #19113

Merged
merged 3 commits into from
Dec 17, 2023

Conversation

dwijnand
Copy link
Member

@dwijnand dwijnand commented Nov 30, 2023

Using issue #18650 as the reference (but issue #18999 is another option) building on the fix in PR #18719 (refined in PR #18727) as well as the fix in PR #18760, I'm trying to make a more root change here by making sure that message forcing only occurs with hasErrors/errorsReported is true, so as to avoid assertion errors crashing the compiler.

Because HideNonSensicalMessages looks at hasErrors, we need to narrow
the faking to just the isNonSensical call
@dwijnand dwijnand marked this pull request as ready for review December 1, 2023 09:31
@dwijnand dwijnand requested a review from odersky December 1, 2023 09:46
_errorCount += 1
dia.msg.isNonSensical
finally _errorCount -= 1 // decrease rather than reset the value so we only ever decrease by 1
else dia.msg.isNonSensical) &&
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why don't we simply test hasErrors first? Then the isNonSensical test is assured to run with errorCount > 0.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea, but I had to make another change too.

@odersky odersky assigned dwijnand and unassigned odersky Dec 15, 2023
We can switch to a more straightforward hasErrors check in isHidden, but
then we need to bump the errorCount before calling doReport, as doReport
will then, necessarily, force the message.

For reference, the way I test this manually is by:
  1. In ignoredConvertibleImplicits, changing back to `viewExists(imp, fail.expectedType)`
  2. In adapt1, removing the `dummyTreeOfType.unapply(tree).isEmpty` guard
  3. Compiling tests/neg/i18650.scala

Also, while I'm here, instruct on the presence of
-Yno-enrich-error-messages, like we do for -Yno-decode-stacktraces.
@dwijnand dwijnand assigned odersky and unassigned dwijnand Dec 15, 2023
@dwijnand dwijnand changed the title Set errorsReported while running isHidden and forcing message Avoid diagnostic message forcing crashing the compiler Dec 15, 2023
@odersky odersky merged commit 10f2c10 into scala:main Dec 17, 2023
19 checks passed
@dwijnand dwijnand deleted the pessimistic-errorsReported branch December 18, 2023 08:44
@Kordyjan Kordyjan added this to the 3.4.0 milestone Dec 20, 2023
dwijnand pushed a commit to dwijnand/scala3 that referenced this pull request Feb 21, 2024
Using issue scala#18650 as the reference (but issue scala#18999 is another option)
building on the fix in PR scala#18719 (refined in PR scala#18727) as well as the
fix in PR scala#18760, I'm trying to make a more root change here by making
sure that message forcing only occurs with `hasErrors`/`errorsReported`
is true, so as to avoid assertion errors crashing the compiler.

(cherry picked from commit 10f2c10)
dwijnand pushed a commit to dwijnand/scala3 that referenced this pull request Mar 5, 2024
Using issue scala#18650 as the reference (but issue scala#18999 is another option)
building on the fix in PR scala#18719 (refined in PR scala#18727) as well as the
fix in PR scala#18760, I'm trying to make a more root change here by making
sure that message forcing only occurs with `hasErrors`/`errorsReported`
is true, so as to avoid assertion errors crashing the compiler.

(cherry picked from commit 10f2c10)
WojciechMazur added a commit that referenced this pull request Jun 26, 2024
…LTS (#20803)

Backports #19113 to the LTS branch.

PR submitted by the release tooling.
[skip ci]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants