New semantic analyzer: fix crash on broken overload at class scope #7181
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #7044
The crash is caused by the fact that
.type
for broken overloads can beNone
. There is another example where we deal with this inanalyze_ref_expr()
. The crash doesn't happen on the old analyzer because it doesn't add the broken overload to the symbol table.I solve the crash by generating a dummy
Overloaded()
type in this case. An alternative solution would be to re-analyze a broken overload as independent (re-)definitions, but I think this is more error-prone to keep an overload in AST, but a bunch of functions in symbol table.Using this opportunity I also remove a redundant
add_symbol()
call (we always add the overload before even processing it).Note that the behavior of the new analyzer is still different from the old one, but IMO it is more consistent in some sense.