Jake Zimmerman

Results 275 issues of Jake Zimmerman

#### Input [→ View on sorbet.run](https://sorbet.run/#%23%20typed%3A%20true%0A%0A%23%20Type%20parameters%20don't%20have%20lower%2Bupper%20bounds%20like%0A%23%20type%20members%20do%2C%20which%20means%20that%20they%20don't%20behave%0A%23%20correctly%20in%20certain%20subtyping%20cases.%0A%0Aclass%20A%0A%20%20extend%20T%3A%3ASig%2C%20T%3A%3AGeneric%0A%20%20abstract!%0A%0A%20%20X%20%3D%20type_member%20%7B%20%7Bupper%3A%20T.noreturn%7D%20%7D%0A%0A%20%20sig%20%7B%20returns%28X%29%20%7D%0A%20%20def%20raises%0A%20%20%20%20raise%0A%20%20end%0A%0A%20%20sig%20%7B%20returns%28T.noreturn%29%20%7D%0A%20%20def%20also_raises%0A%20%20%20%20raises%0A%20%20end%0A%0A%20%20sig%20%7B%20type_parameters%28%3AU%29.returns%28T.type_parameter%28%3AU%29%29%20%7D%0A%20%20def%20raises_too%0A%20%20%20%20raises%0A%20%20end%0Aend) ```ruby # typed: true # Type parameters don't have lower+upper bounds like # type members do, which means that they don't behave # correctly...

enhancement

#### Input [→ View on sorbet.run](https://sorbet.run/#%23%20typed%3A%20true%0Aextend%20T%3A%3ASig%0A%0Asig%20%7B%0A%20%20type_parameters%28%3AU%29%0A%20%20%20%20.params%28fn%3A%20T.type_parameter%28%3AU%29%29%0A%20%20%20%20.returns%28T.type_parameter%28%3AU%29%29%0A%7D%0Adef%20id%28fn%29%0A%20%20fn%0Aend%0A%0Asig%20%7B%0A%20%20type_parameters%28%3AU%29%0A%20%20%20%20.params%28fn%3A%20T.proc.params%28arg0%3A%20T.type_parameter%28%3AU%29%29.void%29%0A%20%20%20%20.returns%28T.proc.params%28arg0%3A%20T.type_parameter%28%3AU%29%29.void%29%0A%7D%0Adef%20id_fn%28fn%29%0A%20%20fn%0Aend%0A%0Af%20%3D%20T.let%28-%3E%20%7B%7D%2C%20T.proc.params%28arg0%3A%20T.anything%29.void%29%0AT.reveal_type%28f%29%0Af.call%280%29%0A%0Ag_id%20%3D%20id%28f%29%0AT.reveal_type%28g_id%29%0Ag_id.call%280%29%0A%0Ag_id_fn%20%3D%20id_fn%28f%29%0AT.reveal_type%28g_id_fn%29%0Ag_id_fn.call%280%29%20%23%20%3C-%20no%20reason%20to%20reject%20this) ```ruby # typed: true extend T::Sig sig { type_parameters(:U) .params(fn: T.type_parameter(:U)) .returns(T.type_parameter(:U)) } def id(fn) fn end sig { type_parameters(:U) .params(fn: T.proc.params(arg0: T.type_parameter(:U)).void) .returns(T.proc.params(arg0:...

enhancement

### Problem We find that developers in large Ruby codebases are reluctant to do large codemods that introduce new arguments. They're more likely to adopt solutions that effectively passes information...

enhancement
IDE

### Motivation ### Test plan See included automated tests.

### Motivation If we can make this operate on a `const` tree, we can keep the resolved trees around in LSP mode (and then e.g., use them to service stale...

#### Input [→ View on sorbet.run](https://sorbet.run/#%23%20typed%3A%20strict%0A%0Aclass%20A%0A%20%20include%20Enumerable%0Aend) ```ruby # typed: strict class A include Enumerable end ``` #### Observed output ``` editor.rb:3: Type Elem declared by parent Enumerable must be re-declared...

bug

#### Input [→ View on sorbet.run](https://sorbet.run/#%23%20typed%3A%20true%0Aextend%20T%3A%3ASig%0A%0Asig%20%7Bparams%28x%3A%20Integer%29.void%7D%0Adef%20foo%28x%3A%29%0A%20%20puts%28x%20%2B%201%29%0A%20%20%23%20%20%20%20%5E%20rename%3A%20x%20-%3E%20y%0Aend%0A%0Afoo%28x%3A%200%29) ```ruby # typed: true extend T::Sig sig {params(x: Integer).void} def foo(x:) puts(x + 1) # ^ rename: x -> y end foo(x: 0) ```...

enhancement
IDE

### Motivation Makes it so that getting or setting the package for a specific file does not imply a vector reallocation. ### Test plan Existing tests

> [!NOTE] > This issue remains open until VS Code support is implemented for #9445. - - - - - ### Problem ```ruby class Parent extend T::Helpers abstract! sig {...

enhancement
IDE

#9094 suggests a new LSP method that finds references to all abstract callers when finding references to an implementation of that abstract method. #9445 generalized this to the entire inheritance...

enhancement