rbs-inline 0.7.0 → 0.9.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/README.md +1 -1
- data/lib/rbs/inline/annotation_parser.rb +8 -1
- data/lib/rbs/inline/ast/annotations.rb +24 -10
- data/lib/rbs/inline/parser.rb +1 -0
- data/lib/rbs/inline/version.rb +1 -1
- data/lib/rbs/inline/writer.rb +78 -3
- data/rbs_collection.lock.yaml +3 -3
- data/sig/generated/rbs/inline/ast/annotations.rbs +1 -1
- data/sig/generated/rbs/inline/writer.rbs +7 -0
- metadata +8 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f73d1f3ac7e111f773fe9b2d034dc5ccc3a8732f50aacf1a07655ad3450e24f4
|
|
4
|
+
data.tar.gz: '082c1f8a6ef85a239f29563f1e95d6af0ac0af89c5860a6c552d56505a0a27ba'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6002e610f1440abbfe351ee3c746e6c4c1f6dcae1a885fc9a5f60d701ebd0548620d8c6ffc6211bffd5830fd9c65901f7d7155d6de049a8670f0b72749f55b0c
|
|
7
|
+
data.tar.gz: 61041de88fbc0048f48fc46c012e1d1a7ff66760aef73e288f60351705425f466d84a4d50488feac54bb58e50fb504916596a8ceaf8ee5f99c76919227ee431e
|
data/README.md
CHANGED
|
@@ -754,7 +754,14 @@ module RBS
|
|
|
754
754
|
tree = AST::Tree.new(:module_self)
|
|
755
755
|
|
|
756
756
|
tokenizer.consume_token!(K_MODULE_SELF, tree: tree)
|
|
757
|
-
|
|
757
|
+
while true
|
|
758
|
+
tree << parse_type(tokenizer, tree)
|
|
759
|
+
if tokenizer.type?(K_COMMA)
|
|
760
|
+
tokenizer.advance(tree, eat: true)
|
|
761
|
+
else
|
|
762
|
+
break
|
|
763
|
+
end
|
|
764
|
+
end
|
|
758
765
|
|
|
759
766
|
tree << parse_optional(tokenizer, K_MINUS2, tree: tree) do
|
|
760
767
|
parse_comment(tokenizer)
|
|
@@ -509,7 +509,7 @@ module RBS
|
|
|
509
509
|
|
|
510
510
|
# `# @rbs module-self [MODULE_SELF]`
|
|
511
511
|
class ModuleSelf < Base
|
|
512
|
-
attr_reader :
|
|
512
|
+
attr_reader :self_types #: Array[RBS::AST::Declarations::Module::Self]
|
|
513
513
|
|
|
514
514
|
attr_reader :comment #: String?
|
|
515
515
|
|
|
@@ -517,20 +517,34 @@ module RBS
|
|
|
517
517
|
def initialize(tree, source)
|
|
518
518
|
@tree = tree
|
|
519
519
|
@source = source
|
|
520
|
+
@self_types = []
|
|
520
521
|
|
|
521
522
|
module_self = tree.nth_tree!(1)
|
|
522
|
-
|
|
523
|
+
self_trees = module_self.non_trivia_trees
|
|
524
|
+
self_trees.shift
|
|
523
525
|
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
526
|
+
while true
|
|
527
|
+
type = self_trees.shift
|
|
528
|
+
case type
|
|
529
|
+
when Types::ClassInstance, Types::Interface
|
|
530
|
+
@self_types << RBS::AST::Declarations::Module::Self.new(
|
|
531
|
+
name: type.name,
|
|
532
|
+
args: type.args,
|
|
533
|
+
location: nil
|
|
534
|
+
)
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
break if self_trees.empty?
|
|
538
|
+
|
|
539
|
+
next_tree = self_trees.first
|
|
540
|
+
if next_tree.is_a?(Array) && next_tree[0] == :kCOMMA
|
|
541
|
+
self_trees.shift
|
|
542
|
+
else
|
|
543
|
+
break
|
|
544
|
+
end
|
|
531
545
|
end
|
|
532
546
|
|
|
533
|
-
if comment =
|
|
547
|
+
if comment = self_trees.first
|
|
534
548
|
@comment = comment.to_s
|
|
535
549
|
end
|
|
536
550
|
end
|
data/lib/rbs/inline/parser.rb
CHANGED
data/lib/rbs/inline/version.rb
CHANGED
data/lib/rbs/inline/writer.rb
CHANGED
|
@@ -155,7 +155,7 @@ module RBS
|
|
|
155
155
|
|
|
156
156
|
translate_members(decl.members, nil, members)
|
|
157
157
|
|
|
158
|
-
self_types = decl.module_selfs.
|
|
158
|
+
self_types = decl.module_selfs.flat_map { _1.self_types }.compact
|
|
159
159
|
|
|
160
160
|
rbs << RBS::AST::Declarations::Module.new(
|
|
161
161
|
name: decl.module_name,
|
|
@@ -180,7 +180,7 @@ module RBS
|
|
|
180
180
|
|
|
181
181
|
rbs << RBS::AST::Declarations::Constant.new(
|
|
182
182
|
name: decl.constant_name,
|
|
183
|
-
type: decl
|
|
183
|
+
type: constant_decl_to_type(decl),
|
|
184
184
|
comment: comment,
|
|
185
185
|
location: nil
|
|
186
186
|
)
|
|
@@ -257,10 +257,40 @@ module RBS
|
|
|
257
257
|
visibility: nil
|
|
258
258
|
)
|
|
259
259
|
|
|
260
|
+
members = [:singleton, :instance].map do |kind|
|
|
261
|
+
RBS::AST::Members::MethodDefinition.new(
|
|
262
|
+
name: :members,
|
|
263
|
+
kind: kind, #: RBS::AST::MethodDefinition::Kind
|
|
264
|
+
overloads: [
|
|
265
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
|
266
|
+
method_type: RBS::MethodType.new(
|
|
267
|
+
type_params: [],
|
|
268
|
+
type: Types::Function.empty(
|
|
269
|
+
Types::Tuple.new(
|
|
270
|
+
types: decl.each_attribute.map do |name, _|
|
|
271
|
+
Types::Literal.new(literal: name, location: nil)
|
|
272
|
+
end,
|
|
273
|
+
location: nil
|
|
274
|
+
)
|
|
275
|
+
),
|
|
276
|
+
block: nil,
|
|
277
|
+
location: nil
|
|
278
|
+
),
|
|
279
|
+
annotations: []
|
|
280
|
+
)
|
|
281
|
+
],
|
|
282
|
+
annotations: [],
|
|
283
|
+
location: nil,
|
|
284
|
+
comment: nil,
|
|
285
|
+
overloading: false,
|
|
286
|
+
visibility: nil
|
|
287
|
+
)
|
|
288
|
+
end
|
|
289
|
+
|
|
260
290
|
rbs << RBS::AST::Declarations::Class.new(
|
|
261
291
|
name: decl.constant_name,
|
|
262
292
|
type_params: [],
|
|
263
|
-
members: [*attributes, new],
|
|
293
|
+
members: [*attributes, new, *members],
|
|
264
294
|
super_class: RBS::AST::Declarations::Class::Super.new(
|
|
265
295
|
name: RBS::TypeName.new(name: :Data, namespace: RBS::Namespace.empty),
|
|
266
296
|
args: [],
|
|
@@ -365,6 +395,29 @@ module RBS
|
|
|
365
395
|
method_type: RBS::MethodType.new(type_params: [], type: method_type, block: nil, location: nil),
|
|
366
396
|
annotations: []
|
|
367
397
|
)
|
|
398
|
+
|
|
399
|
+
unless decl.positional_init?
|
|
400
|
+
new.overloads <<
|
|
401
|
+
RBS::AST::Members::MethodDefinition::Overload.new(
|
|
402
|
+
method_type: RBS::MethodType.new(
|
|
403
|
+
type_params: [],
|
|
404
|
+
type: Types::Function.empty(Types::Bases::Instance.new(location: nil)).then do |t|
|
|
405
|
+
t.update(required_positionals: [
|
|
406
|
+
RBS::Types::Function::Param.new(
|
|
407
|
+
type: RBS::Types::Record.new(all_fields: decl.each_attribute.map do |name, attr|
|
|
408
|
+
[name, attr&.type || Types::Bases::Any.new(location: nil)]
|
|
409
|
+
end.to_h, location: nil),
|
|
410
|
+
name: nil,
|
|
411
|
+
location: nil
|
|
412
|
+
)
|
|
413
|
+
])
|
|
414
|
+
end,
|
|
415
|
+
block: nil,
|
|
416
|
+
location: nil
|
|
417
|
+
),
|
|
418
|
+
annotations:[]
|
|
419
|
+
)
|
|
420
|
+
end
|
|
368
421
|
end
|
|
369
422
|
|
|
370
423
|
rbs << RBS::AST::Declarations::Class.new(
|
|
@@ -555,6 +608,28 @@ module RBS
|
|
|
555
608
|
comment: comment
|
|
556
609
|
)
|
|
557
610
|
end
|
|
611
|
+
|
|
612
|
+
# @rbs decl: AST::Declarations::ConstantDecl
|
|
613
|
+
# @rbs return: RBS::Types::t
|
|
614
|
+
def constant_decl_to_type(decl)
|
|
615
|
+
type = decl.type
|
|
616
|
+
return type unless type.is_a?(RBS::Types::ClassInstance)
|
|
617
|
+
return type if type.args.any?
|
|
618
|
+
|
|
619
|
+
case decl.node.value
|
|
620
|
+
when Prism::ArrayNode
|
|
621
|
+
RBS::BuiltinNames::Array.instance_type(untyped)
|
|
622
|
+
when Prism::HashNode
|
|
623
|
+
RBS::BuiltinNames::Hash.instance_type(untyped, untyped)
|
|
624
|
+
else
|
|
625
|
+
type
|
|
626
|
+
end
|
|
627
|
+
end
|
|
628
|
+
|
|
629
|
+
# @rbs return: RBS::Types::Bases::Any
|
|
630
|
+
def untyped
|
|
631
|
+
@untyped ||= RBS::Types::Bases::Any.new(location: nil)
|
|
632
|
+
end
|
|
558
633
|
end
|
|
559
634
|
end
|
|
560
635
|
end
|
data/rbs_collection.lock.yaml
CHANGED
|
@@ -34,7 +34,7 @@ gems:
|
|
|
34
34
|
source:
|
|
35
35
|
type: stdlib
|
|
36
36
|
- name: prism
|
|
37
|
-
version: 0.
|
|
37
|
+
version: 1.0.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: 25b8cf2135233e112d93d6b64083ee5e419875b6
|
|
46
46
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
47
47
|
repo_dir: gems
|
|
48
48
|
- name: rbs
|
|
49
|
-
version: 3.
|
|
49
|
+
version: 3.6.0
|
|
50
50
|
source:
|
|
51
51
|
type: rubygems
|
|
52
52
|
- name: rdoc
|
|
@@ -195,7 +195,7 @@ module RBS
|
|
|
195
195
|
|
|
196
196
|
# `# @rbs module-self [MODULE_SELF]`
|
|
197
197
|
class ModuleSelf < Base
|
|
198
|
-
attr_reader
|
|
198
|
+
attr_reader self_types: Array[RBS::AST::Declarations::Module::Self]
|
|
199
199
|
|
|
200
200
|
attr_reader comment: String?
|
|
201
201
|
|
|
@@ -107,6 +107,13 @@ module RBS
|
|
|
107
107
|
# @rbs rbs: _Content
|
|
108
108
|
# @rbs return: void
|
|
109
109
|
def translate_class_block_decl: (AST::Declarations::BlockDecl block, _Content rbs) -> void
|
|
110
|
+
|
|
111
|
+
# @rbs decl: AST::Declarations::ConstantDecl
|
|
112
|
+
# @rbs return: RBS::Types::t
|
|
113
|
+
def constant_decl_to_type: (AST::Declarations::ConstantDecl decl) -> RBS::Types::t
|
|
114
|
+
|
|
115
|
+
# @rbs return: RBS::Types::Bases::Any
|
|
116
|
+
def untyped: () -> RBS::Types::Bases::Any
|
|
110
117
|
end
|
|
111
118
|
end
|
|
112
119
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rbs-inline
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Soutaro Matsumoto
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-10-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: prism
|
|
@@ -19,7 +19,7 @@ dependencies:
|
|
|
19
19
|
version: '0.29'
|
|
20
20
|
- - "<"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
22
|
+
version: '1.1'
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,19 +29,19 @@ dependencies:
|
|
|
29
29
|
version: '0.29'
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
32
|
+
version: '1.1'
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
34
|
name: rbs
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
|
-
- - "
|
|
37
|
+
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: 3.5.0
|
|
40
40
|
type: :runtime
|
|
41
41
|
prerelease: false
|
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
|
-
- - "
|
|
44
|
+
- - ">="
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
46
|
version: 3.5.0
|
|
47
47
|
description: Inline RBS type declaration.
|
|
@@ -103,14 +103,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
103
103
|
requirements:
|
|
104
104
|
- - ">="
|
|
105
105
|
- !ruby/object:Gem::Version
|
|
106
|
-
version: 3.
|
|
106
|
+
version: 3.1.0
|
|
107
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
108
|
requirements:
|
|
109
109
|
- - ">="
|
|
110
110
|
- !ruby/object:Gem::Version
|
|
111
111
|
version: '0'
|
|
112
112
|
requirements: []
|
|
113
|
-
rubygems_version: 3.5.
|
|
113
|
+
rubygems_version: 3.5.11
|
|
114
114
|
signing_key:
|
|
115
115
|
specification_version: 4
|
|
116
116
|
summary: Inline RBS type declaration.
|