Trevor Elliott

Results 25 issues of Trevor Elliott

When ISLE constructors fail to apply we currently return `None` with no additional information about what rule failed. To help with debugging, this PR adds an additional codegen flag called...

cranelift
isle

#### Input [→ View on sorbet.run](https://sorbet.run/#%23%20typed%3A%20strict%0Aclass%20A%0A%20%20extend%20T%3A%3ASig%0A%0A%20%20sig%20%7Bparams(y%3A%20T%3A%3AHash%5BString%2CString%5D%2C%20z%3A%20String).void%7D%0A%20%20def%20self.bar(y%3D%7B%7D%2C%20z%3A)%0A%20%20end%0Aend%0A%0AA.bar(%7B%20%22a%22%20%3D%3E%20%22foo%22%20%7D)) ```ruby # typed: strict class A extend T::Sig sig {params(y: T::Hash[String,String], z: String).void} def self.bar(y={}, z:) end end A.bar({ "a" => "foo" }) ```...

bug

#### Input [→ View on sorbet.run](https://sorbet.run/#%23%20typed%3A%20true%0A%0Aclass%20A%3B%20end%0Aclass%20B%3B%20end%0Amodule%20M%3B%20end%0A%0Amodule%20Foo%0A%20%20extend%20T%3A%3ASig%0A%20%20extend%20T%3A%3AHelpers%0A%0A%20%20interface!%0A%0A%20%20sig%20%7Babstract.void%7D%0A%20%20def%20foo%3B%20end%0Aend%0A%0Aclass%20X1%0A%20%20extend%20T%3A%3ASig%0A%20%20include%20Foo%0A%20%20sig%20%7Boverride.void%7D%0A%20%20def%20foo%3B%20end%0Aend%0A%0Aclass%20Y%20%3C%20B%3B%20end%0A%0Aclass%20Z%0A%20%20extend%20T%3A%3ASig%0A%0A%20%20include%20M%0A%20%20include%20Foo%0A%0A%20%20sig%20%7Boverride.void%7D%0A%20%20def%20foo%3B%20end%0Aend%0A%0Amodule%20Main%0A%20%20extend%20T%3A%3ASig%0A%0A%20%20TypeArg%20%3D%20T.type_alias%20%7BT.all(T.any(A%2C%20B%2C%20M)%2C%20Foo%2C%20T.any(X1%2C%20Y%2C%20Z))%7D%0A%0A%20%20sig%20%7Bparams(x%3A%20TypeArg).void%7D%0A%20%20def%20self.test(x)%0A%20%20%20%20x.foo%0A%20%20end%0Aend%0A) ```ruby # typed: true class A; end class B; end module M; end module Foo extend T::Sig extend T::Helpers interface! sig {abstract.void} def foo;...

bug
crash

#### Input [sorbet.run](https://sorbet.run/#%23%20typed%3A%20true%0Aclass%20A%0A%20%20extend%20T%3A%3ASig%0A%20%20extend%20T%3A%3AGeneric%0A%20%20extend%20T%3A%3AHelpers%0A%0A%20%20A%20%3D%20type_template(fixed%3A%20Integer)%0A%0A%20%20%40f%20%3D%20T.let(nil%2C%20T.nilable(A))%0Aend) ```ruby class A extend T::Sig extend T::Generic extend T::Helpers A = type_template(fixed: Integer) @f = T.let(nil, T.nilable(A)) end ``` #### Observed output ``` editor.rb:9: Unsupported usage of...

bug
good first issue

Resolve overlap in the ISLE prelude and the x64 inst module by introducing new types that allow better sharing of extractor resuls, or falling back on priorities. This PR makes...

cranelift
cranelift:area:machinst
cranelift:area:x64
isle

#### Feature While working on finishing the migration of the x64 backend to ISLE, I encountered a case where guarding a rule on specific ISA features being enabled caused the...

isle

#### Feature When working on lowerings in ISLE, it's convenient to rely on implicit conversions to de-clutter the implementation. However this can hide bugs, as in the following example: ```scheme...

isle

### `.clif` Test Case ``` function %f1(i64x2, i64x2) -> i32x4 { block0(v0: i64x2, v1: i64x2): v2 = uunarrow v0, v1 return v2 } ``` ### Steps to Reproduce Compile the...

bug
cranelift
cranelift:area:x64

### `.clif` Test Case ``` function %f3(i64x2, i64x2) -> i32x4 { block0(v0: i64x2, v1: i64x2): v2 = snarrow v0, v1 return v2 } function %f3(i64x2, i64x2) -> i32x4 { block0(v0:...

bug
cranelift
cranelift:area:x64

Remove the boolean types from cranelift, and the associated instructions `breduce`, `bextend`, `bconst`, and `bint`. Standardize on using `1`/`0` for the return value from instructions that produce scalar boolean results,...

cranelift
cranelift:meta
cranelift:area:aarch64
cranelift:area:x64