rbs_heuristic_prototype 0.4.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 358275124e21b1d4060fa62fc17832e1b4398ce9f74571a5cda63b5677747bf0
|
4
|
+
data.tar.gz: 819ee68bf26be9f3352191aa62a1e244ac0584dd66ab19946df7230da8fb176b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa3f88c1a520774b683e9cdb486e0ba58f68bb7da9c96629658e6bd1eb58efd320b26952d07e673bfa38ecc13a374ebb561c6fca4cf61d6cf4af380aae50b88f
|
7
|
+
data.tar.gz: 371d461c82de68c3fd03ef9cbf03a2f59b4c03e796255938237087fa066fff359bcfced4b5d760a778dfa95d5839540b9c80e590a5d248a449a267cae57407ea
|
data/Gemfile.lock
CHANGED
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
|
|
@@ -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
|
@@ -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
|
|
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.
|
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-08-
|
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
|