-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Fix crash when function contains fused extension type #6204
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You've possibly looked into this more than me, but I wonder if this should end up showing a "no suitable method found" error?
(I'm also not quite sure what the point of
[1 for func, e in errors if e == errmsg]
below... that looks like it could be simplified).Otherwise PR looks good
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No idea. Broken parts of the cythonized code already contains errors - see test part of the PR. Honestly, I tried to grep the code and I was not able to find any test with this error message:
For me adding additional error is not adding any value to the case I found compiler crashing.
When I reviewed the code, I agree. It does not make sense. the part
[1 for func, e in errors if e == errmsg]
because at least first item in errors list will match yielding[1]
list in worst case. Maybe I am missing something though. It is difficult to say because I didn't found any test covering it...There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes - agree with this.
I think this change is fine then. Avoiding the crash is definitely an improvement
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can also only guess, but the intention might have been to avoid dropping the concrete error message in the case that the same error message simply appeared more than once. That's not entirely unrealistic, given that some error messages refer simply to the number of arguments. I agree that the code is useless as it stands. I've changed it here, currently testing that it doesn't break anything:
scoder@ee1e885
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It turns out that the effect is the other way round: we lose concrete error messages if I make the code meaningful as I suggested. This test now produces "no suitable method found" instead of "Call with wrong number of arguments (expected 0, got 2)":
https://github.com/cython/cython/blob/9e81f994aee2a391db8c2bc9c9b9e79fff74e1ea/tests/errors/cpp_no_constructor.pyx
Arguably, that's more correct than the previous message since we're expecting 0 or 1 arguments, not exactly 0. What do you think, should we change this or not?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
e.g. #3235 (comment) - we've definitely had cases before where the exact output chosen and the more general output would be better.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok. I'll change the message here.