Skip to content

Commit e6e33ec

Browse files
committed
Fix location of anonymous BlockParam
1 parent 09153e6 commit e6e33ec

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

parser/prism/Translator.cc

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3938,17 +3938,18 @@ Translator::translateParametersNode(pm_parameters_node *paramsNode, core::LocOff
39383938

39393939
core::NameRef enclosingBlockParamName;
39403940
if (auto *prismBlockParam = paramsNode->block) {
3941+
auto blockParamLoc = translateLoc(prismBlockParam->base.location);
3942+
39413943
if (auto prismName = prismBlockParam->name; prismName != PM_CONSTANT_ID_UNSET) {
39423944
// A named block parameter, like `def foo(&block)`
39433945
enclosingBlockParamName = translateConstantName(prismName);
3946+
3947+
// The location doesn't include the `&`, only the name of the block parameter
3948+
blockParamLoc = core::LocOffsets{blockParamLoc.beginPos() + 1, blockParamLoc.endPos()};
39443949
} else { // An anonymous block parameter, like `def foo(&)`
39453950
enclosingBlockParamName = nextUniqueParserName(core::Names::ampersand());
39463951
}
39473952

3948-
auto blockParamLoc = translateLoc(prismBlockParam->base.location);
3949-
// Drop the `&` before the name of the block parameter.
3950-
blockParamLoc = core::LocOffsets{blockParamLoc.beginPos() + 1, blockParamLoc.endPos()};
3951-
39523953
auto blockParamExpr = MK::BlockParam(blockParamLoc, MK::Local(blockParamLoc, enclosingBlockParamName));
39533954
auto blockParamNode =
39543955
make_node_with_expr<parser::BlockParam>(move(blockParamExpr), blockParamLoc, enclosingBlockParamName);

0 commit comments

Comments
 (0)