ruby_mod_kit 0.0.2 → 0.0.3
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 +4 -4
- data/lib/ruby_mod_kit/core_ext/eval.rb +6 -0
- data/lib/ruby_mod_kit/core_ext/load.rb +12 -4
- data/lib/ruby_mod_kit/core_ext.rb +2 -2
- data/lib/ruby_mod_kit/corrector.rb +22 -0
- data/lib/ruby_mod_kit/corrector_manager.rb +68 -0
- data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb +42 -0
- data/lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rb +49 -0
- data/lib/ruby_mod_kit/feature/instance_variable_parameter.rb +27 -0
- data/lib/ruby_mod_kit/feature/overload/overload_mission.rb +80 -0
- data/lib/ruby_mod_kit/feature/overload.rb +19 -0
- data/lib/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rb +49 -0
- data/lib/ruby_mod_kit/feature/type/parameter_arrow_corrector.rb +90 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rb +41 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rb +31 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rb +43 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rb +38 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rb +32 -0
- data/lib/ruby_mod_kit/feature/type/rbs_inline.rb +29 -0
- data/lib/ruby_mod_kit/feature/type/return_value_colon_corrector.rb +45 -0
- data/lib/ruby_mod_kit/feature/type/type_attr_mission.rb +67 -0
- data/lib/ruby_mod_kit/feature/type.rb +31 -0
- data/lib/ruby_mod_kit/feature.rb +24 -0
- data/lib/ruby_mod_kit/generation.rb +60 -22
- data/lib/ruby_mod_kit/memo/def_parent_memo.rb +36 -0
- data/lib/ruby_mod_kit/memo/{ivar.rb → ivar_memo.rb} +17 -3
- data/lib/ruby_mod_kit/memo/{method.rb → method_memo.rb} +7 -7
- data/lib/ruby_mod_kit/memo/offset_memo.rb +1 -1
- data/lib/ruby_mod_kit/memo/overload_memo.rb +46 -0
- data/lib/ruby_mod_kit/memo/{parameter.rb → parameter_memo.rb} +3 -3
- data/lib/ruby_mod_kit/memo.rb +7 -64
- data/lib/ruby_mod_kit/memo_pad.rb +69 -0
- data/lib/ruby_mod_kit/mission.rb +5 -24
- data/lib/ruby_mod_kit/node/base_node.rb +137 -0
- data/lib/ruby_mod_kit/node/call_node.rb +10 -6
- data/lib/ruby_mod_kit/node/def_node.rb +10 -6
- data/lib/ruby_mod_kit/node/def_parent_node.rb +17 -13
- data/lib/ruby_mod_kit/node/parameter_node.rb +12 -8
- data/lib/ruby_mod_kit/node/program_node.rb +2 -2
- data/lib/ruby_mod_kit/node/statements_node.rb +10 -6
- data/lib/ruby_mod_kit/node/symbol_node.rb +10 -6
- data/lib/ruby_mod_kit/node/untyped_node.rb +10 -6
- data/lib/ruby_mod_kit/node/wrap.rb +43 -0
- data/lib/ruby_mod_kit/node.rb +4 -148
- data/lib/ruby_mod_kit/version.rb +1 -1
- data/lib/ruby_mod_kit.rb +17 -3
- data/sig/generated/ruby_mod_kit/core_ext/eval.rbs +3 -0
- data/sig/generated/ruby_mod_kit/core_ext/load.rbs +7 -4
- data/sig/generated/ruby_mod_kit/corrector.rbs +16 -0
- data/sig/generated/ruby_mod_kit/corrector_manager.rbs +26 -0
- data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rbs +20 -0
- data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rbs +21 -0
- data/sig/generated/ruby_mod_kit/feature/instance_variable_parameter.rbs +14 -0
- data/sig/generated/ruby_mod_kit/feature/overload/overload_mission.rbs +24 -0
- data/sig/generated/ruby_mod_kit/feature/overload.rbs +11 -0
- data/sig/generated/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rbs +20 -0
- data/sig/generated/ruby_mod_kit/feature/type/parameter_arrow_corrector.rbs +39 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rbs +19 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rbs +19 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rbs +19 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rbs +19 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rbs +19 -0
- data/sig/generated/ruby_mod_kit/feature/type/rbs_inline.rbs +13 -0
- data/sig/generated/ruby_mod_kit/feature/type/return_value_colon_corrector.rbs +20 -0
- data/sig/generated/ruby_mod_kit/feature/type/type_attr_mission.rbs +20 -0
- data/sig/generated/ruby_mod_kit/feature/type.rbs +14 -0
- data/sig/generated/ruby_mod_kit/feature.rbs +16 -0
- data/sig/generated/ruby_mod_kit/generation.rbs +25 -10
- data/sig/generated/ruby_mod_kit/memo/def_parent_memo.rbs +24 -0
- data/sig/generated/ruby_mod_kit/memo/{ivar.rbs → ivar_memo.rbs} +15 -3
- data/sig/generated/ruby_mod_kit/memo/{method.rbs → method_memo.rbs} +8 -8
- data/sig/generated/ruby_mod_kit/memo/offset_memo.rbs +1 -1
- data/sig/generated/ruby_mod_kit/memo/overload_memo.rbs +32 -0
- data/sig/generated/ruby_mod_kit/memo/{parameter.rbs → parameter_memo.rbs} +3 -3
- data/sig/generated/ruby_mod_kit/memo.rbs +2 -36
- data/sig/generated/ruby_mod_kit/memo_pad.rbs +46 -0
- data/sig/generated/ruby_mod_kit/mission.rbs +4 -12
- data/sig/generated/ruby_mod_kit/node/base_node.rbs +65 -0
- data/sig/generated/ruby_mod_kit/node/call_node.rbs +11 -6
- data/sig/generated/ruby_mod_kit/node/def_node.rbs +11 -6
- data/sig/generated/ruby_mod_kit/node/def_parent_node.rbs +12 -10
- data/sig/generated/ruby_mod_kit/node/parameter_node.rbs +13 -8
- data/sig/generated/ruby_mod_kit/node/program_node.rbs +2 -2
- data/sig/generated/ruby_mod_kit/node/statements_node.rbs +11 -6
- data/sig/generated/ruby_mod_kit/node/symbol_node.rbs +11 -6
- data/sig/generated/ruby_mod_kit/node/untyped_node.rbs +11 -6
- data/sig/generated/ruby_mod_kit/node/wrap.rbs +12 -0
- data/sig/generated/ruby_mod_kit/node.rbs +2 -58
- data/sig/generated/ruby_mod_kit.rbs +4 -0
- metadata +56 -27
- data/lib/ruby_mod_kit/memo/def_parent.rb +0 -27
- data/lib/ruby_mod_kit/mission/fix_parse_error.rb +0 -216
- data/lib/ruby_mod_kit/mission/ivar_arg.rb +0 -42
- data/lib/ruby_mod_kit/mission/overload.rb +0 -73
- data/lib/ruby_mod_kit/mission/type_attr.rb +0 -75
- data/lib/ruby_mod_kit/mission/type_parameter.rb +0 -39
- data/lib/ruby_mod_kit/mission/type_return.rb +0 -33
- data/lib/ruby_mod_kit/transpiler.rb +0 -20
- data/sig/generated/examples/user.rbs +0 -60
- data/sig/generated/ruby_mod_kit/memo/def_parent.rbs +0 -20
- data/sig/generated/ruby_mod_kit/memo/located.rbs +0 -14
- data/sig/generated/ruby_mod_kit/memo/parameter_type.rbs +0 -14
- data/sig/generated/ruby_mod_kit/mission/fix_parse_error.rbs +0 -73
- data/sig/generated/ruby_mod_kit/mission/ivar_arg.rbs +0 -19
- data/sig/generated/ruby_mod_kit/mission/overload.rbs +0 -20
- data/sig/generated/ruby_mod_kit/mission/type_attr.rbs +0 -18
- data/sig/generated/ruby_mod_kit/mission/type_parameter.rbs +0 -18
- data/sig/generated/ruby_mod_kit/mission/type_return.rbs +0 -18
- data/sig/generated/ruby_mod_kit/transpiler.rbs +0 -11
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
# Generated from lib/ruby_mod_kit/node/untyped_node.rb with RBS::Inline
|
|
2
2
|
|
|
3
3
|
module RubyModKit
|
|
4
|
-
|
|
4
|
+
module Node
|
|
5
5
|
# Transpiler program node
|
|
6
|
-
class UntypedNode < Node
|
|
6
|
+
class UntypedNode < Node::BaseNode
|
|
7
7
|
@prism_node: Prism::Node
|
|
8
8
|
|
|
9
|
-
@parent: Node
|
|
9
|
+
@parent: Node::BaseNode
|
|
10
|
+
|
|
11
|
+
@prev: Node::BaseNode | nil
|
|
10
12
|
|
|
11
13
|
attr_reader prism_node: Prism::Node
|
|
12
14
|
|
|
13
|
-
attr_reader parent: Node
|
|
15
|
+
attr_reader parent: Node::BaseNode
|
|
16
|
+
|
|
17
|
+
attr_reader prev: Node::BaseNode | nil
|
|
14
18
|
|
|
15
19
|
# @rbs prism_node: Prism::Node
|
|
16
|
-
# @rbs parent: Node
|
|
20
|
+
# @rbs parent: Node::BaseNode
|
|
21
|
+
# @rbs prev: Node::BaseNode | nil
|
|
17
22
|
# @rbs return: void
|
|
18
|
-
def initialize: (Prism::Node prism_node, parent: Node) -> void
|
|
23
|
+
def initialize: (Prism::Node prism_node, parent: Node::BaseNode, ?prev: Node::BaseNode | nil) -> void
|
|
19
24
|
end
|
|
20
25
|
end
|
|
21
26
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Generated from lib/ruby_mod_kit/node/wrap.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module RubyModKit
|
|
4
|
+
# The namespace of transpile node.
|
|
5
|
+
module Node
|
|
6
|
+
# @rbs prism_node: Prism::Node
|
|
7
|
+
# @rbs parent: Node::BaseNode
|
|
8
|
+
# @rbs prev: Node::BaseNode | nil
|
|
9
|
+
# @rbs return: Node::BaseNode
|
|
10
|
+
def self.wrap: (Prism::Node prism_node, parent: Node::BaseNode, ?prev: Node::BaseNode | nil) -> Node::BaseNode
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -1,63 +1,7 @@
|
|
|
1
1
|
# Generated from lib/ruby_mod_kit/node.rb with RBS::Inline
|
|
2
2
|
|
|
3
3
|
module RubyModKit
|
|
4
|
-
# The
|
|
5
|
-
|
|
6
|
-
@location: Prism::Location
|
|
7
|
-
|
|
8
|
-
@children: Array[Node]
|
|
9
|
-
|
|
10
|
-
@ancestors: Array[Node]
|
|
11
|
-
|
|
12
|
-
attr_reader location: Prism::Location
|
|
13
|
-
|
|
14
|
-
# @rbs return: void
|
|
15
|
-
def initialize: () -> void
|
|
16
|
-
|
|
17
|
-
# @rbs return: Array[Node]
|
|
18
|
-
def children: () -> Array[Node]
|
|
19
|
-
|
|
20
|
-
# @rbs prism_node: Prism::Node
|
|
21
|
-
# @rbs return: Node
|
|
22
|
-
def wrap: (Prism::Node prism_node) -> Node
|
|
23
|
-
|
|
24
|
-
# @rbs return: Array[Node]
|
|
25
|
-
def ancestors: () -> Array[Node]
|
|
26
|
-
|
|
27
|
-
# @rbs return: Symbol
|
|
28
|
-
def name: () -> Symbol
|
|
29
|
-
|
|
30
|
-
# @rbs offset: Integer
|
|
31
|
-
# @rbs return: Node | nil
|
|
32
|
-
def node_at: (Integer offset) -> (Node | nil)
|
|
33
|
-
|
|
34
|
-
# @rbs offset: Integer
|
|
35
|
-
# @rbs return: Node::StatementsNode | nil
|
|
36
|
-
def statements_node_at: (Integer offset) -> (Node::StatementsNode | nil)
|
|
37
|
-
|
|
38
|
-
# @rbs offset: Integer
|
|
39
|
-
# @rbs return: Node::DefNode | nil
|
|
40
|
-
def def_node_at: (Integer offset) -> (Node::DefNode | nil)
|
|
41
|
-
|
|
42
|
-
# @rbs offset: Integer
|
|
43
|
-
# @rbs return: Node::ParameterNode | nil
|
|
44
|
-
def parameter_node_at: (Integer offset) -> (Node::ParameterNode | nil)
|
|
45
|
-
|
|
46
|
-
# @rbs offset: Integer
|
|
47
|
-
# @rbs return: Node::DefParentNode | nil
|
|
48
|
-
def def_parent_node_at: (Integer offset) -> (Node::DefParentNode | nil)
|
|
49
|
-
|
|
50
|
-
# @rbs offset: Integer
|
|
51
|
-
# @rbs return: bool
|
|
52
|
-
def include?: (Integer offset) -> bool
|
|
53
|
-
|
|
54
|
-
# @rbs return: Prism::Node & Prism::_Node
|
|
55
|
-
def prism_node: () -> (Prism::Node & Prism::_Node)
|
|
56
|
-
|
|
57
|
-
# @rbs return: Integer
|
|
58
|
-
def offset: () -> Integer
|
|
59
|
-
|
|
60
|
-
# @rbs return: String
|
|
61
|
-
def inspect: () -> String
|
|
4
|
+
# The namespace of transpile node.
|
|
5
|
+
module Node
|
|
62
6
|
end
|
|
63
7
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby_mod_kit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- wanabe
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-11-
|
|
11
|
+
date: 2024-11-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: prism
|
|
@@ -56,21 +56,37 @@ files:
|
|
|
56
56
|
- lib/ruby_mod_kit/core_ext.rb
|
|
57
57
|
- lib/ruby_mod_kit/core_ext/eval.rb
|
|
58
58
|
- lib/ruby_mod_kit/core_ext/load.rb
|
|
59
|
+
- lib/ruby_mod_kit/corrector.rb
|
|
60
|
+
- lib/ruby_mod_kit/corrector_manager.rb
|
|
61
|
+
- lib/ruby_mod_kit/feature.rb
|
|
62
|
+
- lib/ruby_mod_kit/feature/instance_variable_parameter.rb
|
|
63
|
+
- lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rb
|
|
64
|
+
- lib/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rb
|
|
65
|
+
- lib/ruby_mod_kit/feature/overload.rb
|
|
66
|
+
- lib/ruby_mod_kit/feature/overload/overload_mission.rb
|
|
67
|
+
- lib/ruby_mod_kit/feature/type.rb
|
|
68
|
+
- lib/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rb
|
|
69
|
+
- lib/ruby_mod_kit/feature/type/parameter_arrow_corrector.rb
|
|
70
|
+
- lib/ruby_mod_kit/feature/type/rbs_inline.rb
|
|
71
|
+
- lib/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rb
|
|
72
|
+
- lib/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rb
|
|
73
|
+
- lib/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rb
|
|
74
|
+
- lib/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rb
|
|
75
|
+
- lib/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rb
|
|
76
|
+
- lib/ruby_mod_kit/feature/type/return_value_colon_corrector.rb
|
|
77
|
+
- lib/ruby_mod_kit/feature/type/type_attr_mission.rb
|
|
59
78
|
- lib/ruby_mod_kit/generation.rb
|
|
60
79
|
- lib/ruby_mod_kit/memo.rb
|
|
61
|
-
- lib/ruby_mod_kit/memo/
|
|
62
|
-
- lib/ruby_mod_kit/memo/
|
|
63
|
-
- lib/ruby_mod_kit/memo/
|
|
80
|
+
- lib/ruby_mod_kit/memo/def_parent_memo.rb
|
|
81
|
+
- lib/ruby_mod_kit/memo/ivar_memo.rb
|
|
82
|
+
- lib/ruby_mod_kit/memo/method_memo.rb
|
|
64
83
|
- lib/ruby_mod_kit/memo/offset_memo.rb
|
|
65
|
-
- lib/ruby_mod_kit/memo/
|
|
84
|
+
- lib/ruby_mod_kit/memo/overload_memo.rb
|
|
85
|
+
- lib/ruby_mod_kit/memo/parameter_memo.rb
|
|
86
|
+
- lib/ruby_mod_kit/memo_pad.rb
|
|
66
87
|
- lib/ruby_mod_kit/mission.rb
|
|
67
|
-
- lib/ruby_mod_kit/mission/fix_parse_error.rb
|
|
68
|
-
- lib/ruby_mod_kit/mission/ivar_arg.rb
|
|
69
|
-
- lib/ruby_mod_kit/mission/overload.rb
|
|
70
|
-
- lib/ruby_mod_kit/mission/type_attr.rb
|
|
71
|
-
- lib/ruby_mod_kit/mission/type_parameter.rb
|
|
72
|
-
- lib/ruby_mod_kit/mission/type_return.rb
|
|
73
88
|
- lib/ruby_mod_kit/node.rb
|
|
89
|
+
- lib/ruby_mod_kit/node/base_node.rb
|
|
74
90
|
- lib/ruby_mod_kit/node/call_node.rb
|
|
75
91
|
- lib/ruby_mod_kit/node/def_node.rb
|
|
76
92
|
- lib/ruby_mod_kit/node/def_parent_node.rb
|
|
@@ -79,32 +95,45 @@ files:
|
|
|
79
95
|
- lib/ruby_mod_kit/node/statements_node.rb
|
|
80
96
|
- lib/ruby_mod_kit/node/symbol_node.rb
|
|
81
97
|
- lib/ruby_mod_kit/node/untyped_node.rb
|
|
98
|
+
- lib/ruby_mod_kit/node/wrap.rb
|
|
82
99
|
- lib/ruby_mod_kit/offset_diff.rb
|
|
83
|
-
- lib/ruby_mod_kit/transpiler.rb
|
|
84
100
|
- lib/ruby_mod_kit/version.rb
|
|
85
101
|
- ruby_mod_kit.gemspec
|
|
86
|
-
- sig/generated/examples/user.rbs
|
|
87
102
|
- sig/generated/ruby_mod_kit.rbs
|
|
88
103
|
- sig/generated/ruby_mod_kit/cli.rbs
|
|
89
104
|
- sig/generated/ruby_mod_kit/core_ext/eval.rbs
|
|
90
105
|
- sig/generated/ruby_mod_kit/core_ext/load.rbs
|
|
106
|
+
- sig/generated/ruby_mod_kit/corrector.rbs
|
|
107
|
+
- sig/generated/ruby_mod_kit/corrector_manager.rbs
|
|
108
|
+
- sig/generated/ruby_mod_kit/feature.rbs
|
|
109
|
+
- sig/generated/ruby_mod_kit/feature/instance_variable_parameter.rbs
|
|
110
|
+
- sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_corrector.rbs
|
|
111
|
+
- sig/generated/ruby_mod_kit/feature/instance_variable_parameter/instance_variable_parameter_mission.rbs
|
|
112
|
+
- sig/generated/ruby_mod_kit/feature/overload.rbs
|
|
113
|
+
- sig/generated/ruby_mod_kit/feature/overload/overload_mission.rbs
|
|
114
|
+
- sig/generated/ruby_mod_kit/feature/type.rbs
|
|
115
|
+
- sig/generated/ruby_mod_kit/feature/type/instance_variable_colon_corrector.rbs
|
|
116
|
+
- sig/generated/ruby_mod_kit/feature/type/parameter_arrow_corrector.rbs
|
|
117
|
+
- sig/generated/ruby_mod_kit/feature/type/rbs_inline.rbs
|
|
118
|
+
- sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_attr_mission.rbs
|
|
119
|
+
- sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_instance_variable_mission.rbs
|
|
120
|
+
- sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_overload_mission.rbs
|
|
121
|
+
- sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_parameter_mission.rbs
|
|
122
|
+
- sig/generated/ruby_mod_kit/feature/type/rbs_inline/type_return_mission.rbs
|
|
123
|
+
- sig/generated/ruby_mod_kit/feature/type/return_value_colon_corrector.rbs
|
|
124
|
+
- sig/generated/ruby_mod_kit/feature/type/type_attr_mission.rbs
|
|
91
125
|
- sig/generated/ruby_mod_kit/generation.rbs
|
|
92
126
|
- sig/generated/ruby_mod_kit/memo.rbs
|
|
93
|
-
- sig/generated/ruby_mod_kit/memo/
|
|
94
|
-
- sig/generated/ruby_mod_kit/memo/
|
|
95
|
-
- sig/generated/ruby_mod_kit/memo/
|
|
96
|
-
- sig/generated/ruby_mod_kit/memo/method.rbs
|
|
127
|
+
- sig/generated/ruby_mod_kit/memo/def_parent_memo.rbs
|
|
128
|
+
- sig/generated/ruby_mod_kit/memo/ivar_memo.rbs
|
|
129
|
+
- sig/generated/ruby_mod_kit/memo/method_memo.rbs
|
|
97
130
|
- sig/generated/ruby_mod_kit/memo/offset_memo.rbs
|
|
98
|
-
- sig/generated/ruby_mod_kit/memo/
|
|
99
|
-
- sig/generated/ruby_mod_kit/memo/
|
|
131
|
+
- sig/generated/ruby_mod_kit/memo/overload_memo.rbs
|
|
132
|
+
- sig/generated/ruby_mod_kit/memo/parameter_memo.rbs
|
|
133
|
+
- sig/generated/ruby_mod_kit/memo_pad.rbs
|
|
100
134
|
- sig/generated/ruby_mod_kit/mission.rbs
|
|
101
|
-
- sig/generated/ruby_mod_kit/mission/fix_parse_error.rbs
|
|
102
|
-
- sig/generated/ruby_mod_kit/mission/ivar_arg.rbs
|
|
103
|
-
- sig/generated/ruby_mod_kit/mission/overload.rbs
|
|
104
|
-
- sig/generated/ruby_mod_kit/mission/type_attr.rbs
|
|
105
|
-
- sig/generated/ruby_mod_kit/mission/type_parameter.rbs
|
|
106
|
-
- sig/generated/ruby_mod_kit/mission/type_return.rbs
|
|
107
135
|
- sig/generated/ruby_mod_kit/node.rbs
|
|
136
|
+
- sig/generated/ruby_mod_kit/node/base_node.rbs
|
|
108
137
|
- sig/generated/ruby_mod_kit/node/call_node.rbs
|
|
109
138
|
- sig/generated/ruby_mod_kit/node/def_node.rbs
|
|
110
139
|
- sig/generated/ruby_mod_kit/node/def_parent_node.rbs
|
|
@@ -113,8 +142,8 @@ files:
|
|
|
113
142
|
- sig/generated/ruby_mod_kit/node/statements_node.rbs
|
|
114
143
|
- sig/generated/ruby_mod_kit/node/symbol_node.rbs
|
|
115
144
|
- sig/generated/ruby_mod_kit/node/untyped_node.rbs
|
|
145
|
+
- sig/generated/ruby_mod_kit/node/wrap.rbs
|
|
116
146
|
- sig/generated/ruby_mod_kit/offset_diff.rbs
|
|
117
|
-
- sig/generated/ruby_mod_kit/transpiler.rbs
|
|
118
147
|
- sig/generated/ruby_mod_kit/version.rbs
|
|
119
148
|
- sig/sorted_set.rbs
|
|
120
149
|
- sig/thor.rbs
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# rbs_inline: enabled
|
|
4
|
-
|
|
5
|
-
module RubyModKit
|
|
6
|
-
class Memo
|
|
7
|
-
# The memo for def parent (class, module)
|
|
8
|
-
class DefParent < OffsetMemo
|
|
9
|
-
# @rbs @ivars_memo: Hash[Symbol, Memo::Ivar]
|
|
10
|
-
|
|
11
|
-
attr_reader :ivars_memo #: Hash[Symbol, Memo::Ivar]
|
|
12
|
-
|
|
13
|
-
# @rbs def_parent_node: Node::DefParentNode
|
|
14
|
-
# @rbs return: void
|
|
15
|
-
def initialize(def_parent_node)
|
|
16
|
-
@ivars_memo = {}
|
|
17
|
-
super(def_parent_node.offset)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# @rbs name: Symbol
|
|
21
|
-
# @rbs return: Memo::Ivar
|
|
22
|
-
def ivar_memo(name)
|
|
23
|
-
@ivars_memo[name] ||= Memo::Ivar.new(name)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# rbs_inline: enabled
|
|
4
|
-
|
|
5
|
-
module RubyModKit
|
|
6
|
-
class Mission
|
|
7
|
-
# The mission for parameter types
|
|
8
|
-
class FixParseError < Mission
|
|
9
|
-
# @rbs @previous_error_messages: Array[String]
|
|
10
|
-
|
|
11
|
-
# @rbs return: void
|
|
12
|
-
def initialize
|
|
13
|
-
super(0)
|
|
14
|
-
@previous_error_messages = []
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# @rbs generation: Generation
|
|
18
|
-
# @rbs root_node: Node
|
|
19
|
-
# @rbs parse_result: Prism::ParseResult
|
|
20
|
-
# @rbs memo: Memo
|
|
21
|
-
# @rbs return: bool
|
|
22
|
-
def perform(generation, root_node, parse_result, memo)
|
|
23
|
-
return true if parse_result.errors.empty?
|
|
24
|
-
|
|
25
|
-
check_prev_errors(generation, parse_result)
|
|
26
|
-
@previous_error_messages = parse_result.errors.map(&:message)
|
|
27
|
-
|
|
28
|
-
parse_result.errors.each do |parse_error|
|
|
29
|
-
case parse_error.type
|
|
30
|
-
when :argument_formal_ivar
|
|
31
|
-
fix_argument_formal_ivar(parse_error, generation, root_node, memo)
|
|
32
|
-
when :argument_formal_constant
|
|
33
|
-
fix_argument_formal_constant(parse_error, generation)
|
|
34
|
-
when :unexpected_token_ignore
|
|
35
|
-
case parse_error.location.slice
|
|
36
|
-
when "=>"
|
|
37
|
-
fix_unexpected_assoc(parse_error, generation, root_node, memo)
|
|
38
|
-
when ":"
|
|
39
|
-
fix_unexpected_colon(parse_error, generation, root_node, memo)
|
|
40
|
-
end
|
|
41
|
-
when :def_params_term_paren
|
|
42
|
-
fix_def_params_term_paren(parse_error, generation, root_node, memo)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
false
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# @rbs generation: Generation
|
|
50
|
-
# @rbs parse_result: Prism::ParseResult
|
|
51
|
-
# @rbs return: void
|
|
52
|
-
def check_prev_errors(generation, parse_result)
|
|
53
|
-
return if @previous_error_messages.empty?
|
|
54
|
-
return if parse_result.errors.empty?
|
|
55
|
-
return if @previous_error_messages != parse_result.errors.map(&:message)
|
|
56
|
-
|
|
57
|
-
message = +""
|
|
58
|
-
parse_result.errors.each do |parse_error|
|
|
59
|
-
message << "\n" unless message.empty?
|
|
60
|
-
message << "#{generation.name}:#{parse_error.location.start_line}:#{parse_error.message} "
|
|
61
|
-
message << "(#{parse_error.type})"
|
|
62
|
-
line = parse_result.source.lines[parse_error.location.start_line - 1]
|
|
63
|
-
if line
|
|
64
|
-
message << "\n#{line.chomp}\n"
|
|
65
|
-
message << "#{" " * parse_error.location.start_column}^#{"~" * [parse_error.location.length - 1, 0].max}"
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
raise RubyModKit::SyntaxError, message
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# @rbs parse_error: Prism::ParseError
|
|
72
|
-
# @rbs generation: Generation
|
|
73
|
-
# @rbs root_node: Node
|
|
74
|
-
# @rbs memo: Memo
|
|
75
|
-
# @rbs return: void
|
|
76
|
-
def fix_def_params_term_paren(parse_error, generation, root_node, memo)
|
|
77
|
-
column = parse_error.location.start_column - 1
|
|
78
|
-
return if column < 0
|
|
79
|
-
|
|
80
|
-
line = generation.line(parse_error)[column..] || return
|
|
81
|
-
line =~ /\A\*(.*?)\s*=>\s*/
|
|
82
|
-
length = ::Regexp.last_match(0)&.length || return
|
|
83
|
-
type = ::Regexp.last_match(1) || return
|
|
84
|
-
offset = parse_error.location.start_offset - 1
|
|
85
|
-
parameter_position_node = root_node.node_at(offset + length) || return
|
|
86
|
-
|
|
87
|
-
generation[parse_error.location.start_offset, length - 1] = ""
|
|
88
|
-
parameter_memo = memo.parameter_memo(parameter_position_node)
|
|
89
|
-
parameter_memo.type = type
|
|
90
|
-
parameter_memo.qualifier = "*"
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# @rbs parse_error: Prism::ParseError
|
|
94
|
-
# @rbs generation: Generation
|
|
95
|
-
# @rbs root_node: Node
|
|
96
|
-
# @rbs memo: Memo
|
|
97
|
-
# @rbs return: void
|
|
98
|
-
def fix_argument_formal_ivar(parse_error, generation, root_node, memo)
|
|
99
|
-
src_offset = parse_error.location.start_offset
|
|
100
|
-
|
|
101
|
-
name = parse_error.location.slice[1..]
|
|
102
|
-
raise RubyModKit::Error unless name
|
|
103
|
-
|
|
104
|
-
parameter_position_node = root_node.node_at(src_offset)
|
|
105
|
-
raise RubyModKit::Error unless parameter_position_node
|
|
106
|
-
|
|
107
|
-
generation[src_offset, parse_error.location.length] = name
|
|
108
|
-
parameter_memo = memo.parameter_memo(parameter_position_node)
|
|
109
|
-
parameter_memo.ivar_parameter = true
|
|
110
|
-
generation.add_mission(Mission::IvarArg.new(src_offset))
|
|
111
|
-
|
|
112
|
-
return unless parameter_memo.untyped?
|
|
113
|
-
|
|
114
|
-
def_parent_node = root_node.def_parent_node_at(parse_error.location.start_offset) || return
|
|
115
|
-
ivar_memo_type = memo.def_parent_memo(def_parent_node).ivar_memo(name.to_sym).type || return
|
|
116
|
-
parameter_memo.type = ivar_memo_type
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
# @rbs parse_error: Prism::ParseError
|
|
120
|
-
# @rbs generation: Generation
|
|
121
|
-
# @rbs return: void
|
|
122
|
-
def fix_argument_formal_constant(parse_error, generation)
|
|
123
|
-
line = generation.line(parse_error)
|
|
124
|
-
line = line[parse_error.location.start_column..] || return
|
|
125
|
-
parameter_type = line[/(\A[A-Z]\w*(?:::[A-Z]\w*)+)(?:\s*=>\s*)/, 1] || return
|
|
126
|
-
src_offset = parse_error.location.start_offset
|
|
127
|
-
generation[src_offset, parameter_type.length] = "(#{parameter_type})"
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
# @rbs parse_error: Prism::ParseError
|
|
131
|
-
# @rbs generation: Generation
|
|
132
|
-
# @rbs root_node: Node
|
|
133
|
-
# @rbs memo: Memo
|
|
134
|
-
# @rbs return: void
|
|
135
|
-
def fix_unexpected_assoc(parse_error, generation, root_node, memo)
|
|
136
|
-
def_node = root_node.def_node_at(parse_error.location.start_offset) || return
|
|
137
|
-
def_parent_node = def_node.parent
|
|
138
|
-
parameters_node, body_node, = def_node.children
|
|
139
|
-
return if !def_parent_node || !parameters_node || !body_node
|
|
140
|
-
|
|
141
|
-
last_parameter_node = parameters_node.children.max_by(&:offset) || return
|
|
142
|
-
last_parameter_offset = last_parameter_node.offset
|
|
143
|
-
|
|
144
|
-
right_node = body_node.children.find { _1.offset >= parse_error.location.end_offset } || return
|
|
145
|
-
right_offset = right_node.offset
|
|
146
|
-
parameter_type = generation[last_parameter_offset...right_offset] || raise(RubyModKit::Error)
|
|
147
|
-
parameter_type = parameter_type.sub(/\s*=>\s*\z/, "")
|
|
148
|
-
generation[last_parameter_offset, right_offset - last_parameter_offset] = ""
|
|
149
|
-
memo.parameter_memo(last_parameter_node).type = parameter_type
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
# @rbs parse_error: Prism::ParseError
|
|
153
|
-
# @rbs generation: Generation
|
|
154
|
-
# @rbs root_node: Node
|
|
155
|
-
# @rbs memo: Memo
|
|
156
|
-
# @rbs return: void
|
|
157
|
-
def fix_unexpected_colon(parse_error, generation, root_node, memo)
|
|
158
|
-
parent_node = root_node.statements_node_at(parse_error.location.start_offset)&.parent
|
|
159
|
-
case parent_node
|
|
160
|
-
when Node::DefNode
|
|
161
|
-
fix_unexpected_colon_in_def(parse_error, generation, root_node, parent_node, memo)
|
|
162
|
-
when Node::DefParentNode
|
|
163
|
-
fix_unexpected_colon_in_module(parse_error, generation, parent_node, memo)
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
# @rbs parse_error: Prism::ParseError
|
|
168
|
-
# @rbs generation: Generation
|
|
169
|
-
# @rbs root_node: Node
|
|
170
|
-
# @rbs def_node: Node::DefNode
|
|
171
|
-
# @rbs memo: Memo
|
|
172
|
-
# @rbs return: void
|
|
173
|
-
def fix_unexpected_colon_in_def(parse_error, generation, root_node, def_node, memo)
|
|
174
|
-
lparen_loc = def_node.lparen_loc
|
|
175
|
-
rparen_loc = def_node.rparen_loc
|
|
176
|
-
if !lparen_loc && !rparen_loc
|
|
177
|
-
src_offset = def_node.name_loc.end_offset
|
|
178
|
-
elsif lparen_loc && rparen_loc && lparen_loc.slice == "(" && rparen_loc.slice == ")"
|
|
179
|
-
src_offset = rparen_loc.end_offset
|
|
180
|
-
else
|
|
181
|
-
return
|
|
182
|
-
end
|
|
183
|
-
return if generation[src_offset...parse_error.location.start_offset] !~ /\A\s*\z/
|
|
184
|
-
|
|
185
|
-
return_type_location = root_node.node_at(parse_error.location.end_offset + 1)&.location || return_type_location
|
|
186
|
-
generation[src_offset, return_type_location.end_offset - src_offset] = ""
|
|
187
|
-
memo.method_memo(def_node).type = return_type_location.slice
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
# @rbs parse_error: Prism::ParseError
|
|
191
|
-
# @rbs generation: Generation
|
|
192
|
-
# @rbs def_parent_node: Node::DefParentNode
|
|
193
|
-
# @rbs memo: Memo
|
|
194
|
-
# @rbs return: void
|
|
195
|
-
def fix_unexpected_colon_in_module(parse_error, generation, def_parent_node, memo)
|
|
196
|
-
line = generation.line(parse_error)
|
|
197
|
-
line_offset = generation.src_offset(parse_error) || return
|
|
198
|
-
attr_patterns = %i[attr_reader reader getter attr_writer writer setter attr_accessor accessor property]
|
|
199
|
-
return if line !~ /(\A\s*)(?:(#{attr_patterns.join("|")}) )?@(\w*)\s*:\s*(.*)/
|
|
200
|
-
|
|
201
|
-
length = ::Regexp.last_match(0)&.length
|
|
202
|
-
indent = ::Regexp.last_match(1)
|
|
203
|
-
attr_kind = ::Regexp.last_match(2)
|
|
204
|
-
ivar_name = ::Regexp.last_match(3)
|
|
205
|
-
type = ::Regexp.last_match(4)
|
|
206
|
-
return if !length || !indent || !ivar_name || !type
|
|
207
|
-
|
|
208
|
-
ivar_memo = memo.def_parent_memo(def_parent_node).ivar_memo(ivar_name.to_sym)
|
|
209
|
-
ivar_memo.type = type
|
|
210
|
-
ivar_memo.attr_kind = attr_kind if attr_kind
|
|
211
|
-
|
|
212
|
-
generation[line_offset, length] = "#{indent}# @rbs @#{ivar_name}: #{Memo.unify_type(type)}"
|
|
213
|
-
end
|
|
214
|
-
end
|
|
215
|
-
end
|
|
216
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# rbs_inline: enabled
|
|
4
|
-
|
|
5
|
-
module RubyModKit
|
|
6
|
-
class Mission
|
|
7
|
-
# The mission for instance variable arguments
|
|
8
|
-
class IvarArg < Mission
|
|
9
|
-
# @rbs @assignment: String
|
|
10
|
-
|
|
11
|
-
attr_reader :assignment #: String
|
|
12
|
-
|
|
13
|
-
# @rbs generation: Generation
|
|
14
|
-
# @rbs root_node: Node
|
|
15
|
-
# @rbs _parse_result: Prism::ParseResult
|
|
16
|
-
# @rbs _memo: Memo
|
|
17
|
-
# @rbs return: bool
|
|
18
|
-
def perform(generation, root_node, _parse_result, _memo)
|
|
19
|
-
parameter_node = root_node.parameter_node_at(@offset)
|
|
20
|
-
raise RubyModKit::Error unless parameter_node
|
|
21
|
-
|
|
22
|
-
def_node = root_node.def_node_at(@offset)
|
|
23
|
-
raise RubyModKit::Error, "DefNode not found" unless def_node
|
|
24
|
-
|
|
25
|
-
def_body_location = def_node.body_location
|
|
26
|
-
end_loc = def_node.end_keyword_loc
|
|
27
|
-
if def_body_location
|
|
28
|
-
indent = def_body_location.start_column
|
|
29
|
-
src_offset = def_body_location.start_offset - indent
|
|
30
|
-
elsif end_loc
|
|
31
|
-
indent = end_loc.start_column + 2
|
|
32
|
-
src_offset = end_loc.start_offset - indent + 2
|
|
33
|
-
end
|
|
34
|
-
raise RubyModKit::Error if !src_offset || !indent
|
|
35
|
-
|
|
36
|
-
name = parameter_node.name
|
|
37
|
-
generation[src_offset, 0] = "#{" " * indent}@#{name} = #{name}\n"
|
|
38
|
-
true
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# rbs_inline: enabled
|
|
4
|
-
|
|
5
|
-
module RubyModKit
|
|
6
|
-
class Mission
|
|
7
|
-
# The mission for overload
|
|
8
|
-
class Overload < Mission
|
|
9
|
-
OVERLOAD_METHOD_MAP = {
|
|
10
|
-
"*": "_mul",
|
|
11
|
-
}.freeze #: Hash[Symbol, String]
|
|
12
|
-
|
|
13
|
-
# @rbs return: void
|
|
14
|
-
def initialize
|
|
15
|
-
super(0)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# @rbs generation: Generation
|
|
19
|
-
# @rbs root_node: Node
|
|
20
|
-
# @rbs parse_result: Prism::ParseResult
|
|
21
|
-
# @rbs memo: Memo
|
|
22
|
-
# @rbs return: bool
|
|
23
|
-
def perform(generation, root_node, parse_result, memo)
|
|
24
|
-
method_memo_groups = memo.methods_memo.each_value.group_by do |method_memo|
|
|
25
|
-
[root_node.def_parent_node_at(method_memo.offset), method_memo.name]
|
|
26
|
-
end
|
|
27
|
-
method_memo_groups.each_value do |method_memos|
|
|
28
|
-
next if method_memos.length <= 1
|
|
29
|
-
|
|
30
|
-
first_method_memo = method_memos.first
|
|
31
|
-
name = first_method_memo.name
|
|
32
|
-
first_def_node = root_node.def_node_at(first_method_memo.offset)
|
|
33
|
-
raise RubyModKit::Error unless first_def_node.is_a?(Node::DefNode)
|
|
34
|
-
raise RubyModKit::Error unless name.is_a?(Symbol)
|
|
35
|
-
|
|
36
|
-
start_line = first_def_node.location.start_line - 1
|
|
37
|
-
indent = parse_result.source.lines[start_line][/\A */] || ""
|
|
38
|
-
start_line -= 1 while parse_result.source.lines[start_line - 1] =~ /^ *# *@rbs /
|
|
39
|
-
src_offset = parse_result.source.offsets[start_line]
|
|
40
|
-
script = +""
|
|
41
|
-
|
|
42
|
-
method_memos.each do |method_memo|
|
|
43
|
-
script << if script.empty?
|
|
44
|
-
"# @rbs"
|
|
45
|
-
else
|
|
46
|
-
"# |"
|
|
47
|
-
end
|
|
48
|
-
type = method_memo.type
|
|
49
|
-
type = "(#{type})" if type.include?(" ")
|
|
50
|
-
script << " (#{method_memo.parameters.map(&:type).join(", ")}) -> #{type}\n"
|
|
51
|
-
end
|
|
52
|
-
script << "def #{name}(*args)\n case args\n"
|
|
53
|
-
overload_prefix = +"#{OVERLOAD_METHOD_MAP[name] || name}_"
|
|
54
|
-
method_memos.each_with_index do |method_memo, i|
|
|
55
|
-
overload_name = "#{overload_prefix}_overload#{i}"
|
|
56
|
-
def_node = root_node.def_node_at(method_memo.offset)
|
|
57
|
-
raise RubyModKit::Error if !def_node || !def_node.is_a?(Node::DefNode)
|
|
58
|
-
|
|
59
|
-
name_loc = def_node.name_loc
|
|
60
|
-
generation[name_loc.start_offset, name_loc.length] = overload_name
|
|
61
|
-
script << " in [#{method_memo.parameters.map(&:type).join(", ")}]\n"
|
|
62
|
-
script << " #{overload_name}(*args)\n"
|
|
63
|
-
end
|
|
64
|
-
script << " end\nend\n\n"
|
|
65
|
-
|
|
66
|
-
script.gsub!(/^(?=.)/, indent)
|
|
67
|
-
generation[src_offset, 0] = script
|
|
68
|
-
end
|
|
69
|
-
true
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|