sorbet-runtime 0.5.9271 → 0.5.9292
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/types/private/sealed.rb +15 -12
- data/lib/types/types/base.rb +6 -2
- data/lib/types/types/simple.rb +17 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8df23361dabdfad79ee3a8d712ae789c11d726c11b5c7a09a37f974bf1864e8e
|
4
|
+
data.tar.gz: 2b49914b3b268a89665e86457be57f08de44837a56a40532235cec70e10c56c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ded22a0b2c95f564a626c927ef3434896c8e2fc8d81c3c78a86c74403539fe40dd22b49cb97530aca1376c7ad2e935573a25b6d818ad764edf2cd7098383e1cb
|
7
|
+
data.tar.gz: 8756838892a91115f4b26b849e95b4e0d2281eda05fde267c38c69253f0f7518b26c140580a3d9b6613454a78a4b863e42b9fb68fdff0ef7c72ae9504f6c2557
|
data/lib/types/private/sealed.rb
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
|
4
4
|
module T::Private::Sealed
|
5
5
|
module NoInherit
|
6
|
-
def inherited(
|
6
|
+
def inherited(child)
|
7
7
|
super
|
8
8
|
this_line = Kernel.caller.find {|line| !line.match(/in `inherited'$/)}
|
9
|
-
T::Private::Sealed.validate_inheritance(this_line, self, 'inherited')
|
10
|
-
@sorbet_sealed_module_all_subclasses <<
|
9
|
+
T::Private::Sealed.validate_inheritance(this_line, self, child, 'inherited')
|
10
|
+
@sorbet_sealed_module_all_subclasses << child
|
11
11
|
end
|
12
12
|
|
13
13
|
def sealed_subclasses
|
@@ -20,18 +20,18 @@ module T::Private::Sealed
|
|
20
20
|
end
|
21
21
|
|
22
22
|
module NoIncludeExtend
|
23
|
-
def included(
|
23
|
+
def included(child)
|
24
24
|
super
|
25
25
|
this_line = Kernel.caller.find {|line| !line.match(/in `included'$/)}
|
26
|
-
T::Private::Sealed.validate_inheritance(this_line, self, 'included')
|
27
|
-
@sorbet_sealed_module_all_subclasses <<
|
26
|
+
T::Private::Sealed.validate_inheritance(this_line, self, child, 'included')
|
27
|
+
@sorbet_sealed_module_all_subclasses << child
|
28
28
|
end
|
29
29
|
|
30
|
-
def extended(
|
30
|
+
def extended(child)
|
31
31
|
super
|
32
32
|
this_line = Kernel.caller.find {|line| !line.match(/in `extended'$/)}
|
33
|
-
T::Private::Sealed.validate_inheritance(this_line, self, 'extended')
|
34
|
-
@sorbet_sealed_module_all_subclasses <<
|
33
|
+
T::Private::Sealed.validate_inheritance(this_line, self, child, 'extended')
|
34
|
+
@sorbet_sealed_module_all_subclasses << child
|
35
35
|
end
|
36
36
|
|
37
37
|
def sealed_subclasses
|
@@ -68,12 +68,15 @@ module T::Private::Sealed
|
|
68
68
|
mod.instance_variable_defined?(:@sorbet_sealed_module_decl_file)
|
69
69
|
end
|
70
70
|
|
71
|
-
def self.validate_inheritance(this_line, parent, verb)
|
71
|
+
def self.validate_inheritance(this_line, parent, child, verb)
|
72
72
|
this_file = this_line&.split(':')&.first
|
73
73
|
decl_file = parent.instance_variable_get(:@sorbet_sealed_module_decl_file)
|
74
74
|
|
75
|
-
if !this_file
|
76
|
-
raise "
|
75
|
+
if !this_file
|
76
|
+
raise "Could not use backtrace to determine file for #{verb} child #{child}"
|
77
|
+
end
|
78
|
+
if !decl_file
|
79
|
+
raise "#{parent} does not seem to be a sealed module (#{verb} by #{child})"
|
77
80
|
end
|
78
81
|
|
79
82
|
if !this_file.start_with?(decl_file)
|
data/lib/types/types/base.rb
CHANGED
@@ -133,7 +133,7 @@ module T::Types
|
|
133
133
|
if valid?(obj)
|
134
134
|
nil
|
135
135
|
else
|
136
|
-
|
136
|
+
error_message(obj)
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
@@ -141,10 +141,14 @@ module T::Types
|
|
141
141
|
if recursively_valid?(obj)
|
142
142
|
nil
|
143
143
|
else
|
144
|
-
|
144
|
+
error_message(obj)
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
+
private def error_message(obj)
|
149
|
+
"Expected type #{self.name}, got #{describe_obj(obj)}"
|
150
|
+
end
|
151
|
+
|
148
152
|
def validate!(obj)
|
149
153
|
err = error_message_for_obj(obj)
|
150
154
|
raise TypeError.new(err) if err
|
data/lib/types/types/simple.rb
CHANGED
@@ -34,6 +34,23 @@ module T::Types
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
# overrides Base
|
38
|
+
private def error_message(obj)
|
39
|
+
error_message = super(obj)
|
40
|
+
actual_name = obj.class.name
|
41
|
+
|
42
|
+
return error_message unless name == actual_name
|
43
|
+
|
44
|
+
<<~MSG.strip
|
45
|
+
#{error_message}
|
46
|
+
|
47
|
+
The expected type and received object type have the same name but refer to different constants.
|
48
|
+
Expected type is #{name} with object id #{@raw_type.__id__}, but received type is #{actual_name} with object id #{obj.class.__id__}.
|
49
|
+
|
50
|
+
There might be a constant reloading problem in your application.
|
51
|
+
MSG
|
52
|
+
end
|
53
|
+
|
37
54
|
def to_nilable
|
38
55
|
@nilable ||= T::Types::Union.new([self, T::Utils::Nilable::NIL_TYPE])
|
39
56
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sorbet-runtime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9292
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stripe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|