Skip to content

Commit d7eaa89

Browse files
committed
Add constants and constants
1 parent d339395 commit d7eaa89

File tree

99 files changed

+478
-411
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+478
-411
lines changed

config.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,6 +867,8 @@ nodes:
867867
^^^^^^^^^
868868
- name: ConstantAndWriteNode
869869
fields:
870+
- name: name
871+
type: constant
870872
- name: name_loc
871873
type: location
872874
- name: operator_loc
@@ -880,6 +882,8 @@ nodes:
880882
^^^^^^^^^^^^^^^^
881883
- name: ConstantOperatorWriteNode
882884
fields:
885+
- name: name
886+
type: constant
883887
- name: name_loc
884888
type: location
885889
- name: operator_loc
@@ -895,6 +899,8 @@ nodes:
895899
^^^^^^^^^^^^^^^
896900
- name: ConstantOrWriteNode
897901
fields:
902+
- name: name
903+
type: constant
898904
- name: name_loc
899905
type: location
900906
- name: operator_loc
@@ -997,19 +1003,27 @@ nodes:
9971003
::Foo::Bar = 1
9981004
^^^^^^^^^^^^^^
9991005
- name: ConstantReadNode
1006+
fields:
1007+
- name: name
1008+
type: constant
10001009
comment: |
10011010
Represents referencing a constant.
10021011
10031012
Foo
10041013
^^^
10051014
- name: ConstantTargetNode
1015+
fields:
1016+
- name: name
1017+
type: constant
10061018
comment: |
10071019
Represents writing to a constant in a context that doesn't have an explicit value.
10081020
10091021
Foo, Bar = baz
10101022
^^^ ^^^
10111023
- name: ConstantWriteNode
10121024
fields:
1025+
- name: name
1026+
type: constant
10131027
- name: name_loc
10141028
type: location
10151029
- name: value

lib/yarp/desugar_visitor.rb

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class DesugarVisitor < MutationVisitor
88
#
99
# @@foo && @@foo = bar
1010
def visit_class_variable_and_write_node(node)
11-
desugar_and_write_node(node, ClassVariableReadNode, ClassVariableWriteNode, arguments: [node.name])
11+
desugar_and_write_node(node, ClassVariableReadNode, ClassVariableWriteNode, node.name)
1212
end
1313

1414
# @@foo ||= bar
@@ -17,7 +17,7 @@ def visit_class_variable_and_write_node(node)
1717
#
1818
# defined?(@@foo) ? @@foo : @@foo = bar
1919
def visit_class_variable_or_write_node(node)
20-
desugar_or_write_defined_node(node, ClassVariableReadNode, ClassVariableWriteNode, arguments: [node.name])
20+
desugar_or_write_defined_node(node, ClassVariableReadNode, ClassVariableWriteNode, node.name)
2121
end
2222

2323
# @@foo += bar
@@ -26,7 +26,7 @@ def visit_class_variable_or_write_node(node)
2626
#
2727
# @@foo = @@foo + bar
2828
def visit_class_variable_operator_write_node(node)
29-
desugar_operator_write_node(node, ClassVariableReadNode, ClassVariableWriteNode, arguments: [node.name])
29+
desugar_operator_write_node(node, ClassVariableReadNode, ClassVariableWriteNode, node.name)
3030
end
3131

3232
# Foo &&= bar
@@ -35,7 +35,7 @@ def visit_class_variable_operator_write_node(node)
3535
#
3636
# Foo && Foo = bar
3737
def visit_constant_and_write_node(node)
38-
desugar_and_write_node(node, ConstantReadNode, ConstantWriteNode)
38+
desugar_and_write_node(node, ConstantReadNode, ConstantWriteNode, node.name)
3939
end
4040

4141
# Foo ||= bar
@@ -44,7 +44,7 @@ def visit_constant_and_write_node(node)
4444
#
4545
# defined?(Foo) ? Foo : Foo = bar
4646
def visit_constant_or_write_node(node)
47-
desugar_or_write_defined_node(node, ConstantReadNode, ConstantWriteNode)
47+
desugar_or_write_defined_node(node, ConstantReadNode, ConstantWriteNode, node.name)
4848
end
4949

5050
# Foo += bar
@@ -53,7 +53,7 @@ def visit_constant_or_write_node(node)
5353
#
5454
# Foo = Foo + bar
5555
def visit_constant_operator_write_node(node)
56-
desugar_operator_write_node(node, ConstantReadNode, ConstantWriteNode)
56+
desugar_operator_write_node(node, ConstantReadNode, ConstantWriteNode, node.name)
5757
end
5858

5959
# $foo &&= bar
@@ -62,7 +62,7 @@ def visit_constant_operator_write_node(node)
6262
#
6363
# $foo && $foo = bar
6464
def visit_global_variable_and_write_node(node)
65-
desugar_and_write_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, arguments: [node.name])
65+
desugar_and_write_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, node.name)
6666
end
6767

6868
# $foo ||= bar
@@ -71,7 +71,7 @@ def visit_global_variable_and_write_node(node)
7171
#
7272
# defined?($foo) ? $foo : $foo = bar
7373
def visit_global_variable_or_write_node(node)
74-
desugar_or_write_defined_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, arguments: [node.name])
74+
desugar_or_write_defined_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, node.name)
7575
end
7676

7777
# $foo += bar
@@ -80,7 +80,7 @@ def visit_global_variable_or_write_node(node)
8080
#
8181
# $foo = $foo + bar
8282
def visit_global_variable_operator_write_node(node)
83-
desugar_operator_write_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, arguments: [node.name])
83+
desugar_operator_write_node(node, GlobalVariableReadNode, GlobalVariableWriteNode, node.name)
8484
end
8585

8686
# @foo &&= bar
@@ -89,7 +89,7 @@ def visit_global_variable_operator_write_node(node)
8989
#
9090
# @foo && @foo = bar
9191
def visit_instance_variable_and_write_node(node)
92-
desugar_and_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, arguments: [node.name])
92+
desugar_and_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, node.name)
9393
end
9494

9595
# @foo ||= bar
@@ -98,7 +98,7 @@ def visit_instance_variable_and_write_node(node)
9898
#
9999
# @foo || @foo = bar
100100
def visit_instance_variable_or_write_node(node)
101-
desugar_or_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, arguments: [node.name])
101+
desugar_or_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, node.name)
102102
end
103103

104104
# @foo += bar
@@ -107,7 +107,7 @@ def visit_instance_variable_or_write_node(node)
107107
#
108108
# @foo = @foo + bar
109109
def visit_instance_variable_operator_write_node(node)
110-
desugar_operator_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, arguments: [node.name])
110+
desugar_operator_write_node(node, InstanceVariableReadNode, InstanceVariableWriteNode, node.name)
111111
end
112112

113113
# foo &&= bar
@@ -116,7 +116,7 @@ def visit_instance_variable_operator_write_node(node)
116116
#
117117
# foo && foo = bar
118118
def visit_local_variable_and_write_node(node)
119-
desugar_and_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, arguments: [node.name, node.depth])
119+
desugar_and_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, node.name, node.depth)
120120
end
121121

122122
# foo ||= bar
@@ -125,7 +125,7 @@ def visit_local_variable_and_write_node(node)
125125
#
126126
# foo || foo = bar
127127
def visit_local_variable_or_write_node(node)
128-
desugar_or_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, arguments: [node.name, node.depth])
128+
desugar_or_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, node.name, node.depth)
129129
end
130130

131131
# foo += bar
@@ -134,13 +134,13 @@ def visit_local_variable_or_write_node(node)
134134
#
135135
# foo = foo + bar
136136
def visit_local_variable_operator_write_node(node)
137-
desugar_operator_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, arguments: [node.name, node.depth])
137+
desugar_operator_write_node(node, LocalVariableReadNode, LocalVariableWriteNode, node.name, node.depth)
138138
end
139139

140140
private
141141

142142
# Desugar `x &&= y` to `x && x = y`
143-
def desugar_and_write_node(node, read_class, write_class, arguments: [])
143+
def desugar_and_write_node(node, read_class, write_class, *arguments)
144144
AndNode.new(
145145
read_class.new(*arguments, node.name_loc),
146146
write_class.new(*arguments, node.name_loc, node.value, node.operator_loc, node.location),
@@ -150,7 +150,7 @@ def desugar_and_write_node(node, read_class, write_class, arguments: [])
150150
end
151151

152152
# Desugar `x += y` to `x = x + y`
153-
def desugar_operator_write_node(node, read_class, write_class, arguments: [])
153+
def desugar_operator_write_node(node, read_class, write_class, *arguments)
154154
write_class.new(
155155
*arguments,
156156
node.name_loc,
@@ -172,7 +172,7 @@ def desugar_operator_write_node(node, read_class, write_class, arguments: [])
172172
end
173173

174174
# Desugar `x ||= y` to `x || x = y`
175-
def desugar_or_write_node(node, read_class, write_class, arguments: [])
175+
def desugar_or_write_node(node, read_class, write_class, *arguments)
176176
OrNode.new(
177177
read_class.new(*arguments, node.name_loc),
178178
write_class.new(*arguments, node.name_loc, node.value, node.operator_loc, node.location),
@@ -182,7 +182,7 @@ def desugar_or_write_node(node, read_class, write_class, arguments: [])
182182
end
183183

184184
# Desugar `x ||= y` to `defined?(x) ? x : x = y`
185-
def desugar_or_write_defined_node(node, read_class, write_class, arguments: [])
185+
def desugar_or_write_defined_node(node, read_class, write_class, *arguments)
186186
IfNode.new(
187187
node.operator_loc,
188188
DefinedNode.new(nil, read_class.new(*arguments, node.name_loc), nil, node.operator_loc, node.name_loc),

0 commit comments

Comments
 (0)