sorbet-runtime 0.5.10152 → 0.5.10154

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/types/struct.rb +33 -0
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 45be788ace7c14dd772e993ae6111aa7aaa2a36ed378f817e2bd882a208bfb88
4
- data.tar.gz: 4098e4f276374b4819e22b7f507d8eb77f64fd52c6443fa6888b4c1e76f3bd4c
3
+ metadata.gz: d7a443545675cd9f8069f7fc672324139a9a94f9854b0f9330cbf832bf1b153c
4
+ data.tar.gz: fa4123846ae5706f7aaf95cde98aa2dfa14c90d6906c0ee4366b3f4994c5567a
5
5
  SHA512:
6
- metadata.gz: bb02b5ff161949c15229f3a1977b5fd1b77966272d5c98a0678905f95917a8a863b45472a38f7e199e8efcf3cb7f5ea84479170ee23cd37a881e85c5006a52cf
7
- data.tar.gz: 0a2efb385448828d53d54d4c1594d115023406350ef163685e853a00e8c5720f2c7b9f74cd3caf5d989d090e26f1d4b5d11f20b271f1b7e837f5761b4a07e71a
6
+ metadata.gz: 4c1060562e6f4af2c20d0af9adc4f38d7818426e75fc3a5971bb0f8e4822820765250ff938253e832dd073445043d9ec069fbb24dd7d5e4eb49d79cbfacf7401
7
+ data.tar.gz: 5b835a51c09600e451dc79dae53c73a4c2a6a78c622375c9d92abc0843bc57960bdc36794f1819f16d36324825bcfe209843f7f7eccc6137c4d69ab761427b22
data/lib/types/struct.rb CHANGED
@@ -16,3 +16,36 @@ class T::Struct < T::InexactStruct
16
16
  end
17
17
  end
18
18
  end
19
+
20
+ class T::ImmutableStruct < T::InexactStruct
21
+ extend T::Sig
22
+
23
+ def self.inherited(subclass)
24
+ super(subclass)
25
+
26
+ T::Private::ClassUtils.replace_method(subclass.singleton_class, :inherited) do |s|
27
+ super(s)
28
+ raise "#{self.name} is a subclass of T::ImmutableStruct and cannot be subclassed"
29
+ end
30
+ end
31
+
32
+ # Matches the one in WeakConstructor, but freezes the object
33
+ sig {params(hash: T::Hash[Symbol, T.untyped]).void.checked(:never)}
34
+ def initialize(hash={})
35
+ super
36
+
37
+ freeze
38
+ end
39
+
40
+ # Matches the signature in Props, but raises since this is an immutable struct and only const is allowed
41
+ sig {params(name: Symbol, cls: T.untyped, rules: T.untyped).void}
42
+ def self.prop(name, cls, rules={})
43
+ return super if (cls.is_a?(Hash) && cls[:immutable]) || rules[:immutable]
44
+
45
+ raise "Cannot use `prop` in #{self.name} because it is an immutable struct. Use `const` instead"
46
+ end
47
+
48
+ def with(changed_props)
49
+ raise "Cannot use `with` in #{self.class.name} because it is an immutable struct"
50
+ end
51
+ 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.10152
4
+ version: 0.5.10154
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-12 00:00:00.000000000 Z
11
+ date: 2022-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest