Dyno: fix promotion infinite recursion due to type returning functions #26296
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.
On main, because we allowed promotion to be applied to functions with the
type
andparam
intents, it was possible to trigger recursive queries, in whichchpl_promotionType
would be applied in a promoted manner. As a concrete example, the following test by @riftEmber caused an infinite recursion error:This PR ensures that this no longer happens, by matching the production compiler's behavior and skipping type-returning procedures:
chapel/compiler/resolution/functionResolution.cpp
Lines 1783 to 1788 in df1f0f4
Thank you @riftEmber for diagnosing the issue and reviewing the PR!
Testing