rbs 0.10.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +9 -9
- data/CHANGELOG.md +29 -0
- data/Gemfile +1 -0
- data/README.md +1 -1
- data/Rakefile +16 -6
- data/Steepfile +28 -0
- data/bin/steep +4 -0
- data/bin/test_runner.rb +7 -5
- data/docs/syntax.md +14 -1
- data/lib/rbs/ast/comment.rb +7 -1
- data/lib/rbs/ast/declarations.rb +15 -9
- data/lib/rbs/ast/members.rb +3 -8
- data/lib/rbs/buffer.rb +1 -1
- data/lib/rbs/cli.rb +72 -3
- data/lib/rbs/constant.rb +1 -1
- data/lib/rbs/constant_table.rb +9 -8
- data/lib/rbs/definition.rb +31 -14
- data/lib/rbs/definition_builder.rb +97 -67
- data/lib/rbs/environment.rb +28 -11
- data/lib/rbs/environment_loader.rb +67 -47
- data/lib/rbs/location.rb +1 -5
- data/lib/rbs/method_type.rb +5 -5
- data/lib/rbs/namespace.rb +14 -3
- data/lib/rbs/parser.y +2 -12
- data/lib/rbs/prototype/rb.rb +3 -5
- data/lib/rbs/prototype/rbi.rb +1 -4
- data/lib/rbs/prototype/runtime.rb +0 -4
- data/lib/rbs/substitution.rb +4 -3
- data/lib/rbs/test/setup.rb +5 -1
- data/lib/rbs/test/setup_helper.rb +15 -0
- data/lib/rbs/test/tester.rb +7 -5
- data/lib/rbs/test/type_check.rb +14 -2
- data/lib/rbs/type_name.rb +18 -1
- data/lib/rbs/type_name_resolver.rb +10 -3
- data/lib/rbs/types.rb +27 -21
- data/lib/rbs/variance_calculator.rb +9 -6
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +26 -17
- data/sig/annotation.rbs +26 -0
- data/sig/buffer.rbs +28 -0
- data/sig/builtin_names.rbs +41 -0
- data/sig/comment.rbs +26 -0
- data/sig/constant.rbs +21 -0
- data/sig/constant_table.rbs +30 -0
- data/sig/declarations.rbs +202 -0
- data/sig/definition.rbs +129 -0
- data/sig/definition_builder.rbs +94 -0
- data/sig/environment.rbs +94 -0
- data/sig/environment_loader.rbs +58 -0
- data/sig/location.rbs +52 -0
- data/sig/members.rbs +160 -0
- data/sig/method_types.rbs +40 -0
- data/sig/namespace.rbs +124 -0
- data/sig/polyfill.rbs +3 -0
- data/sig/rbs.rbs +3 -0
- data/sig/substitution.rbs +39 -0
- data/sig/type_name_resolver.rbs +24 -0
- data/sig/typename.rbs +70 -0
- data/sig/types.rbs +361 -0
- data/sig/util.rbs +13 -0
- data/sig/variance_calculator.rbs +35 -0
- data/sig/version.rbs +3 -0
- data/sig/writer.rbs +40 -0
- data/stdlib/bigdecimal/big_decimal.rbs +887 -0
- data/stdlib/bigdecimal/math/big_math.rbs +142 -0
- data/stdlib/builtin/array.rbs +2 -1
- data/stdlib/builtin/builtin.rbs +0 -3
- data/stdlib/builtin/hash.rbs +1 -1
- data/stdlib/builtin/kernel.rbs +2 -0
- data/stdlib/builtin/math.rbs +26 -26
- data/stdlib/builtin/struct.rbs +9 -10
- data/stdlib/date/date.rbs +1056 -0
- data/stdlib/date/date_time.rbs +582 -0
- data/stdlib/forwardable/forwardable.rbs +204 -0
- data/stdlib/pathname/pathname.rbs +2 -0
- data/stdlib/pty/pty.rbs +5 -29
- data/stdlib/set/set.rbs +1 -1
- data/stdlib/uri/file.rbs +167 -0
- data/stdlib/uri/generic.rbs +875 -0
- data/stdlib/uri/http.rbs +158 -0
- data/stdlib/uri/https.rbs +108 -0
- data/stdlib/uri/ldap.rbs +224 -0
- data/stdlib/uri/ldaps.rbs +108 -0
- data/stdlib/zlib/zlib.rbs +1 -1
- data/steep/Gemfile +3 -0
- data/steep/Gemfile.lock +51 -0
- metadata +45 -5
@@ -73,11 +73,11 @@ module RBS
|
|
73
73
|
type(param.type, result: result, context: :contravariant)
|
74
74
|
end
|
75
75
|
|
76
|
-
if method_type.block
|
77
|
-
|
76
|
+
if block = method_type.block
|
77
|
+
block.type.each_param do |param|
|
78
78
|
type(param.type, result: result, context: :covariant)
|
79
79
|
end
|
80
|
-
type(
|
80
|
+
type(block.type.return_type, result: result, context: :contravariant)
|
81
81
|
end
|
82
82
|
|
83
83
|
type(method_type.type.return_type, result: result, context: :covariant)
|
@@ -113,19 +113,20 @@ module RBS
|
|
113
113
|
|
114
114
|
type_params = case type
|
115
115
|
when Types::ClassInstance
|
116
|
-
env.class_decls[type.name]
|
116
|
+
env.class_decls[type.name].type_params
|
117
117
|
when Types::Interface
|
118
|
-
env.interface_decls[type.name]
|
118
|
+
env.interface_decls[type.name].decl.type_params
|
119
119
|
end
|
120
120
|
|
121
121
|
type.args.each.with_index do |ty, i|
|
122
122
|
var = type_params.params[i]
|
123
|
-
case var
|
123
|
+
case var&.variance
|
124
124
|
when :invariant
|
125
125
|
type(ty, result: result, context: :invariant)
|
126
126
|
when :covariant
|
127
127
|
type(ty, result: result, context: context)
|
128
128
|
when :contravariant
|
129
|
+
# @type var con: variance
|
129
130
|
con = case context
|
130
131
|
when :invariant
|
131
132
|
:invariant
|
@@ -133,6 +134,8 @@ module RBS
|
|
133
134
|
:contravariant
|
134
135
|
when :contravariant
|
135
136
|
:covariant
|
137
|
+
else
|
138
|
+
raise
|
136
139
|
end
|
137
140
|
type(ty, result: result, context: con)
|
138
141
|
end
|
data/lib/rbs/version.rb
CHANGED
data/lib/rbs/writer.rb
CHANGED
@@ -60,6 +60,8 @@ module RBS
|
|
60
60
|
|
61
61
|
def write(decls)
|
62
62
|
[nil, *decls].each_cons(2) do |prev, decl|
|
63
|
+
raise unless decl
|
64
|
+
|
63
65
|
preserve_empty_line(prev, decl)
|
64
66
|
write_decl decl
|
65
67
|
end
|
@@ -68,8 +70,8 @@ module RBS
|
|
68
70
|
def write_decl(decl)
|
69
71
|
case decl
|
70
72
|
when AST::Declarations::Class
|
71
|
-
super_class = if decl.super_class
|
72
|
-
" < #{name_and_args(
|
73
|
+
super_class = if super_class = decl.super_class
|
74
|
+
" < #{name_and_args(super_class.name, super_class.args)}"
|
73
75
|
end
|
74
76
|
write_comment decl.comment
|
75
77
|
write_annotation decl.annotations
|
@@ -77,6 +79,8 @@ module RBS
|
|
77
79
|
|
78
80
|
indent do
|
79
81
|
[nil, *decl.members].each_cons(2) do |prev, member|
|
82
|
+
raise unless member
|
83
|
+
|
80
84
|
preserve_empty_line prev, member
|
81
85
|
write_member member
|
82
86
|
end
|
@@ -134,9 +138,6 @@ module RBS
|
|
134
138
|
|
135
139
|
puts "end"
|
136
140
|
|
137
|
-
when AST::Declarations::Extension
|
138
|
-
RBS.logger.warn "Extension is ignored: #{decl.name}"
|
139
|
-
|
140
141
|
end
|
141
142
|
end
|
142
143
|
|
@@ -250,8 +251,7 @@ module RBS
|
|
250
251
|
|
251
252
|
string = ""
|
252
253
|
|
253
|
-
|
254
|
-
prefix = "#{attrs}def #{name}:"
|
254
|
+
prefix = "def #{name}:"
|
255
255
|
padding = " " * (prefix.size-1)
|
256
256
|
|
257
257
|
string << prefix
|
@@ -289,20 +289,29 @@ module RBS
|
|
289
289
|
end
|
290
290
|
|
291
291
|
def preserve_empty_line(prev, decl)
|
292
|
-
|
292
|
+
# @type var decl: _Located
|
293
293
|
|
294
|
-
|
294
|
+
return unless prev
|
295
295
|
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
return
|
296
|
+
if (_ = decl).respond_to?(:comment)
|
297
|
+
if comment = (_ = decl).comment
|
298
|
+
decl = comment
|
299
|
+
end
|
301
300
|
end
|
302
301
|
|
303
|
-
|
304
|
-
|
305
|
-
|
302
|
+
prev_loc = prev.location
|
303
|
+
decl_loc = decl.location
|
304
|
+
|
305
|
+
if prev_loc && decl_loc
|
306
|
+
prev_end_line = prev_loc.end_line
|
307
|
+
start_line = decl_loc.start_line
|
308
|
+
|
309
|
+
if start_line - prev_end_line > 1
|
310
|
+
puts
|
311
|
+
end
|
312
|
+
else
|
313
|
+
# When the signature is not constructed by the parser,
|
314
|
+
# it always inserts an empty line.
|
306
315
|
puts
|
307
316
|
end
|
308
317
|
end
|
data/sig/annotation.rbs
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
module RBS
|
2
|
+
module AST
|
3
|
+
# RBS allows writing annotations of declarations and members.
|
4
|
+
#
|
5
|
+
# %a{annotation_here}
|
6
|
+
# class Hello
|
7
|
+
# %a{rbs:test:skip}
|
8
|
+
# def foo: () -> void
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
class Annotation
|
12
|
+
attr_reader string: String
|
13
|
+
attr_reader location: Location?
|
14
|
+
|
15
|
+
def initialize: (string: String, location: Location?) -> void
|
16
|
+
|
17
|
+
def ==: (untyped other) -> bool
|
18
|
+
|
19
|
+
alias eql? ==
|
20
|
+
|
21
|
+
def hash: () -> Integer
|
22
|
+
|
23
|
+
def to_json: (*untyped) -> String
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/sig/buffer.rbs
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module RBS
|
2
|
+
class Buffer
|
3
|
+
# Location in a buffer.
|
4
|
+
# A pair of line number (1 origin) and column number (0 origin).
|
5
|
+
#
|
6
|
+
type loc = [Integer, Integer]
|
7
|
+
|
8
|
+
# Name to identify Buffer.
|
9
|
+
attr_reader name: untyped
|
10
|
+
|
11
|
+
# The content of the buffer.
|
12
|
+
attr_reader content: String
|
13
|
+
|
14
|
+
attr_reader lines: Array[String]
|
15
|
+
|
16
|
+
attr_reader ranges: Array[Range[Integer]]
|
17
|
+
|
18
|
+
def initialize: (name: untyped name, content: String content) -> void
|
19
|
+
|
20
|
+
# Translate position to location.
|
21
|
+
def pos_to_loc: (Integer pos) -> loc
|
22
|
+
|
23
|
+
# Translate location to position.
|
24
|
+
def loc_to_pos: (loc loc) -> Integer
|
25
|
+
|
26
|
+
def last_position: () -> Integer
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module RBS
|
2
|
+
module BuiltinNames
|
3
|
+
class Name
|
4
|
+
attr_reader name: TypeName
|
5
|
+
|
6
|
+
def initialize: (name: TypeName) -> void
|
7
|
+
|
8
|
+
def to_s: () -> String
|
9
|
+
|
10
|
+
def instance_type: (*Types::t) -> Types::ClassInstance
|
11
|
+
|
12
|
+
def instance_type?: (Types::t) -> bool
|
13
|
+
|
14
|
+
def singleton_type: () -> Types::ClassSingleton
|
15
|
+
|
16
|
+
def singleton_type?: (Types::t) -> bool
|
17
|
+
|
18
|
+
def self.define: (Symbol, ?namespace: Namespace) -> instance
|
19
|
+
end
|
20
|
+
|
21
|
+
BasicObject: Name
|
22
|
+
Object: Name
|
23
|
+
Kernel: Name
|
24
|
+
String: Name
|
25
|
+
Comparable: Name
|
26
|
+
Enumerable: Name
|
27
|
+
Class: Name
|
28
|
+
Module: Name
|
29
|
+
Array: Name
|
30
|
+
Hash: Name
|
31
|
+
Range: Name
|
32
|
+
Enumerator: Name
|
33
|
+
Set: Name
|
34
|
+
Symbol: Name
|
35
|
+
Integer: Name
|
36
|
+
Float: Name
|
37
|
+
Regexp: Name
|
38
|
+
TrueClass: Name
|
39
|
+
FalseClass: Name
|
40
|
+
end
|
41
|
+
end
|
data/sig/comment.rbs
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
module RBS
|
2
|
+
module AST
|
3
|
+
# RBS allows writing documentation of declarations and members.
|
4
|
+
#
|
5
|
+
# # This is a doc for class.
|
6
|
+
# class Hello
|
7
|
+
# end
|
8
|
+
#
|
9
|
+
class Comment
|
10
|
+
attr_reader string: String
|
11
|
+
attr_reader location: Location?
|
12
|
+
|
13
|
+
def initialize: (string: String, location: Location?) -> void
|
14
|
+
|
15
|
+
def ==: (untyped other) -> bool
|
16
|
+
|
17
|
+
alias eql? ==
|
18
|
+
|
19
|
+
def hash: () -> Integer
|
20
|
+
|
21
|
+
def to_json: (*untyped) -> String
|
22
|
+
|
23
|
+
def concat: (string: String, location: Location?) -> self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/sig/constant.rbs
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module RBS
|
2
|
+
class Constant
|
3
|
+
type constant_entry = Environment::ClassEntry
|
4
|
+
| Environment::ModuleEntry
|
5
|
+
| Environment::SingleEntry[TypeName, AST::Declarations::Constant]
|
6
|
+
|
7
|
+
attr_reader name: TypeName
|
8
|
+
|
9
|
+
attr_reader type: Types::t
|
10
|
+
|
11
|
+
attr_reader entry: constant_entry
|
12
|
+
|
13
|
+
def initialize: (name: TypeName, type: Types::t, entry: constant_entry) -> void
|
14
|
+
|
15
|
+
def ==: (untyped other) -> bool
|
16
|
+
|
17
|
+
alias eql? ==
|
18
|
+
|
19
|
+
def hash: () -> Integer
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module RBS
|
2
|
+
class ConstantTable
|
3
|
+
attr_reader definition_builder: DefinitionBuilder
|
4
|
+
attr_reader constant_scopes_cache: Hash[TypeName, Array[Namespace]]
|
5
|
+
attr_reader resolver: TypeNameResolver
|
6
|
+
attr_reader env(): Environment
|
7
|
+
|
8
|
+
def initialize: (builder: DefinitionBuilder) -> void
|
9
|
+
|
10
|
+
def absolute_type: (Types::t, context: Array[Namespace]) -> Types::t
|
11
|
+
|
12
|
+
def absolute_type_name: (TypeName, context: Array[Namespace], location: Location?) -> TypeName
|
13
|
+
|
14
|
+
def name_to_constant: (TypeName) -> Constant?
|
15
|
+
|
16
|
+
def split_name: (TypeName) -> Array[Symbol]
|
17
|
+
|
18
|
+
def resolve_constant_reference: (TypeName name, context: Array[Namespace]) -> Constant?
|
19
|
+
|
20
|
+
def resolve_constant_reference_context: (Symbol, context: Array[Namespace]) -> Constant?
|
21
|
+
|
22
|
+
def resolve_constant_reference_inherit: (Symbol, scopes: Array[Namespace], ?no_object: bool) -> Constant?
|
23
|
+
|
24
|
+
def constant_scopes: (TypeName) -> Array[Namespace]
|
25
|
+
|
26
|
+
def constant_scopes_module: (TypeName, scopes: Array[Namespace]) -> Array[Namespace]
|
27
|
+
|
28
|
+
def constant_scopes0: (TypeName, ?scopes: Array[Namespace]) -> Array[Namespace]
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,202 @@
|
|
1
|
+
module RBS
|
2
|
+
module AST
|
3
|
+
module Declarations
|
4
|
+
type t = Class | Module | Interface | Constant | Global | Alias
|
5
|
+
|
6
|
+
class Base
|
7
|
+
end
|
8
|
+
|
9
|
+
type variance = :invariant | :covariant | :contravariant
|
10
|
+
|
11
|
+
class ModuleTypeParams
|
12
|
+
class TypeParam
|
13
|
+
attr_reader name: Symbol
|
14
|
+
attr_reader variance: variance
|
15
|
+
attr_reader skip_validation: bool
|
16
|
+
|
17
|
+
def initialize: (name: Symbol, variance: variance, skip_validation: bool) -> void
|
18
|
+
|
19
|
+
include _ToJson
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader params: Array[TypeParam]
|
23
|
+
|
24
|
+
def initialize: () -> void
|
25
|
+
|
26
|
+
def add: (TypeParam param) -> self
|
27
|
+
|
28
|
+
include _HashEqual
|
29
|
+
include _ToJson
|
30
|
+
|
31
|
+
def []: (Symbol) -> TypeParam?
|
32
|
+
|
33
|
+
def each: { (TypeParam) -> void } -> void
|
34
|
+
| () -> Enumerator[TypeParam, void]
|
35
|
+
|
36
|
+
def self.empty: () -> instance
|
37
|
+
|
38
|
+
def variance: (Symbol) -> variance
|
39
|
+
|
40
|
+
def skip_validation?: (Symbol) -> bool
|
41
|
+
|
42
|
+
def empty?: () -> bool
|
43
|
+
|
44
|
+
def size: () -> Integer
|
45
|
+
|
46
|
+
def rename_to: (Array[Symbol] names) -> ModuleTypeParams
|
47
|
+
end
|
48
|
+
|
49
|
+
interface _WithMember
|
50
|
+
def members: () -> Array[untyped]
|
51
|
+
end
|
52
|
+
|
53
|
+
module NestedDeclarationHelper : _WithMember
|
54
|
+
def each_member: () { (Members::t) -> void } -> void
|
55
|
+
| () -> Enumerator[Members::t, void]
|
56
|
+
|
57
|
+
def each_decl: () { (t) -> void } -> void
|
58
|
+
| () -> Enumerator[t, void]
|
59
|
+
end
|
60
|
+
|
61
|
+
module MixinHelper : _WithMember
|
62
|
+
type mixin_member = Members::Include | Members::Extend | Members::Prepend
|
63
|
+
|
64
|
+
@mixins: Array[mixin_member]
|
65
|
+
|
66
|
+
def each_mixin: () { (mixin_member) -> void } -> void
|
67
|
+
| () -> Enumerator[mixin_member, void]
|
68
|
+
end
|
69
|
+
|
70
|
+
class Class < Base
|
71
|
+
type member = Members::t | t
|
72
|
+
|
73
|
+
class Super
|
74
|
+
attr_reader name: TypeName
|
75
|
+
attr_reader args: Array[Types::t]
|
76
|
+
|
77
|
+
def initialize: (name: TypeName, args: Array[Types::t]) -> void
|
78
|
+
|
79
|
+
include _HashEqual
|
80
|
+
include _ToJson
|
81
|
+
end
|
82
|
+
|
83
|
+
include NestedDeclarationHelper
|
84
|
+
include MixinHelper
|
85
|
+
|
86
|
+
attr_reader name: TypeName
|
87
|
+
attr_reader type_params: ModuleTypeParams
|
88
|
+
attr_reader members: Array[member]
|
89
|
+
attr_reader super_class: Super?
|
90
|
+
attr_reader annotations: Array[Annotation]
|
91
|
+
attr_reader location: Location?
|
92
|
+
attr_reader comment: Comment?
|
93
|
+
|
94
|
+
def initialize: (name: TypeName, type_params: ModuleTypeParams, members: Array[member], super_class: Super?, annotations: Array[Annotation], location: Location?, comment: Comment?) -> void
|
95
|
+
|
96
|
+
include _HashEqual
|
97
|
+
include _ToJson
|
98
|
+
end
|
99
|
+
|
100
|
+
class Module < Base
|
101
|
+
type member = Members::t | t
|
102
|
+
|
103
|
+
class Self
|
104
|
+
attr_reader name: TypeName
|
105
|
+
attr_reader args: Array[Types::t]
|
106
|
+
attr_reader location: Location?
|
107
|
+
|
108
|
+
def initialize: (name: TypeName, args: Array[Types::t], location: Location?) -> void
|
109
|
+
|
110
|
+
include _HashEqual
|
111
|
+
include _ToJson
|
112
|
+
|
113
|
+
def to_s: () -> String
|
114
|
+
end
|
115
|
+
|
116
|
+
include NestedDeclarationHelper
|
117
|
+
include MixinHelper
|
118
|
+
|
119
|
+
attr_reader name: TypeName
|
120
|
+
attr_reader type_params: ModuleTypeParams
|
121
|
+
attr_reader members: Array[member]
|
122
|
+
attr_reader location: Location?
|
123
|
+
attr_reader annotations: Array[Annotation]
|
124
|
+
attr_reader self_types: Array[Self]
|
125
|
+
attr_reader comment: Comment?
|
126
|
+
|
127
|
+
def initialize: (name: TypeName, type_params: ModuleTypeParams, members: Array[member], location: Location?, annotations: Array[Annotation], self_types: Array[Self], comment: Comment?) -> void
|
128
|
+
|
129
|
+
include _HashEqual
|
130
|
+
include _ToJson
|
131
|
+
end
|
132
|
+
|
133
|
+
class Extension < Base
|
134
|
+
attr_reader name: TypeName
|
135
|
+
attr_reader type_params: ModuleTypeParams
|
136
|
+
attr_reader extension_name: Symbol
|
137
|
+
attr_reader members: Array[Members::t]
|
138
|
+
attr_reader annotations: Array[Annotation]
|
139
|
+
attr_reader location: Location?
|
140
|
+
attr_reader comment: Comment?
|
141
|
+
|
142
|
+
def initialize: (name: TypeName, type_params: ModuleTypeParams, extension_name: Symbol, members: Array[Members::t], annotations: Array[Annotation], location: Location?, comment: Comment?) -> void
|
143
|
+
|
144
|
+
include _HashEqual
|
145
|
+
include _ToJson
|
146
|
+
end
|
147
|
+
|
148
|
+
class Interface
|
149
|
+
type member = Members::t
|
150
|
+
|
151
|
+
attr_reader name: TypeName
|
152
|
+
attr_reader type_params: ModuleTypeParams
|
153
|
+
attr_reader members: Array[member]
|
154
|
+
attr_reader annotations: Array[Annotation]
|
155
|
+
attr_reader location: Location?
|
156
|
+
attr_reader comment: Comment?
|
157
|
+
|
158
|
+
def initialize: (name: TypeName, type_params: ModuleTypeParams, members: Array[member], annotations: Array[Annotation], location: Location?, comment: Comment?) -> void
|
159
|
+
|
160
|
+
include _HashEqual
|
161
|
+
include _ToJson
|
162
|
+
end
|
163
|
+
|
164
|
+
class Alias < Base
|
165
|
+
attr_reader name: TypeName
|
166
|
+
attr_reader type: Types::t
|
167
|
+
attr_reader annotations: Array[Annotation]
|
168
|
+
attr_reader location: Location?
|
169
|
+
attr_reader comment: Comment?
|
170
|
+
|
171
|
+
def initialize: (name: TypeName, type: Types::t, annotations: Array[Annotation], location: Location?, comment: Comment?) -> void
|
172
|
+
|
173
|
+
include _HashEqual
|
174
|
+
include _ToJson
|
175
|
+
end
|
176
|
+
|
177
|
+
class Constant < Base
|
178
|
+
attr_reader name: TypeName
|
179
|
+
attr_reader type: Types::t
|
180
|
+
attr_reader location: Location?
|
181
|
+
attr_reader comment: Comment?
|
182
|
+
|
183
|
+
def initialize: (name: TypeName, type: Types::t, location: Location?, comment: Comment?) -> void
|
184
|
+
|
185
|
+
include _HashEqual
|
186
|
+
include _ToJson
|
187
|
+
end
|
188
|
+
|
189
|
+
class Global < Base
|
190
|
+
attr_reader name: Symbol
|
191
|
+
attr_reader type: Types::t
|
192
|
+
attr_reader location: Location?
|
193
|
+
attr_reader comment: Comment?
|
194
|
+
|
195
|
+
def initialize: (name: Symbol, type: Types::t, location: Location?, comment: Comment?) -> void
|
196
|
+
|
197
|
+
include _HashEqual
|
198
|
+
include _ToJson
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|