Opened 6 months ago

Last modified 6 months ago

#14471 new bug

Certain do blocks cause TH to barf when ApplicativeDo is enabled

Reported by: lexi.lambda Owned by:
Priority: normal Milestone:
Component: Template Haskell Version: 8.2.1
Keywords: ApplicativeDo Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: Compile-time crash or panic Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:

Description

The following program fails with an error:

{-# LANGUAGE ApplicativeDo #-}
{-# LANGUAGE TemplateHaskell #-}

main = $([|do
  return ()
  return ()
  return ()|])
Exotic.hs:4:12: error:
    Exotic statement not (yet) handled by Template Haskell
      [return ();
       return (),
       return ()]

It only happens when ApplicativeDo is enabled.

Furthermore, while this example is extremely minimal, this issue isn’t restricted to ApplicativeDo’s special handling of return. The following example produces the same error:

{-# LANGUAGE ApplicativeDo #-}
{-# LANGUAGE TemplateHaskell #-}

main = $([|do
  getLine
  getLine
  getLine|])
Exotic.hs:4:12: error:
    Exotic statement not (yet) handled by Template Haskell
      [getLine;
       getLine,
       getLine]

This doesn’t happen with fewer than three statements in the do block, but it does happen with more.

Change History (1)

comment:1 Changed 6 months ago by lexi.lambda

Keywords: ApplicativeDo added
Note: See TracTickets for help on using tickets.