rbs-inline 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rbs/inline/annotation_parser.rb +10 -10
- data/lib/rbs/inline/ast/annotations.rb +1 -0
- data/lib/rbs/inline/ast/declarations.rb +85 -10
- data/lib/rbs/inline/parser.rb +2 -2
- data/lib/rbs/inline/version.rb +1 -1
- data/lib/rbs/inline/writer.rb +2 -1
- data/rbs_collection.lock.yaml +10 -10
- data/sig/generated/rbs/inline/ast/declarations.rbs +15 -1
- metadata +7 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eda2837ec8a870e72756bd99caa1cfd45f7b6ccf51610a3745759edbb25c11e6
|
|
4
|
+
data.tar.gz: 77ad94856febcb67f6b8d5e6888be1b64fb3c6b08a6a3f0197360451516b938e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fdabb23414121617dcd42acb034f579422d336d43f1b18972f2d621add8af331d47c7dc3385a2eb330fd5b3a1dd82a11981550645e1d56b24d5c74b749766460
|
|
7
|
+
data.tar.gz: 4a8621e01f1a10c17eeb8190be317e104a30dce487f89044cccc4d6500d173dd4d5b8ac7d51211e60dd7403ef4e62a14a9a8fa2c3abd15210538bb6ce4179121
|
|
@@ -527,10 +527,10 @@ module RBS
|
|
|
527
527
|
# @rbs return: MethodType | AST::Tree | Types::t | nil
|
|
528
528
|
def parse_type_method_type(tokenizer, parent_tree)
|
|
529
529
|
tokenizer.consume_trivias(parent_tree)
|
|
530
|
-
buffer = RBS::Buffer.new(name: "", content: tokenizer.scanner.string)
|
|
531
|
-
|
|
530
|
+
buffer = RBS::Buffer.new(name: Pathname.new(""), content: tokenizer.scanner.string)
|
|
531
|
+
byte_range = (tokenizer.current_position..)
|
|
532
532
|
begin
|
|
533
|
-
if type = RBS::Parser.parse_method_type(buffer,
|
|
533
|
+
if type = RBS::Parser.parse_method_type(buffer, byte_range: byte_range, require_eof: false)
|
|
534
534
|
loc = type.location or raise
|
|
535
535
|
tokenizer.reset(loc.end_pos, parent_tree)
|
|
536
536
|
type
|
|
@@ -539,7 +539,7 @@ module RBS
|
|
|
539
539
|
end
|
|
540
540
|
rescue RBS::ParsingError
|
|
541
541
|
begin
|
|
542
|
-
if type = RBS::Parser.parse_type(buffer,
|
|
542
|
+
if type = RBS::Parser.parse_type(buffer, byte_range: byte_range, require_eof: false)
|
|
543
543
|
loc = type.location or raise
|
|
544
544
|
tokenizer.reset(loc.end_pos, parent_tree)
|
|
545
545
|
type
|
|
@@ -566,10 +566,10 @@ module RBS
|
|
|
566
566
|
# @rbs return: MethodType | AST::Tree
|
|
567
567
|
def parse_method_type(tokenizer, parent_tree)
|
|
568
568
|
tokenizer.consume_trivias(parent_tree)
|
|
569
|
-
buffer = RBS::Buffer.new(name: "", content: tokenizer.scanner.string)
|
|
570
|
-
|
|
569
|
+
buffer = RBS::Buffer.new(name: Pathname.new(""), content: tokenizer.scanner.string)
|
|
570
|
+
byte_range = (tokenizer.current_position..)
|
|
571
571
|
begin
|
|
572
|
-
if type = RBS::Parser.parse_method_type(buffer,
|
|
572
|
+
if type = RBS::Parser.parse_method_type(buffer, byte_range: byte_range, require_eof: false)
|
|
573
573
|
loc = type.location or raise
|
|
574
574
|
tokenizer.reset(loc.end_pos, parent_tree)
|
|
575
575
|
type
|
|
@@ -605,9 +605,9 @@ module RBS
|
|
|
605
605
|
# @rbs return: Types::t | AST::Tree | nil
|
|
606
606
|
def parse_type(tokenizer, parent_tree)
|
|
607
607
|
tokenizer.consume_trivias(parent_tree)
|
|
608
|
-
buffer = RBS::Buffer.new(name: "", content: tokenizer.scanner.string)
|
|
609
|
-
|
|
610
|
-
if type = RBS::Parser.parse_type(buffer,
|
|
608
|
+
buffer = RBS::Buffer.new(name: Pathname.new(""), content: tokenizer.scanner.string)
|
|
609
|
+
byte_range = (tokenizer.current_position..)
|
|
610
|
+
if type = RBS::Parser.parse_type(buffer, byte_range: byte_range, require_eof: false)
|
|
611
611
|
loc = type.location or raise
|
|
612
612
|
tokenizer.reset(loc.end_pos, parent_tree)
|
|
613
613
|
type
|
|
@@ -207,9 +207,27 @@ module RBS
|
|
|
207
207
|
end
|
|
208
208
|
|
|
209
209
|
# @rbs %a{pure}
|
|
210
|
-
# @rbs return Types::t?
|
|
210
|
+
# @rbs return: Types::t?
|
|
211
211
|
def literal_type
|
|
212
|
-
|
|
212
|
+
infer_type_from_node(node.value)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
# @rbs %a{pure}
|
|
216
|
+
# @rbs return: TypeName?
|
|
217
|
+
def constant_name
|
|
218
|
+
TypeName.new(name: node.name, namespace: Namespace.empty)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def start_line #: Integer
|
|
222
|
+
node.location.start_line
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
private
|
|
226
|
+
|
|
227
|
+
# @rbs node: Prism::Node
|
|
228
|
+
# @rbs return: Types::t?
|
|
229
|
+
def infer_type_from_node(node)
|
|
230
|
+
case node
|
|
213
231
|
when Prism::StringNode, Prism::InterpolatedStringNode
|
|
214
232
|
BuiltinNames::String.instance_type
|
|
215
233
|
when Prism::SymbolNode, Prism::InterpolatedSymbolNode
|
|
@@ -221,22 +239,79 @@ module RBS
|
|
|
221
239
|
when Prism::FloatNode
|
|
222
240
|
BuiltinNames::Float.instance_type
|
|
223
241
|
when Prism::ArrayNode
|
|
224
|
-
|
|
242
|
+
infer_array_element_type(node)
|
|
225
243
|
when Prism::HashNode
|
|
226
|
-
|
|
244
|
+
infer_hash_element_type(node)
|
|
227
245
|
when Prism::TrueNode, Prism::FalseNode
|
|
228
246
|
Types::Bases::Bool.new(location: nil)
|
|
229
247
|
end
|
|
230
248
|
end
|
|
231
249
|
|
|
232
|
-
# @rbs
|
|
233
|
-
# @rbs return:
|
|
234
|
-
def
|
|
235
|
-
|
|
250
|
+
# @rbs node: Prism::ArrayNode
|
|
251
|
+
# @rbs return: Types::t
|
|
252
|
+
def infer_array_element_type(node)
|
|
253
|
+
return BuiltinNames::Array.instance_type if node.elements.empty?
|
|
254
|
+
|
|
255
|
+
element_types = [] #: Array[Types::t]
|
|
256
|
+
node.elements.each do |elem|
|
|
257
|
+
type = infer_type_from_node(elem)
|
|
258
|
+
return BuiltinNames::Array.instance_type unless type
|
|
259
|
+
element_types << type
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
element_types.uniq!(&:to_s)
|
|
263
|
+
|
|
264
|
+
# Union types are not currently supported.
|
|
265
|
+
case element_types.size
|
|
266
|
+
when 1
|
|
267
|
+
BuiltinNames::Array.instance_type(element_types.first || raise)
|
|
268
|
+
else
|
|
269
|
+
BuiltinNames::Array.instance_type(
|
|
270
|
+
Types::Bases::Any.new(location: nil)
|
|
271
|
+
)
|
|
272
|
+
end
|
|
236
273
|
end
|
|
237
274
|
|
|
238
|
-
|
|
239
|
-
|
|
275
|
+
# @rbs node: Prism::HashNode
|
|
276
|
+
# @rbs return: Types::t
|
|
277
|
+
def infer_hash_element_type(node)
|
|
278
|
+
return BuiltinNames::Hash.instance_type if node.elements.empty?
|
|
279
|
+
|
|
280
|
+
key_types = [] #: Array[Types::t]
|
|
281
|
+
value_types = [] #: Array[Types::t]
|
|
282
|
+
|
|
283
|
+
node.elements.each do |elem|
|
|
284
|
+
case elem
|
|
285
|
+
when Prism::AssocNode
|
|
286
|
+
key_type = infer_type_from_node(elem.key)
|
|
287
|
+
value_type = infer_type_from_node(elem.value)
|
|
288
|
+
return BuiltinNames::Hash.instance_type unless key_type && value_type
|
|
289
|
+
key_types << key_type
|
|
290
|
+
value_types << value_type
|
|
291
|
+
else
|
|
292
|
+
return BuiltinNames::Hash.instance_type
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
key_types.uniq!(&:to_s)
|
|
297
|
+
value_types.uniq!(&:to_s)
|
|
298
|
+
|
|
299
|
+
# Union types are not currently supported.
|
|
300
|
+
key_type = case key_types.size
|
|
301
|
+
when 1
|
|
302
|
+
key_types.first || raise
|
|
303
|
+
else
|
|
304
|
+
Types::Bases::Any.new(location: nil)
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
value_type = case value_types.size
|
|
308
|
+
when 1
|
|
309
|
+
value_types.first || raise
|
|
310
|
+
else
|
|
311
|
+
Types::Bases::Any.new(location: nil)
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
BuiltinNames::Hash.instance_type(key_type, value_type)
|
|
240
315
|
end
|
|
241
316
|
end
|
|
242
317
|
|
data/lib/rbs/inline/parser.rb
CHANGED
|
@@ -69,8 +69,8 @@ module RBS
|
|
|
69
69
|
instance.comments[result.line_range.end] = result
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
with_enable_magic_comment = result.comments.any? {|comment| comment.location.slice =~ /\A# rbs_inline: enabled\
|
|
73
|
-
with_disable_magic_comment = result.comments.any? {|comment| comment.location.slice =~ /\A# rbs_inline: disabled\
|
|
72
|
+
with_enable_magic_comment = result.comments.any? {|comment| comment.location.slice =~ /\A# rbs_inline: enabled\R?\z/}
|
|
73
|
+
with_disable_magic_comment = result.comments.any? {|comment| comment.location.slice =~ /\A# rbs_inline: disabled\R?\z/}
|
|
74
74
|
|
|
75
75
|
return if with_disable_magic_comment # Skips if `rbs_inline: disabled`
|
|
76
76
|
|
data/lib/rbs/inline/version.rb
CHANGED
data/lib/rbs/inline/writer.rb
CHANGED
data/rbs_collection.lock.yaml
CHANGED
|
@@ -10,15 +10,19 @@ gems:
|
|
|
10
10
|
source:
|
|
11
11
|
type: stdlib
|
|
12
12
|
- name: logger
|
|
13
|
-
version: '
|
|
13
|
+
version: '1.7'
|
|
14
14
|
source:
|
|
15
|
-
type:
|
|
15
|
+
type: git
|
|
16
|
+
name: ruby/gem_rbs_collection
|
|
17
|
+
revision: 0c952bbd8da015cef73934ccb02ff60b48aee124
|
|
18
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
19
|
+
repo_dir: gems
|
|
16
20
|
- name: minitest
|
|
17
21
|
version: '5.25'
|
|
18
22
|
source:
|
|
19
23
|
type: git
|
|
20
24
|
name: ruby/gem_rbs_collection
|
|
21
|
-
revision:
|
|
25
|
+
revision: 0c952bbd8da015cef73934ccb02ff60b48aee124
|
|
22
26
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
23
27
|
repo_dir: gems
|
|
24
28
|
- name: monitor
|
|
@@ -29,12 +33,8 @@ gems:
|
|
|
29
33
|
version: '0'
|
|
30
34
|
source:
|
|
31
35
|
type: stdlib
|
|
32
|
-
- name: pathname
|
|
33
|
-
version: '0'
|
|
34
|
-
source:
|
|
35
|
-
type: stdlib
|
|
36
36
|
- name: prism
|
|
37
|
-
version: 1.
|
|
37
|
+
version: 1.9.0
|
|
38
38
|
source:
|
|
39
39
|
type: rubygems
|
|
40
40
|
- name: rake
|
|
@@ -42,11 +42,11 @@ gems:
|
|
|
42
42
|
source:
|
|
43
43
|
type: git
|
|
44
44
|
name: ruby/gem_rbs_collection
|
|
45
|
-
revision:
|
|
45
|
+
revision: 0c952bbd8da015cef73934ccb02ff60b48aee124
|
|
46
46
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
47
47
|
repo_dir: gems
|
|
48
48
|
- name: rbs
|
|
49
|
-
version:
|
|
49
|
+
version: 4.0.2
|
|
50
50
|
source:
|
|
51
51
|
type: rubygems
|
|
52
52
|
- name: rdoc
|
|
@@ -102,7 +102,7 @@ module RBS
|
|
|
102
102
|
def type: (untyped default_type) -> Types::t
|
|
103
103
|
|
|
104
104
|
# @rbs %a{pure}
|
|
105
|
-
# @rbs return Types::t?
|
|
105
|
+
# @rbs return: Types::t?
|
|
106
106
|
%a{pure}
|
|
107
107
|
def literal_type: () -> Types::t?
|
|
108
108
|
|
|
@@ -112,6 +112,20 @@ module RBS
|
|
|
112
112
|
def constant_name: () -> TypeName?
|
|
113
113
|
|
|
114
114
|
def start_line: () -> Integer
|
|
115
|
+
|
|
116
|
+
private
|
|
117
|
+
|
|
118
|
+
# @rbs node: Prism::Node
|
|
119
|
+
# @rbs return: Types::t?
|
|
120
|
+
def infer_type_from_node: (Prism::Node node) -> Types::t?
|
|
121
|
+
|
|
122
|
+
# @rbs node: Prism::ArrayNode
|
|
123
|
+
# @rbs return: Types::t
|
|
124
|
+
def infer_array_element_type: (Prism::ArrayNode node) -> Types::t
|
|
125
|
+
|
|
126
|
+
# @rbs node: Prism::HashNode
|
|
127
|
+
# @rbs return: Types::t
|
|
128
|
+
def infer_hash_element_type: (Prism::HashNode node) -> Types::t
|
|
115
129
|
end
|
|
116
130
|
|
|
117
131
|
class SingletonClassDecl < ModuleOrClass[Prism::SingletonClassNode]
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rbs-inline
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.14.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Soutaro Matsumoto
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: prism
|
|
@@ -27,16 +27,16 @@ dependencies:
|
|
|
27
27
|
name: rbs
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
29
29
|
requirements:
|
|
30
|
-
- - "
|
|
30
|
+
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version:
|
|
32
|
+
version: '4.0'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
|
-
- - "
|
|
37
|
+
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version:
|
|
39
|
+
version: '4.0'
|
|
40
40
|
description: Inline RBS type declaration.
|
|
41
41
|
email:
|
|
42
42
|
- matsumoto@soutaro.com
|
|
@@ -102,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
103
|
version: '0'
|
|
104
104
|
requirements: []
|
|
105
|
-
rubygems_version:
|
|
105
|
+
rubygems_version: 4.0.3
|
|
106
106
|
specification_version: 4
|
|
107
107
|
summary: Inline RBS type declaration.
|
|
108
108
|
test_files: []
|