`-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
impliesStrictData
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
== ?