type_toolkit 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/.github/workflows/ci.yml +33 -0
- data/README.md +106 -15
- data/Rakefile +26 -2
- data/config/default.yml +4 -0
- data/lib/rubocop/cop/type_toolkit/dont_expect_unexpected_nil.rb +115 -0
- data/lib/rubocop-type_toolkit.rb +7 -0
- data/lib/type_toolkit/ext/nil_assertions.rb +36 -0
- data/lib/type_toolkit/version.rb +2 -1
- data/lib/type_toolkit.rb +2 -2
- data/sorbet/config +7 -0
- data/sorbet/rbi/annotations/.gitattributes +1 -0
- data/sorbet/rbi/annotations/minitest.rbi +120 -0
- data/sorbet/rbi/annotations/rainbow.rbi +269 -0
- data/sorbet/rbi/gems/.gitattributes +1 -0
- data/sorbet/rbi/gems/ast@2.4.3.rbi +586 -0
- data/sorbet/rbi/gems/benchmark@0.5.0.rbi +637 -0
- data/sorbet/rbi/gems/date@3.5.1.rbi +403 -0
- data/sorbet/rbi/gems/erb@6.0.1.rbi +816 -0
- data/sorbet/rbi/gems/erubi@1.13.1.rbi +157 -0
- data/sorbet/rbi/gems/io-console@0.8.2.rbi +9 -0
- data/sorbet/rbi/gems/json@2.18.1.rbi +2340 -0
- data/sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi +9 -0
- data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +119 -0
- data/sorbet/rbi/gems/logger@1.7.0.rbi +963 -0
- data/sorbet/rbi/gems/minitest@5.27.0.rbi +1549 -0
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +177 -0
- data/sorbet/rbi/gems/parallel@1.27.0.rbi +291 -0
- data/sorbet/rbi/gems/parser@3.3.10.2.rbi +5537 -0
- data/sorbet/rbi/gems/pp@0.6.3.rbi +376 -0
- data/sorbet/rbi/gems/prettyprint@0.2.0.rbi +477 -0
- data/sorbet/rbi/gems/prism@1.9.0.rbi +43414 -0
- data/sorbet/rbi/gems/psych@5.3.1.rbi +2542 -0
- data/sorbet/rbi/gems/racc@1.8.1.rbi +168 -0
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
- data/sorbet/rbi/gems/rake@13.3.1.rbi +3036 -0
- data/sorbet/rbi/gems/rbi@0.3.9.rbi +5238 -0
- data/sorbet/rbi/gems/rbs@4.0.0.dev.5.rbi +8393 -0
- data/sorbet/rbi/gems/rdoc@7.2.0.rbi +13378 -0
- data/sorbet/rbi/gems/regexp_parser@2.11.3.rbi +3883 -0
- data/sorbet/rbi/gems/reline@0.6.3.rbi +2995 -0
- data/sorbet/rbi/gems/require-hooks@0.2.2.rbi +110 -0
- data/sorbet/rbi/gems/rexml@3.4.4.rbi +5258 -0
- data/sorbet/rbi/gems/rubocop-ast@1.49.0.rbi +7456 -0
- data/sorbet/rbi/gems/rubocop-minitest@0.38.2.rbi +2649 -0
- data/sorbet/rbi/gems/rubocop-rake@0.7.1.rbi +328 -0
- data/sorbet/rbi/gems/rubocop-shopify@2.18.0.rbi +9 -0
- data/sorbet/rbi/gems/rubocop@1.84.2.rbi +64803 -0
- data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
- data/sorbet/rbi/gems/spoom@1.7.11.rbi +5878 -0
- data/sorbet/rbi/gems/stringio@3.2.0.rbi +9 -0
- data/sorbet/rbi/gems/tapioca@0.17.10.rbi +3513 -0
- data/sorbet/rbi/gems/thor@1.5.0.rbi +4476 -0
- data/sorbet/rbi/gems/tsort@0.2.0.rbi +393 -0
- data/sorbet/rbi/gems/unicode-display_width@3.2.0.rbi +132 -0
- data/sorbet/rbi/gems/unicode-emoji@4.2.0.rbi +254 -0
- data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +430 -0
- data/sorbet/rbi/gems/yard@0.9.38.rbi +18425 -0
- data/sorbet/rbi/shims/lint_roller.rbi +6 -0
- data/sorbet/rbi/shims/minitest.rbi +43 -0
- data/sorbet/rbi/shims/rubocop_minitest.rbi +17 -0
- data/sorbet/rbi/todo.rbi +5 -0
- data/sorbet/tapioca/config.yml +13 -0
- data/sorbet/tapioca/require.rb +5 -0
- data/spec/.rubocop.yml +13 -0
- data/spec/nil_assertions_spec.rb +19 -0
- data/spec/rubocop/cop/type_toolkit/dont_expect_unexpected_nil_spec.rb +194 -0
- data/spec/spec_helper.rb +8 -0
- data/spec/type_toolkit_spec.rb +11 -0
- metadata +65 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Minitest
|
|
5
|
+
class Spec < Minitest::Test
|
|
6
|
+
extend Minitest::Spec::DSL
|
|
7
|
+
|
|
8
|
+
include RuboCop::Minitest::AssertOffense
|
|
9
|
+
|
|
10
|
+
sig do
|
|
11
|
+
params(
|
|
12
|
+
desc: T.anything,
|
|
13
|
+
block: T.proc.bind(T.self_type).void,
|
|
14
|
+
).void
|
|
15
|
+
end
|
|
16
|
+
def it(desc = T.unsafe(nil), &block); end
|
|
17
|
+
|
|
18
|
+
module DSL
|
|
19
|
+
has_attached_class!(:out)
|
|
20
|
+
|
|
21
|
+
sig do
|
|
22
|
+
params(
|
|
23
|
+
desc: T.anything,
|
|
24
|
+
block: T.proc.bind(T.attached_class).void,
|
|
25
|
+
).void
|
|
26
|
+
end
|
|
27
|
+
def describe(desc, &block); end
|
|
28
|
+
|
|
29
|
+
sig do
|
|
30
|
+
params(
|
|
31
|
+
desc: T.anything,
|
|
32
|
+
block: T.proc.bind(T.attached_class).void,
|
|
33
|
+
).void
|
|
34
|
+
end
|
|
35
|
+
def it(desc = T.unsafe(nil), &block); end
|
|
36
|
+
|
|
37
|
+
sig do
|
|
38
|
+
params(block: T.proc.bind(T.attached_class).void).void
|
|
39
|
+
end
|
|
40
|
+
def before(&block); end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module RuboCop
|
|
5
|
+
module Minitest
|
|
6
|
+
module AssertOffense
|
|
7
|
+
sig { params(source: String).void }
|
|
8
|
+
def assert_offense(source); end
|
|
9
|
+
|
|
10
|
+
sig { params(source: String).void }
|
|
11
|
+
def assert_no_offenses(source); end
|
|
12
|
+
|
|
13
|
+
sig { params(source: String).void }
|
|
14
|
+
def assert_correction(source); end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
data/sorbet/rbi/todo.rbi
ADDED
data/spec/.rubocop.yml
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "spec_helper"
|
|
5
|
+
|
|
6
|
+
module TypeToolkit
|
|
7
|
+
class NilAssertionsTest < Minitest::Spec
|
|
8
|
+
describe "#not_nil!" do
|
|
9
|
+
it "returns self on non-nil values" do
|
|
10
|
+
x = "Hello, world!"
|
|
11
|
+
assert_same x, x.not_nil!
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "raises an error on nil values" do
|
|
15
|
+
assert_raises(UnexpectedNilError) { nil.not_nil! }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "spec_helper"
|
|
5
|
+
require "rubocop"
|
|
6
|
+
require "rubocop/minitest/assert_offense"
|
|
7
|
+
require "rubocop-type_toolkit"
|
|
8
|
+
|
|
9
|
+
module RuboCop
|
|
10
|
+
module Cop
|
|
11
|
+
module TypeToolkit
|
|
12
|
+
class DontExpectUnexpectedNilSpec < ::Minitest::Spec
|
|
13
|
+
CONSTANT_NAMES = [
|
|
14
|
+
"UnexpectedNilError",
|
|
15
|
+
"::UnexpectedNilError",
|
|
16
|
+
"TypeToolkit::UnexpectedNilError",
|
|
17
|
+
"::TypeToolkit::UnexpectedNilError",
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
include RuboCop::Minitest::AssertOffense
|
|
21
|
+
|
|
22
|
+
before do
|
|
23
|
+
@cop = DontExpectUnexpectedNil.new
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "assert_raises" do
|
|
27
|
+
CONSTANT_NAMES.each do |constant_name|
|
|
28
|
+
arrows_______ = "^" * constant_name.size
|
|
29
|
+
|
|
30
|
+
describe constant_name do
|
|
31
|
+
it "adds offense with a { } block" do
|
|
32
|
+
assert_offense(<<~RUBY)
|
|
33
|
+
assert_raises(#{constant_name}) { foo }
|
|
34
|
+
^^^^^^^^^^^^^^#{arrows_______}^ #{assert_raises_message}
|
|
35
|
+
RUBY
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "adds offense with a do ... end block" do
|
|
39
|
+
assert_offense(<<~RUBY)
|
|
40
|
+
assert_raises(#{constant_name}) do
|
|
41
|
+
^^^^^^^^^^^^^^#{arrows_______}^ #{assert_raises_message}
|
|
42
|
+
foo
|
|
43
|
+
end
|
|
44
|
+
RUBY
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "adds offense when passed among other arguments" do
|
|
48
|
+
assert_offense(<<~RUBY)
|
|
49
|
+
assert_raises(ArgumentError, #{constant_name}) { foo }
|
|
50
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#{arrows_______}^ #{assert_raises_message}
|
|
51
|
+
RUBY
|
|
52
|
+
|
|
53
|
+
assert_offense(<<~RUBY)
|
|
54
|
+
assert_raises(#{constant_name}, ArgumentError) { foo }
|
|
55
|
+
^^^^^^^^^^^^^^#{arrows_______}^^^^^^^^^^^^^^^^ #{assert_raises_message}
|
|
56
|
+
RUBY
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "does not add offense when assert_raises is used with a different error" do
|
|
62
|
+
assert_no_offenses(<<~RUBY)
|
|
63
|
+
assert_raises(ArgumentError) { foo }
|
|
64
|
+
RUBY
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "rescue" do
|
|
69
|
+
CONSTANT_NAMES.each do |constant_name|
|
|
70
|
+
arrows_______ = "^" * constant_name.size
|
|
71
|
+
|
|
72
|
+
describe constant_name do
|
|
73
|
+
it "adds offense" do
|
|
74
|
+
assert_offense(<<~RUBY)
|
|
75
|
+
begin
|
|
76
|
+
foo
|
|
77
|
+
rescue #{constant_name}
|
|
78
|
+
#{arrows_______} #{rescue_message}
|
|
79
|
+
bar
|
|
80
|
+
end
|
|
81
|
+
RUBY
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "adds offense when among other exceptions" do
|
|
85
|
+
assert_offense(<<~RUBY)
|
|
86
|
+
begin
|
|
87
|
+
foo
|
|
88
|
+
rescue #{constant_name}, ArgumentError
|
|
89
|
+
#{arrows_______} #{rescue_message}
|
|
90
|
+
bar
|
|
91
|
+
end
|
|
92
|
+
RUBY
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "does not add offense when rescuing other exceptions" do
|
|
98
|
+
assert_no_offenses(<<~RUBY)
|
|
99
|
+
begin
|
|
100
|
+
foo
|
|
101
|
+
rescue ArgumentError
|
|
102
|
+
bar
|
|
103
|
+
end
|
|
104
|
+
RUBY
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe "raise" do
|
|
109
|
+
CONSTANT_NAMES.each do |constant_name|
|
|
110
|
+
arrows_______ = "^" * constant_name.size
|
|
111
|
+
|
|
112
|
+
describe constant_name do
|
|
113
|
+
it "adds offense" do
|
|
114
|
+
assert_offense(<<~RUBY)
|
|
115
|
+
raise #{constant_name}
|
|
116
|
+
^^^^^^#{arrows_______} #{raise_message}
|
|
117
|
+
RUBY
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "adds offense with a message" do
|
|
121
|
+
assert_offense(<<~RUBY)
|
|
122
|
+
raise #{constant_name}, "message"
|
|
123
|
+
^^^^^^#{arrows_______}^^^^^^^^^^^ #{raise_message}
|
|
124
|
+
RUBY
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it "adds offense with .new" do
|
|
128
|
+
assert_offense(<<~RUBY)
|
|
129
|
+
raise #{constant_name}.new
|
|
130
|
+
^^^^^^#{arrows_______}^^^^ #{raise_message}
|
|
131
|
+
RUBY
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "adds offense with .new and a message" do
|
|
135
|
+
assert_offense(<<~RUBY)
|
|
136
|
+
raise #{constant_name}.new, "message"
|
|
137
|
+
^^^^^^#{arrows_______}^^^^^^^^^^^^^^^ #{raise_message}
|
|
138
|
+
RUBY
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it "does not add offense when raising other exceptions" do
|
|
144
|
+
assert_no_offenses(<<~RUBY)
|
|
145
|
+
raise ArgumentError
|
|
146
|
+
RUBY
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
describe "other usages of UnexpectedNilError" do
|
|
151
|
+
CONSTANT_NAMES.each do |constant_name|
|
|
152
|
+
arrows_______ = "^" * constant_name.size
|
|
153
|
+
|
|
154
|
+
it "adds offense when using #{constant_name}" do
|
|
155
|
+
assert_offense(<<~RUBY)
|
|
156
|
+
x = #{constant_name}
|
|
157
|
+
#{arrows_______} #{general_usage_message}
|
|
158
|
+
RUBY
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it "does not add offense when using other constants" do
|
|
163
|
+
assert_no_offenses(<<~RUBY)
|
|
164
|
+
x = ArgumentError
|
|
165
|
+
x = ::ArgumentError
|
|
166
|
+
RUBY
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
private
|
|
171
|
+
|
|
172
|
+
def assert_raises_message
|
|
173
|
+
"TypeToolkit/DontExpectUnexpectedNil: It is always a mistake for `not_nil!` to be called on nil, " \
|
|
174
|
+
"so tests should not expect any code to raise `UnexpectedNilError`. " \
|
|
175
|
+
"Change your code to gracefully handle `nil` instead."
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def rescue_message
|
|
179
|
+
"TypeToolkit/DontExpectUnexpectedNil: It is always a mistake for `not_nil!` to be called on nil, " \
|
|
180
|
+
"so you should never try to rescue `UnexpectedNilError` specifically. " \
|
|
181
|
+
"Change your code to gracefully handle `nil` instead."
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def raise_message
|
|
185
|
+
"TypeToolkit/DontExpectUnexpectedNil: `UnexpectedNilError` should only ever be raised by `NilClass#not_nil!`."
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def general_usage_message
|
|
189
|
+
"TypeToolkit/DontExpectUnexpectedNil: `UnexpectedNilError` should only ever be used by `#not_nil!`."
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: type_toolkit
|
|
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
|
- Alexander Momchilov
|
|
@@ -19,13 +19,77 @@ executables: []
|
|
|
19
19
|
extensions: []
|
|
20
20
|
extra_rdoc_files: []
|
|
21
21
|
files:
|
|
22
|
+
- ".github/workflows/ci.yml"
|
|
22
23
|
- ".github/workflows/release.yml"
|
|
23
24
|
- ".ruby-version"
|
|
24
25
|
- README.md
|
|
25
26
|
- Rakefile
|
|
27
|
+
- config/default.yml
|
|
28
|
+
- lib/rubocop-type_toolkit.rb
|
|
29
|
+
- lib/rubocop/cop/type_toolkit/dont_expect_unexpected_nil.rb
|
|
26
30
|
- lib/type_toolkit.rb
|
|
31
|
+
- lib/type_toolkit/ext/nil_assertions.rb
|
|
27
32
|
- lib/type_toolkit/version.rb
|
|
28
33
|
- sig/type_toolkit.rbs
|
|
34
|
+
- sorbet/config
|
|
35
|
+
- sorbet/rbi/annotations/.gitattributes
|
|
36
|
+
- sorbet/rbi/annotations/minitest.rbi
|
|
37
|
+
- sorbet/rbi/annotations/rainbow.rbi
|
|
38
|
+
- sorbet/rbi/gems/.gitattributes
|
|
39
|
+
- sorbet/rbi/gems/ast@2.4.3.rbi
|
|
40
|
+
- sorbet/rbi/gems/benchmark@0.5.0.rbi
|
|
41
|
+
- sorbet/rbi/gems/date@3.5.1.rbi
|
|
42
|
+
- sorbet/rbi/gems/erb@6.0.1.rbi
|
|
43
|
+
- sorbet/rbi/gems/erubi@1.13.1.rbi
|
|
44
|
+
- sorbet/rbi/gems/io-console@0.8.2.rbi
|
|
45
|
+
- sorbet/rbi/gems/json@2.18.1.rbi
|
|
46
|
+
- sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi
|
|
47
|
+
- sorbet/rbi/gems/lint_roller@1.1.0.rbi
|
|
48
|
+
- sorbet/rbi/gems/logger@1.7.0.rbi
|
|
49
|
+
- sorbet/rbi/gems/minitest@5.27.0.rbi
|
|
50
|
+
- sorbet/rbi/gems/netrc@0.11.0.rbi
|
|
51
|
+
- sorbet/rbi/gems/parallel@1.27.0.rbi
|
|
52
|
+
- sorbet/rbi/gems/parser@3.3.10.2.rbi
|
|
53
|
+
- sorbet/rbi/gems/pp@0.6.3.rbi
|
|
54
|
+
- sorbet/rbi/gems/prettyprint@0.2.0.rbi
|
|
55
|
+
- sorbet/rbi/gems/prism@1.9.0.rbi
|
|
56
|
+
- sorbet/rbi/gems/psych@5.3.1.rbi
|
|
57
|
+
- sorbet/rbi/gems/racc@1.8.1.rbi
|
|
58
|
+
- sorbet/rbi/gems/rainbow@3.1.1.rbi
|
|
59
|
+
- sorbet/rbi/gems/rake@13.3.1.rbi
|
|
60
|
+
- sorbet/rbi/gems/rbi@0.3.9.rbi
|
|
61
|
+
- sorbet/rbi/gems/rbs@4.0.0.dev.5.rbi
|
|
62
|
+
- sorbet/rbi/gems/rdoc@7.2.0.rbi
|
|
63
|
+
- sorbet/rbi/gems/regexp_parser@2.11.3.rbi
|
|
64
|
+
- sorbet/rbi/gems/reline@0.6.3.rbi
|
|
65
|
+
- sorbet/rbi/gems/require-hooks@0.2.2.rbi
|
|
66
|
+
- sorbet/rbi/gems/rexml@3.4.4.rbi
|
|
67
|
+
- sorbet/rbi/gems/rubocop-ast@1.49.0.rbi
|
|
68
|
+
- sorbet/rbi/gems/rubocop-minitest@0.38.2.rbi
|
|
69
|
+
- sorbet/rbi/gems/rubocop-rake@0.7.1.rbi
|
|
70
|
+
- sorbet/rbi/gems/rubocop-shopify@2.18.0.rbi
|
|
71
|
+
- sorbet/rbi/gems/rubocop@1.84.2.rbi
|
|
72
|
+
- sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi
|
|
73
|
+
- sorbet/rbi/gems/spoom@1.7.11.rbi
|
|
74
|
+
- sorbet/rbi/gems/stringio@3.2.0.rbi
|
|
75
|
+
- sorbet/rbi/gems/tapioca@0.17.10.rbi
|
|
76
|
+
- sorbet/rbi/gems/thor@1.5.0.rbi
|
|
77
|
+
- sorbet/rbi/gems/tsort@0.2.0.rbi
|
|
78
|
+
- sorbet/rbi/gems/unicode-display_width@3.2.0.rbi
|
|
79
|
+
- sorbet/rbi/gems/unicode-emoji@4.2.0.rbi
|
|
80
|
+
- sorbet/rbi/gems/yard-sorbet@0.9.0.rbi
|
|
81
|
+
- sorbet/rbi/gems/yard@0.9.38.rbi
|
|
82
|
+
- sorbet/rbi/shims/lint_roller.rbi
|
|
83
|
+
- sorbet/rbi/shims/minitest.rbi
|
|
84
|
+
- sorbet/rbi/shims/rubocop_minitest.rbi
|
|
85
|
+
- sorbet/rbi/todo.rbi
|
|
86
|
+
- sorbet/tapioca/config.yml
|
|
87
|
+
- sorbet/tapioca/require.rb
|
|
88
|
+
- spec/.rubocop.yml
|
|
89
|
+
- spec/nil_assertions_spec.rb
|
|
90
|
+
- spec/rubocop/cop/type_toolkit/dont_expect_unexpected_nil_spec.rb
|
|
91
|
+
- spec/spec_helper.rb
|
|
92
|
+
- spec/type_toolkit_spec.rb
|
|
29
93
|
homepage: https://github.com/Shopify/type_kit
|
|
30
94
|
licenses: []
|
|
31
95
|
metadata:
|