rbs-inline 0.12.0 → 0.13.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/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 +4 -8
- data/sig/generated/rbs/inline/ast/declarations.rbs +15 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e1c716b3ad3ada559f211899b9e5e586729ee2ea8cf58e92825890042098ad9e
|
|
4
|
+
data.tar.gz: c446d657e9846b963b23e07f1935ad80d23a77c82f4a76cf60e7e6cc36f2bff3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4925e2fd8a505153c4d5ae56693e29e80033ea78a3ebbe9e3f1ee3d8aab4ff766f7f7919affbfee7b5f48fb13d9d8a50a1a36f98782b3a6fed32e0cb8137065f
|
|
7
|
+
data.tar.gz: b74dd3c230c5095505aac970004177af41efbcf52d485be27f0bc5793647d9f525a583b7879953e5b84a4b3002a3574e661fd6bcb23f446124660384a45dce46
|
|
@@ -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
|
@@ -18,7 +18,7 @@ gems:
|
|
|
18
18
|
source:
|
|
19
19
|
type: git
|
|
20
20
|
name: ruby/gem_rbs_collection
|
|
21
|
-
revision:
|
|
21
|
+
revision: d70d634c6e848dc5e93cea0163cc8206448be048
|
|
22
22
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
23
23
|
repo_dir: gems
|
|
24
24
|
- name: monitor
|
|
@@ -29,12 +29,8 @@ gems:
|
|
|
29
29
|
version: '0'
|
|
30
30
|
source:
|
|
31
31
|
type: stdlib
|
|
32
|
-
- name: pathname
|
|
33
|
-
version: '0'
|
|
34
|
-
source:
|
|
35
|
-
type: stdlib
|
|
36
32
|
- name: prism
|
|
37
|
-
version: 1.
|
|
33
|
+
version: 1.9.0
|
|
38
34
|
source:
|
|
39
35
|
type: rubygems
|
|
40
36
|
- name: rake
|
|
@@ -42,11 +38,11 @@ gems:
|
|
|
42
38
|
source:
|
|
43
39
|
type: git
|
|
44
40
|
name: ruby/gem_rbs_collection
|
|
45
|
-
revision:
|
|
41
|
+
revision: d70d634c6e848dc5e93cea0163cc8206448be048
|
|
46
42
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
47
43
|
repo_dir: gems
|
|
48
44
|
- name: rbs
|
|
49
|
-
version: 3.
|
|
45
|
+
version: 3.10.3
|
|
50
46
|
source:
|
|
51
47
|
type: rubygems
|
|
52
48
|
- 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.13.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
|
|
@@ -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: []
|