Tags: leifg/sorbet
Tags
Add special message for `Struct` methods w/o sigs (sorbet#6514) * Add special message for `Struct` methods w/o sigs * Make the error message show the method's name w/o a sig * Update tests * Assorted test fixes
parallelize file discovery (sorbet#6530)
make filesystem-accessing `FileOps` functions take `const string &` (s… …orbet#6531)
set `opts.inputFileNames` directly when possible (sorbet#6532)
lazily allocate strings when unpacking the autogen cache (sorbet#6533)
Add signature to Dir.tmpdir (sorbet#6529)
Remove all custom autoload_map and intermediate node generation in au… …toloader (sorbet#6516) * Do not generate autoload shims for "intermediate namespaces" * Remove intermediate directories along file paths of removed files to prevent Zeitwerk from creating dangling modules
Require block arg type in signature (sorbet#6523) * Remove explicit &blk from T::Props.const In a later commit we'll enforce argument types for explicit blocks. Given this block argument isn't used by the `T::Props.const` method, let's remove it rather than declaring an argument type. * Remove explicit &blk from infer/generics/options In a later commit we'll enforce argument types for explicit blocks. Given these block arguments aren't used by the methods, let's remove them rather than declaring argument types. * Add block argument definitions to openssl In a later commit we'll enforce argument types for explicit blocks. This commit updates the openssl RBI to declare argument types for methods that have explicit blocks. * Add tests for arg types not specified * Require block arg type in signature This commit ensures explicit block arguments must be defined in the signature: sig {void} def foo(&blk); end ^^^ error: Malformed `sig`. Type not specified for argument `blk` The following will not produce an error: sig {params(blk: T.proc.void).void} def foo(&blk); end Every method has a "synthetic" block argument if an explicit one isn't defined, for which an argument type **shouldn't** be required in the signature. We were previously determining if a block arg was synthetic or not based on its name reference. However, block arguments always have the name reference `<blk>` whether they are explicitly defined or synthetically added. This might not be intended, but is currently how it works. This commit swaps the name comparison for `isSyntheticBlockArgument`, which has a more robust way of determining if the block is synthetic or not, based on whether a `Loc` exists. Synthetic blocks use `Loc::none()`. * squash! Remove explicit &blk from T::Props.const These block arguments also aren't used by the methods. * fixup! Require block arg type in signature * fixup! Require block arg type in signature
make dependencies in `common/` finer-grained (sorbet#6528)
ENFORCE that owner.kind() == Kind::Class (sorbet#6527) The code currently relies on this being the case, so we may as well ENFORCE it.
PreviousNext