Skip to content

Commit 1c23c30

Browse files
committed
Revert "merge revision(s) 052794b: [Backport #21197]"
This reverts commit e630a0f.
1 parent 1b6f9cd commit 1c23c30

5 files changed

Lines changed: 13 additions & 73 deletions

File tree

lib/prism/translation/parser/compiler.rb

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -664,37 +664,13 @@ def visit_def_node(node)
664664
# defined?(a)
665665
# ^^^^^^^^^^^
666666
def visit_defined_node(node)
667-
# Very weird circumstances here where something like:
668-
#
669-
# defined?
670-
# (1)
671-
#
672-
# gets parsed in Ruby as having only the `1` expression but in parser
673-
# it gets parsed as having a begin. In this case we need to synthesize
674-
# that begin to match parser's behavior.
675-
if node.lparen_loc && node.keyword_loc.join(node.lparen_loc).slice.include?("\n")
676-
builder.keyword_cmd(
677-
:defined?,
678-
token(node.keyword_loc),
679-
nil,
680-
[
681-
builder.begin(
682-
token(node.lparen_loc),
683-
visit(node.value),
684-
token(node.rparen_loc)
685-
)
686-
],
687-
nil
688-
)
689-
else
690-
builder.keyword_cmd(
691-
:defined?,
692-
token(node.keyword_loc),
693-
token(node.lparen_loc),
694-
[visit(node.value)],
695-
token(node.rparen_loc)
696-
)
697-
end
667+
builder.keyword_cmd(
668+
:defined?,
669+
token(node.keyword_loc),
670+
token(node.lparen_loc),
671+
[visit(node.value)],
672+
token(node.rparen_loc)
673+
)
698674
end
699675

700676
# if foo then bar else baz end

lib/prism/translation/ripper.rb

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1615,23 +1615,8 @@ def visit_def_node(node)
16151615
# defined?(a)
16161616
# ^^^^^^^^^^^
16171617
def visit_defined_node(node)
1618-
expression = visit(node.value)
1619-
1620-
# Very weird circumstances here where something like:
1621-
#
1622-
# defined?
1623-
# (1)
1624-
#
1625-
# gets parsed in Ruby as having only the `1` expression but in Ripper it
1626-
# gets parsed as having a parentheses node. In this case we need to
1627-
# synthesize that node to match Ripper's behavior.
1628-
if node.lparen_loc && node.keyword_loc.join(node.lparen_loc).slice.include?("\n")
1629-
bounds(node.lparen_loc.join(node.rparen_loc))
1630-
expression = on_paren(on_stmts_add(on_stmts_new, expression))
1631-
end
1632-
16331618
bounds(node.location)
1634-
on_defined(expression)
1619+
on_defined(visit(node.value))
16351620
end
16361621

16371622
# if foo then bar else baz end

prism/prism.c

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19557,27 +19557,18 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
1955719557
pm_token_t lparen;
1955819558
pm_token_t rparen;
1955919559
pm_node_t *expression;
19560-
1956119560
context_push(parser, PM_CONTEXT_DEFINED);
19562-
bool newline = accept1(parser, PM_TOKEN_NEWLINE);
1956319561

1956419562
if (accept1(parser, PM_TOKEN_PARENTHESIS_LEFT)) {
1956519563
lparen = parser->previous;
19564+
expression = parse_expression(parser, PM_BINDING_POWER_COMPOSITION, true, false, PM_ERR_DEFINED_EXPRESSION, (uint16_t) (depth + 1));
1956619565

19567-
if (newline && accept1(parser, PM_TOKEN_PARENTHESIS_RIGHT)) {
19568-
expression = (pm_node_t *) pm_parentheses_node_create(parser, &lparen, NULL, &parser->previous, 0);
19569-
lparen = not_provided(parser);
19566+
if (parser->recovering) {
1957019567
rparen = not_provided(parser);
1957119568
} else {
19572-
expression = parse_expression(parser, PM_BINDING_POWER_COMPOSITION, true, false, PM_ERR_DEFINED_EXPRESSION, (uint16_t) (depth + 1));
19573-
19574-
if (parser->recovering) {
19575-
rparen = not_provided(parser);
19576-
} else {
19577-
accept1(parser, PM_TOKEN_NEWLINE);
19578-
expect1(parser, PM_TOKEN_PARENTHESIS_RIGHT, PM_ERR_EXPECT_RPAREN);
19579-
rparen = parser->previous;
19580-
}
19569+
accept1(parser, PM_TOKEN_NEWLINE);
19570+
expect1(parser, PM_TOKEN_PARENTHESIS_RIGHT, PM_ERR_EXPECT_RPAREN);
19571+
rparen = parser->previous;
1958119572
}
1958219573
} else {
1958319574
lparen = not_provided(parser);

test/prism/errors/defined_empty.txt

Lines changed: 0 additions & 3 deletions
This file was deleted.

test/prism/fixtures/defined.txt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,3 @@ defined? 1
88

99
defined?("foo"
1010
)
11-
12-
defined?
13-
1
14-
15-
defined?
16-
(1)
17-
18-
defined?
19-
()

0 commit comments

Comments
 (0)