X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fcmm%2FCmmLex.x;h=50e9aea9e8832aca034dd6ede992054f78e271e4;hp=22741f86469b43cd7dc919343166409b1edfa83c;hb=5289f5d85610f71625a439747a09384876655eb5;hpb=24d49415d2833a1338dfb5fd8c5c1c84df6c282b diff --git a/compiler/cmm/CmmLex.x b/compiler/cmm/CmmLex.x index 22741f8..50e9aea 100644 --- a/compiler/cmm/CmmLex.x +++ b/compiler/cmm/CmmLex.x @@ -11,8 +11,9 @@ ----------------------------------------------------------------------------- { +{-# LANGUAGE BangPatterns #-} {-# OPTIONS -Wwarn -w #-} --- The above warning supression flag is a temporary kludge. +-- The above -Wwarn supression flag is a temporary kludge. -- While working on this module you are encouraged to remove it and fix -- any warnings in the module. See -- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings @@ -22,8 +23,6 @@ module CmmLex ( CmmToken(..), cmmlex, ) where -#include "HsVersions.h" - import Cmm import Lexer @@ -76,7 +75,7 @@ $white_no_nl+ ; -- single-line line pragmas, of the form -- # "" \n $digit+ { setLine line_prag1 } - \" ($printable # \")* \" { setFile line_prag2 } + \" [^\"]* \" { setFile line_prag2 } .* { pop } <0> { @@ -269,7 +268,7 @@ tok_string str = CmmT_String (read str) setLine :: Int -> Action setLine code span buf len = do let line = parseUnsignedInteger buf len 10 octDecDigit - setSrcLoc (mkSrcLoc (srcSpanFile span) (fromIntegral line - 1) 0) + setSrcLoc (mkSrcLoc (srcSpanFile span) (fromIntegral line - 1) 1) -- subtract one: the line number refers to the *following* line -- trace ("setLine " ++ show line) $ do popLexState @@ -300,7 +299,7 @@ lexToken = do sc <- getLexState case alexScan inp sc of AlexEOF -> do let span = mkSrcSpan loc1 loc1 - setLastToken span 0 0 + setLastToken span 0 return (L span CmmT_EOF) AlexError (loc2,_) -> do failLocMsgP loc1 loc2 "lexical error" AlexSkip inp2 _ -> do @@ -309,7 +308,7 @@ lexToken = do AlexToken inp2@(end,buf2) len t -> do setInput inp2 let span = mkSrcSpan loc1 end - span `seq` setLastToken span len len + span `seq` setLastToken span len t span buf len -- -----------------------------------------------------------------------------