rbs_activesupport 1.4.3 → 1.6.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: c3ce460ddb405b00eeeff23d9118d5f8f4fd55fb5aef03aa8b8d5ff2c1ba6cb4
4
- data.tar.gz: df9044c57407d295daeef3781715b7345f49c87275cc9327b08814b501077dad
3
+ metadata.gz: 438e19cbb21787f29c6c4d2f2793aa07a2423c6fd42ee9540763d232df0ace2b
4
+ data.tar.gz: 6af95ed3168cbd3ae7b8ef97365b36d6b3c2a03cc844b0303395cb4f0716ff98
5
5
  SHA512:
6
- metadata.gz: b35f6bba26bb000cf6f0dd23da04d28a870d459c7005c79ba9fcf8cc22806693f3c38792f0c1db185dd3449d29c96576781529a0f3b2bdb18f65afaf21cfbbae
7
- data.tar.gz: 87267e34c7f2971ae6d500b17a9d76b0acb7e6af93d13556901da7428cc900dd68c8159528a8e56b8b5e3e1e760e5750dd020cf6dbcc0b5b3b93809708814c98
6
+ metadata.gz: e447d750370fd50cf83d448a5356a520e5f6de2b4ef15bc1bfcf6cf449002052e5b9b37fac7986a07cdb130d5e760adf957f1d0f64e2128493618992f2d96485
7
+ data.tar.gz: 7dcd6171ed89a66d898732e8e3b27401021fad63a5ad10e7a4f3fcf312e411a11e934fe338e65c242949af9f41df36fec7b37f1544f37558cecd5b3466481be4
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.7
2
+ TargetRubyVersion: 3.2
3
3
 
4
4
  Layout/LeadingCommentSpace:
5
5
  Enabled: false
@@ -1,15 +1,25 @@
1
1
  {
2
2
  "rbs-helper.signature-directory": "sig/",
3
3
  "cSpell.words": [
4
+ "bindir",
5
+ "boolish",
4
6
  "cattr",
5
7
  "classmethods",
6
8
  "Cyclomatic",
7
9
  "DEFN",
8
10
  "FCALL",
11
+ "ivar",
12
+ "KOMIYA",
9
13
  "mattr",
10
14
  "mkpath",
15
+ "modname",
16
+ "popen",
17
+ "raketask",
18
+ "readlines",
11
19
  "rmtree",
20
+ "Takeshi",
12
21
  "tasklib",
22
+ "tk0miya",
13
23
  "VCALL",
14
24
  "ZLIST"
15
25
  ],
@@ -32,7 +32,7 @@ module RbsActivesupport
32
32
  node.map { |e| eval_node(e) }
33
33
  when RubyVM::AbstractSyntaxTree::Node
34
34
  case node.type
35
- when :LIT, :STR
35
+ when :LIT, :STR, :SYM, :INTEGER, :FLOAT
36
36
  node.children.first
37
37
  when :HASH
38
38
  children = node.children.first&.children
@@ -13,7 +13,7 @@ module RbsActivesupport
13
13
  end
14
14
 
15
15
  def type #: String
16
- # @type var trailng_comment: String?
16
+ # @type var trailing_comment: String?
17
17
  trailing_comment = options[:trailing_comment]
18
18
  if trailing_comment&.start_with?("#:")
19
19
  trailing_comment[2..].strip
@@ -13,7 +13,7 @@ module RbsActivesupport
13
13
  end
14
14
 
15
15
  def type #: String
16
- # @type var trailng_comment: String?
16
+ # @type var trailing_comment: String?
17
17
  trailing_comment = options[:trailing_comment]
18
18
  if trailing_comment&.start_with?("#:")
19
19
  trailing_comment[2..].strip
@@ -6,11 +6,14 @@ module RbsActivesupport
6
6
 
7
7
  include AST
8
8
 
9
+ attr_reader :resolver #: RBS::Resolver::TypeNameResolver
9
10
  attr_reader :method_searcher #: MethodSearcher
10
11
  attr_reader :included_modules #: Array[RBS::Namespace]
11
12
 
13
+ # @rbs resolver: RBS::Resolver::TypeNameResolver
12
14
  # @rbs method_searcher: MethodSearcher
13
- def initialize(method_searcher) #: void
15
+ def initialize(resolver, method_searcher) #: void
16
+ @resolver = resolver
14
17
  @method_searcher = method_searcher
15
18
  @included_modules = []
16
19
  end
@@ -21,7 +24,8 @@ module RbsActivesupport
21
24
  def build(namespace, method_calls, context = nil) #: [Array[String], Array[String]]
22
25
  built = build_method_calls(namespace, method_calls, context)
23
26
  public_decls, private_decls = built.partition(&:public?)
24
- [public_decls.map(&method(:render)), private_decls.map(&method(:render))] # steep:ignore BlockTypeMismatch
27
+ [public_decls.map { |decl| render(namespace, decl) },
28
+ private_decls.map { |decl| render(namespace, decl) }]
25
29
  end
26
30
 
27
31
  private
@@ -109,13 +113,14 @@ module RbsActivesupport
109
113
  end.flatten
110
114
  end
111
115
 
116
+ # @rbs namespace: RBS::Namespace
112
117
  # @rbs decl: t
113
- def render(decl) #: String
118
+ def render(namespace, decl) #: String
114
119
  case decl
115
120
  when AttributeAccessor
116
- render_attribute_accessor(decl)
121
+ render_attribute_accessor(namespace, decl)
117
122
  when ClassAttribute
118
- render_class_attribute(decl)
123
+ render_class_attribute(namespace, decl)
119
124
  when Delegate
120
125
  render_delegate(decl)
121
126
  when Include
@@ -123,24 +128,28 @@ module RbsActivesupport
123
128
  end
124
129
  end
125
130
 
131
+ # @rbs namespace: RBS::Namespace
126
132
  # @rbs decl: AttributeAccessor
127
- def render_attribute_accessor(decl) #: String
133
+ def render_attribute_accessor(namespace, decl) #: String
134
+ type = resolve_type(namespace, decl.type)
128
135
  methods = []
129
- methods << "def self.#{decl.name}: () -> (#{decl.type})" if decl.singleton_reader?
130
- methods << "def self.#{decl.name}=: (#{decl.type}) -> (#{decl.type})" if decl.singleton_writer?
131
- methods << "def #{decl.name}: () -> (#{decl.type})" if decl.instance_reader?
132
- methods << "def #{decl.name}=: (#{decl.type}) -> (#{decl.type})" if decl.instance_writer?
136
+ methods << "def self.#{decl.name}: () -> (#{type})" if decl.singleton_reader?
137
+ methods << "def self.#{decl.name}=: (#{type}) -> (#{type})" if decl.singleton_writer?
138
+ methods << "def #{decl.name}: () -> (#{type})" if decl.instance_reader?
139
+ methods << "def #{decl.name}=: (#{type}) -> (#{type})" if decl.instance_writer?
133
140
  methods.join("\n")
134
141
  end
135
142
 
143
+ # @rbs namespace: RBS::Namespace
136
144
  # @rbs decl: ClassAttribute
137
- def render_class_attribute(decl) #: String
145
+ def render_class_attribute(namespace, decl) #: String
146
+ type = resolve_type(namespace, decl.type)
138
147
  methods = []
139
- methods << "def self.#{decl.name}: () -> (#{decl.type})"
140
- methods << "def self.#{decl.name}=: (#{decl.type}) -> (#{decl.type})"
148
+ methods << "def self.#{decl.name}: () -> (#{type})"
149
+ methods << "def self.#{decl.name}=: (#{type}) -> (#{type})"
141
150
  methods << "def self.#{decl.name}?: () -> bool" if decl.instance_predicate?
142
- methods << "def #{decl.name}: () -> (#{decl.type})" if decl.instance_reader?
143
- methods << "def #{decl.name}=: (#{decl.type}) -> (#{decl.type})" if decl.instance_writer?
151
+ methods << "def #{decl.name}: () -> (#{type})" if decl.instance_reader?
152
+ methods << "def #{decl.name}=: (#{type}) -> (#{type})" if decl.instance_writer?
144
153
  methods << "def #{decl.name}?: () -> bool" if decl.instance_predicate? && decl.instance_reader?
145
154
  methods.join("\n")
146
155
  end
@@ -164,5 +173,28 @@ module RbsActivesupport
164
173
  "include #{module_name.to_s.delete_suffix("::")}"
165
174
  end
166
175
  end
176
+
177
+ # @rbs namespace: RBS::Namespace
178
+ # @rbs type: String
179
+ def resolve_type(namespace, type) #: String
180
+ context = context_from(namespace.to_type_name)
181
+
182
+ typ = RBS::Parser.parse_type(type)
183
+ if typ
184
+ typ.map_type_name { |type_name| resolver.resolve(type_name, context:) || type_name }.to_s
185
+ else
186
+ type
187
+ end
188
+ end
189
+
190
+ # @rbs type_name: RBS::TypeName
191
+ def context_from(type_name) #: RBS::Resolver::context
192
+ if type_name.namespace == RBS::Namespace.root
193
+ [nil, type_name]
194
+ else
195
+ parent = context_from(type_name.namespace.to_type_name)
196
+ [parent, type_name]
197
+ end
198
+ end
167
199
  end
168
200
  end
@@ -21,7 +21,8 @@ module RbsActivesupport
21
21
  @pathname = pathname
22
22
 
23
23
  method_searcher = MethodSearcher.new(rbs_builder)
24
- @declaration_builder = DeclarationBuilder.new(method_searcher)
24
+ resolver = RBS::Resolver::TypeNameResolver.new(rbs_builder.env)
25
+ @declaration_builder = DeclarationBuilder.new(resolver, method_searcher)
25
26
  end
26
27
 
27
28
  def generate #: String?
@@ -33,6 +34,8 @@ module RbsActivesupport
33
34
  next if public_decls.empty? && private_decls.empty?
34
35
 
35
36
  <<~RBS
37
+ # resolve-type-names: false
38
+
36
39
  #{header(namespace)}
37
40
  #{public_decls.join("\n")}
38
41
 
@@ -55,7 +58,7 @@ module RbsActivesupport
55
58
  def format(rbs) #: String
56
59
  parsed = RBS::Parser.parse_signature(rbs)
57
60
  StringIO.new.tap do |out|
58
- RBS::Writer.new(out: out).write(parsed[1] + parsed[2])
61
+ RBS::Writer.new(out:).write(parsed[1] + parsed[2])
59
62
  end.string
60
63
  end
61
64
 
@@ -67,19 +70,16 @@ module RbsActivesupport
67
70
 
68
71
  # @rbs namespace: RBS::Namespace
69
72
  def header(namespace) #: String
70
- context = +""
71
- namespace.path.map do |mod_name|
72
- context += "::#{mod_name}"
73
- mod_object = Object.const_get(context)
73
+ namespace_to_names(namespace).map do |name|
74
+ mod_object = Object.const_get(name.to_s)
74
75
  case mod_object
75
76
  when Class
76
- # @type var superclass: Class
77
- superclass = _ = mod_object.superclass
78
- superclass_name = superclass.name || "Object"
77
+ superclass = mod_object.superclass
78
+ superclass_name = superclass&.name || "::Object"
79
79
 
80
- "class #{mod_name} < ::#{superclass_name}"
80
+ "class #{name} < ::#{superclass_name}"
81
81
  when Module
82
- "module #{mod_name}"
82
+ "module #{name}"
83
83
  else
84
84
  raise "unreachable"
85
85
  end
@@ -90,5 +90,15 @@ module RbsActivesupport
90
90
  def footer(namespace) #: String
91
91
  "end\n" * namespace.path.size
92
92
  end
93
+
94
+ # @rbs namespace: RBS::Namespace
95
+ def namespace_to_names(namespace) #: Array[RBS::TypeName]
96
+ names = [] #: Array[RBS::TypeName]
97
+ until namespace.empty?
98
+ names << namespace.to_type_name
99
+ namespace = namespace.parent
100
+ end
101
+ names.reverse
102
+ end
93
103
  end
94
104
  end
@@ -46,12 +46,35 @@ module RbsActivesupport
46
46
  # @rbs method: Symbol
47
47
  def lookup_method_types(type_name, method) #: Array[RBS::MethodType]
48
48
  instance = rbs_builder.build_instance(type_name)
49
- method_def = instance.methods[method]
50
- return [] unless method_def
49
+ if method.start_with? "@"
50
+ ivar_def = instance.instance_variables[method]
51
+ return [] unless ivar_def
51
52
 
52
- method_def.defs.map(&:type)
53
+ method_def = build_method_def(ivar_def.type)
54
+ [method_def]
55
+ else
56
+ method_def = instance.methods[method]
57
+ return [] unless method_def
58
+
59
+ method_def.defs.map(&:type)
60
+ end
53
61
  rescue StandardError
54
62
  []
55
63
  end
64
+
65
+ # @rbs return_type: RBS::Types::t
66
+ def build_method_def(return_type) #: RBS::MethodType
67
+ type = RBS::Types::Function.new(
68
+ required_positionals: [],
69
+ optional_positionals: [],
70
+ rest_positionals: nil,
71
+ trailing_positionals: [],
72
+ required_keywords: {},
73
+ optional_keywords: {},
74
+ rest_keywords: nil,
75
+ return_type:
76
+ )
77
+ RBS::MethodType.new(type_params: [], type:, block: nil, location: nil)
78
+ end
56
79
  end
57
80
  end
@@ -76,20 +76,20 @@ module RbsActivesupport
76
76
  included: in_included_block?,
77
77
  trailing_comment: trailing_comment_for(node))
78
78
  else
79
- process_orig(node, decls: decls, comments: comments, context: context)
79
+ process_orig(node, decls:, comments:, context:)
80
80
  end
81
81
  when :ITER
82
82
  call = node.children[0]
83
83
  if call.type == :FCALL && call.children[0] == :included && parse_included_block && !in_included_block?
84
84
  body = node.children[1].children[2]
85
85
  with_included_block do
86
- process(body, decls: decls, comments: comments, context: context)
86
+ process(body, decls:, comments:, context:)
87
87
  end
88
88
  else
89
- process_orig(node, decls: decls, comments: comments, context: context)
89
+ process_orig(node, decls:, comments:, context:)
90
90
  end
91
91
  else
92
- process_orig(node, decls: decls, comments: comments, context: context)
92
+ process_orig(node, decls:, comments:, context:)
93
93
  end
94
94
  end
95
95
 
@@ -45,7 +45,7 @@ module RbsActivesupport
45
45
 
46
46
  target_directories.each do |dir|
47
47
  dir.glob("**/*.rb").each do |file|
48
- rbs = Generator.new(file, rbs_builder).generate
48
+ rbs = Generator.generate(file, rbs_builder)
49
49
  next unless rbs
50
50
 
51
51
  rbs_path = signature_root_dir / file.sub_ext(".rbs").relative_path_from(Rails.root)
@@ -70,7 +70,7 @@ module RbsActivesupport
70
70
  loader = RBS::CLI::LibraryOptions.new.loader
71
71
  loader.add(path: Pathname("sig"))
72
72
  env = RBS::Environment.from_loader(loader).resolve_type_names
73
- RBS::DefinitionBuilder.new(env: env)
73
+ RBS::DefinitionBuilder.new(env:)
74
74
  end
75
75
  end
76
76
  end
@@ -11,26 +11,26 @@ module RbsActivesupport
11
11
  when nil
12
12
  "nil"
13
13
  when Integer, Float, Symbol, String
14
- obj.class.name or raise
14
+ "::#{obj.class.name}" or raise
15
15
  when true, false
16
16
  "bool"
17
17
  when Array
18
- return "Array[untyped]" if obj.empty?
18
+ return "::Array[untyped]" if obj.empty?
19
19
 
20
20
  items = obj.map { |e| guess_type(e) }.uniq
21
21
  if items.include?("untyped")
22
- "Array[untyped]"
22
+ "::Array[untyped]"
23
23
  else
24
- "Array[#{items.join(" | ")}]"
24
+ "::Array[#{items.join(" | ")}]"
25
25
  end
26
26
  when Hash
27
- return "Hash[untyped, untyped]" if obj.empty?
27
+ return "::Hash[untyped, untyped]" if obj.empty?
28
28
 
29
29
  keys = obj.keys.map { |e| guess_type(e) }.uniq
30
30
  values = obj.values.map { |e| guess_type(e) }.uniq
31
31
  key_type = keys.include?("untyped") ? "untyped" : keys.join(" | ")
32
32
  value_type = values.include?("untyped") ? "untyped" : values.join(" | ")
33
- "Hash[#{key_type}, #{value_type}]"
33
+ "::Hash[#{key_type}, #{value_type}]"
34
34
  else
35
35
  "untyped"
36
36
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RbsActivesupport
4
- VERSION = "1.4.3" #: String
4
+ VERSION = "1.6.0"
5
5
  end
@@ -2,11 +2,11 @@
2
2
  path: ".gem_rbs_collection"
3
3
  gems:
4
4
  - name: actionpack
5
- version: '6.0'
5
+ version: '7.2'
6
6
  source:
7
7
  type: git
8
8
  name: ruby/gem_rbs_collection
9
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
9
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
10
10
  remote: https://github.com/ruby/gem_rbs_collection.git
11
11
  repo_dir: gems
12
12
  - name: actionview
@@ -14,7 +14,7 @@ gems:
14
14
  source:
15
15
  type: git
16
16
  name: ruby/gem_rbs_collection
17
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
17
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
18
18
  remote: https://github.com/ruby/gem_rbs_collection.git
19
19
  repo_dir: gems
20
20
  - name: activesupport
@@ -22,7 +22,7 @@ gems:
22
22
  source:
23
23
  type: git
24
24
  name: ruby/gem_rbs_collection
25
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
25
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
26
26
  remote: https://github.com/ruby/gem_rbs_collection.git
27
27
  repo_dir: gems
28
28
  - name: ast
@@ -30,17 +30,29 @@ gems:
30
30
  source:
31
31
  type: git
32
32
  name: ruby/gem_rbs_collection
33
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
33
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
34
34
  remote: https://github.com/ruby/gem_rbs_collection.git
35
35
  repo_dir: gems
36
36
  - name: base64
37
+ version: '0.1'
38
+ source:
39
+ type: git
40
+ name: ruby/gem_rbs_collection
41
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
42
+ remote: https://github.com/ruby/gem_rbs_collection.git
43
+ repo_dir: gems
44
+ - name: benchmark
37
45
  version: '0'
38
46
  source:
39
47
  type: stdlib
40
48
  - name: bigdecimal
41
- version: '0'
49
+ version: '3.1'
42
50
  source:
43
- type: stdlib
51
+ type: git
52
+ name: ruby/gem_rbs_collection
53
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
54
+ remote: https://github.com/ruby/gem_rbs_collection.git
55
+ repo_dir: gems
44
56
  - name: cgi
45
57
  version: '0'
46
58
  source:
@@ -50,7 +62,7 @@ gems:
50
62
  source:
51
63
  type: git
52
64
  name: ruby/gem_rbs_collection
53
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
65
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
54
66
  remote: https://github.com/ruby/gem_rbs_collection.git
55
67
  repo_dir: gems
56
68
  - name: connection_pool
@@ -58,18 +70,14 @@ gems:
58
70
  source:
59
71
  type: git
60
72
  name: ruby/gem_rbs_collection
61
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
73
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
62
74
  remote: https://github.com/ruby/gem_rbs_collection.git
63
75
  repo_dir: gems
64
76
  - name: date
65
77
  version: '0'
66
78
  source:
67
79
  type: stdlib
68
- - name: dbm
69
- version: '0'
70
- source:
71
- type: stdlib
72
- - name: delegate
80
+ - name: digest
73
81
  version: '0'
74
82
  source:
75
83
  type: stdlib
@@ -86,7 +94,7 @@ gems:
86
94
  source:
87
95
  type: git
88
96
  name: ruby/gem_rbs_collection
89
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
97
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
90
98
  remote: https://github.com/ruby/gem_rbs_collection.git
91
99
  repo_dir: gems
92
100
  - name: io-console
@@ -102,23 +110,27 @@ gems:
102
110
  source:
103
111
  type: stdlib
104
112
  - name: minitest
105
- version: '0'
113
+ version: '5.25'
106
114
  source:
107
- type: stdlib
115
+ type: git
116
+ name: ruby/gem_rbs_collection
117
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
118
+ remote: https://github.com/ruby/gem_rbs_collection.git
119
+ repo_dir: gems
108
120
  - name: monitor
109
121
  version: '0'
110
122
  source:
111
123
  type: stdlib
112
124
  - name: mutex_m
113
- version: '0'
125
+ version: 0.3.0
114
126
  source:
115
- type: stdlib
127
+ type: rubygems
116
128
  - name: nokogiri
117
129
  version: '1.11'
118
130
  source:
119
131
  type: git
120
132
  name: ruby/gem_rbs_collection
121
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
133
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
122
134
  remote: https://github.com/ruby/gem_rbs_collection.git
123
135
  repo_dir: gems
124
136
  - name: openssl
@@ -134,7 +146,7 @@ gems:
134
146
  source:
135
147
  type: git
136
148
  name: ruby/gem_rbs_collection
137
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
149
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
138
150
  remote: https://github.com/ruby/gem_rbs_collection.git
139
151
  repo_dir: gems
140
152
  - name: parser
@@ -142,27 +154,19 @@ gems:
142
154
  source:
143
155
  type: git
144
156
  name: ruby/gem_rbs_collection
145
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
157
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
146
158
  remote: https://github.com/ruby/gem_rbs_collection.git
147
159
  repo_dir: gems
148
160
  - name: pathname
149
161
  version: '0'
150
162
  source:
151
163
  type: stdlib
152
- - name: pstore
153
- version: '0'
154
- source:
155
- type: stdlib
156
- - name: psych
157
- version: '0'
158
- source:
159
- type: stdlib
160
164
  - name: rack
161
165
  version: '2.2'
162
166
  source:
163
167
  type: git
164
168
  name: ruby/gem_rbs_collection
165
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
169
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
166
170
  remote: https://github.com/ruby/gem_rbs_collection.git
167
171
  repo_dir: gems
168
172
  - name: rails-dom-testing
@@ -170,7 +174,7 @@ gems:
170
174
  source:
171
175
  type: git
172
176
  name: ruby/gem_rbs_collection
173
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
177
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
174
178
  remote: https://github.com/ruby/gem_rbs_collection.git
175
179
  repo_dir: gems
176
180
  - name: rails-html-sanitizer
@@ -178,7 +182,7 @@ gems:
178
182
  source:
179
183
  type: git
180
184
  name: ruby/gem_rbs_collection
181
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
185
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
182
186
  remote: https://github.com/ruby/gem_rbs_collection.git
183
187
  repo_dir: gems
184
188
  - name: railties
@@ -186,7 +190,7 @@ gems:
186
190
  source:
187
191
  type: git
188
192
  name: ruby/gem_rbs_collection
189
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
193
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
190
194
  remote: https://github.com/ruby/gem_rbs_collection.git
191
195
  repo_dir: gems
192
196
  - name: rainbow
@@ -194,7 +198,7 @@ gems:
194
198
  source:
195
199
  type: git
196
200
  name: ruby/gem_rbs_collection
197
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
201
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
198
202
  remote: https://github.com/ruby/gem_rbs_collection.git
199
203
  repo_dir: gems
200
204
  - name: rake
@@ -202,11 +206,11 @@ gems:
202
206
  source:
203
207
  type: git
204
208
  name: ruby/gem_rbs_collection
205
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
209
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
206
210
  remote: https://github.com/ruby/gem_rbs_collection.git
207
211
  repo_dir: gems
208
212
  - name: rbs
209
- version: 3.6.1
213
+ version: 3.9.4
210
214
  source:
211
215
  type: rubygems
212
216
  - name: rdoc
@@ -218,7 +222,7 @@ gems:
218
222
  source:
219
223
  type: git
220
224
  name: ruby/gem_rbs_collection
221
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
225
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
222
226
  remote: https://github.com/ruby/gem_rbs_collection.git
223
227
  repo_dir: gems
224
228
  - name: ripper
@@ -230,7 +234,7 @@ gems:
230
234
  source:
231
235
  type: git
232
236
  name: ruby/gem_rbs_collection
233
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
237
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
234
238
  remote: https://github.com/ruby/gem_rbs_collection.git
235
239
  repo_dir: gems
236
240
  - name: rubocop-ast
@@ -238,7 +242,7 @@ gems:
238
242
  source:
239
243
  type: git
240
244
  name: ruby/gem_rbs_collection
241
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
245
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
242
246
  remote: https://github.com/ruby/gem_rbs_collection.git
243
247
  repo_dir: gems
244
248
  - name: securerandom
@@ -253,7 +257,7 @@ gems:
253
257
  version: '0'
254
258
  source:
255
259
  type: stdlib
256
- - name: strscan
260
+ - name: stringio
257
261
  version: '0'
258
262
  source:
259
263
  type: stdlib
@@ -266,7 +270,7 @@ gems:
266
270
  source:
267
271
  type: git
268
272
  name: ruby/gem_rbs_collection
269
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
273
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
270
274
  remote: https://github.com/ruby/gem_rbs_collection.git
271
275
  repo_dir: gems
272
276
  - name: time
@@ -286,7 +290,7 @@ gems:
286
290
  source:
287
291
  type: git
288
292
  name: ruby/gem_rbs_collection
289
- revision: b438fcecafb7fe0faad88c2bf3b8eec17d83e4d9
293
+ revision: 4af987b9b70455bd4493ef5a10e885f36e6ca6f6
290
294
  remote: https://github.com/ruby/gem_rbs_collection.git
291
295
  repo_dir: gems
292
296
  - name: uri
@@ -6,12 +6,15 @@ module RbsActivesupport
6
6
 
7
7
  include AST
8
8
 
9
+ attr_reader resolver: RBS::Resolver::TypeNameResolver
10
+
9
11
  attr_reader method_searcher: MethodSearcher
10
12
 
11
13
  attr_reader included_modules: Array[RBS::Namespace]
12
14
 
15
+ # @rbs resolver: RBS::Resolver::TypeNameResolver
13
16
  # @rbs method_searcher: MethodSearcher
14
- def initialize: (MethodSearcher method_searcher) -> void
17
+ def initialize: (RBS::Resolver::TypeNameResolver resolver, MethodSearcher method_searcher) -> void
15
18
 
16
19
  # @rbs namespace: RBS::Namespace
17
20
  # @rbs method_calls: Array[Parser::MethodCall]
@@ -40,19 +43,29 @@ module RbsActivesupport
40
43
  # @rbs context: RBS::Namespace?
41
44
  def build_include: (RBS::Namespace namespace, Parser::MethodCall method_call, RBS::Namespace? context) -> Array[t]
42
45
 
46
+ # @rbs namespace: RBS::Namespace
43
47
  # @rbs decl: t
44
- def render: (t decl) -> String
48
+ def render: (RBS::Namespace namespace, t decl) -> String
45
49
 
50
+ # @rbs namespace: RBS::Namespace
46
51
  # @rbs decl: AttributeAccessor
47
- def render_attribute_accessor: (AttributeAccessor decl) -> String
52
+ def render_attribute_accessor: (RBS::Namespace namespace, AttributeAccessor decl) -> String
48
53
 
54
+ # @rbs namespace: RBS::Namespace
49
55
  # @rbs decl: ClassAttribute
50
- def render_class_attribute: (ClassAttribute decl) -> String
56
+ def render_class_attribute: (RBS::Namespace namespace, ClassAttribute decl) -> String
51
57
 
52
58
  # @rbs decl: Delegate
53
59
  def render_delegate: (Delegate decl) -> String
54
60
 
55
61
  # @rbs decl: Include
56
62
  def render_include: (Include decl) -> String
63
+
64
+ # @rbs namespace: RBS::Namespace
65
+ # @rbs type: String
66
+ def resolve_type: (RBS::Namespace namespace, String type) -> String
67
+
68
+ # @rbs type_name: RBS::TypeName
69
+ def context_from: (RBS::TypeName type_name) -> RBS::Resolver::context
57
70
  end
58
71
  end
@@ -30,5 +30,8 @@ module RbsActivesupport
30
30
 
31
31
  # @rbs namespace: RBS::Namespace
32
32
  def footer: (RBS::Namespace namespace) -> String
33
+
34
+ # @rbs namespace: RBS::Namespace
35
+ def namespace_to_names: (RBS::Namespace namespace) -> Array[RBS::TypeName]
33
36
  end
34
37
  end
@@ -21,5 +21,8 @@ module RbsActivesupport
21
21
  # @rbs type_name: RBS::TypeName
22
22
  # @rbs method: Symbol
23
23
  def lookup_method_types: (RBS::TypeName type_name, Symbol method) -> Array[RBS::MethodType]
24
+
25
+ # @rbs return_type: RBS::Types::t
26
+ def build_method_def: (RBS::Types::t return_type) -> RBS::MethodType
24
27
  end
25
28
  end
@@ -1,5 +1,5 @@
1
1
  # Generated from lib/rbs_activesupport/version.rb with RBS::Inline
2
2
 
3
3
  module RbsActivesupport
4
- VERSION: String
4
+ VERSION: ::String
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbs_activesupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takeshi KOMIYA
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-25 00:00:00.000000000 Z
11
+ date: 2025-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -52,7 +52,7 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- description:
55
+ description:
56
56
  email:
57
57
  - i.tkomiya@gmail.com
58
58
  executables: []
@@ -106,7 +106,7 @@ metadata:
106
106
  homepage_uri: https://github.com/tk0miya/rbs_activesupport
107
107
  source_code_uri: https://github.com/tk0miya/rbs_activesupport
108
108
  changelog_uri: https://github.com/tk0miya/rbs_activesupport
109
- post_install_message:
109
+ post_install_message:
110
110
  rdoc_options: []
111
111
  require_paths:
112
112
  - lib
@@ -114,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 2.7.0
117
+ version: 3.2.0
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ">="
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  requirements: []
124
124
  rubygems_version: 3.5.22
125
- signing_key:
125
+ signing_key:
126
126
  specification_version: 4
127
- summary: A RBS files generatorfor activesupport
127
+ summary: A RBS files generator for activesupport
128
128
  test_files: []