sorbet-runtime 0.5.6154 → 0.5.6183

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a915933d2e99d7ee9b339823acc3ee771d3c3ba872f6c71e48225ef137b58fc
4
- data.tar.gz: 72b97622861286a88874e6fddb1bd120c14bd2ef89439c927b6a5cafbace8722
3
+ metadata.gz: 3f10bb755baf6111daf94e8829dc8b4946ffd148d7e9d1c796e15781e39d1c58
4
+ data.tar.gz: 1c229e453ad4c80d55f32468c6ce2e45ea37759c06a552d83138d72608cdb341
5
5
  SHA512:
6
- metadata.gz: d32b13f459ff38b688a86bcfcb3a96c693f805dcf4df4c31bb30f27a13f00f927e33260c03eb6b21ca5eba6833d0dc07c36e0423ed36e12e150011aacc803723
7
- data.tar.gz: 4909e6d536f013218fe60a0ce9ba7ccae250505b0439e4de9d8d5ad431696327db518b6cb304e3437f9237b209e33ea18cdc08d28e98ae54d3a9d466705ba7ae
6
+ metadata.gz: 4df95110f61d97d85f6933eb4d17949575ac5b32c2b32ac9c60a751be12f797989a31f0e646964344fce8ac7c5d8f5bd3879988e9109e8133b9118c03b6db9b1
7
+ data.tar.gz: eafb2fad752c32b204ae1d1f5653e5fd07400621927e6a15a1a98670746c89eaf0238e44332671666534f49ee4f16fd2b34d5696529942f38307007bc1640e2f
@@ -42,6 +42,34 @@ module T::Configuration
42
42
  T::Private::Methods.set_final_checks_on_hooks(false)
43
43
  end
44
44
 
45
+ @include_value_in_type_errors = true
46
+ # Whether to include values in TypeError messages.
47
+ #
48
+ # Including values is useful for debugging, but can potentially leak
49
+ # sensitive information to logs.
50
+ #
51
+ # @return [T::Boolean]
52
+ def self.include_value_in_type_errors?
53
+ @include_value_in_type_errors
54
+ end
55
+
56
+ # Configure if type errors excludes the value of the problematic type.
57
+ #
58
+ # The default is to include values in type errors:
59
+ # TypeError: Expected type Integer, got String with value "foo"
60
+ #
61
+ # When values are excluded from type errors:
62
+ # TypeError: Expected type Integer, got String
63
+ def self.exclude_value_in_type_errors
64
+ @include_value_in_type_errors = false
65
+ end
66
+
67
+ # Opposite of exclude_value_in_type_errors.
68
+ # (Including values in type errors is the default)
69
+ def self.include_value_in_type_errors
70
+ @include_value_in_type_errors = true
71
+ end
72
+
45
73
  # Configure the default checked level for a sig with no explicit `.checked`
46
74
  # builder. When unset, the default checked level is `:always`.
47
75
  #
@@ -363,6 +391,27 @@ module T::Configuration
363
391
  @scalar_types || @default_scalar_types
364
392
  end
365
393
 
394
+ # Guard against overrides of `name` or `to_s`
395
+ MODULE_NAME = Module.instance_method(:name)
396
+ private_constant :MODULE_NAME
397
+
398
+ @default_module_name_mangler = ->(type) {MODULE_NAME.bind(type).call}
399
+ @module_name_mangler = nil
400
+
401
+ def self.module_name_mangler
402
+ @module_name_mangler || @default_module_name_mangler
403
+ end
404
+
405
+ # Set to override the default behavior for converting types
406
+ # to names in generated code. Used by the runtime implementation
407
+ # associated with `--stripe-packages` mode.
408
+ #
409
+ # @param [Lambda, Proc, nil] value Proc that converts a type (Class/Module)
410
+ # to a String (pass nil to reset to default behavior)
411
+ def self.module_name_mangler=(handler)
412
+ @module_name_mangler = handler
413
+ end
414
+
366
415
  # Temporarily disable ruby warnings while executing the given block. This is
367
416
  # useful when doing something that would normally cause a warning to be
368
417
  # emitted in Ruby verbose mode ($VERBOSE = true).
@@ -177,13 +177,9 @@ module T::Props
177
177
  end
178
178
  end
179
179
 
180
- # Guard against overrides of `name` or `to_s`
181
- MODULE_NAME = T.let(Module.instance_method(:name), UnboundMethod)
182
- private_constant :MODULE_NAME
183
-
184
180
  sig {params(type: Module).returns(T.nilable(String)).checked(:never)}
185
181
  private_class_method def self.module_name(type)
186
- MODULE_NAME.bind(type).call
182
+ T::Configuration.module_name_mangler.call(type)
187
183
  end
188
184
  end
189
185
  end
@@ -119,8 +119,10 @@ module T::Types
119
119
  # Default inspect behavior of, eg; `#<Object:0x0...>` is ugly; just print the hash instead, which is more concise/readable.
120
120
  if obj.method(:inspect).owner == Kernel
121
121
  "type #{obj.class} with hash #{obj.hash}"
122
- else
122
+ elsif T::Configuration.include_value_in_type_errors?
123
123
  "type #{obj.class} with value #{T::Utils.string_truncate_middle(obj.inspect, 30, 30)}"
124
+ else
125
+ "type #{obj.class}"
124
126
  end
125
127
  rescue StandardError, SystemStackError
126
128
  "type #{obj.class} with unprintable value"
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.6154
4
+ version: 0.5.6183
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-12 00:00:00.000000000 Z
11
+ date: 2020-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest