Skip to content

Commit

Permalink
Fix in-intent inside on-statements (#22760)
Browse files Browse the repository at this point in the history
This PR fixes a bug where ``in``-intents were not being implemented for
calls inside of on-statements. The function
``checkAnotherFunctionsFormal`` was created to fix a particular issue
with follower-related code, where it was important to ignore in-intents
(see #13300). The function checked whether the argument to the call was
defined in the same function as the call itself, and if it wasn't, would
tell resolution to not implement ``in`` intent copies for that argument.
This would inherently apply to all nested functions, which include our
representation of on-statements at this stage of the compiler. The
solution is to check whether the nested function is a follower function,
and if not, skip the rest of the logic.

The .future test ``multilocale/bharshbarg/onStmtInIntent.chpl`` was
introduced in #22747 and demonstrates the bug. This PR retires that
.future.

[reviewed-by @vasslitvinov]
  • Loading branch information
benharsh authored Jul 19, 2023
2 parents f6f843d + 91203bf commit 40eae16
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 5 deletions.
5 changes: 3 additions & 2 deletions compiler/resolution/wrappers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1703,12 +1703,13 @@ static bool typeExprReturnsType(ArgSymbol* formal) {
// Do not create copies for the bogus actuals added for PRIM_TO_FOLLOWER.
static bool checkAnotherFunctionsFormal(FnSymbol* calleeFn, CallExpr* call,
Symbol* actualSym) {
if (!isFollowerIterator(calleeFn)) return false;

bool result = isArgSymbol(actualSym) &&
(call->parentSymbol != actualSym->defPoint->parentSymbol);

if (result &&
propagateNotPOD(actualSym->getValType()) &&
isFollowerIterator(calleeFn) )
propagateNotPOD(actualSym->getValType()))
USR_FATAL_CONT(calleeFn, "follower iterators accepting a non-POD argument by in-intent are not implemented");

return result;
Expand Down
2 changes: 0 additions & 2 deletions test/multilocale/bharshbarg/onStmtInIntent.bad

This file was deleted.

1 change: 0 additions & 1 deletion test/multilocale/bharshbarg/onStmtInIntent.future

This file was deleted.

0 comments on commit 40eae16

Please sign in to comment.