Add the OPAQUE pragma
Implements the OPAQUE
pragma described in https://github.com/ghc-proposals/ghc-proposals/pull/415 which was brought on by discussions in #19553 (closed)
This is work in progress:
-
are either individually buildable or squashed -
have commit messages which describe what they do (referring to [Notes][notes] and tickets using #NNNN
syntax when appropriate) -
have added source comments describing your change. For larger changes you likely should add a [Note][notes] and cross-reference it from the relevant places. -
add a testcase to the testsuite.
Progress:
-
OPAQUE
supported by lexer and parser -
OPAQUE
binders are not specialized: tags along with existing logic forNOINLINE
binders by setting the activation toNeverActive
forOPAQUE
binders. -
OPAQUE
binders are not Cast-W/W transformed -
OPAQUE
binders are not regular-W/W transformed -
Letting callers of OPAQUE
binders know that while it may use its arguments (head-)strict, they will not be unboxed -
Template-Haskell support -
Entry in the user guide -
Entry in the changelog -
Haddock support for the new lexer token: https://github.com/haskell/haddock/pull/1380 -
Test cases