Fix inverted position pragma flag in parser API
authorAlec Theriault <alec.theriault@gmail.com>
Tue, 29 Jan 2019 06:11:08 +0000 (22:11 -0800)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Sun, 10 Feb 2019 07:39:06 +0000 (02:39 -0500)
The behviour of `lexTokenStream` around position pragma was
accidentally inverted in 469fe6133646df5568c9486de2202124cb734242.
This fixes that bug.

This also unbreaks #16239.

compiler/parser/Lexer.x

index 8219390..1e27158 100644 (file)
@@ -2900,7 +2900,7 @@ lexTokenStream :: StringBuffer -> RealSrcLoc -> DynFlags -> ParseResult [Located
 lexTokenStream buf loc dflags = unP go initState{ options = opts' }
     where dflags' = gopt_set (gopt_unset dflags Opt_Haddock) Opt_KeepRawTokenStream
           initState@PState{ options = opts } = mkPState dflags' buf loc
-          opts' = opts{ pExtsBitmap = xbit UsePosPragsBit .|. pExtsBitmap opts }
+          opts' = opts{ pExtsBitmap = complement (xbit UsePosPragsBit) .&. pExtsBitmap opts }
           go = do
             ltok <- lexer False return
             case ltok of