Jason Carr
Jason Carr
We discussed this during sync. We agreed that the most helpful thing to do would be to report that the type is invalid / uninhabited. This would make compilation easier,...
But in any case, finally get to check all of these boxes on the language checklist: * [X] Your type system is unsound * [X] a proof of same is...
On second inspection, this is not enough; the variables included in the match must also not be consumable: ``` let x: A iso = A match x with | let...
That seems like it would work, although this area does get rather thorny when talking about more complicated expressions than a single variable (we'd likely have to invalidate quite a...
> I think your suggested approach fails too though, since it only considers consumes and not field extraction (and similar)... even if you prevent consumes in the match body, nothing...
> Honestly when you first raised this bug I was surprised that we allowed non-ephemeral match at all. This too. My first thought was that there was no way to...
While we're at it, a related issue that seems like it should be solved together or held until this one is solved: `iso` match bindings can be invalidated by mutation...
Sure: https://playground.ponylang.io/?gist=d0c848aa83aeac85e93dfe5c11bd10ad ``` class A fun string(): String => "A" class B fun string(excited: Bool = false): String => "B" + (if excited then "!" else "" end) actor Main...
If it was just subtyping I would be more amenable to agree (but still strongly prefer allowing it). But here it's a simple method call so it's far more surprising...
I'd say it's still odd that something which supports `.string()` isn't `Stringable`. But in any case we'll discuss in sync