rbs 2.6.0 → 2.7.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.rubocop.yml +5 -0
- data/CHANGELOG.md +48 -1
- data/Gemfile.lock +10 -9
- data/Rakefile +0 -5
- data/Steepfile +1 -0
- data/core/basic_object.rbs +2 -2
- data/core/fiber.rbs +304 -14
- data/core/float.rbs +2 -0
- data/core/io.rbs +95 -1
- data/core/kernel.rbs +1 -1
- data/core/module.rbs +1 -1
- data/core/regexp.rbs +1 -1
- data/core/string_io.rbs +1 -1
- data/core/warning.rbs +1 -1
- data/ext/rbs_extension/parser.c +36 -10
- data/ext/rbs_extension/ruby_objs.c +4 -2
- data/ext/rbs_extension/ruby_objs.h +2 -2
- data/lib/rbs/ancestor_graph.rb +2 -0
- data/lib/rbs/annotate/annotations.rb +2 -0
- data/lib/rbs/annotate/formatter.rb +4 -2
- data/lib/rbs/annotate/rdoc_annotator.rb +2 -0
- data/lib/rbs/annotate/rdoc_source.rb +2 -0
- data/lib/rbs/annotate.rb +2 -0
- data/lib/rbs/ast/annotation.rb +2 -0
- data/lib/rbs/ast/comment.rb +2 -0
- data/lib/rbs/ast/declarations.rb +2 -0
- data/lib/rbs/ast/members.rb +2 -0
- data/lib/rbs/ast/type_param.rb +3 -1
- data/lib/rbs/buffer.rb +2 -0
- data/lib/rbs/builtin_names.rb +2 -0
- data/lib/rbs/cli.rb +39 -2
- data/lib/rbs/collection/cleaner.rb +2 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +8 -3
- data/lib/rbs/collection/config.rb +2 -0
- data/lib/rbs/collection/installer.rb +2 -0
- data/lib/rbs/collection/sources/base.rb +14 -0
- data/lib/rbs/collection/sources/git.rb +3 -0
- data/lib/rbs/collection/sources/rubygems.rb +3 -0
- data/lib/rbs/collection/sources/stdlib.rb +12 -7
- data/lib/rbs/collection/sources.rb +3 -0
- data/lib/rbs/collection.rb +2 -0
- data/lib/rbs/constant.rb +2 -0
- data/lib/rbs/constant_table.rb +5 -3
- data/lib/rbs/definition.rb +13 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +2 -0
- data/lib/rbs/definition_builder/method_builder.rb +2 -0
- data/lib/rbs/definition_builder.rb +75 -13
- data/lib/rbs/environment.rb +2 -0
- data/lib/rbs/environment_loader.rb +25 -5
- data/lib/rbs/environment_walker.rb +2 -0
- data/lib/rbs/errors.rb +3 -1
- data/lib/rbs/factory.rb +2 -0
- data/lib/rbs/location_aux.rb +3 -1
- data/lib/rbs/locator.rb +2 -0
- data/lib/rbs/method_type.rb +7 -5
- data/lib/rbs/namespace.rb +9 -5
- data/lib/rbs/parser_aux.rb +2 -0
- data/lib/rbs/parser_compat/lexer_error.rb +2 -0
- data/lib/rbs/parser_compat/located_value.rb +2 -0
- data/lib/rbs/parser_compat/semantics_error.rb +2 -0
- data/lib/rbs/parser_compat/syntax_error.rb +2 -0
- data/lib/rbs/prototype/helpers.rb +13 -8
- data/lib/rbs/prototype/rb.rb +2 -0
- data/lib/rbs/prototype/rbi.rb +11 -6
- data/lib/rbs/prototype/runtime.rb +13 -4
- data/lib/rbs/repository.rb +4 -4
- data/lib/rbs/resolver/constant_resolver.rb +2 -0
- data/lib/rbs/resolver/type_name_resolver.rb +2 -0
- data/lib/rbs/sorter.rb +168 -0
- data/lib/rbs/substitution.rb +2 -0
- data/lib/rbs/test/errors.rb +2 -0
- data/lib/rbs/test/hook.rb +2 -0
- data/lib/rbs/test/observer.rb +2 -0
- data/lib/rbs/test/setup.rb +2 -0
- data/lib/rbs/test/setup_helper.rb +2 -0
- data/lib/rbs/test/spy.rb +2 -0
- data/lib/rbs/test/tester.rb +2 -0
- data/lib/rbs/test/type_check.rb +2 -0
- data/lib/rbs/test.rb +2 -0
- data/lib/rbs/type_alias_dependency.rb +2 -0
- data/lib/rbs/type_alias_regularity.rb +2 -0
- data/lib/rbs/type_name.rb +2 -0
- data/lib/rbs/type_name_resolver.rb +4 -2
- data/lib/rbs/types.rb +68 -18
- data/lib/rbs/validator.rb +2 -0
- data/lib/rbs/variance_calculator.rb +2 -0
- data/lib/rbs/vendorer.rb +2 -0
- data/lib/rbs/version.rb +3 -1
- data/lib/rbs/writer.rb +3 -1
- data/lib/rbs.rb +4 -2
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/schema/methodType.json +7 -1
- data/schema/types.json +13 -1
- data/sig/ancestor_builder.rbs +66 -7
- data/sig/annotation.rbs +7 -6
- data/sig/builtin_names.rbs +2 -0
- data/sig/cli.rbs +8 -0
- data/sig/collection/config.rbs +13 -4
- data/sig/collection/installer.rbs +2 -0
- data/sig/collection/sources.rbs +23 -4
- data/sig/definition.rbs +8 -0
- data/sig/definition_builder.rbs +64 -7
- data/sig/environment.rbs +4 -0
- data/sig/environment_loader.rbs +4 -2
- data/sig/location.rbs +8 -4
- data/sig/manifest.yaml +1 -0
- data/sig/members.rbs +1 -1
- data/sig/method_builder.rbs +10 -0
- data/sig/namespace.rbs +54 -31
- data/sig/prototype/rb.rbs +4 -0
- data/sig/rbs.rbs +8 -6
- data/sig/rdoc/rbs.rbs +63 -0
- data/sig/{polyfill.rbs → shims.rbs} +1 -31
- data/sig/sorter.rbs +23 -0
- data/sig/types.rbs +14 -2
- data/sig/vendorer.rbs +32 -25
- data/stdlib/bigdecimal/0/big_decimal.rbs +250 -0
- data/stdlib/erb/0/erb.rbs +107 -0
- data/stdlib/logger/0/logger.rbs +2 -2
- data/stdlib/rdoc/0/rdoc.rbs +758 -0
- data/steep/Gemfile.lock +8 -8
- metadata +12 -6
- data/stdlib/fiber/0/fiber.rbs +0 -99
data/lib/rbs/sorter.rb
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RBS
|
4
|
+
class Sorter
|
5
|
+
include RBS::AST
|
6
|
+
|
7
|
+
attr_reader :path, :stdout
|
8
|
+
|
9
|
+
def initialize(path, stdout: $stdout)
|
10
|
+
@path = path
|
11
|
+
@stdout = stdout
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
stdout.puts "Opening #{path}..."
|
16
|
+
|
17
|
+
buffer = Buffer.new(name: path, content: path.read)
|
18
|
+
sigs = Parser.parse_signature(buffer)
|
19
|
+
|
20
|
+
sigs.each do |m|
|
21
|
+
sort_decl! m
|
22
|
+
end
|
23
|
+
|
24
|
+
stdout.puts "Writing #{path}..."
|
25
|
+
path.open('w') do |out|
|
26
|
+
writer = RBS::Writer.new(out: out)
|
27
|
+
writer.write sigs
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def group(member)
|
32
|
+
case member
|
33
|
+
when Declarations::Alias
|
34
|
+
-3
|
35
|
+
when Declarations::Constant
|
36
|
+
-2
|
37
|
+
when Declarations::Class, Declarations::Module
|
38
|
+
-1
|
39
|
+
when Members::Include
|
40
|
+
0.0
|
41
|
+
when Members::Prepend
|
42
|
+
0.2
|
43
|
+
when Members::Extend
|
44
|
+
0.4
|
45
|
+
when Members::ClassVariable
|
46
|
+
1
|
47
|
+
when Members::ClassInstanceVariable
|
48
|
+
2
|
49
|
+
when Members::InstanceVariable
|
50
|
+
3
|
51
|
+
when Members::AttrAccessor, Members::AttrWriter, Members::AttrReader
|
52
|
+
if member.kind == :singleton
|
53
|
+
5.0
|
54
|
+
else
|
55
|
+
6.0
|
56
|
+
end
|
57
|
+
when Members::MethodDefinition
|
58
|
+
case member.kind
|
59
|
+
when :singleton_instance
|
60
|
+
4
|
61
|
+
when :singleton
|
62
|
+
if member.name == :new
|
63
|
+
5.2
|
64
|
+
elsif member.visibility == :public
|
65
|
+
5.4
|
66
|
+
else
|
67
|
+
5.6
|
68
|
+
end
|
69
|
+
else
|
70
|
+
if member.name == :initialize
|
71
|
+
6.2
|
72
|
+
elsif member.visibility == :public
|
73
|
+
6.4
|
74
|
+
else
|
75
|
+
6.6
|
76
|
+
end
|
77
|
+
end
|
78
|
+
when Members::Alias
|
79
|
+
if member.singleton?
|
80
|
+
5.4
|
81
|
+
else
|
82
|
+
6.4
|
83
|
+
end
|
84
|
+
else
|
85
|
+
raise
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def key(member)
|
90
|
+
case member
|
91
|
+
when Members::Include, Members::Extend, Members::Prepend
|
92
|
+
member.name.to_s
|
93
|
+
when Members::ClassVariable, Members::ClassInstanceVariable, Members::InstanceVariable
|
94
|
+
member.name.to_s
|
95
|
+
when Members::AttrAccessor, Members::AttrWriter, Members::AttrReader
|
96
|
+
member.name.to_s
|
97
|
+
when Members::MethodDefinition
|
98
|
+
member.name.to_s
|
99
|
+
when Members::Alias
|
100
|
+
member.new_name.to_s
|
101
|
+
when Declarations::Constant
|
102
|
+
member.name.to_s
|
103
|
+
when Declarations::Alias
|
104
|
+
member.name.to_s
|
105
|
+
when Declarations::Class, Declarations::Module
|
106
|
+
member.name.to_s
|
107
|
+
else
|
108
|
+
raise
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def sort_decl!(decl)
|
113
|
+
case decl
|
114
|
+
when Declarations::Class, Declarations::Module, Declarations::Interface
|
115
|
+
decl.members.each { |m| sort_decl! m }
|
116
|
+
|
117
|
+
current_visibility = :public
|
118
|
+
decl.members.map! do |m|
|
119
|
+
case m
|
120
|
+
when Members::Public
|
121
|
+
current_visibility = :public
|
122
|
+
nil
|
123
|
+
when Members::Private
|
124
|
+
current_visibility = :private
|
125
|
+
nil
|
126
|
+
when Members::MethodDefinition, Members::AttrReader, Members::AttrWriter, Members::AttrAccessor
|
127
|
+
m.update(visibility: m.visibility || current_visibility)
|
128
|
+
else
|
129
|
+
m
|
130
|
+
end
|
131
|
+
end
|
132
|
+
decl.members.compact!
|
133
|
+
|
134
|
+
decl.members.sort! do |m1, m2|
|
135
|
+
group1 = group(m1)
|
136
|
+
group2 = group(m2)
|
137
|
+
|
138
|
+
if group1 == group2
|
139
|
+
key(m1) <=> key(m2)
|
140
|
+
else
|
141
|
+
group1 <=> group2
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
current_visibility = :public
|
146
|
+
decl.members.map! do |m|
|
147
|
+
case m
|
148
|
+
when Members::MethodDefinition, Members::AttrReader, Members::AttrWriter, Members::AttrAccessor
|
149
|
+
new = m.update(visibility: nil)
|
150
|
+
cur = current_visibility
|
151
|
+
current_visibility = m.visibility
|
152
|
+
if cur != m.visibility
|
153
|
+
[
|
154
|
+
m.visibility == :public ? Members::Public.new(location: nil) : Members::Private.new(location: nil),
|
155
|
+
new
|
156
|
+
]
|
157
|
+
else
|
158
|
+
new
|
159
|
+
end
|
160
|
+
else
|
161
|
+
m
|
162
|
+
end
|
163
|
+
end
|
164
|
+
decl.members.flatten!
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
data/lib/rbs/substitution.rb
CHANGED
data/lib/rbs/test/errors.rb
CHANGED
data/lib/rbs/test/hook.rb
CHANGED
data/lib/rbs/test/observer.rb
CHANGED
data/lib/rbs/test/setup.rb
CHANGED
data/lib/rbs/test/spy.rb
CHANGED
data/lib/rbs/test/tester.rb
CHANGED
data/lib/rbs/test/type_check.rb
CHANGED
data/lib/rbs/test.rb
CHANGED
data/lib/rbs/type_name.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RBS
|
2
4
|
class TypeNameResolver
|
3
5
|
Query = _ = Struct.new(:type_name, :context, keyword_init: true)
|
@@ -35,11 +37,11 @@ module RBS
|
|
35
37
|
|
36
38
|
query = Query.new(type_name: type_name, context: context)
|
37
39
|
try_cache(query) do
|
38
|
-
path_head, *path_tail = type_name.
|
40
|
+
path_head, *path_tail = type_name.split
|
39
41
|
raise unless path_head
|
40
42
|
|
41
43
|
name_head = TypeName.new(name: path_head, namespace: Namespace.empty)
|
42
|
-
|
44
|
+
|
43
45
|
absolute_head = context.find do |namespace|
|
44
46
|
# @type break: TypeName
|
45
47
|
full_name = name_head.with_prefix(namespace)
|
data/lib/rbs/types.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RBS
|
2
4
|
module Types
|
3
5
|
module NoFreeVariables
|
@@ -843,12 +845,12 @@ module RBS
|
|
843
845
|
def map_type(&block)
|
844
846
|
if block
|
845
847
|
Function.new(
|
846
|
-
required_positionals: required_positionals
|
847
|
-
optional_positionals: optional_positionals
|
848
|
+
required_positionals: amap(required_positionals) {|param| param.map_type(&block) },
|
849
|
+
optional_positionals: amap(optional_positionals) {|param| param.map_type(&block) },
|
848
850
|
rest_positionals: rest_positionals&.yield_self {|param| param.map_type(&block) },
|
849
|
-
trailing_positionals: trailing_positionals
|
850
|
-
required_keywords: required_keywords
|
851
|
-
optional_keywords: optional_keywords
|
851
|
+
trailing_positionals: amap(trailing_positionals) {|param| param.map_type(&block) },
|
852
|
+
required_keywords: hmapv(required_keywords) {|param| param.map_type(&block) },
|
853
|
+
optional_keywords: hmapv(optional_keywords) {|param| param.map_type(&block) },
|
852
854
|
rest_keywords: rest_keywords&.yield_self {|param| param.map_type(&block) },
|
853
855
|
return_type: yield(return_type)
|
854
856
|
)
|
@@ -857,6 +859,22 @@ module RBS
|
|
857
859
|
end
|
858
860
|
end
|
859
861
|
|
862
|
+
def amap(array, &block)
|
863
|
+
if array.empty?
|
864
|
+
_ = array
|
865
|
+
else
|
866
|
+
array.map(&block)
|
867
|
+
end
|
868
|
+
end
|
869
|
+
|
870
|
+
def hmapv(hash, &block)
|
871
|
+
if hash.empty?
|
872
|
+
_ = hash
|
873
|
+
else
|
874
|
+
hash.transform_values(&block)
|
875
|
+
end
|
876
|
+
end
|
877
|
+
|
860
878
|
def map_type_name(&block)
|
861
879
|
map_type do |type|
|
862
880
|
type.map_type_name(&block)
|
@@ -1020,64 +1038,85 @@ module RBS
|
|
1020
1038
|
class Block
|
1021
1039
|
attr_reader :type
|
1022
1040
|
attr_reader :required
|
1041
|
+
attr_reader :self_type
|
1023
1042
|
|
1024
|
-
def initialize(type:, required:)
|
1043
|
+
def initialize(type:, required:, self_type: nil)
|
1025
1044
|
@type = type
|
1026
1045
|
@required = required ? true : false
|
1046
|
+
@self_type = self_type
|
1027
1047
|
end
|
1028
1048
|
|
1029
1049
|
def ==(other)
|
1030
1050
|
other.is_a?(Block) &&
|
1031
1051
|
other.type == type &&
|
1032
|
-
other.required == required
|
1052
|
+
other.required == required &&
|
1053
|
+
other.self_type == self_type
|
1033
1054
|
end
|
1034
1055
|
|
1035
1056
|
def to_json(state = _ = nil)
|
1036
1057
|
{
|
1037
1058
|
type: type,
|
1038
|
-
required: required
|
1059
|
+
required: required,
|
1060
|
+
self_type: self_type
|
1039
1061
|
}.to_json(state)
|
1040
1062
|
end
|
1041
1063
|
|
1042
1064
|
def sub(s)
|
1043
1065
|
self.class.new(
|
1044
1066
|
type: type.sub(s),
|
1045
|
-
required: required
|
1067
|
+
required: required,
|
1068
|
+
self_type: self_type&.sub(s)
|
1046
1069
|
)
|
1047
1070
|
end
|
1048
1071
|
|
1049
1072
|
def map_type(&block)
|
1050
1073
|
Block.new(
|
1051
1074
|
required: required,
|
1052
|
-
type: type.map_type(&block)
|
1075
|
+
type: type.map_type(&block),
|
1076
|
+
self_type: self_type ? yield(self_type) : nil
|
1053
1077
|
)
|
1054
1078
|
end
|
1055
1079
|
end
|
1056
1080
|
|
1081
|
+
module SelfTypeBindingHelper
|
1082
|
+
module_function
|
1083
|
+
|
1084
|
+
def self_type_binding_to_s(t)
|
1085
|
+
if t
|
1086
|
+
"[self: #{t}] "
|
1087
|
+
else
|
1088
|
+
""
|
1089
|
+
end
|
1090
|
+
end
|
1091
|
+
end
|
1092
|
+
|
1057
1093
|
class Proc
|
1058
1094
|
attr_reader :type
|
1059
1095
|
attr_reader :block
|
1096
|
+
attr_reader :self_type
|
1060
1097
|
attr_reader :location
|
1061
1098
|
|
1062
|
-
def initialize(location:, type:, block:)
|
1099
|
+
def initialize(location:, type:, block:, self_type: nil)
|
1063
1100
|
@type = type
|
1064
1101
|
@block = block
|
1065
1102
|
@location = location
|
1103
|
+
@self_type = self_type
|
1066
1104
|
end
|
1067
1105
|
|
1068
1106
|
def ==(other)
|
1069
|
-
other.is_a?(Proc) && other.type == type && other.block == block
|
1107
|
+
other.is_a?(Proc) && other.type == type && other.block == block && other.self_type == self_type
|
1070
1108
|
end
|
1071
1109
|
|
1072
1110
|
alias eql? ==
|
1073
1111
|
|
1074
1112
|
def hash
|
1075
|
-
self.class.hash ^ type.hash ^ block.hash
|
1113
|
+
self.class.hash ^ type.hash ^ block.hash ^ self_type.hash
|
1076
1114
|
end
|
1077
1115
|
|
1078
1116
|
def free_variables(set = Set[])
|
1079
1117
|
type.free_variables(set)
|
1080
1118
|
block&.type&.free_variables(set)
|
1119
|
+
self_type&.free_variables(set)
|
1081
1120
|
set
|
1082
1121
|
end
|
1083
1122
|
|
@@ -1086,24 +1125,33 @@ module RBS
|
|
1086
1125
|
class: :proc,
|
1087
1126
|
type: type,
|
1088
1127
|
block: block,
|
1089
|
-
location: location
|
1128
|
+
location: location,
|
1129
|
+
self_type: self_type
|
1090
1130
|
}.to_json(state)
|
1091
1131
|
end
|
1092
1132
|
|
1093
1133
|
def sub(s)
|
1094
|
-
self.class.new(
|
1134
|
+
self.class.new(
|
1135
|
+
type: type.sub(s),
|
1136
|
+
block: block&.sub(s),
|
1137
|
+
self_type: self_type&.sub(s),
|
1138
|
+
location: location
|
1139
|
+
)
|
1095
1140
|
end
|
1096
1141
|
|
1097
1142
|
def to_s(level = 0)
|
1143
|
+
self_binding = SelfTypeBindingHelper.self_type_binding_to_s(self_type)
|
1144
|
+
block_self_binding = SelfTypeBindingHelper.self_type_binding_to_s(block&.self_type)
|
1145
|
+
|
1098
1146
|
case
|
1099
1147
|
when b = block
|
1100
1148
|
if b.required
|
1101
|
-
"^(#{type.param_to_s}) { (#{b.type.param_to_s}) -> #{b.type.return_to_s} } -> #{type.return_to_s}"
|
1149
|
+
"^(#{type.param_to_s}) #{self_binding}{ (#{b.type.param_to_s}) #{block_self_binding}-> #{b.type.return_to_s} } -> #{type.return_to_s}"
|
1102
1150
|
else
|
1103
|
-
"^(#{type.param_to_s}) ?{ (#{b.type.param_to_s}) -> #{b.type.return_to_s} } -> #{type.return_to_s}"
|
1151
|
+
"^(#{type.param_to_s}) #{self_binding}?{ (#{b.type.param_to_s}) #{block_self_binding}-> #{b.type.return_to_s} } -> #{type.return_to_s}"
|
1104
1152
|
end
|
1105
1153
|
else
|
1106
|
-
"^(#{type.param_to_s}) -> #{type.return_to_s}"
|
1154
|
+
"^(#{type.param_to_s}) #{self_binding}-> #{type.return_to_s}"
|
1107
1155
|
end
|
1108
1156
|
end
|
1109
1157
|
|
@@ -1120,6 +1168,7 @@ module RBS
|
|
1120
1168
|
Proc.new(
|
1121
1169
|
type: type.map_type_name(&block),
|
1122
1170
|
block: self.block&.map_type {|type| type.map_type_name(&block) },
|
1171
|
+
self_type: self_type&.map_type_name(&block),
|
1123
1172
|
location: location
|
1124
1173
|
)
|
1125
1174
|
end
|
@@ -1129,6 +1178,7 @@ module RBS
|
|
1129
1178
|
Proc.new(
|
1130
1179
|
type: type.map_type(&block),
|
1131
1180
|
block: self.block&.map_type(&block),
|
1181
|
+
self_type: self_type ? yield(self_type) : nil,
|
1132
1182
|
location: location
|
1133
1183
|
)
|
1134
1184
|
else
|
data/lib/rbs/validator.rb
CHANGED
data/lib/rbs/vendorer.rb
CHANGED
data/lib/rbs/version.rb
CHANGED
data/lib/rbs/writer.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RBS
|
2
4
|
class Writer
|
3
5
|
attr_reader :out
|
@@ -280,7 +282,7 @@ module RBS
|
|
280
282
|
"self.#{method_name(member.name)}"
|
281
283
|
end
|
282
284
|
|
283
|
-
string = ""
|
285
|
+
string = +""
|
284
286
|
|
285
287
|
prefix = "#{visibility}def #{name}:"
|
286
288
|
padding = " " * (prefix.size-1)
|
data/lib/rbs.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "rbs/version"
|
2
4
|
|
3
5
|
require "set"
|
@@ -59,12 +61,12 @@ module RBS
|
|
59
61
|
attr_reader :logger_output
|
60
62
|
|
61
63
|
def logger
|
62
|
-
@logger ||= Logger.new(logger_output || STDERR, level: logger_level ||
|
64
|
+
@logger ||= Logger.new(logger_output || STDERR, level: logger_level || Logger::WARN, progname: "rbs")
|
63
65
|
end
|
64
66
|
|
65
67
|
def logger_output=(val)
|
66
|
-
@logger_output = val
|
67
68
|
@logger = nil
|
69
|
+
@logger_output = val
|
68
70
|
end
|
69
71
|
|
70
72
|
def logger_level=(level)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
begin
|
4
|
+
gem 'rdoc', '~> 6.4.0'
|
5
|
+
require 'rdoc_plugin/parser'
|
6
|
+
module RDoc
|
7
|
+
class Parser
|
8
|
+
class RBS < Parser
|
9
|
+
parse_files_matching(/\.rbs$/)
|
10
|
+
def scan
|
11
|
+
::RBS::RDocPlugin::Parser.new(@top_level, @content).scan
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
rescue Gem::LoadError
|
17
|
+
# Error :sad:
|
18
|
+
rescue Exception
|
19
|
+
# Exception :sad:
|
20
|
+
end
|