Fix [override] error with no line number when argument node has no line number #18122
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.
Refs #18115
When a parameter type in a method override is incompatible with the parameter type in the supertype definition, mypy emits an error using the
Argument
node as the context.However, sometimes the the
Argument
node doesn't have a line number set, causing the error message to have no associated line number. This happens with the__replace__
methods created in the dataclass plugin, which have line numbers set on theFuncDef
nodes, but no line numbers set on the individual argument nodes.This PR fixes the missing line number in the error by falling-back to the FuncDef line number when a line number isn't set on the
Argument
node.(As an alternative fix, we could add line numbers to the
Argument
nodes in the dataclass plugin, but that looks like a more complicated change since multiple methods would be affected).