rbs-inline 0.6.0 → 0.8.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: 330c5c083c1dda38f3f0263729aea1d39c16484e67deee0717b28881ec22da8a
4
- data.tar.gz: 2f1e8f2910669d33f6ed64897b0e5db00285b42626d846402a85c5c294c23155
3
+ metadata.gz: d5a68634b62b49714735e0b84f748c4e2a646dc1f785644202b76dcbcb7a3937
4
+ data.tar.gz: 19d106b8ff48e0eab47f30751764611437fb13a1cf54bb382738e849217fb2fe
5
5
  SHA512:
6
- metadata.gz: ad396cb989f857ada7203ca6ab2129dae79f471520d816e791c8be80b9d3d4b3d5301f8360dfe8ccba5fe30d99f92dd56eea81c32b092a946d91aab431f57e26
7
- data.tar.gz: 4487616c28a042e68f167ea191b7ab4265704228b6a104e0bf52a15d909b096bb8a8798d273de97cebba72f2a8bf0b2635168cee5e7961a7c37ec0a9f3364c25
6
+ metadata.gz: b8f197fbd6ed4bbb17f3715aa314320405561ee2dd8fe61c7a1d61279e8f1c7d2ba166308cee7282114f004a195853f0bb1f736a932466e58000ced915f844d7
7
+ data.tar.gz: 7ae9e4c5a8ecbdc3c9935c698ed5964454c5d1b152e3f637457b96220f959e3489df7906c674f88a99f346879d9cd66768dd4ec7b4a39206030e41c880493344
@@ -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
@@ -241,6 +241,21 @@ module RBS
241
241
  end
242
242
 
243
243
  class SingletonClassDecl < ModuleOrClass #[Prism::SingletonClassNode]
244
+ # @rbs (AST::Members::RubyDef) -> (:private | nil)
245
+ def visibility(def_member)
246
+ current_visibility = nil
247
+ members.each do |member|
248
+ case member
249
+ when AST::Members::RubyPublic
250
+ current_visibility = nil
251
+ when AST::Members::RubyPrivate
252
+ current_visibility = :private
253
+ end
254
+
255
+ break if member == def_member
256
+ end
257
+ current_visibility
258
+ end
244
259
  end
245
260
 
246
261
  class BlockDecl < Base
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RBS
4
4
  module Inline
5
- VERSION = "0.6.0"
5
+ VERSION = "0.8.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,
@@ -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(
@@ -421,6 +474,7 @@ module RBS
421
474
  return
422
475
  end
423
476
 
477
+ visibility = member.visibility || decl&.visibility(member)
424
478
  rbs << RBS::AST::Members::MethodDefinition.new(
425
479
  name: member.method_name,
426
480
  kind: kind,
@@ -429,7 +483,7 @@ module RBS
429
483
  location: nil,
430
484
  comment: comment,
431
485
  overloading: member.overloading?,
432
- visibility: member.visibility
486
+ visibility: visibility
433
487
  )
434
488
  when AST::Members::RubyAlias
435
489
  if member.comments
@@ -453,9 +507,9 @@ module RBS
453
507
  rbs.concat m
454
508
  end
455
509
  when AST::Members::RubyPrivate
456
- rbs << RBS::AST::Members::Private.new(location: nil)
510
+ rbs << RBS::AST::Members::Private.new(location: nil) unless decl
457
511
  when AST::Members::RubyPublic
458
- rbs << RBS::AST::Members::Public.new(location: nil)
512
+ rbs << RBS::AST::Members::Public.new(location: nil) unless decl
459
513
  when AST::Members::RBSIvar
460
514
  if m = member.rbs
461
515
  rbs << m
@@ -42,11 +42,11 @@ gems:
42
42
  source:
43
43
  type: git
44
44
  name: ruby/gem_rbs_collection
45
- revision: 3670834268f4ea9c10aefeffae7e072b51256375
45
+ revision: 03121e6bbf2340e3b179edcc351deac45476f4d0
46
46
  remote: https://github.com/ruby/gem_rbs_collection.git
47
47
  repo_dir: gems
48
48
  - name: rbs
49
- version: 3.5.2
49
+ version: 3.5.3
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
 
@@ -115,6 +115,8 @@ module RBS
115
115
  end
116
116
 
117
117
  class SingletonClassDecl < ModuleOrClass[Prism::SingletonClassNode]
118
+ # @rbs (AST::Members::RubyDef) -> (:private | nil)
119
+ def visibility: (AST::Members::RubyDef) -> (:private | nil)
118
120
  end
119
121
 
120
122
  class BlockDecl < Base
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.6.0
4
+ version: 0.8.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-01 00:00:00.000000000 Z
11
+ date: 2024-09-17 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,7 +29,7 @@ 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
@@ -103,7 +103,7 @@ 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
  - - ">="