Skip to content

`-XStrict -XNoStrict` is not neutral

I assumed we already had a ticket about this, but it appears we have not.

I'm not saying this is a necessarily a bug in the implementation; but we should make sure this is properly documented in the user's guide, and ideally justify why it's done this way rather than the alternatives:

As described in StrictPragma,

Strict implies StrictData

Currently however the inverse case does not hold, i.e. NoStrict does *not* imply NoStrictData

This has the surprising property (assuming these were left-most flags on the CLI) that

  • -XStrict -XNoStrict == -XStrictData

  • -XStrictData -XNoStrict == -XStrictData

However, if -XNoStrict was to naively imply -XNoStrictData, we'd have the properties

  • -XStrict -XNoStrict == ∅

  • -XStrictData -XNoStrict == ∅

This might be a bit less confusing; another variant would be

  • -XStrict -XNoStrict == ∅

  • -XStrictData -XNoStrict == -XStrictData

(strictly speaking, it's not ∅ unless it's these are the left-most flags; also, any -XNo still has a cancellation effect on any flags occuring to the left on the CLI)

Btw, I'm not sure what the following means:

  • -XStrict -XNoStrictData == ?
Edited by Herbert Valerio Riedel
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information