diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2015-11-12 20:33:39 +0100 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2015-11-12 20:33:39 +0100 |
commit | 5d6133bec0f682e86ee31bbdb6d82e6fb2ede8f7 (patch) | |
tree | 48af103f30112be15049e99c63e8d0f02289ab40 /testsuite/tests/ghc-api | |
parent | ac2e1e57ac0755af0d296c072584d27e4e29f9b1 (diff) | |
download | haskell-5d6133bec0f682e86ee31bbdb6d82e6fb2ede8f7.tar.gz |
Ignore comments in getOptions
When Opt_KeepRawTokenStream is turned on then getOptions fails to find
the language pragmas which can cause unexpected parse errors when using
the GHC API. A simple solution is to make it skip over any comments in
the token
stream.
Test Plan: ./validate
Reviewers: austin, bgamari
Subscribers: alanz, thomie
Differential Revision: https://phabricator.haskell.org/D1444
GHC Trac Issues: #10942
Diffstat (limited to 'testsuite/tests/ghc-api')
-rw-r--r-- | testsuite/tests/ghc-api/T10942.hs | 22 | ||||
-rw-r--r-- | testsuite/tests/ghc-api/T10942.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/ghc-api/T10942_A.hs | 16 | ||||
-rw-r--r-- | testsuite/tests/ghc-api/all.T | 3 |
4 files changed, 42 insertions, 0 deletions
diff --git a/testsuite/tests/ghc-api/T10942.hs b/testsuite/tests/ghc-api/T10942.hs new file mode 100644 index 0000000000..6fbf1d5bd3 --- /dev/null +++ b/testsuite/tests/ghc-api/T10942.hs @@ -0,0 +1,22 @@ +module Main where + +import DynFlags +import GHC + +import Control.Monad.IO.Class (liftIO) +import System.Environment +import HeaderInfo +import Outputable +import StringBuffer + +main :: IO () +main = do + [libdir] <- getArgs + runGhc (Just libdir) $ do + dflags <- getSessionDynFlags + let dflags' = dflags `gopt_set` Opt_KeepRawTokenStream + `gopt_set` Opt_Haddock + filename = "T10942_A.hs" + setSessionDynFlags dflags' + stringBuffer <- liftIO $ hGetStringBuffer filename + liftIO $ print (map unLoc (getOptions dflags' stringBuffer filename)) diff --git a/testsuite/tests/ghc-api/T10942.stdout b/testsuite/tests/ghc-api/T10942.stdout new file mode 100644 index 0000000000..40ead27596 --- /dev/null +++ b/testsuite/tests/ghc-api/T10942.stdout @@ -0,0 +1 @@ +["-XFlexibleInstances","-XCPP"] diff --git a/testsuite/tests/ghc-api/T10942_A.hs b/testsuite/tests/ghc-api/T10942_A.hs new file mode 100644 index 0000000000..359961c8d9 --- /dev/null +++ b/testsuite/tests/ghc-api/T10942_A.hs @@ -0,0 +1,16 @@ +{- + +A normal comment, to check if we can still pick up the CPP directive after it. + +-} +-- Check that we can parse a file with leading comments + +-- ^ haddock +-- * haddock +-- | haddock +-- $ haddock +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE CPP #-} +module T10942 where + +main = return () diff --git a/testsuite/tests/ghc-api/all.T b/testsuite/tests/ghc-api/all.T index c4783ea15d..dee74b7e94 100644 --- a/testsuite/tests/ghc-api/all.T +++ b/testsuite/tests/ghc-api/all.T @@ -14,3 +14,6 @@ test('T9595', extra_run_opts('"' + config.libdir + '"'), test('T10508_api', extra_run_opts('"' + config.libdir + '"'), compile_and_run, ['-package ghc']) +test('T10942', extra_run_opts('"' + config.libdir + '"'), + compile_and_run, + ['-package ghc']) |