Alternative to isTypeLevPoly

Krzysztof Gogolewski krz.gogolewski at gmail.com
Thu Sep 15 15:36:01 UTC 2022


The type argument to LitRubbish should be a fixed RuntimeRep. If it is
not, you can file a bug. I have fixed a related bug in f435d55fe969e7.

Krzysztof

On Thu, Sep 15, 2022 at 1:12 PM Csaba Hruska <csaba.hruska at gmail.com> wrote:
>
> I've investigated a bit more. You are right `typeHasFixedRuntimeRep` works fine, the panic was caused by querying the representation type of `LitRubbish` type argument. In some cases `getRuntimeRep` causes GHC panic for `LitRubbish` type arguments.
> I did solve the issue with special casing the LitRubbish type argument handling by using only the `runtimeRepPrimRep` function. In the general case I tested the type with `isUnboxedTupleType` and `isUnboxedSumType` which rely on `getRuntimeRep`.
> Thanks for the tips and feedback.
> Regards,
> Csaba
>
> On Wed, Sep 14, 2022 at 6:44 PM Sam Derbyshire <sam.derbyshire at gmail.com> wrote:
>>
>> Hmm, that's strange, both isTypeLevPoly and typeHasFixedRuntimeRep have the same precondition: the kind of the type is of the form TYPE rep. So they should panic in the same circumstances. Can you give a bit more information? What panics are you running into?
>>
>> On Wed, 14 Sept 2022 at 18:40, Csaba Hruska <csaba.hruska at gmail.com> wrote:
>>>
>>> Hi,
>>> Thanks for the tip, I've tried it and it behaves differently than isTypeLevPoly. I can get panic when querying the reptype for fixed reptypes. That means isTypeLevPoly semantically is not the same as the negated result of typeHasFixedRuntimeRep.
>>>
>>> On Wed, 14 Sep 2022, 18:19 Sam Derbyshire, <sam.derbyshire at gmail.com> wrote:
>>>>
>>>> Hi Csaba,
>>>>
>>>> I think you want the function typeHasFixedRuntimeRep from GHC.Core.Type.
>>>>
>>>> Best,
>>>>
>>>> Sam
>>>>
>>>> On Wed, 14 Sept 2022 at 18:12, Csaba Hruska <csaba.hruska at gmail.com> wrote:
>>>>>
>>>>> Hello GHC Devs,
>>>>>
>>>>> I've noticed that the `isTypeLevPoly` function has been removed from GHC since 9.4.
>>>>> I used it to decide the validity of querying the representation type of every value in the STG IR.
>>>>> It was mandatory to prevent GHC panics, because there are a lot of partial functions in GHC.
>>>>> Is there an alternative to `isTypeLevPoly` in GHC 9.4?
>>>>>
>>>>> Best regards,
>>>>> Csaba Hruska
>>>>> _______________________________________________
>>>>> ghc-devs mailing list
>>>>> ghc-devs at haskell.org
>>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


More information about the ghc-devs mailing list