Skip to content

Add the OPAQUE pragma

Christiaan Baaij requested to merge christiaanb/ghc:opaque_pragma into master

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 for NOINLINE binders by setting the activation to NeverActive for OPAQUE 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
Edited by Christiaan Baaij

Merge request reports