Fix call resolution search order for forwarded proc as method #26650
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.
Fix a bug where Dyno would consider forwarded method candidates even when non-forwarded function candidates were found, for a call within a method.
We only want to search for forwarding candidates if we haven't found any non-forwarding candidates. However, when resolving a call in a method, we first try resolving it as a function and then as a method with an implicit receiver. If we find function candidates, we still want to search for method candidates, but we do not want to search for forwarding method candidates even if there are no non-forwarding method candidates. This PR adds logic to skip that.
Added a test for the fixed case, where the test would previously encounter ambiguity between the non-forwarded function and forwarded method.
This bug was incidentally causing query recursion in https://github.com/Cray/chapel-private/issues/7087, where the definition of
chpl__promotionType
on_array
relies on the correct search order.Resolves https://github.com/Cray/chapel-private/issues/7087.
[reviewer info placeholder]
Testing: