Skip to content

Commit 0271319

Browse files
kddnewtonmatzbot
authored andcommitted
[ruby/prism] Generate RBI from RBS
ruby/prism@2c88ed893f
1 parent bc1d75a commit 0271319

9 files changed

Lines changed: 58 additions & 123 deletions

File tree

lib/prism.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ class CurrentVersionError < ArgumentError
4343
#: (String version) -> void
4444
def initialize(version)
4545
message = +"invalid version: Requested to parse as `version: 'current'`; "
46-
segments =
46+
major, minor, =
4747
if version.match?(/\A\d+\.\d+.\d+\z/)
4848
version.split(".").map(&:to_i)
4949
end
5050

51-
if segments && ((segments[0] < 3) || (segments[0] == 3 && segments[1] < 3))
51+
if major && minor && ((major < 3) || (major == 3 && minor < 3))
5252
message << " #{version} is below the minimum supported syntax."
5353
else
5454
message << " #{version} is unknown. Please update the `prism` gem."

lib/prism/lex_compat.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,16 @@ module Prism
77
# @rbs!
88
# module Translation
99
# class Ripper
10+
# EXPR_NONE: Integer
1011
# EXPR_BEG: Integer
12+
# EXPR_MID: Integer
13+
# EXPR_END: Integer
14+
# EXPR_CLASS: Integer
15+
# EXPR_VALUE: Integer
16+
# EXPR_ARG: Integer
17+
# EXPR_CMDARG: Integer
18+
# EXPR_ENDARG: Integer
19+
# EXPR_ENDFN: Integer
1120
#
1221
# class Lexer < Ripper
1322
# class State

lib/prism/node_ext.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ module Prism
1111
class Node
1212
#: (*String replacements) -> void
1313
def deprecated(*replacements) # :nodoc:
14-
location = caller_locations(1, 1)
15-
location = location[0].label if location
14+
location = caller_locations(1, 1)&.[](0)&.label
1615
suggest = replacements.map { |replacement| "#{self.class}##{replacement}" }
1716

1817
warn(<<~MSG, uplevel: 1, category: :deprecated)

lib/prism/parse_result/newlines.rb

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -114,88 +114,88 @@ def newline_flag!(lines) # :nodoc:
114114
end
115115

116116
class BeginNode < Node
117-
# @rbs override
117+
#: (Array[bool] lines) -> void
118118
def newline_flag!(lines) # :nodoc:
119119
# Never mark BeginNode with a newline flag, mark children instead.
120120
end
121121
end
122122

123123
class ParenthesesNode < Node
124-
# @rbs override
124+
#: (Array[bool] lines) -> void
125125
def newline_flag!(lines) # :nodoc:
126126
# Never mark ParenthesesNode with a newline flag, mark children instead.
127127
end
128128
end
129129

130130
class IfNode < Node
131-
# @rbs override
131+
#: (Array[bool] lines) -> void
132132
def newline_flag!(lines) # :nodoc:
133133
predicate.newline_flag!(lines)
134134
end
135135
end
136136

137137
class UnlessNode < Node
138-
# @rbs override
138+
#: (Array[bool] lines) -> void
139139
def newline_flag!(lines) # :nodoc:
140140
predicate.newline_flag!(lines)
141141
end
142142
end
143143

144144
class UntilNode < Node
145-
# @rbs override
145+
#: (Array[bool] lines) -> void
146146
def newline_flag!(lines) # :nodoc:
147147
predicate.newline_flag!(lines)
148148
end
149149
end
150150

151151
class WhileNode < Node
152-
# @rbs override
152+
#: (Array[bool] lines) -> void
153153
def newline_flag!(lines) # :nodoc:
154154
predicate.newline_flag!(lines)
155155
end
156156
end
157157

158158
class RescueModifierNode < Node
159-
# @rbs override
159+
#: (Array[bool] lines) -> void
160160
def newline_flag!(lines) # :nodoc:
161161
expression.newline_flag!(lines)
162162
end
163163
end
164164

165165
class InterpolatedMatchLastLineNode < Node
166-
# @rbs override
166+
#: (Array[bool] lines) -> void
167167
def newline_flag!(lines) # :nodoc:
168168
first = parts.first
169169
first.newline_flag!(lines) if first
170170
end
171171
end
172172

173173
class InterpolatedRegularExpressionNode < Node
174-
# @rbs override
174+
#: (Array[bool] lines) -> void
175175
def newline_flag!(lines) # :nodoc:
176176
first = parts.first
177177
first.newline_flag!(lines) if first
178178
end
179179
end
180180

181181
class InterpolatedStringNode < Node
182-
# @rbs override
182+
#: (Array[bool] lines) -> void
183183
def newline_flag!(lines) # :nodoc:
184184
first = parts.first
185185
first.newline_flag!(lines) if first
186186
end
187187
end
188188

189189
class InterpolatedSymbolNode < Node
190-
# @rbs override
190+
#: (Array[bool] lines) -> void
191191
def newline_flag!(lines) # :nodoc:
192192
first = parts.first
193193
first.newline_flag!(lines) if first
194194
end
195195
end
196196

197197
class InterpolatedXStringNode < Node
198-
# @rbs override
198+
#: (Array[bool] lines) -> void
199199
def newline_flag!(lines) # :nodoc:
200200
first = parts.first
201201
first.newline_flag!(lines) if first

lib/prism/pattern.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ def compile
9494
# matches the pattern. If no block is given, an enumerator will be returned
9595
# that will yield each node that matches the pattern.
9696
#--
97-
#: (node root) { (node) -> void } -> void
9897
#: (node root) -> Enumerator[node, void]
99-
def scan(root)
98+
#: (node root) { (node) -> void } -> void
99+
def scan(root, &blk)
100100
return to_enum(:scan, root) unless block_given?
101101

102102
@compiled ||= compile

lib/prism/prism.gemspec

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,19 +110,31 @@ Gem::Specification.new do |spec|
110110
"lib/prism/translation/ruby_parser.rb",
111111
"lib/prism/visitor.rb",
112112
"prism.gemspec",
113-
"rbi/prism.rbi",
114-
"rbi/prism/compiler.rbi",
115-
"rbi/prism/dsl.rbi",
116-
"rbi/prism/inspect_visitor.rbi",
117-
"rbi/prism/node_ext.rbi",
118-
"rbi/prism/node.rbi",
119-
"rbi/prism/parse_result.rbi",
120-
"rbi/prism/reflection.rbi",
121-
"rbi/prism/string_query.rbi",
113+
"rbi/generated/prism.rbi",
114+
"rbi/generated/prism/compiler.rbi",
115+
"rbi/generated/prism/desugar_compiler.rbi",
116+
"rbi/generated/prism/dispatcher.rbi",
117+
"rbi/generated/prism/dot_visitor.rbi",
118+
"rbi/generated/prism/dsl.rbi",
119+
"rbi/generated/prism/inspect_visitor.rbi",
120+
"rbi/generated/prism/lex_compat.rbi",
121+
"rbi/generated/prism/mutation_compiler.rbi",
122+
"rbi/generated/prism/node.rbi",
123+
"rbi/generated/prism/node_ext.rbi",
124+
"rbi/generated/prism/parse_result.rbi",
125+
"rbi/generated/prism/pattern.rbi",
126+
"rbi/generated/prism/reflection.rbi",
127+
"rbi/generated/prism/relocation.rbi",
128+
"rbi/generated/prism/serialize.rbi",
129+
"rbi/generated/prism/string_query.rbi",
130+
"rbi/generated/prism/translation.rbi",
131+
"rbi/generated/prism/visitor.rbi",
132+
"rbi/generated/prism/parse_result/comments.rbi",
133+
"rbi/generated/prism/parse_result/errors.rbi",
134+
"rbi/generated/prism/parse_result/newlines.rbi",
122135
"rbi/prism/translation/parser.rbi",
123136
"rbi/prism/translation/parser_versions.rbi",
124137
"rbi/prism/translation/ripper.rbi",
125-
"rbi/prism/visitor.rbi",
126138
"sig/generated/prism.rbs",
127139
"sig/generated/prism/compiler.rbs",
128140
"sig/generated/prism/desugar_compiler.rbs",

prism/templates/lib/prism/dot_visitor.rb.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ module Prism
126126
end
127127
<%- nodes.each do |node| -%>
128128

129-
# (<%= node.name %>) -> void
129+
#: (<%= node.name %>) -> void
130130
def visit_<%= node.human %>(node) # :nodoc:
131131
table = Table.new("<%= node.name %>")
132132
id = node_id(node)

prism/templates/lib/prism/node.rb.erb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ module Prism
294294
# node.breadth_first_search { |node| node.node_id == node_id }
295295
#--
296296
#: () { (node) -> bool } -> node?
297-
def breadth_first_search(&block)
297+
def breadth_first_search(&blk)
298298
queue = [self] #: Array[node]
299299

300300
while (node = queue.shift)
@@ -313,7 +313,7 @@ module Prism
313313
# node.breadth_first_search_all { |node| node.is_a?(Prism::CallNode) }
314314
#--
315315
#: () { (node) -> bool } -> Array[node]
316-
def breadth_first_search_all(&block)
316+
def breadth_first_search_all(&blk)
317317
queue = [self] #: Array[Prism::node]
318318
results = [] #: Array[Prism::node]
319319

@@ -366,9 +366,9 @@ module Prism
366366
# an enumerator that contains each child node. Excludes any `nil`s in
367367
# the place of optional nodes that were not present.
368368
#--
369-
#: () { (node) -> void } -> void
370369
#: () -> Enumerator[node, void]
371-
def each_child_node
370+
#: () { (node) -> void } -> void
371+
def each_child_node(&blk)
372372
raise NoMethodError, "undefined method `each_child_node' for #{inspect}"
373373
end
374374

@@ -481,9 +481,9 @@ module Prism
481481

482482
# See Node.each_child_node.
483483
#--
484-
#: () { (node) -> void } -> void
485484
#: () -> Enumerator[node, void]
486-
def each_child_node
485+
#: () { (node) -> void } -> void
486+
def each_child_node(&blk)
487487
return to_enum(:each_child_node) unless block_given?
488488

489489
<%- node.fields.each do |field| -%>
@@ -705,7 +705,7 @@ module Prism
705705
<%- end -%>
706706
# :section:
707707

708-
#: (untyped other) -> bool
708+
#: (untyped other) -> boolish
709709
def ===(other) # :nodoc:
710710
other.is_a?(<%= node.name %>)<%= " &&" if (fields = [*node.flags, *node.fields]).any? %>
711711
<%- fields.each_with_index do |field, index| -%>

0 commit comments

Comments
 (0)