Jake Zimmerman

Results 359 comments of Jake Zimmerman

We have a policy of testing changes to Sorbet against Stripe's codebase before merging them. I've kicked off a test run for the current PR. When the build finishes, I'll...

This method was [deprecated in Ruby 2.6](https://rubyreferences.github.io/rubychanges/2.6.html) and then [removed in 3.2](https://rubyreferences.github.io/rubychanges/3.2.html). Ruby 3.2 will become end of life in Mar 2026, at which point I think we can remove...

Update: the solution here probably involves - refactoring `TypeConstraint` to just track one `UnorderedMap` of the bounds for each `TypeArgumentRef` (instead of two vectors for bounds, plus one vector for...

[another snippet that behaves similarly](https://sorbet.run/#%23%20typed%3A%20strict%0Aextend%20T%3A%3ASig%0A%0Asig%20do%0A%20%20type_parameters%28%3AResult%29%0A%20%20%20%20.params%28%0A%20%20%20%20%20%20make_result%3A%20T.proc.returns%28T.type_parameter%28%3AResult%29%29%2C%0A%20%20%20%20%20%20take_result%3A%20T.proc.params%28result%3A%20T.nilable%28T.type_parameter%28%3AResult%29%29%29.void%2C%0A%20%20%20%20%29%0A%20%20%20%20.returns%28T.type_parameter%28%3AResult%29%29%0Aend%0Adef%20make_then_take_generic%28make_result%3A%2C%20take_result%3A%29%0A%20%20result%20%3D%20make_result.call%0A%20%20take_result.call%28result%29%0A%20%20result%0Aend%0A%0Asig%20do%0A%20%20params%28%0A%20%20%20%20make_result%3A%20T.proc.returns%28Integer%29%2C%0A%20%20%20%20take_result%3A%20T.proc.params%28result%3A%20T.nilable%28Integer%29%29.void%2C%0A%20%20%29%0A%20%20.returns%28Integer%29%0Aend%0Adef%20example%28make_result%3A%2C%20take_result%3A%29%0A%20%20value%20%3D%20make_then_take_generic%28make_result%3A%2C%20take_result%3A%29%0A%0A%20%20value%0Aend%0A) if I simplify it further, it works [example that works](https://sorbet.run/#%23%20typed%3A%20strict%0A%0Aextend%20T%3A%3ASig%0A%0Aclass%20Opus%3A%3AFuture%0A%20%20extend%20T%3A%3AGeneric%0A%20%20ReturnValue%20%3D%20type_member%0Aend%0A%0Asig%20do%0A%20%20type_parameters%28%3AResult%29%0A%20%20%20%20.params%28%0A%20%20%20%20%20%20f%3A%20T.proc.returns%28T.nilable%28T.type_parameter%28%3AResult%29%29%29%2C%0A%20%20%20%20%29%0A%20%20%20%20.returns%28T.type_parameter%28%3AResult%29%29%0Aend%0Adef%20self.shadow_read_non_blocking%28f%3A%29%0A%20%20case%20%28result%20%3D%20f.call%29%0A%20%20when%20nil%20then%20raise%0A%20%20else%20result%0A%20%20end%0Aend%0A%0Asig%20do%0A%20%20params%28%0A%20%20%20%20f%3A%20T.proc.returns%28T.nilable%28Integer%29%29%2C%0A%20%20%29%0A%20%20.returns%28Integer%29%0Aend%0Adef%20self.shadow_read%28f%3A%29%0A%20%20value%20%3D%20shadow_read_non_blocking%28f%3A%29%0A%0A%20%20value%0Aend%0A) so there's something about it being a `T.nilable` inside the parameter of a proc? it...

We have a policy of testing changes to Sorbet against Stripe's codebase before merging them. I've kicked off a test run for the current PR. When the build finishes, I'll...

> but I'm not sure I could reconstruct this from scratch or tell you how it works once I'm just starting at the grammar It helps a lot to -...

Hey, I've already built this: #9531. Unfortunately, it doubles the amount of time it takes Sorbet to typecheck Stripe's codebase, and still has other problems. I would caution you against...

Yeah, this is a tricky question, because it's a balance between strictness and usability. There's an argument to be made that Sorbet should only allow `T.let` to declare a non-nil...

Tests are failing, moving to draft.

I'm not sure that this approach is even necessarily something that we need for the `T.self_type` changes anymore, and it's kind of expensive for aesthetic reasons only in that case....