
#15550: Names of RULES aren't quoted in -ddump-splices -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: 8.6.1 Component: Template | Version: 8.4.3 Haskell | Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- Compile the following program: {{{#!hs {-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -ddump-splices #-} module Bug where $([d| myId :: a -> a myId x = x {-# NOINLINE [1] myId #-} {-# RULES "myId" forall x. myId x = x #-} |]) }}} {{{ $ /opt/ghc/8.4.3/bin/ghci Bug.hs GHCi, version 8.4.3: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/ryanglscott/.ghci [1 of 1] Compiling Bug ( Bug.hs, interpreted ) Bug.hs:(5,3)-(9,6): Splicing declarations [d| {-# RULES "myId" forall x_a1xu. myId_a1xr x_a1xu = x_a1xu #-} myId_a1xr :: a_a1xs -> a_a1xs myId_a1xr x_a1xt = x_a1xt {-# NOINLINE [1] myId_a1xr #-} |] ======> myId_a49f :: a_a49e -> a_a49e myId_a49f x_a49g = x_a49g {-# NOINLINE [1] myId_a49f #-} {-# RULES myId forall x_a49h. myId_a49f x_a49h = x_a49h #-} Ok, one module loaded. }}} Notice how in the bottom of the `-ddump-splices` output, the name of the rewrite rule for `myId` isn't surrounded by double quotes, thus making it syntactically invalid. That is, it's printed as: {{{#!hs {-# RULES myId forall x_a49h. myId_a49f x_a49h = x_a49h #-} }}} Whereas it should be: {{{#!hs {-# RULES "myId" forall x_a49h. myId_a49f x_a49h = x_a49h #-} }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15550 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler