Fixed the occam parser to allow comments after pragmas on the same line
One of the more recent cgtests has a comment after a pragma
This commit is contained in:
parent
a4f0e85c72
commit
49ea4f053e
|
@ -1248,17 +1248,27 @@ pragma = do Pragma p <- genToken isPragma
|
||||||
m <- getPosition >>* sourcePosToMeta
|
m <- getPosition >>* sourcePosToMeta
|
||||||
case matchRegex (mkRegex "^SHARED +(.*)") p of
|
case matchRegex (mkRegex "^SHARED +(.*)") p of
|
||||||
Just [varsRaw] ->
|
Just [varsRaw] ->
|
||||||
|
let varsRawNoComment = if "--" `isInfixOf` varsRaw
|
||||||
|
then chopTrailingSpaces $ chopComment [] varsRaw
|
||||||
|
else chopTrailingSpaces varsRaw
|
||||||
|
in
|
||||||
mapM_ (\var ->
|
mapM_ (\var ->
|
||||||
do st <- get
|
do st <- get
|
||||||
A.Name _ n <- case lookup var (csLocalNames st) of
|
A.Name _ n <- case lookup var (csLocalNames st) of
|
||||||
Nothing -> dieP m $ "name " ++ var ++ " not defined"
|
Nothing -> dieP m $ "name " ++ var ++ " not defined"
|
||||||
Just def -> return $ fst def
|
Just def -> return $ fst def
|
||||||
modify $ \st -> st {csNameAttr = Map.insert n NameShared (csNameAttr st)})
|
modify $ \st -> st {csNameAttr = Map.insert n NameShared (csNameAttr st)})
|
||||||
(splitRegex (mkRegex ",") varsRaw)
|
(splitRegex (mkRegex ",") varsRawNoComment)
|
||||||
Nothing -> warnP m WarnUnknownPreprocessorDirective $
|
Nothing -> warnP m WarnUnknownPreprocessorDirective $
|
||||||
"Unknown PRAGMA: " ++ p
|
"Unknown PRAGMA: " ++ p
|
||||||
eol
|
eol
|
||||||
where
|
where
|
||||||
|
chopComment prev ('-':'-':_) = prev
|
||||||
|
chopComment prev (x:xs) = chopComment (prev++[x]) xs
|
||||||
|
chopComment prev [] = prev
|
||||||
|
|
||||||
|
chopTrailingSpaces = reverse . dropWhile (`elem` " \t") . reverse
|
||||||
|
|
||||||
isPragma (Token _ p@(Pragma {})) = Just p
|
isPragma (Token _ p@(Pragma {})) = Just p
|
||||||
isPragma _ = Nothing
|
isPragma _ = Nothing
|
||||||
--}}}
|
--}}}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user