rbs_heuristic_prototype 0.3.0 → 0.5.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: a959d3a8d268d1bf8392251cfb4842beb01c5e6d3da0edc6f7bcc6d6927b886c
4
- data.tar.gz: a4d88cd1eb8409d6928b9d2f472d9fbfe0d6035b0d08a74f5e6884f73e5cbd87
3
+ metadata.gz: 358275124e21b1d4060fa62fc17832e1b4398ce9f74571a5cda63b5677747bf0
4
+ data.tar.gz: 819ee68bf26be9f3352191aa62a1e244ac0584dd66ab19946df7230da8fb176b
5
5
  SHA512:
6
- metadata.gz: c78ccdeb69f4014349df67263be3ca63dbeca09884837260e42565926e357d2e14197b2b2bdc676096d3879c5cfd661cc51998238df7630317c11e7954bdc7ef
7
- data.tar.gz: 4bfa69e3b3bf36c16bdb5f1a3ef8e18446f0cd91e09b056b1e6d5f70de564ec8b06d7134ce7dd9842dbf883cb45b4c0c7b7b009ac1839758e7874163a3f06d07
6
+ metadata.gz: aa3f88c1a520774b683e9cdb486e0ba58f68bb7da9c96629658e6bd1eb58efd320b26952d07e673bfa38ecc13a374ebb561c6fca4cf61d6cf4af380aae50b88f
7
+ data.tar.gz: 371d461c82de68c3fd03ef9cbf03a2f59b4c03e796255938237087fa066fff359bcfced4b5d760a778dfa95d5839540b9c80e590a5d248a449a267cae57407ea
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 3.1
2
+ TargetRubyVersion: 2.7
3
3
 
4
4
  Style/Documentation:
5
5
  Enabled: false
data/Gemfile CHANGED
@@ -8,7 +8,7 @@ gemspec
8
8
  gem "activerecord"
9
9
  gem "railties"
10
10
  gem "rake", "~> 13.0"
11
- gem "rubocop", "~> 1.54"
11
+ gem "rubocop", "~> 1.55"
12
12
 
13
13
  group :development do
14
14
  gem "rspec", require: false
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rbs_heuristic_prototype (0.3.0)
4
+ rbs_heuristic_prototype (0.5.0)
5
5
  rbs
6
6
 
7
7
  GEM
@@ -52,7 +52,7 @@ GEM
52
52
  crass (~> 1.0.2)
53
53
  nokogiri (>= 1.12.0)
54
54
  method_source (1.0.0)
55
- minitest (5.18.1)
55
+ minitest (5.19.0)
56
56
  nokogiri (1.15.2-x86_64-darwin)
57
57
  racc (~> 1.4)
58
58
  nokogiri (1.15.2-x86_64-linux)
@@ -87,9 +87,9 @@ GEM
87
87
  rb-fsevent (0.11.2)
88
88
  rb-inotify (0.10.1)
89
89
  ffi (~> 1.0)
90
- rbs (3.1.1)
90
+ rbs (3.1.2)
91
91
  regexp_parser (2.8.1)
92
- rexml (3.2.5)
92
+ rexml (3.2.6)
93
93
  rspec (3.12.0)
94
94
  rspec-core (~> 3.12.0)
95
95
  rspec-expectations (~> 3.12.0)
@@ -106,7 +106,7 @@ GEM
106
106
  diff-lcs (>= 1.2.0, < 2.0)
107
107
  rspec-support (~> 3.12.0)
108
108
  rspec-support (3.12.0)
109
- rubocop (1.54.2)
109
+ rubocop (1.55.0)
110
110
  json (~> 2.3)
111
111
  language_server-protocol (>= 3.17.0)
112
112
  parallel (~> 1.10)
@@ -114,14 +114,14 @@ GEM
114
114
  rainbow (>= 2.2.2, < 4.0)
115
115
  regexp_parser (>= 1.8, < 3.0)
116
116
  rexml (>= 3.2.5, < 4.0)
117
- rubocop-ast (>= 1.28.0, < 2.0)
117
+ rubocop-ast (>= 1.28.1, < 2.0)
118
118
  ruby-progressbar (~> 1.7)
119
119
  unicode-display_width (>= 2.4.0, < 3.0)
120
120
  rubocop-ast (1.29.0)
121
121
  parser (>= 3.2.1.0)
122
122
  ruby-progressbar (1.13.0)
123
123
  securerandom (0.2.2)
124
- steep (1.5.1)
124
+ steep (1.5.2)
125
125
  activesupport (>= 5.1)
126
126
  concurrent-ruby (>= 1.1.10)
127
127
  csv (>= 3.0.9)
@@ -146,6 +146,7 @@ GEM
146
146
  zeitwerk (2.6.8)
147
147
 
148
148
  PLATFORMS
149
+ x86_64-darwin-19
149
150
  x86_64-darwin-21
150
151
  x86_64-linux
151
152
 
@@ -156,8 +157,8 @@ DEPENDENCIES
156
157
  rbs_heuristic_prototype!
157
158
  rspec
158
159
  rspec-daemon
159
- rubocop (~> 1.54)
160
+ rubocop (~> 1.55)
160
161
  steep
161
162
 
162
163
  BUNDLED WITH
163
- 2.4.13
164
+ 2.3.12
data/README.md CHANGED
@@ -45,6 +45,8 @@ by `rbs prototype` according to the heuristic rules.
45
45
  * Rule 4:
46
46
  * Convert a scoped module/class definition (ex. `Foo::Bar::Baz`) to the nested definitions
47
47
  * This is useful to define intermediate modules automatically like what Rails and zeitwerk does.
48
+ * Rule 5:
49
+ * Convert a module reference without type arguments (ex. `include Enumerable`) to a module reference with type arguments (ex. `include Enumerable[untyped]`)
48
50
 
49
51
  ## Development
50
52
 
@@ -29,7 +29,7 @@ module RbsHeuristicPrototype
29
29
  overloads = member.overloads.map do |overload|
30
30
  overload.update(method_type: process_method_type(overload.method_type))
31
31
  end
32
- member.update(overloads:)
32
+ member.update(overloads: overloads)
33
33
  else
34
34
  member
35
35
  end
@@ -40,15 +40,15 @@ module RbsHeuristicPrototype
40
40
 
41
41
  def process_method_type(method_type)
42
42
  type = process_type(method_type.type)
43
- method_type.update(type:)
43
+ method_type.update(type: type)
44
44
  end
45
45
 
46
46
  def process_type(type)
47
47
  # @type var location: untyped
48
48
  name = RBS::TypeName.new(namespace: RBS::Namespace.empty, name: :void)
49
49
  location = type.return_type.location
50
- return_type = RBS::Types::Alias.new(name:, args: [], location:)
51
- type.update(return_type:)
50
+ return_type = RBS::Types::Alias.new(name: name, args: [], location: location)
51
+ type.update(return_type: return_type)
52
52
  end
53
53
  end
54
54
  end
@@ -16,7 +16,7 @@ module RbsHeuristicPrototype
16
16
  process(decl)
17
17
  end
18
18
  RBS::Environment.new.tap do |env|
19
- env.add_signature(buffer: RBS::Buffer.new(name: "dummy", content: ""), directives: [], decls:)
19
+ env.add_signature(buffer: RBS::Buffer.new(name: "dummy", content: ""), directives: [], decls: decls)
20
20
  end
21
21
  end
22
22
 
@@ -46,7 +46,7 @@ module RbsHeuristicPrototype
46
46
  RBS::AST::Declarations::Module.new(
47
47
  name: decl.name,
48
48
  type_params: decl.type_params,
49
- members:,
49
+ members: members,
50
50
  self_types: decl.self_types,
51
51
  annotations: decl.annotations,
52
52
  location: decl.location,
@@ -68,7 +68,7 @@ module RbsHeuristicPrototype
68
68
  name: decl.name,
69
69
  type_params: decl.type_params,
70
70
  super_class: decl.super_class,
71
- members:,
71
+ members: members,
72
72
  annotations: decl.annotations,
73
73
  location: decl.location,
74
74
  comment: decl.comment
@@ -12,7 +12,7 @@ module RbsHeuristicPrototype
12
12
  overloads = member.overloads.map do |overload|
13
13
  overload.update(method_type: process_method_type(overload.method_type))
14
14
  end
15
- member.update(overloads:)
15
+ member.update(overloads: overloads)
16
16
  else
17
17
  member
18
18
  end
@@ -23,15 +23,15 @@ module RbsHeuristicPrototype
23
23
 
24
24
  def process_method_type(method_type)
25
25
  type = process_type(method_type.type)
26
- method_type.update(type:)
26
+ method_type.update(type: type)
27
27
  end
28
28
 
29
29
  def process_type(type)
30
30
  # @type var location: untyped
31
31
  name = RBS::TypeName.new(namespace: RBS::Namespace.empty, name: :boolish)
32
32
  location = type.return_type.location
33
- return_type = RBS::Types::Alias.new(name:, args: [], location:)
34
- type.update(return_type:)
33
+ return_type = RBS::Types::Alias.new(name: name, args: [], location: location)
34
+ type.update(return_type: return_type)
35
35
  end
36
36
  end
37
37
  end
@@ -67,7 +67,7 @@ module RbsHeuristicPrototype
67
67
  RBS::AST::Declarations::Class.new(
68
68
  name: TypeName(obj.name.to_s.split("::").last.to_s),
69
69
  type_params: [],
70
- super_class:,
70
+ super_class: super_class,
71
71
  members: [],
72
72
  annotations: [],
73
73
  location: nil,
@@ -20,7 +20,7 @@ module RbsHeuristicPrototype
20
20
 
21
21
  def process_constant_type(type)
22
22
  name = RBS::TypeName.new(namespace: RBS::Namespace.root, name: :Symbol)
23
- symbol = RBS::Types::Alias.new(name:, args: [], location: type.location)
23
+ symbol = RBS::Types::Alias.new(name: name, args: [], location: type.location)
24
24
  RBS::Types::ClassInstance.new(name: type.name, args: [symbol], location: type.location)
25
25
  end
26
26
 
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+
5
+ module RbsHeuristicPrototype
6
+ module Filters
7
+ class TypeArgsFilter < Base
8
+ def process_class(decl)
9
+ decl = super(decl)
10
+ RBS::AST::Declarations::Class.new(
11
+ name: decl.name,
12
+ type_params: decl.type_params,
13
+ super_class: process_super_class(decl.super_class),
14
+ members: decl.members,
15
+ annotations: decl.annotations,
16
+ location: decl.location,
17
+ comment: decl.comment
18
+ )
19
+ end
20
+
21
+ def process_super_class(decl)
22
+ return unless decl
23
+
24
+ class_decl = external_env.class_decls[decl.name.absolute!]
25
+ if class_decl && decl.args.empty?
26
+ RBS::AST::Declarations::Class::Super.new(
27
+ name: decl.name,
28
+ args: class_decl.type_params.size.times.map { :untyped },
29
+ location: decl.location
30
+ )
31
+ else
32
+ decl
33
+ end
34
+ end
35
+
36
+ def process_member(decl)
37
+ case decl
38
+ when RBS::AST::Members::Include
39
+ process_include(decl)
40
+ else
41
+ super
42
+ end
43
+ end
44
+
45
+ def process_include(decl)
46
+ class_decl = external_env.class_decls[decl.name.absolute!]
47
+ if class_decl && decl.args.empty?
48
+ RBS::AST::Members::Include.new(
49
+ name: decl.name,
50
+ args: class_decl.type_params.size.times.map { :untyped },
51
+ annotations: decl.annotations,
52
+ location: decl.location,
53
+ comment: decl.comment
54
+ )
55
+ else
56
+ decl
57
+ end
58
+ end
59
+
60
+ def external_env
61
+ loader = RBS::EnvironmentLoader.new
62
+ RBS::Environment.from_loader(loader)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -10,7 +10,8 @@ module RbsHeuristicPrototype
10
10
  active_model_validations: Filters::ActiveModelValidationsFilter,
11
11
  boolean_methods: Filters::BooleanMethodsFilter,
12
12
  deep_module: Filters::DeepModuleFilter,
13
- symbol_array_constants: Filters::SymbolArrayConstantsFilter
13
+ symbol_array_constants: Filters::SymbolArrayConstantsFilter,
14
+ type_args: Filters::TypeArgsFilter
14
15
  }.freeze
15
16
 
16
17
  attr_reader :name, :path
@@ -51,13 +52,13 @@ module RbsHeuristicPrototype
51
52
 
52
53
  def load_env(path)
53
54
  loader = RBS::EnvironmentLoader.new(core_root: nil)
54
- loader.add(path:)
55
+ loader.add(path: path)
55
56
  RBS::Environment.from_loader(loader)
56
57
  end
57
58
 
58
59
  def write_env(path, env)
59
60
  path.open("wt") do |out|
60
- RBS::Writer.new(out:).write(env.declarations)
61
+ RBS::Writer.new(out: out).write(env.declarations)
61
62
  end
62
63
  end
63
64
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RbsHeuristicPrototype
4
- VERSION = "0.3.0"
4
+ VERSION = "0.5.0"
5
5
  end
@@ -4,6 +4,7 @@ require_relative "rbs_heuristic_prototype/filters/active_model_validations_filte
4
4
  require_relative "rbs_heuristic_prototype/filters/boolean_methods_filter"
5
5
  require_relative "rbs_heuristic_prototype/filters/deep_module_filter"
6
6
  require_relative "rbs_heuristic_prototype/filters/symbol_array_constants_filter"
7
+ require_relative "rbs_heuristic_prototype/filters/type_args_filter"
7
8
  require_relative "rbs_heuristic_prototype/rake_task"
8
9
  require_relative "rbs_heuristic_prototype/version"
9
10
 
@@ -2,7 +2,7 @@
2
2
  sources:
3
3
  - type: git
4
4
  name: ruby/gem_rbs_collection
5
- revision: aeede7258d020bfd509541e0c8075ce833292409
5
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
6
6
  remote: https://github.com/ruby/gem_rbs_collection.git
7
7
  repo_dir: gems
8
8
  path: ".gem_rbs_collection"
@@ -16,7 +16,7 @@ gems:
16
16
  source:
17
17
  type: git
18
18
  name: ruby/gem_rbs_collection
19
- revision: aeede7258d020bfd509541e0c8075ce833292409
19
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
20
20
  remote: https://github.com/ruby/gem_rbs_collection.git
21
21
  repo_dir: gems
22
22
  - name: actionview
@@ -24,7 +24,7 @@ gems:
24
24
  source:
25
25
  type: git
26
26
  name: ruby/gem_rbs_collection
27
- revision: aeede7258d020bfd509541e0c8075ce833292409
27
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
28
28
  remote: https://github.com/ruby/gem_rbs_collection.git
29
29
  repo_dir: gems
30
30
  - name: activemodel
@@ -32,7 +32,7 @@ gems:
32
32
  source:
33
33
  type: git
34
34
  name: ruby/gem_rbs_collection
35
- revision: aeede7258d020bfd509541e0c8075ce833292409
35
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
36
36
  remote: https://github.com/ruby/gem_rbs_collection.git
37
37
  repo_dir: gems
38
38
  - name: activerecord
@@ -40,7 +40,7 @@ gems:
40
40
  source:
41
41
  type: git
42
42
  name: ruby/gem_rbs_collection
43
- revision: aeede7258d020bfd509541e0c8075ce833292409
43
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
44
44
  remote: https://github.com/ruby/gem_rbs_collection.git
45
45
  repo_dir: gems
46
46
  - name: activesupport
@@ -48,7 +48,7 @@ gems:
48
48
  source:
49
49
  type: git
50
50
  name: ruby/gem_rbs_collection
51
- revision: aeede7258d020bfd509541e0c8075ce833292409
51
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
52
52
  remote: https://github.com/ruby/gem_rbs_collection.git
53
53
  repo_dir: gems
54
54
  - name: ast
@@ -56,7 +56,7 @@ gems:
56
56
  source:
57
57
  type: git
58
58
  name: ruby/gem_rbs_collection
59
- revision: aeede7258d020bfd509541e0c8075ce833292409
59
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
60
60
  remote: https://github.com/ruby/gem_rbs_collection.git
61
61
  repo_dir: gems
62
62
  - name: cgi
@@ -68,7 +68,7 @@ gems:
68
68
  source:
69
69
  type: git
70
70
  name: ruby/gem_rbs_collection
71
- revision: aeede7258d020bfd509541e0c8075ce833292409
71
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
72
72
  remote: https://github.com/ruby/gem_rbs_collection.git
73
73
  repo_dir: gems
74
74
  - name: date
@@ -80,7 +80,7 @@ gems:
80
80
  source:
81
81
  type: git
82
82
  name: ruby/gem_rbs_collection
83
- revision: aeede7258d020bfd509541e0c8075ce833292409
83
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
84
84
  remote: https://github.com/ruby/gem_rbs_collection.git
85
85
  repo_dir: gems
86
86
  - name: json
@@ -108,7 +108,7 @@ gems:
108
108
  source:
109
109
  type: git
110
110
  name: ruby/gem_rbs_collection
111
- revision: aeede7258d020bfd509541e0c8075ce833292409
111
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
112
112
  remote: https://github.com/ruby/gem_rbs_collection.git
113
113
  repo_dir: gems
114
114
  - name: optparse
@@ -120,7 +120,7 @@ gems:
120
120
  source:
121
121
  type: git
122
122
  name: ruby/gem_rbs_collection
123
- revision: aeede7258d020bfd509541e0c8075ce833292409
123
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
124
124
  remote: https://github.com/ruby/gem_rbs_collection.git
125
125
  repo_dir: gems
126
126
  - name: pathname
@@ -132,7 +132,7 @@ gems:
132
132
  source:
133
133
  type: git
134
134
  name: ruby/gem_rbs_collection
135
- revision: aeede7258d020bfd509541e0c8075ce833292409
135
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
136
136
  remote: https://github.com/ruby/gem_rbs_collection.git
137
137
  repo_dir: gems
138
138
  - name: rails-dom-testing
@@ -140,7 +140,7 @@ gems:
140
140
  source:
141
141
  type: git
142
142
  name: ruby/gem_rbs_collection
143
- revision: aeede7258d020bfd509541e0c8075ce833292409
143
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
144
144
  remote: https://github.com/ruby/gem_rbs_collection.git
145
145
  repo_dir: gems
146
146
  - name: railties
@@ -148,7 +148,7 @@ gems:
148
148
  source:
149
149
  type: git
150
150
  name: ruby/gem_rbs_collection
151
- revision: aeede7258d020bfd509541e0c8075ce833292409
151
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
152
152
  remote: https://github.com/ruby/gem_rbs_collection.git
153
153
  repo_dir: gems
154
154
  - name: rainbow
@@ -156,11 +156,11 @@ gems:
156
156
  source:
157
157
  type: git
158
158
  name: ruby/gem_rbs_collection
159
- revision: aeede7258d020bfd509541e0c8075ce833292409
159
+ revision: 9330d49993d18362cce9190b9596f03d1f4915f8
160
160
  remote: https://github.com/ruby/gem_rbs_collection.git
161
161
  repo_dir: gems
162
162
  - name: rbs
163
- version: 3.1.1
163
+ version: 3.1.2
164
164
  source:
165
165
  type: rubygems
166
166
  - name: rdoc
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "Update prototype signature files by heuristic rules"
13
13
  spec.homepage = "https://github.com/tk0miya/rbs_heuristic_prototype"
14
14
  spec.license = "MIT"
15
- spec.required_ruby_version = ">= 3.1.0"
15
+ spec.required_ruby_version = ">= 2.7.0"
16
16
 
17
17
  spec.metadata["homepage_uri"] = spec.homepage
18
18
  spec.metadata["source_code_uri"] = spec.homepage
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbs_heuristic_prototype
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takeshi KOMIYA
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-25 00:00:00.000000000 Z
11
+ date: 2023-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbs
@@ -49,6 +49,7 @@ files:
49
49
  - lib/rbs_heuristic_prototype/filters/boolean_methods_filter.rb
50
50
  - lib/rbs_heuristic_prototype/filters/deep_module_filter.rb
51
51
  - lib/rbs_heuristic_prototype/filters/symbol_array_constants_filter.rb
52
+ - lib/rbs_heuristic_prototype/filters/type_args_filter.rb
52
53
  - lib/rbs_heuristic_prototype/rake_task.rb
53
54
  - lib/rbs_heuristic_prototype/version.rb
54
55
  - rbs_collection.lock.yaml
@@ -80,7 +81,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
80
81
  requirements:
81
82
  - - ">="
82
83
  - !ruby/object:Gem::Version
83
- version: 3.1.0
84
+ version: 2.7.0
84
85
  required_rubygems_version: !ruby/object:Gem::Requirement
85
86
  requirements:
86
87
  - - ">="