rbs-inline 0.3.0 → 0.4.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 +4 -4
- data/README.md +2 -2
- data/lib/rbs/inline/ast/annotations.rb +21 -0
- data/lib/rbs/inline/ast/comment_lines.rb +19 -2
- data/lib/rbs/inline/ast/declarations.rb +4 -1
- data/lib/rbs/inline/ast/members.rb +9 -26
- data/lib/rbs/inline/ast/tree.rb +88 -4
- data/lib/rbs/inline/node_utils.rb +4 -0
- data/lib/rbs/inline/parser.rb +13 -1
- data/lib/rbs/inline/version.rb +1 -1
- data/lib/rbs/inline/writer.rb +81 -9
- data/lib/rbs/inline.rb +3 -0
- data/rbs_collection.lock.yaml +3 -7
- data/rbs_collection.yaml +2 -0
- data/sig/generated/rbs/inline/ast/annotations.rbs +2 -0
- data/sig/{rbs → generated/rbs}/inline/ast/comment_lines.rbs +8 -4
- data/sig/generated/rbs/inline/ast/declarations.rbs +4 -1
- data/sig/generated/rbs/inline/ast/members.rbs +8 -10
- data/sig/{rbs → generated/rbs}/inline/ast/tree.rbs +49 -21
- data/sig/generated/rbs/inline/node_utils.rbs +11 -0
- data/sig/generated/rbs/inline/parser.rbs +5 -2
- data/sig/generated/rbs/inline/version.rbs +7 -0
- data/sig/generated/rbs/inline/writer.rbs +72 -0
- data/sig/generated/rbs/inline.rbs +7 -0
- metadata +12 -14
- data/sig/rbs/inline/annotation_parser.rbs +0 -0
- data/sig/rbs/inline/node_utils.rbs +0 -7
- data/sig/rbs/inline/writer.rbs +0 -27
- data/sig/rbs/inline.rbs +0 -41
- data/yard-samples/hello.rb +0 -6
- data/yard-samples/sample1.rb +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 713b2bd4c5ddd833fa1bd1a71505924081013101a8a41200a88fed55751146ba
|
4
|
+
data.tar.gz: 44ffe7a91c0c0afeb7e163a02de508c50f96a609ae7c64593a6b739109ac11b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6507f727be79bcae3890c8b8c3c3865544022058e44d5bfd060efb5df0c91e50f2b5e43a11f284c7ea3de1066bdd0ed7e269a14c20b45cc05cafa7ad60ecffb7
|
7
|
+
data.tar.gz: aad87cafa19657b4d4b055527924146cb232cd96c56081bcbb24c1e1b0ff2fc24a449bdfe2132a43c2e5f5ac2affca8d615d0946b135676979556eaca4887aec
|
data/README.md
CHANGED
@@ -80,12 +80,12 @@ The gem works as a transpiler from annotated Ruby code to RBS files. Run `rbs-in
|
|
80
80
|
$ bundle exec rbs-inline lib
|
81
81
|
|
82
82
|
# Save generated RBS files under sig/generated
|
83
|
-
$ bundle exec rbs-inline --output
|
83
|
+
$ bundle exec rbs-inline --output lib
|
84
84
|
```
|
85
85
|
|
86
86
|
You may want to use `fswatch` or likes to automatically generate RBS files when you edit the Ruby code.
|
87
87
|
|
88
|
-
$ fswatch -0 lib | xargs -0 -n1 bundle exec rbs-inline --output
|
88
|
+
$ fswatch -0 lib | xargs -0 -n1 bundle exec rbs-inline --output
|
89
89
|
|
90
90
|
## More materials
|
91
91
|
|
@@ -4,6 +4,27 @@ module RBS
|
|
4
4
|
module Inline
|
5
5
|
module AST
|
6
6
|
module Annotations
|
7
|
+
# @rbs!
|
8
|
+
# type t = VarType
|
9
|
+
# | ReturnType
|
10
|
+
# | Use
|
11
|
+
# | Inherits
|
12
|
+
# | Generic
|
13
|
+
# | ModuleSelf
|
14
|
+
# | Skip
|
15
|
+
# | Assertion
|
16
|
+
# | Application
|
17
|
+
# | RBSAnnotation
|
18
|
+
# | Override
|
19
|
+
# | IvarType
|
20
|
+
# | Yields
|
21
|
+
# | Embedded
|
22
|
+
# # | Def
|
23
|
+
# # | AttrReader | AttrWriter | AttrAccessor
|
24
|
+
# # | Include | Extend | Prepend
|
25
|
+
# # | Alias
|
26
|
+
|
27
|
+
|
7
28
|
class Base
|
8
29
|
attr_reader :source #:: CommentLines
|
9
30
|
attr_reader :tree #:: Tree
|
@@ -1,9 +1,24 @@
|
|
1
|
+
# rbs_inline: enabled
|
2
|
+
|
1
3
|
module RBS
|
2
4
|
module Inline
|
3
5
|
module AST
|
6
|
+
# CommentLines represents consecutive comments
|
7
|
+
#
|
8
|
+
# The comments construct one String.
|
9
|
+
#
|
10
|
+
# ```ruby
|
11
|
+
# # Hello <-- Comment1
|
12
|
+
# # World <-- Comment2
|
13
|
+
# ```
|
14
|
+
#
|
15
|
+
# We want to get a String of comment1 and comment2, `"Hello\nWorld".
|
16
|
+
# And want to translate a location in the string into the location in comment1 and comment2.
|
17
|
+
#
|
4
18
|
class CommentLines
|
5
|
-
attr_reader :comments
|
19
|
+
attr_reader :comments #:: Array[[Prism::Comment, Integer]]
|
6
20
|
|
21
|
+
# @rbs comments: Array[Prism::Comment]
|
7
22
|
def initialize(comments)
|
8
23
|
offsets = comments.map do |comment|
|
9
24
|
comment.location.slice.index(/[^#\s]/) || 1
|
@@ -18,10 +33,12 @@ module RBS
|
|
18
33
|
end
|
19
34
|
end
|
20
35
|
|
21
|
-
def string
|
36
|
+
def string #:: String
|
22
37
|
comments.map {|comment, offset| comment.location.slice[offset..] }.join("\n")
|
23
38
|
end
|
24
39
|
|
40
|
+
# @rbs index: Integer
|
41
|
+
# @rbs returns [Prism::Comment, Integer]?
|
25
42
|
def comment_location(index)
|
26
43
|
comments.each do |comment, offset|
|
27
44
|
comment_length = comment.location.length
|
@@ -15,7 +15,7 @@ module RBS
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
# @rbs! type t = ClassDecl | ModuleDecl | ConstantDecl
|
18
|
+
# @rbs! type t = ClassDecl | ModuleDecl | ConstantDecl | SingletonClassDecl
|
19
19
|
|
20
20
|
# @rbs!
|
21
21
|
# interface _WithComments
|
@@ -227,6 +227,9 @@ module RBS
|
|
227
227
|
node.location.start_line
|
228
228
|
end
|
229
229
|
end
|
230
|
+
|
231
|
+
class SingletonClassDecl < ModuleOrClass #[Prism::SingletonClassNode]
|
232
|
+
end
|
230
233
|
end
|
231
234
|
end
|
232
235
|
end
|
@@ -4,6 +4,11 @@ module RBS
|
|
4
4
|
module Inline
|
5
5
|
module AST
|
6
6
|
module Members
|
7
|
+
# @rbs!
|
8
|
+
# type ruby = RubyDef | RubyAlias | RubyMixin | RubyAttr | RubyPublic | RubyPrivate
|
9
|
+
# type rbs = RBSIvar | RBSEmbedded
|
10
|
+
# type t = ruby | rbs
|
11
|
+
|
7
12
|
class Base
|
8
13
|
attr_reader :location #:: Prism::Location
|
9
14
|
|
@@ -64,27 +69,6 @@ module RBS
|
|
64
69
|
end
|
65
70
|
end
|
66
71
|
|
67
|
-
# Returns the `kind` of the method definition
|
68
|
-
#
|
69
|
-
# [FIXME] It only supports `self` receiver.
|
70
|
-
#
|
71
|
-
# ```rb
|
72
|
-
# def self.foo = () # :singleton
|
73
|
-
# def object.foo = () # Not supported (returns :instance)
|
74
|
-
# ```
|
75
|
-
#
|
76
|
-
def method_kind #:: RBS::AST::Members::MethodDefinition::kind
|
77
|
-
# FIXME: really hacky implementation
|
78
|
-
case node.receiver
|
79
|
-
when Prism::SelfNode
|
80
|
-
:singleton
|
81
|
-
when nil
|
82
|
-
:instance
|
83
|
-
else
|
84
|
-
:instance
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
72
|
def return_type #:: Types::t?
|
89
73
|
if assertion
|
90
74
|
if assertion.type?
|
@@ -341,6 +325,8 @@ module RBS
|
|
341
325
|
end
|
342
326
|
|
343
327
|
class RubyMixin < RubyBase
|
328
|
+
include Declarations::ConstantUtil
|
329
|
+
|
344
330
|
# CallNode that calls `include`, `prepend`, and `extend` method
|
345
331
|
attr_reader :node #:: Prism::CallNode
|
346
332
|
|
@@ -371,11 +357,8 @@ module RBS
|
|
371
357
|
return unless node.arguments.arguments.size == 1
|
372
358
|
|
373
359
|
arg = node.arguments.arguments[0] || raise
|
374
|
-
|
375
|
-
|
376
|
-
else
|
377
|
-
raise
|
378
|
-
end
|
360
|
+
type_name = type_name(arg)
|
361
|
+
return unless type_name
|
379
362
|
|
380
363
|
args = [] #: Array[Types::t]
|
381
364
|
if application
|
data/lib/rbs/inline/ast/tree.rb
CHANGED
@@ -1,17 +1,28 @@
|
|
1
|
+
# rbs_inline: enabled
|
2
|
+
|
1
3
|
module RBS
|
2
4
|
module Inline
|
3
5
|
module AST
|
4
6
|
class Tree
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
# @rbs!
|
8
|
+
# type token = [Symbol, String]
|
9
|
+
# type tree = token | Tree | Types::t | MethodType | nil
|
10
|
+
|
11
|
+
attr_reader :trees #:: Array[tree]
|
12
|
+
attr_reader :type #:: Symbol
|
13
|
+
|
14
|
+
# Children but without `tWHITESPACE` tokens
|
15
|
+
attr_reader :non_trivia_trees #:: Array[tree]
|
8
16
|
|
17
|
+
# @rbs type: Symbol
|
9
18
|
def initialize(type)
|
10
19
|
@type = type
|
11
20
|
@trees = []
|
12
21
|
@non_trivia_trees = []
|
13
22
|
end
|
14
23
|
|
24
|
+
# @rbs tok: tree
|
25
|
+
# @rbs returns self
|
15
26
|
def <<(tok)
|
16
27
|
trees << tok
|
17
28
|
unless tok.is_a?(Array) && tok[0] == :tWHITESPACE
|
@@ -20,7 +31,8 @@ module RBS
|
|
20
31
|
self
|
21
32
|
end
|
22
33
|
|
23
|
-
|
34
|
+
# Returns the source code associated to the tree
|
35
|
+
def to_s #:: String
|
24
36
|
buf = +""
|
25
37
|
|
26
38
|
trees.each do |tree|
|
@@ -39,6 +51,12 @@ module RBS
|
|
39
51
|
buf
|
40
52
|
end
|
41
53
|
|
54
|
+
# Returns n-th token from the children
|
55
|
+
#
|
56
|
+
# Raises if the value is not a token or nil.
|
57
|
+
#
|
58
|
+
# @rbs index: Integer
|
59
|
+
# @rbs returns token?
|
42
60
|
def nth_token(index)
|
43
61
|
tok = non_trivia_trees[index]
|
44
62
|
case tok
|
@@ -49,6 +67,12 @@ module RBS
|
|
49
67
|
end
|
50
68
|
end
|
51
69
|
|
70
|
+
# Returns n-th token from the children
|
71
|
+
#
|
72
|
+
# Returns `nil` if the value is not a token.
|
73
|
+
#
|
74
|
+
# @rbs index: Integer
|
75
|
+
# @rbs returns token?
|
52
76
|
def nth_token?(index)
|
53
77
|
tok = non_trivia_trees[index]
|
54
78
|
case tok
|
@@ -59,10 +83,22 @@ module RBS
|
|
59
83
|
end
|
60
84
|
end
|
61
85
|
|
86
|
+
# Returns n-th token from the children
|
87
|
+
#
|
88
|
+
# Raises if the value is not token.
|
89
|
+
#
|
90
|
+
# @rbs index: Integer
|
91
|
+
# @rbs returns token
|
62
92
|
def nth_token!(index)
|
63
93
|
nth_token(index) || raise
|
64
94
|
end
|
65
95
|
|
96
|
+
# Returns n-th tree from the children
|
97
|
+
#
|
98
|
+
# Raises if the value is not a tree or nil.
|
99
|
+
#
|
100
|
+
# @rbs index: Integer
|
101
|
+
# @rbs returns Tree?
|
66
102
|
def nth_tree(index)
|
67
103
|
tok = non_trivia_trees[index]
|
68
104
|
case tok
|
@@ -73,6 +109,12 @@ module RBS
|
|
73
109
|
end
|
74
110
|
end
|
75
111
|
|
112
|
+
# Returns n-th tree from the children
|
113
|
+
#
|
114
|
+
# Returns `nil` if the value is not a tree or nil.
|
115
|
+
#
|
116
|
+
# @rbs index: Integer
|
117
|
+
# @rbs returns Tree?
|
76
118
|
def nth_tree?(index)
|
77
119
|
tok = non_trivia_trees[index]
|
78
120
|
case tok
|
@@ -83,11 +125,23 @@ module RBS
|
|
83
125
|
end
|
84
126
|
end
|
85
127
|
|
128
|
+
# Returns n-th tree from the children
|
129
|
+
#
|
130
|
+
# Raises if the value is not a tree.
|
131
|
+
#
|
132
|
+
# @rbs index: Integer
|
133
|
+
# @rbs returns Tree
|
86
134
|
def nth_tree!(index)
|
87
135
|
nth_tree(index) || raise
|
88
136
|
end
|
89
137
|
|
90
138
|
|
139
|
+
# Returns n-th type from the children
|
140
|
+
#
|
141
|
+
# Raises if the value is not a type or nil.
|
142
|
+
#
|
143
|
+
# @rbs index: Integer
|
144
|
+
# @rbs returns Types::t?
|
91
145
|
def nth_type(index)
|
92
146
|
tok = non_trivia_trees[index]
|
93
147
|
case tok
|
@@ -98,6 +152,12 @@ module RBS
|
|
98
152
|
end
|
99
153
|
end
|
100
154
|
|
155
|
+
# Returns n-th type from the children
|
156
|
+
#
|
157
|
+
# Returns `nil` if the value is not a type.
|
158
|
+
#
|
159
|
+
# @rbs index: Integer
|
160
|
+
# @rbs returns Types::t?
|
101
161
|
def nth_type?(index)
|
102
162
|
tok = non_trivia_trees[index]
|
103
163
|
case tok
|
@@ -108,10 +168,22 @@ module RBS
|
|
108
168
|
end
|
109
169
|
end
|
110
170
|
|
171
|
+
# Returns n-th type from the children
|
172
|
+
#
|
173
|
+
# Raises if the value is not a type.
|
174
|
+
#
|
175
|
+
# @rbs index: Integer
|
176
|
+
# @rbs returns Types::t
|
111
177
|
def nth_type!(index)
|
112
178
|
nth_type(index) || raise
|
113
179
|
end
|
114
180
|
|
181
|
+
# Returns n-th method type from the children
|
182
|
+
#
|
183
|
+
# Raises if the value is not a method type or `nil`.
|
184
|
+
#
|
185
|
+
# @rbs index: Integer
|
186
|
+
# @rbs returns MethodType?
|
115
187
|
def nth_method_type(index)
|
116
188
|
tok = non_trivia_trees[index]
|
117
189
|
case tok
|
@@ -122,6 +194,12 @@ module RBS
|
|
122
194
|
end
|
123
195
|
end
|
124
196
|
|
197
|
+
# Returns n-th method type from the children
|
198
|
+
#
|
199
|
+
# Returns `nil` if the value is not a method type.
|
200
|
+
#
|
201
|
+
# @rbs index: Integer
|
202
|
+
# @rbs returns MethodType?
|
125
203
|
def nth_method_type?(index)
|
126
204
|
tok = non_trivia_trees[index]
|
127
205
|
case tok
|
@@ -132,6 +210,12 @@ module RBS
|
|
132
210
|
end
|
133
211
|
end
|
134
212
|
|
213
|
+
# Returns n-th method tree from the children
|
214
|
+
#
|
215
|
+
# Raises if the value is not a method tree.
|
216
|
+
#
|
217
|
+
# @rbs index: Integer
|
218
|
+
# @rbs returns MethodType
|
135
219
|
def nth_method_type!(index)
|
136
220
|
nth_method_type(index) || raise
|
137
221
|
end
|
data/lib/rbs/inline/parser.rb
CHANGED
@@ -86,7 +86,7 @@ module RBS
|
|
86
86
|
current_class_module_decl or raise
|
87
87
|
end
|
88
88
|
|
89
|
-
#:: (AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl) { () -> void } -> void
|
89
|
+
#:: (AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl | AST::Declarations::SingletonClassDecl) { () -> void } -> void
|
90
90
|
#:: (AST::Declarations::ConstantDecl) -> void
|
91
91
|
def push_class_module_decl(decl)
|
92
92
|
if current = current_class_module_decl
|
@@ -152,6 +152,18 @@ module RBS
|
|
152
152
|
load_inner_annotations(node.location.start_line, node.location.end_line, class_decl.members)
|
153
153
|
end
|
154
154
|
|
155
|
+
# @rbs override
|
156
|
+
def visit_singleton_class_node(node)
|
157
|
+
return if ignored_node?(node)
|
158
|
+
|
159
|
+
associated_comment = comments.delete(node.location.start_line - 1)
|
160
|
+
singleton_decl = AST::Declarations::SingletonClassDecl.new(node, associated_comment)
|
161
|
+
|
162
|
+
push_class_module_decl(singleton_decl) do
|
163
|
+
visit node.body
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
155
167
|
# @rbs override
|
156
168
|
def visit_module_node(node)
|
157
169
|
return if ignored_node?(node)
|
data/lib/rbs/inline/version.rb
CHANGED
data/lib/rbs/inline/writer.rb
CHANGED
@@ -1,20 +1,27 @@
|
|
1
|
+
# rbs_inline: enabled
|
2
|
+
|
1
3
|
module RBS
|
2
4
|
module Inline
|
3
5
|
class Writer
|
4
|
-
attr_reader :output
|
5
|
-
attr_reader :writer
|
6
|
+
attr_reader :output #:: String
|
7
|
+
attr_reader :writer #:: RBS::Writer
|
6
8
|
|
9
|
+
# @rbs buffer: String
|
7
10
|
def initialize(buffer = +"")
|
8
11
|
@output = buffer
|
9
12
|
@writer = RBS::Writer.new(out: StringIO.new(buffer))
|
10
13
|
end
|
11
14
|
|
15
|
+
# @rbs uses: Array[AST::Annotations::Use]
|
16
|
+
# @rbs decls: Array[AST::Declarations::t]
|
12
17
|
def self.write(uses, decls)
|
13
18
|
writer = Writer.new()
|
14
19
|
writer.write(uses, decls)
|
15
20
|
writer.output
|
16
21
|
end
|
17
22
|
|
23
|
+
# @rbs lines: Array[String]
|
24
|
+
# @rbs returns void
|
18
25
|
def header(*lines)
|
19
26
|
lines.each do |line|
|
20
27
|
writer.out.puts("# " + line)
|
@@ -22,6 +29,9 @@ module RBS
|
|
22
29
|
writer.out.puts
|
23
30
|
end
|
24
31
|
|
32
|
+
# @rbs uses: Array[AST::Annotations::Use]
|
33
|
+
# @rbs decls: Array[AST::Declarations::t]
|
34
|
+
# @rbs returns void
|
25
35
|
def write(uses, decls)
|
26
36
|
use_dirs = uses.map do |use|
|
27
37
|
RBS::AST::Directives::Use.new(
|
@@ -37,6 +47,8 @@ module RBS
|
|
37
47
|
writer.write(use_dirs + rbs)
|
38
48
|
end
|
39
49
|
|
50
|
+
# @rbs decl: AST::Declarations::t
|
51
|
+
# @rbs returns RBS::AST::Declarations::t?
|
40
52
|
def translate_decl(decl)
|
41
53
|
case decl
|
42
54
|
when AST::Declarations::ClassDecl
|
@@ -48,6 +60,8 @@ module RBS
|
|
48
60
|
end
|
49
61
|
end
|
50
62
|
|
63
|
+
# @rbs decl: AST::Declarations::ClassDecl
|
64
|
+
# @rbs returns RBS::AST::Declarations::Class?
|
51
65
|
def translate_class_decl(decl)
|
52
66
|
return unless decl.class_name
|
53
67
|
|
@@ -59,12 +73,14 @@ module RBS
|
|
59
73
|
|
60
74
|
decl.members.each do |member|
|
61
75
|
if member.is_a?(AST::Members::Base)
|
62
|
-
if rbs_member = translate_member(member)
|
76
|
+
if rbs_member = translate_member(member, decl)
|
63
77
|
members.concat rbs_member
|
64
78
|
end
|
65
79
|
end
|
66
80
|
|
67
|
-
if member.is_a?(AST::Declarations::
|
81
|
+
if member.is_a?(AST::Declarations::SingletonClassDecl)
|
82
|
+
members.concat translate_singleton_decl(member)
|
83
|
+
elsif member.is_a?(AST::Declarations::Base)
|
68
84
|
if rbs = translate_decl(member)
|
69
85
|
members << rbs
|
70
86
|
end
|
@@ -82,6 +98,8 @@ module RBS
|
|
82
98
|
)
|
83
99
|
end
|
84
100
|
|
101
|
+
# @rbs decl: AST::Declarations::ModuleDecl
|
102
|
+
# @rbs returns RBS::AST::Declarations::Module?
|
85
103
|
def translate_module_decl(decl)
|
86
104
|
return unless decl.module_name
|
87
105
|
|
@@ -93,12 +111,14 @@ module RBS
|
|
93
111
|
|
94
112
|
decl.members.each do |member|
|
95
113
|
if member.is_a?(AST::Members::Base)
|
96
|
-
if rbs_member = translate_member(member)
|
114
|
+
if rbs_member = translate_member(member, decl)
|
97
115
|
members.concat rbs_member
|
98
116
|
end
|
99
117
|
end
|
100
118
|
|
101
|
-
if member.is_a?(AST::Declarations::
|
119
|
+
if member.is_a?(AST::Declarations::SingletonClassDecl)
|
120
|
+
members.concat translate_singleton_decl(member)
|
121
|
+
elsif member.is_a?(AST::Declarations::Base)
|
102
122
|
if rbs = translate_decl(member)
|
103
123
|
members << rbs
|
104
124
|
end
|
@@ -118,6 +138,8 @@ module RBS
|
|
118
138
|
)
|
119
139
|
end
|
120
140
|
|
141
|
+
# @rbs decl: AST::Declarations::ConstantDecl
|
142
|
+
# @rbs returns RBS::AST::Declarations::Constant?
|
121
143
|
def translate_constant_decl(decl)
|
122
144
|
return unless decl.constant_name
|
123
145
|
|
@@ -133,18 +155,39 @@ module RBS
|
|
133
155
|
)
|
134
156
|
end
|
135
157
|
|
136
|
-
|
158
|
+
# @rbs decl: AST::Declarations::SingletonClassDecl
|
159
|
+
# @rbs returns Array[RBS::AST::Members::t]
|
160
|
+
def translate_singleton_decl(decl)
|
161
|
+
members = []
|
162
|
+
|
163
|
+
decl.members.each do |member|
|
164
|
+
if member.is_a?(AST::Members::Base)
|
165
|
+
if rbs_member = translate_member(member, decl)
|
166
|
+
members.concat rbs_member
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
members
|
172
|
+
end
|
173
|
+
|
174
|
+
# @rbs member: AST::Members::t
|
175
|
+
# @rbs decl: AST::Declarations::ClassDecl | AST::Declarations::ModuleDecl | AST::Declarations::SingletonClassDecl
|
176
|
+
# @rbs returns Array[RBS::AST::Members::t | RBS::AST::Declarations::t]?
|
177
|
+
def translate_member(member, decl)
|
137
178
|
case member
|
138
179
|
when AST::Members::RubyDef
|
139
180
|
if member.comments
|
140
181
|
comment = RBS::AST::Comment.new(string: member.comments.content, location: nil)
|
141
182
|
end
|
142
183
|
|
184
|
+
kind = method_kind(member, decl)
|
185
|
+
|
143
186
|
if member.override_annotation
|
144
187
|
return [
|
145
188
|
RBS::AST::Members::MethodDefinition.new(
|
146
189
|
name: member.method_name,
|
147
|
-
kind:
|
190
|
+
kind: kind,
|
148
191
|
overloads: [],
|
149
192
|
annotations: [],
|
150
193
|
location: nil,
|
@@ -158,7 +201,7 @@ module RBS
|
|
158
201
|
[
|
159
202
|
RBS::AST::Members::MethodDefinition.new(
|
160
203
|
name: member.method_name,
|
161
|
-
kind:
|
204
|
+
kind: kind,
|
162
205
|
overloads: member.method_overloads,
|
163
206
|
annotations: member.method_annotations,
|
164
207
|
location: nil,
|
@@ -205,6 +248,35 @@ module RBS
|
|
205
248
|
end
|
206
249
|
end
|
207
250
|
end
|
251
|
+
|
252
|
+
private
|
253
|
+
|
254
|
+
# Returns the `kind` of the method definition
|
255
|
+
#
|
256
|
+
# ```rb
|
257
|
+
# def self.foo = () # :singleton
|
258
|
+
# class A
|
259
|
+
# class << self
|
260
|
+
# def bar = () # :singleton
|
261
|
+
# end
|
262
|
+
# end
|
263
|
+
#
|
264
|
+
# def object.foo = () # Not supported (returns :instance)
|
265
|
+
# ```
|
266
|
+
#
|
267
|
+
# @rbs member: AST::Members::RubyDef
|
268
|
+
# @rbs decl: AST::Declarations::ClassDecl | AST::Declarations::ModuleDecl | AST::Declarations::SingletonClassDecl
|
269
|
+
# @rbs returns RBS::AST::Members::MethodDefinition::kind
|
270
|
+
def method_kind(member, decl)
|
271
|
+
return :singleton if decl.is_a?(AST::Declarations::SingletonClassDecl)
|
272
|
+
|
273
|
+
case member.node.receiver
|
274
|
+
when Prism::SelfNode
|
275
|
+
:singleton
|
276
|
+
else
|
277
|
+
:instance
|
278
|
+
end
|
279
|
+
end
|
208
280
|
end
|
209
281
|
end
|
210
282
|
end
|
data/lib/rbs/inline.rb
CHANGED
data/rbs_collection.lock.yaml
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
---
|
2
2
|
path: ".gem_rbs_collection"
|
3
3
|
gems:
|
4
|
-
- name: abbrev
|
5
|
-
version: '0'
|
6
|
-
source:
|
7
|
-
type: stdlib
|
8
4
|
- name: fileutils
|
9
5
|
version: '0'
|
10
6
|
source:
|
@@ -38,7 +34,7 @@ gems:
|
|
38
34
|
source:
|
39
35
|
type: stdlib
|
40
36
|
- name: prism
|
41
|
-
version: 0.
|
37
|
+
version: 0.30.0
|
42
38
|
source:
|
43
39
|
type: rubygems
|
44
40
|
- name: rake
|
@@ -46,11 +42,11 @@ gems:
|
|
46
42
|
source:
|
47
43
|
type: git
|
48
44
|
name: ruby/gem_rbs_collection
|
49
|
-
revision:
|
45
|
+
revision: 4bf1c9687fc24cfbb30f4759653308c816f3a69f
|
50
46
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
51
47
|
repo_dir: gems
|
52
48
|
- name: rbs
|
53
|
-
version: 3.5.
|
49
|
+
version: 3.5.1
|
54
50
|
source:
|
55
51
|
type: rubygems
|
56
52
|
- name: rdoc
|
data/rbs_collection.yaml
CHANGED
@@ -4,6 +4,8 @@ module RBS
|
|
4
4
|
module Inline
|
5
5
|
module AST
|
6
6
|
module Annotations
|
7
|
+
type t = VarType | ReturnType | Use | Inherits | Generic | ModuleSelf | Skip | Assertion | Application | RBSAnnotation | Override | IvarType | Yields | Embedded
|
8
|
+
|
7
9
|
class Base
|
8
10
|
attr_reader source: CommentLines
|
9
11
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# Generated from lib/rbs/inline/ast/comment_lines.rb with RBS::Inline
|
2
|
+
|
1
3
|
module RBS
|
2
4
|
module Inline
|
3
5
|
module AST
|
@@ -12,15 +14,17 @@ module RBS
|
|
12
14
|
#
|
13
15
|
# We want to get a String of comment1 and comment2, `"Hello\nWorld".
|
14
16
|
# And want to translate a location in the string into the location in comment1 and comment2.
|
15
|
-
#
|
16
17
|
class CommentLines
|
17
|
-
attr_reader comments: Array[[Prism::Comment, Integer]]
|
18
|
+
attr_reader comments: Array[[ Prism::Comment, Integer ]]
|
18
19
|
|
19
|
-
|
20
|
+
# @rbs comments: Array[Prism::Comment]
|
21
|
+
def initialize: (Array[Prism::Comment] comments) -> untyped
|
20
22
|
|
21
23
|
def string: () -> String
|
22
24
|
|
23
|
-
|
25
|
+
# @rbs index: Integer
|
26
|
+
# @rbs returns [Prism::Comment, Integer]?
|
27
|
+
def comment_location: (Integer index) -> [ Prism::Comment, Integer ]?
|
24
28
|
end
|
25
29
|
end
|
26
30
|
end
|
@@ -10,7 +10,7 @@ module RBS
|
|
10
10
|
def type_name: (Prism::Node node) -> TypeName?
|
11
11
|
end
|
12
12
|
|
13
|
-
type t = ClassDecl | ModuleDecl | ConstantDecl
|
13
|
+
type t = ClassDecl | ModuleDecl | ConstantDecl | SingletonClassDecl
|
14
14
|
|
15
15
|
interface _WithComments
|
16
16
|
def comments: () -> AnnotationParser::ParsingResult?
|
@@ -110,6 +110,9 @@ module RBS
|
|
110
110
|
|
111
111
|
def start_line: () -> Integer
|
112
112
|
end
|
113
|
+
|
114
|
+
class SingletonClassDecl < ModuleOrClass[Prism::SingletonClassNode]
|
115
|
+
end
|
113
116
|
end
|
114
117
|
end
|
115
118
|
end
|
@@ -4,6 +4,12 @@ module RBS
|
|
4
4
|
module Inline
|
5
5
|
module AST
|
6
6
|
module Members
|
7
|
+
type ruby = RubyDef | RubyAlias | RubyMixin | RubyAttr | RubyPublic | RubyPrivate
|
8
|
+
|
9
|
+
type rbs = RBSIvar | RBSEmbedded
|
10
|
+
|
11
|
+
type t = ruby | rbs
|
12
|
+
|
7
13
|
class Base
|
8
14
|
attr_reader location: Prism::Location
|
9
15
|
|
@@ -44,16 +50,6 @@ module RBS
|
|
44
50
|
|
45
51
|
def method_type_annotations: () -> Array[Annotations::Assertion]
|
46
52
|
|
47
|
-
# Returns the `kind` of the method definition
|
48
|
-
#
|
49
|
-
# [FIXME] It only supports `self` receiver.
|
50
|
-
#
|
51
|
-
# ```rb
|
52
|
-
# def self.foo = () # :singleton
|
53
|
-
# def object.foo = () # Not supported (returns :instance)
|
54
|
-
# ```
|
55
|
-
def method_kind: () -> RBS::AST::Members::MethodDefinition::kind
|
56
|
-
|
57
53
|
def return_type: () -> Types::t?
|
58
54
|
|
59
55
|
def var_type_hash: () -> Hash[Symbol, Types::t?]
|
@@ -84,6 +80,8 @@ module RBS
|
|
84
80
|
end
|
85
81
|
|
86
82
|
class RubyMixin < RubyBase
|
83
|
+
include Declarations::ConstantUtil
|
84
|
+
|
87
85
|
# CallNode that calls `include`, `prepend`, and `extend` method
|
88
86
|
attr_reader node: Prism::CallNode
|
89
87
|
|
@@ -1,97 +1,125 @@
|
|
1
|
+
# Generated from lib/rbs/inline/ast/tree.rb with RBS::Inline
|
2
|
+
|
1
3
|
module RBS
|
2
4
|
module Inline
|
3
5
|
module AST
|
4
6
|
class Tree
|
5
|
-
type token = [Symbol, String]
|
7
|
+
type token = [ Symbol, String ]
|
6
8
|
|
7
9
|
type tree = token | Tree | Types::t | MethodType | nil
|
8
10
|
|
9
11
|
attr_reader trees: Array[tree]
|
10
12
|
|
13
|
+
attr_reader type: Symbol
|
14
|
+
|
11
15
|
# Children but without `tWHITESPACE` tokens
|
12
|
-
#
|
13
16
|
attr_reader non_trivia_trees: Array[tree]
|
14
17
|
|
15
|
-
|
18
|
+
# @rbs type: Symbol
|
19
|
+
def initialize: (Symbol type) -> untyped
|
16
20
|
|
17
|
-
|
21
|
+
# @rbs tok: tree
|
22
|
+
# @rbs returns self
|
23
|
+
def <<: (tree tok) -> self
|
18
24
|
|
19
|
-
|
25
|
+
# Returns the source code associated to the tree
|
26
|
+
def to_s: () -> String
|
20
27
|
|
21
28
|
# Returns n-th token from the children
|
22
29
|
#
|
23
30
|
# Raises if the value is not a token or nil.
|
24
31
|
#
|
25
|
-
|
32
|
+
# @rbs index: Integer
|
33
|
+
# @rbs returns token?
|
34
|
+
def nth_token: (Integer index) -> token?
|
26
35
|
|
27
36
|
# Returns n-th token from the children
|
28
37
|
#
|
29
38
|
# Returns `nil` if the value is not a token.
|
30
39
|
#
|
31
|
-
|
40
|
+
# @rbs index: Integer
|
41
|
+
# @rbs returns token?
|
42
|
+
def nth_token?: (Integer index) -> token?
|
32
43
|
|
33
44
|
# Returns n-th token from the children
|
34
45
|
#
|
35
46
|
# Raises if the value is not token.
|
36
47
|
#
|
37
|
-
|
48
|
+
# @rbs index: Integer
|
49
|
+
# @rbs returns token
|
50
|
+
def nth_token!: (Integer index) -> token
|
38
51
|
|
39
52
|
# Returns n-th tree from the children
|
40
53
|
#
|
41
54
|
# Raises if the value is not a tree or nil.
|
42
55
|
#
|
43
|
-
|
56
|
+
# @rbs index: Integer
|
57
|
+
# @rbs returns Tree?
|
58
|
+
def nth_tree: (Integer index) -> Tree?
|
44
59
|
|
45
60
|
# Returns n-th tree from the children
|
46
61
|
#
|
47
62
|
# Returns `nil` if the value is not a tree or nil.
|
48
63
|
#
|
49
|
-
|
64
|
+
# @rbs index: Integer
|
65
|
+
# @rbs returns Tree?
|
66
|
+
def nth_tree?: (Integer index) -> Tree?
|
50
67
|
|
51
68
|
# Returns n-th tree from the children
|
52
69
|
#
|
53
70
|
# Raises if the value is not a tree.
|
54
71
|
#
|
55
|
-
|
72
|
+
# @rbs index: Integer
|
73
|
+
# @rbs returns Tree
|
74
|
+
def nth_tree!: (Integer index) -> Tree
|
56
75
|
|
57
76
|
# Returns n-th type from the children
|
58
77
|
#
|
59
|
-
# Raises if the value is not a
|
78
|
+
# Raises if the value is not a type or nil.
|
60
79
|
#
|
61
|
-
|
80
|
+
# @rbs index: Integer
|
81
|
+
# @rbs returns Types::t?
|
82
|
+
def nth_type: (Integer index) -> Types::t?
|
62
83
|
|
63
84
|
# Returns n-th type from the children
|
64
85
|
#
|
65
86
|
# Returns `nil` if the value is not a type.
|
66
87
|
#
|
67
|
-
|
88
|
+
# @rbs index: Integer
|
89
|
+
# @rbs returns Types::t?
|
90
|
+
def nth_type?: (Integer index) -> Types::t?
|
68
91
|
|
69
92
|
# Returns n-th type from the children
|
70
93
|
#
|
71
94
|
# Raises if the value is not a type.
|
72
95
|
#
|
73
|
-
|
96
|
+
# @rbs index: Integer
|
97
|
+
# @rbs returns Types::t
|
98
|
+
def nth_type!: (Integer index) -> Types::t
|
74
99
|
|
75
100
|
# Returns n-th method type from the children
|
76
101
|
#
|
77
102
|
# Raises if the value is not a method type or `nil`.
|
78
103
|
#
|
79
|
-
|
104
|
+
# @rbs index: Integer
|
105
|
+
# @rbs returns MethodType?
|
106
|
+
def nth_method_type: (Integer index) -> MethodType?
|
80
107
|
|
81
108
|
# Returns n-th method type from the children
|
82
109
|
#
|
83
110
|
# Returns `nil` if the value is not a method type.
|
84
111
|
#
|
85
|
-
|
112
|
+
# @rbs index: Integer
|
113
|
+
# @rbs returns MethodType?
|
114
|
+
def nth_method_type?: (Integer index) -> MethodType?
|
86
115
|
|
87
116
|
# Returns n-th method tree from the children
|
88
117
|
#
|
89
118
|
# Raises if the value is not a method tree.
|
90
119
|
#
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
def to_s: () -> String
|
120
|
+
# @rbs index: Integer
|
121
|
+
# @rbs returns MethodType
|
122
|
+
def nth_method_type!: (Integer index) -> MethodType
|
95
123
|
end
|
96
124
|
end
|
97
125
|
end
|
@@ -41,9 +41,9 @@ module RBS
|
|
41
41
|
# @rbs returns AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl
|
42
42
|
def current_class_module_decl!: () -> (AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl)
|
43
43
|
|
44
|
-
# :: (AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl) { () -> void } -> void
|
44
|
+
# :: (AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl | AST::Declarations::SingletonClassDecl) { () -> void } -> void
|
45
45
|
# :: (AST::Declarations::ConstantDecl) -> void
|
46
|
-
def push_class_module_decl: (AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl) { () -> void } -> void
|
46
|
+
def push_class_module_decl: (AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl | AST::Declarations::SingletonClassDecl) { () -> void } -> void
|
47
47
|
| (AST::Declarations::ConstantDecl) -> void
|
48
48
|
|
49
49
|
# Load inner declarations and delete them from `#comments` hash
|
@@ -60,6 +60,9 @@ module RBS
|
|
60
60
|
# @rbs override
|
61
61
|
def visit_class_node: ...
|
62
62
|
|
63
|
+
# @rbs override
|
64
|
+
def visit_singleton_class_node: ...
|
65
|
+
|
63
66
|
# @rbs override
|
64
67
|
def visit_module_node: ...
|
65
68
|
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# Generated from lib/rbs/inline/writer.rb with RBS::Inline
|
2
|
+
|
3
|
+
module RBS
|
4
|
+
module Inline
|
5
|
+
class Writer
|
6
|
+
attr_reader output: String
|
7
|
+
|
8
|
+
attr_reader writer: RBS::Writer
|
9
|
+
|
10
|
+
# @rbs buffer: String
|
11
|
+
def initialize: (?String buffer) -> untyped
|
12
|
+
|
13
|
+
# @rbs uses: Array[AST::Annotations::Use]
|
14
|
+
# @rbs decls: Array[AST::Declarations::t]
|
15
|
+
def self.write: (Array[AST::Annotations::Use] uses, Array[AST::Declarations::t] decls) -> untyped
|
16
|
+
|
17
|
+
# @rbs lines: Array[String]
|
18
|
+
# @rbs returns void
|
19
|
+
def header: (*String lines) -> void
|
20
|
+
|
21
|
+
# @rbs uses: Array[AST::Annotations::Use]
|
22
|
+
# @rbs decls: Array[AST::Declarations::t]
|
23
|
+
# @rbs returns void
|
24
|
+
def write: (Array[AST::Annotations::Use] uses, Array[AST::Declarations::t] decls) -> void
|
25
|
+
|
26
|
+
# @rbs decl: AST::Declarations::t
|
27
|
+
# @rbs returns RBS::AST::Declarations::t?
|
28
|
+
def translate_decl: (AST::Declarations::t decl) -> RBS::AST::Declarations::t?
|
29
|
+
|
30
|
+
# @rbs decl: AST::Declarations::ClassDecl
|
31
|
+
# @rbs returns RBS::AST::Declarations::Class?
|
32
|
+
def translate_class_decl: (AST::Declarations::ClassDecl decl) -> RBS::AST::Declarations::Class?
|
33
|
+
|
34
|
+
# @rbs decl: AST::Declarations::ModuleDecl
|
35
|
+
# @rbs returns RBS::AST::Declarations::Module?
|
36
|
+
def translate_module_decl: (AST::Declarations::ModuleDecl decl) -> RBS::AST::Declarations::Module?
|
37
|
+
|
38
|
+
# @rbs decl: AST::Declarations::ConstantDecl
|
39
|
+
# @rbs returns RBS::AST::Declarations::Constant?
|
40
|
+
def translate_constant_decl: (AST::Declarations::ConstantDecl decl) -> RBS::AST::Declarations::Constant?
|
41
|
+
|
42
|
+
# @rbs decl: AST::Declarations::SingletonClassDecl
|
43
|
+
# @rbs returns Array[RBS::AST::Members::t]
|
44
|
+
def translate_singleton_decl: (AST::Declarations::SingletonClassDecl decl) -> Array[RBS::AST::Members::t]
|
45
|
+
|
46
|
+
# @rbs member: AST::Members::t
|
47
|
+
# @rbs decl: AST::Declarations::ClassDecl | AST::Declarations::ModuleDecl | AST::Declarations::SingletonClassDecl
|
48
|
+
# @rbs returns Array[RBS::AST::Members::t | RBS::AST::Declarations::t]?
|
49
|
+
def translate_member: (AST::Members::t member, AST::Declarations::ClassDecl | AST::Declarations::ModuleDecl | AST::Declarations::SingletonClassDecl decl) -> Array[RBS::AST::Members::t | RBS::AST::Declarations::t]?
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
# Returns the `kind` of the method definition
|
54
|
+
#
|
55
|
+
# ```rb
|
56
|
+
# def self.foo = () # :singleton
|
57
|
+
# class A
|
58
|
+
# class << self
|
59
|
+
# def bar = () # :singleton
|
60
|
+
# end
|
61
|
+
# end
|
62
|
+
#
|
63
|
+
# def object.foo = () # Not supported (returns :instance)
|
64
|
+
# ```
|
65
|
+
#
|
66
|
+
# @rbs member: AST::Members::RubyDef
|
67
|
+
# @rbs decl: AST::Declarations::ClassDecl | AST::Declarations::ModuleDecl | AST::Declarations::SingletonClassDecl
|
68
|
+
# @rbs returns RBS::AST::Members::MethodDefinition::kind
|
69
|
+
def method_kind: (AST::Members::RubyDef member, AST::Declarations::ClassDecl | AST::Declarations::ModuleDecl | AST::Declarations::SingletonClassDecl decl) -> RBS::AST::Members::MethodDefinition::kind
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
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.
|
4
|
+
version: 0.4.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-
|
11
|
+
date: 2024-06-12 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.
|
22
|
+
version: '0.31'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,21 +29,21 @@ dependencies:
|
|
29
29
|
version: '0.29'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '0.
|
32
|
+
version: '0.31'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rbs
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 3.5.0
|
39
|
+
version: 3.5.0
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 3.5.0
|
46
|
+
version: 3.5.0
|
47
47
|
description: Inline RBS type declaration.
|
48
48
|
email:
|
49
49
|
- matsumoto@soutaro.com
|
@@ -73,21 +73,19 @@ files:
|
|
73
73
|
- lib/rbs/inline/writer.rb
|
74
74
|
- rbs_collection.lock.yaml
|
75
75
|
- rbs_collection.yaml
|
76
|
+
- sig/generated/rbs/inline.rbs
|
76
77
|
- sig/generated/rbs/inline/annotation_parser.rbs
|
77
78
|
- sig/generated/rbs/inline/ast/annotations.rbs
|
79
|
+
- sig/generated/rbs/inline/ast/comment_lines.rbs
|
78
80
|
- sig/generated/rbs/inline/ast/declarations.rbs
|
79
81
|
- sig/generated/rbs/inline/ast/members.rbs
|
82
|
+
- sig/generated/rbs/inline/ast/tree.rbs
|
80
83
|
- sig/generated/rbs/inline/cli.rbs
|
84
|
+
- sig/generated/rbs/inline/node_utils.rbs
|
81
85
|
- sig/generated/rbs/inline/parser.rbs
|
82
|
-
- sig/rbs/inline.rbs
|
83
|
-
- sig/rbs/inline/
|
84
|
-
- sig/rbs/inline/ast/comment_lines.rbs
|
86
|
+
- sig/generated/rbs/inline/version.rbs
|
87
|
+
- sig/generated/rbs/inline/writer.rbs
|
85
88
|
- sig/rbs/inline/ast/members.rbs
|
86
|
-
- sig/rbs/inline/ast/tree.rbs
|
87
|
-
- sig/rbs/inline/node_utils.rbs
|
88
|
-
- sig/rbs/inline/writer.rbs
|
89
|
-
- yard-samples/hello.rb
|
90
|
-
- yard-samples/sample1.rb
|
91
89
|
homepage: https://github.com/soutaro/rbs-inline
|
92
90
|
licenses:
|
93
91
|
- MIT
|
File without changes
|
data/sig/rbs/inline/writer.rbs
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
module RBS
|
2
|
-
module Inline
|
3
|
-
class Writer
|
4
|
-
attr_reader output: String
|
5
|
-
|
6
|
-
attr_reader writer: RBS::Writer
|
7
|
-
|
8
|
-
def self.write: (Array[AST::Annotations::Use], Array[AST::Declarations::t]) -> String
|
9
|
-
|
10
|
-
def initialize: (?String) -> void
|
11
|
-
|
12
|
-
def write: (Array[AST::Annotations::Use], Array[AST::Declarations::t]) -> void
|
13
|
-
|
14
|
-
def header: (*String) -> void
|
15
|
-
|
16
|
-
def translate_decl: (AST::Declarations::t) -> RBS::AST::Declarations::t?
|
17
|
-
|
18
|
-
def translate_class_decl: (AST::Declarations::ClassDecl) -> RBS::AST::Declarations::Class?
|
19
|
-
|
20
|
-
def translate_module_decl: (AST::Declarations::ModuleDecl) -> RBS::AST::Declarations::Module?
|
21
|
-
|
22
|
-
def translate_constant_decl: (AST::Declarations::ConstantDecl) -> RBS::AST::Declarations::Constant?
|
23
|
-
|
24
|
-
def translate_member: (AST::Members::t) -> Array[RBS::AST::Members::t | RBS::AST::Declarations::t]?
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/sig/rbs/inline.rbs
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
module RBS
|
2
|
-
module Inline
|
3
|
-
type token = [Symbol, String]
|
4
|
-
|
5
|
-
VERSION: String
|
6
|
-
|
7
|
-
module AST
|
8
|
-
module Declarations
|
9
|
-
end
|
10
|
-
|
11
|
-
module Annotations
|
12
|
-
type t = VarType
|
13
|
-
| ReturnType
|
14
|
-
| Use
|
15
|
-
| Inherits
|
16
|
-
| Generic
|
17
|
-
| ModuleSelf
|
18
|
-
| Skip
|
19
|
-
| Assertion
|
20
|
-
| Application
|
21
|
-
| RBSAnnotation
|
22
|
-
| Override
|
23
|
-
| IvarType
|
24
|
-
| Yields
|
25
|
-
| Embedded
|
26
|
-
# | Def
|
27
|
-
# | AttrReader | AttrWriter | AttrAccessor
|
28
|
-
# | Include | Extend | Prepend
|
29
|
-
# | Alias
|
30
|
-
end
|
31
|
-
|
32
|
-
module Members
|
33
|
-
type ruby = RubyDef | RubyAlias | RubyMixin | RubyAttr | RubyPublic | RubyPrivate
|
34
|
-
|
35
|
-
type rbs = RBSIvar | RBSEmbedded
|
36
|
-
|
37
|
-
type t = ruby | rbs
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
data/yard-samples/hello.rb
DELETED
data/yard-samples/sample1.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
module Foo
|
2
|
-
# This is `Foo#foo` method
|
3
|
-
#
|
4
|
-
# @param i [Integer] Size of something
|
5
|
-
# @param j [Symbol,Integer] Something doing meaningful
|
6
|
-
# @return [String?] Returns a string or nil
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# @rbs.method (Integer, String) -> void
|
10
|
-
# | [A] () { () [self: String] -> A } -> A?
|
11
|
-
#
|
12
|
-
def foo(i, j)
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
# @rbs.inline
|
17
|
-
# attr_reader hoge: String
|
18
|
-
# attr_reader name: String?
|
19
|
-
def hoge
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
class Foo
|
24
|
-
# @rbs.inline include Foo[String]
|
25
|
-
end
|
26
|
-
end
|