Skip to content

Commit

Permalink
[ruby/yarp] Add constants and constants
Browse files Browse the repository at this point in the history
  • Loading branch information
kddnewton authored and matzbot committed Sep 6, 2023
1 parent 6778d2c commit 4c9a036
Show file tree
Hide file tree
Showing 99 changed files with 478 additions and 411 deletions.
38 changes: 19 additions & 19 deletions lib/yarp/desugar_visitor.rb
Expand Up @@ -8,7 +8,7 @@ class DesugarVisitor < MutationVisitor
#
# @@foo && @@foo = bar
def visit_class_variable_and_write_node(node)
desugar_and_write_node(node, ClassVariableReadNode, ClassVariableWriteNode, arguments: [node.name])
desugar_and_write_node(node, ClassVariableReadNode, ClassVariableWriteNode, node.name)
end

# @@foo ||= bar
Expand All @@ -17,7 +17,7 @@ def visit_class_variable_and_write_node(node)
#
# defined?(@@foo) ? @@foo : @@foo = bar
def visit_class_variable_or_write_node(node)
desugar_or_write_defined_node(node, ClassVariableReadNode, ClassVariableWriteNode, arguments: [node.name])
desugar_or_write_defined_node(node, ClassVariableReadNode, ClassVariableWriteNode, node.name)
end

# @@foo += bar
Expand All @@ -26,7 +26,7 @@ def visit_class_variable_or_write_node(node)
#
# @@foo = @@foo + bar
def visit_class_variable_operator_write_node(node)
desugar_operator_write_node(node, ClassVariableReadNode, ClassVariableWriteNode, arguments: [node.name])
desugar_operator_write_node(node, ClassVariableReadNode, ClassVariableWriteNode, node.name)
end

# Foo &&= bar
Expand All @@ -35,7 +35,7 @@ def visit_class_variable_operator_write_node(node)
#
# Foo && Foo = bar
def visit_constant_and_write_node(node)
desugar_and_write_node(node, ConstantReadNode, ConstantWriteNode)
desugar_and_write_node(node, ConstantReadNode, ConstantWriteNode, node.name)
end

# Foo ||= bar
Expand All @@ -44,7 +44,7 @@ def visit_constant_and_write_node(node)
#
# defined?(Foo) ? Foo : Foo = bar
def visit_constant_or_write_node(node)
desugar_or_write_defined_node(node, ConstantReadNode, ConstantWriteNode)
desugar_or_write_defined_node(node, ConstantReadNode, ConstantWriteNode, node.name)
end

# Foo += bar
Expand All @@ -53,7 +53,7 @@ def visit_constant_or_write_node(node)
#
# Foo = Foo + bar
def visit_constant_operator_write_node(node)
desugar_operator_write_node(node, ConstantReadNode, ConstantWriteNode)
desugar_operator_write_node(node, ConstantReadNode, ConstantWriteNode, node.name)
end

# $foo &&= bar
Expand All @@ -62,7 +62,7 @@ def visit_constant_operator_write_node(node)
#
# $foo && $foo = bar
def visit_global_variable_and_write_node(node)
desugar_and_write_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, arguments: [node.name])
desugar_and_write_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, node.name)
end

# $foo ||= bar
Expand All @@ -71,7 +71,7 @@ def visit_global_variable_and_write_node(node)
#
# defined?($foo) ? $foo : $foo = bar
def visit_global_variable_or_write_node(node)
desugar_or_write_defined_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, arguments: [node.name])
desugar_or_write_defined_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, node.name)
end

# $foo += bar
Expand All @@ -80,7 +80,7 @@ def visit_global_variable_or_write_node(node)
#
# $foo = $foo + bar
def visit_global_variable_operator_write_node(node)
desugar_operator_write_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, arguments: [node.name])
desugar_operator_write_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, node.name)
end

# @foo &&= bar
Expand All @@ -89,7 +89,7 @@ def visit_global_variable_operator_write_node(node)
#
# @foo && @foo = bar
def visit_instance_variable_and_write_node(node)
desugar_and_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, arguments: [node.name])
desugar_and_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, node.name)
end

# @foo ||= bar
Expand All @@ -98,7 +98,7 @@ def visit_instance_variable_and_write_node(node)
#
# @foo || @foo = bar
def visit_instance_variable_or_write_node(node)
desugar_or_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, arguments: [node.name])
desugar_or_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, node.name)
end

# @foo += bar
Expand All @@ -107,7 +107,7 @@ def visit_instance_variable_or_write_node(node)
#
# @foo = @foo + bar
def visit_instance_variable_operator_write_node(node)
desugar_operator_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, arguments: [node.name])
desugar_operator_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, node.name)
end

# foo &&= bar
Expand All @@ -116,7 +116,7 @@ def visit_instance_variable_operator_write_node(node)
#
# foo && foo = bar
def visit_local_variable_and_write_node(node)
desugar_and_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, arguments: [node.name, node.depth])
desugar_and_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, node.name, node.depth)
end

# foo ||= bar
Expand All @@ -125,7 +125,7 @@ def visit_local_variable_and_write_node(node)
#
# foo || foo = bar
def visit_local_variable_or_write_node(node)
desugar_or_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, arguments: [node.name, node.depth])
desugar_or_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, node.name, node.depth)
end

# foo += bar
Expand All @@ -134,13 +134,13 @@ def visit_local_variable_or_write_node(node)
#
# foo = foo + bar
def visit_local_variable_operator_write_node(node)
desugar_operator_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, arguments: [node.name, node.depth])
desugar_operator_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, node.name, node.depth)
end

private

# Desugar `x &&= y` to `x && x = y`
def desugar_and_write_node(node, read_class, write_class, arguments: [])
def desugar_and_write_node(node, read_class, write_class, *arguments)
AndNode.new(
read_class.new(*arguments, node.name_loc),
write_class.new(*arguments, node.name_loc, node.value, node.operator_loc, node.location),
Expand All @@ -150,7 +150,7 @@ def desugar_and_write_node(node, read_class, write_class, arguments: [])
end

# Desugar `x += y` to `x = x + y`
def desugar_operator_write_node(node, read_class, write_class, arguments: [])
def desugar_operator_write_node(node, read_class, write_class, *arguments)
write_class.new(
*arguments,
node.name_loc,
Expand All @@ -172,7 +172,7 @@ def desugar_operator_write_node(node, read_class, write_class, arguments: [])
end

# Desugar `x ||= y` to `x || x = y`
def desugar_or_write_node(node, read_class, write_class, arguments: [])
def desugar_or_write_node(node, read_class, write_class, *arguments)
OrNode.new(
read_class.new(*arguments, node.name_loc),
write_class.new(*arguments, node.name_loc, node.value, node.operator_loc, node.location),
Expand All @@ -182,7 +182,7 @@ def desugar_or_write_node(node, read_class, write_class, arguments: [])
end

# Desugar `x ||= y` to `defined?(x) ? x : x = y`
def desugar_or_write_defined_node(node, read_class, write_class, arguments: [])
def desugar_or_write_defined_node(node, read_class, write_class, *arguments)
IfNode.new(
node.operator_loc,
DefinedNode.new(nil, read_class.new(*arguments, node.name_loc), nil, node.operator_loc, node.name_loc),
Expand Down
12 changes: 6 additions & 6 deletions test/yarp/errors_test.rb
Expand Up @@ -17,7 +17,7 @@ def test_module_name_recoverable
expected = ModuleNode(
[],
Location(),
ConstantReadNode(),
ConstantReadNode(:Parent),
StatementsNode(
[ModuleNode([], Location(), MissingNode(), nil, Location(), "")]
),
Expand Down Expand Up @@ -393,7 +393,7 @@ def test_module_definition_in_method_body
Location(),
nil,
nil,
StatementsNode([ModuleNode([], Location(), ConstantReadNode(), nil, Location(), "A")]),
StatementsNode([ModuleNode([], Location(), ConstantReadNode(:A), nil, Location(), "A")]),
[],
Location(),
nil,
Expand Down Expand Up @@ -424,7 +424,7 @@ def test_module_definition_in_method_body_within_block
BlockNode(
[],
nil,
StatementsNode([ModuleNode([], Location(), ConstantReadNode(), nil, Location(), "Foo")]),
StatementsNode([ModuleNode([], Location(), ConstantReadNode(:Foo), nil, Location(), "Foo")]),
Location(),
Location()
),
Expand Down Expand Up @@ -459,7 +459,7 @@ def test_class_definition_in_method_body
[ClassNode(
[],
Location(),
ConstantReadNode(),
ConstantReadNode(:A),
nil,
nil,
nil,
Expand Down Expand Up @@ -974,7 +974,7 @@ def test_dont_allow_return_inside_class_body
expected = ClassNode(
[],
Location(),
ConstantReadNode(),
ConstantReadNode(:A),
nil,
nil,
StatementsNode([ReturnNode(Location(), nil)]),
Expand All @@ -991,7 +991,7 @@ def test_dont_allow_return_inside_module_body
expected = ModuleNode(
[],
Location(),
ConstantReadNode(),
ConstantReadNode(:A),
StatementsNode([ReturnNode(Location(), nil)]),
Location(),
"A"
Expand Down
6 changes: 4 additions & 2 deletions test/yarp/snapshots/begin_ensure.txt
Expand Up @@ -86,7 +86,7 @@ ProgramNode(0...211)(
(118...124),
StatementsNode(125...199)(
[CallNode(125...199)(
ConstantReadNode(125...131)(),
ConstantReadNode(125...131)(:Module),
(131...132),
(132...135),
nil,
Expand All @@ -107,7 +107,9 @@ ProgramNode(0...211)(
(161...167),
StatementsNode(168...189)(
[CallNode(168...189)(
ConstantReadNode(168...174)(),
ConstantReadNode(168...174)(
:Module
),
(174...175),
(175...178),
nil,
Expand Down
17 changes: 10 additions & 7 deletions test/yarp/snapshots/begin_rescue.txt
Expand Up @@ -221,7 +221,7 @@ ProgramNode(0...578)(
),
RescueNode(187...265)(
(187...193),
[ConstantReadNode(194...203)()],
[ConstantReadNode(194...203)(:Exception)],
(204...206),
LocalVariableTargetNode(207...209)(:ex, 0),
StatementsNode(212...213)(
Expand All @@ -239,7 +239,8 @@ ProgramNode(0...578)(
),
RescueNode(214...265)(
(214...220),
[ConstantReadNode(221...237)(), ConstantReadNode(239...255)()],
[ConstantReadNode(221...237)(:AnotherException),
ConstantReadNode(239...255)(:OneMoreException)],
(256...258),
LocalVariableTargetNode(259...261)(:ex, 0),
StatementsNode(264...265)(
Expand Down Expand Up @@ -279,7 +280,7 @@ ProgramNode(0...578)(
),
RescueNode(281...307)(
(281...287),
[ConstantReadNode(288...297)()],
[ConstantReadNode(288...297)(:Exception)],
(298...300),
LocalVariableTargetNode(301...303)(:ex, 0),
StatementsNode(306...307)(
Expand Down Expand Up @@ -452,7 +453,7 @@ ProgramNode(0...578)(
),
RescueNode(406...424)(
(406...412),
[ConstantReadNode(413...422)()],
[ConstantReadNode(413...422)(:Exception)],
nil,
nil,
StatementsNode(423...424)(
Expand Down Expand Up @@ -491,7 +492,8 @@ ProgramNode(0...578)(
),
RescueNode(438...473)(
(438...444),
[ConstantReadNode(445...454)(), ConstantReadNode(456...471)()],
[ConstantReadNode(445...454)(:Exception),
ConstantReadNode(456...471)(:CustomException)],
nil,
nil,
StatementsNode(472...473)(
Expand Down Expand Up @@ -530,7 +532,8 @@ ProgramNode(0...578)(
),
RescueNode(489...532)(
(489...495),
[ConstantReadNode(496...505)(), ConstantReadNode(507...522)()],
[ConstantReadNode(496...505)(:Exception),
ConstantReadNode(507...522)(:CustomException)],
(523...525),
LocalVariableTargetNode(526...528)(:ex, 0),
StatementsNode(531...532)(
Expand Down Expand Up @@ -569,7 +572,7 @@ ProgramNode(0...578)(
),
RescueNode(548...574)(
(548...554),
[ConstantReadNode(555...564)()],
[ConstantReadNode(555...564)(:Exception)],
(565...567),
LocalVariableTargetNode(568...570)(:ex, 0),
StatementsNode(573...574)(
Expand Down
3 changes: 2 additions & 1 deletion test/yarp/snapshots/case.txt
Expand Up @@ -111,7 +111,8 @@ ProgramNode(0...272)(
),
[WhenNode(147...167)(
(147...151),
[ConstantReadNode(152...158)(), ConstantReadNode(160...167)()],
[ConstantReadNode(152...158)(:FooBar),
ConstantReadNode(160...167)(:BazBonk)],
nil
)],
nil,
Expand Down
18 changes: 9 additions & 9 deletions test/yarp/snapshots/classes.txt
Expand Up @@ -4,7 +4,7 @@ ProgramNode(0...370)(
[ClassNode(0...17)(
[:a],
(0...5),
ConstantReadNode(6...7)(),
ConstantReadNode(6...7)(:A),
nil,
nil,
StatementsNode(8...13)(
Expand All @@ -22,7 +22,7 @@ ProgramNode(0...370)(
ClassNode(19...39)(
[],
(19...24),
ConstantReadNode(25...26)(),
ConstantReadNode(25...26)(:A),
nil,
nil,
BeginNode(28...39)(
Expand All @@ -39,7 +39,7 @@ ProgramNode(0...370)(
ClassNode(41...75)(
[],
(41...46),
ConstantReadNode(47...48)(),
ConstantReadNode(47...48)(:A),
nil,
nil,
BeginNode(50...75)(
Expand All @@ -56,9 +56,9 @@ ProgramNode(0...370)(
ClassNode(77...98)(
[:a],
(77...82),
ConstantReadNode(83...84)(),
ConstantReadNode(83...84)(:A),
(85...86),
ConstantReadNode(87...88)(),
ConstantReadNode(87...88)(:B),
StatementsNode(89...94)(
[LocalVariableWriteNode(89...94)(
:a,
Expand Down Expand Up @@ -102,7 +102,7 @@ ProgramNode(0...370)(
ClassNode(122...162)(
[],
(122...127),
ConstantReadNode(128...129)(),
ConstantReadNode(128...129)(:A),
nil,
nil,
StatementsNode(131...157)(
Expand All @@ -128,7 +128,7 @@ ProgramNode(0...370)(
ClassNode(164...218)(
[],
(164...169),
ConstantReadNode(170...171)(),
ConstantReadNode(170...171)(:A),
nil,
nil,
StatementsNode(173...213)(
Expand Down Expand Up @@ -266,10 +266,10 @@ ProgramNode(0...370)(
ClassNode(352...370)(
[],
(352...357),
ConstantReadNode(358...359)(),
ConstantReadNode(358...359)(:A),
(360...361),
CallNode(362...366)(
ConstantReadNode(362...363)(),
ConstantReadNode(362...363)(:B),
nil,
(363...366),
(363...364),
Expand Down

0 comments on commit 4c9a036

Please sign in to comment.