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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae1ebe5ac15f3f5c12c3b162fbcdc754de5544867fbc2d455af7a2028bfc12c7
4
- data.tar.gz: aecd4c155a61ff168e9dea24d22cd9772566b26d973ffe9857e85f369e716a32
3
+ metadata.gz: f73d1f3ac7e111f773fe9b2d034dc5ccc3a8732f50aacf1a07655ad3450e24f4
4
+ data.tar.gz: '082c1f8a6ef85a239f29563f1e95d6af0ac0af89c5860a6c552d56505a0a27ba'
5
5
  SHA512:
6
- metadata.gz: ffb76bf31d5c65a4e50edc61bd5538214d15fca1c4bcf0be83a86c32fbb22f27f5947279bec2919aee94928c236605f3998395a9c4b8f2329f0fe933bdff4e87
7
- data.tar.gz: 7dd187fd1519420e823133a84abb6fc858ac6e8024b899b96a0e6cd6c581b42c332e161e9af67067224d9b95d939e32900eeeb5e61b3c5d405b94433e0c19d17
6
+ metadata.gz: 6002e610f1440abbfe351ee3c746e6c4c1f6dcae1a885fc9a5f60d701ebd0548620d8c6ffc6211bffd5830fd9c65901f7d7155d6de049a8670f0b72749f55b0c
7
+ data.tar.gz: 61041de88fbc0048f48fc46c012e1d1a7ff66760aef73e288f60351705425f466d84a4d50488feac54bb58e50fb504916596a8ceaf8ee5f99c76919227ee431e
data/README.md CHANGED
@@ -34,7 +34,7 @@ class Person
34
34
  end
35
35
 
36
36
  # @rbs &block: (String) -> void
37
- def each_address(&block) #:: void
37
+ def each_address(&block) #: void
38
38
  addresses.each(&block)
39
39
  end
40
40
  end
@@ -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
- tree << parse_type(tokenizer, tree)
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 :constraint #: RBS::AST::Declarations::Module::Self?
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
- type = module_self.nth_type?(1)
523
+ self_trees = module_self.non_trivia_trees
524
+ self_trees.shift
523
525
 
524
- case type
525
- when Types::ClassInstance, Types::Interface
526
- @constraint = RBS::AST::Declarations::Module::Self.new(
527
- name: type.name,
528
- args: type.args,
529
- location: nil
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 = module_self.nth_tree(2)
547
+ if comment = self_trees.first
534
548
  @comment = comment.to_s
535
549
  end
536
550
  end
@@ -274,6 +274,7 @@ module RBS
274
274
  # @rbs override
275
275
  def visit_call_node(node)
276
276
  return if ignored_node?(node)
277
+ return super unless current_class_module_decl
277
278
 
278
279
  case node.name
279
280
  when :include, :prepend, :extend
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RBS
4
4
  module Inline
5
- VERSION = "0.7.0"
5
+ VERSION = "0.9.0"
6
6
  end
7
7
  end
@@ -155,7 +155,7 @@ module RBS
155
155
 
156
156
  translate_members(decl.members, nil, members)
157
157
 
158
- self_types = decl.module_selfs.map { _1.constraint }.compact
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.type,
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
@@ -34,7 +34,7 @@ gems:
34
34
  source:
35
35
  type: stdlib
36
36
  - name: prism
37
- version: 0.30.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: 03121e6bbf2340e3b179edcc351deac45476f4d0
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.5.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 constraint: RBS::AST::Declarations::Module::Self?
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.7.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-08-29 00:00:00.000000000 Z
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: '0.31'
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: '0.31'
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.3.0
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.17
113
+ rubygems_version: 3.5.11
114
114
  signing_key:
115
115
  specification_version: 4
116
116
  summary: Inline RBS type declaration.