Skip to content

Commit dda3ab6

Browse files
committed
Fix location of anonymous BlockParam
1 parent 92406b1 commit dda3ab6

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
@@ -3864,17 +3864,18 @@ Translator::translateParametersNode(pm_parameters_node *paramsNode, core::LocOff
38643864

38653865
core::NameRef enclosingBlockParamName;
38663866
if (auto *prismBlockParam = paramsNode->block) {
3867+
auto blockParamLoc = translateLoc(prismBlockParam->base.location);
3868+
38673869
if (auto prismName = prismBlockParam->name; prismName != PM_CONSTANT_ID_UNSET) {
38683870
// A named block parameter, like `def foo(&block)`
38693871
enclosingBlockParamName = translateConstantName(prismName);
3872+
3873+
// The location doesn't include the `&`, only the name of the block parameter
3874+
blockParamLoc = core::LocOffsets{blockParamLoc.beginPos() + 1, blockParamLoc.endPos()};
38703875
} else { // An anonymous block parameter, like `def foo(&)`
38713876
enclosingBlockParamName = nextUniqueParserName(core::Names::ampersand());
38723877
}
38733878

3874-
auto blockParamLoc = translateLoc(prismBlockParam->base.location);
3875-
// Drop the `&` before the name of the block parameter.
3876-
blockParamLoc = core::LocOffsets{blockParamLoc.beginPos() + 1, blockParamLoc.endPos()};
3877-
38783879
auto blockParamExpr = MK::BlockParam(blockParamLoc, MK::Local(blockParamLoc, enclosingBlockParamName));
38793880
auto blockParamNode =
38803881
make_node_with_expr<parser::BlockParam>(move(blockParamExpr), blockParamLoc, enclosingBlockParamName);

0 commit comments

Comments
 (0)