Skip to content

Commit 8a6cf47

Browse files
committed
Some roundtrip work.
Turns out using GHC_CPP all the time sorts out LINE pragmas
1 parent d215842 commit 8a6cf47

File tree

7 files changed

+1357
-2653
lines changed

7 files changed

+1357
-2653
lines changed

roundtrip-config/knownfailures.txt

Lines changed: 1327 additions & 2621 deletions
Large diffs are not rendered by default.

src/Language/Haskell/GHC/ExactPrint/ExactPrint.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2476,6 +2476,7 @@ instance ExactPrint (HsLocalBinds GhcPs) where
24762476
when (not $ isEmptyValBinds valbinds) $ setExtraDP (Just anc)
24772477
_ -> return ()
24782478

2479+
debugM $ "exact HsValBinds: starting"
24792480
(an1, valbinds') <- markAnnList an0 $ markAnnotatedWithLayout valbinds
24802481
debugM $ "exact HsValBinds: an1=" ++ showAst an1
24812482
medr <- getExtraDPReturn

src/Language/Haskell/GHC/ExactPrint/Parsers.hs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,8 @@ parseModuleEpAnnsWithGhcCppInternal
292292
parseModuleEpAnnsWithGhcCppInternal cppOptions dflags file = do
293293
let useCpp = GHC.xopt LangExt.Cpp dflags
294294
(fileContents, injectedComments, dflags') <-
295-
if useCpp
295+
-- if useCpp
296+
if True
296297
then do
297298
txt <- GHC.liftIO $ readFileGhc file
298299
let (contents1,lp) = (txt, [])
@@ -430,7 +431,8 @@ initDynFlags file = do
430431
hsc <- GHC.getSession
431432
let logger = GHC.hsc_logger hsc
432433
let unit_env = GHC.hsc_unit_env hsc
433-
(_, src_opts) <- GHC.liftIO $ GHC.getOptionsFromFile dflags0 unit_env parser_opts0 (GHC.supportedLanguagePragmas dflags0) file
434+
let supported_pragmas = "JavaScriptFFI" : GHC.supportedLanguagePragmas dflags0
435+
(_, src_opts) <- GHC.liftIO $ GHC.getOptionsFromFile dflags0 unit_env parser_opts0 supported_pragmas file
434436
(dflags1, _, _) <- GHC.parseDynamicFilePragma logger dflags0 src_opts
435437
-- Turn this on last to avoid T10942
436438
let dflags2 = dflags1 `GHC.gopt_set` GHC.Opt_KeepRawTokenStream

tests/Test.hs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ testDirs :: [FilePath]
4444
testDirs =
4545
case ghcVersion of
4646
GHC910 -> ["pre-ghc910", "ghc910"]
47-
GHC912 -> ["pre-ghc910", "ghc910", "ghc912"]
47+
-- GHC912 -> ["pre-ghc910", "ghc910", "ghc912"]
48+
GHC912 -> ["ghc-cpp"]
4849
-- GHC912 -> ["ghc912"]
4950
-- GHC912 -> ["ghc912-copied"]
5051
-- GHC912 -> ["ghc912", "ghc912-copied"]
@@ -141,14 +142,14 @@ mkTests = do
141142
return $ TestList [
142143
internalTests,
143144
roundTripTests
144-
,
145-
(transformTests libdir)
146-
,
147-
(failingTests libdir)
148-
,
149-
roundTripBalanceCommentsTests
150-
,
151-
roundTripMakeDeltaTests
145+
-- ,
146+
-- (transformTests libdir)
147+
-- ,
148+
-- (failingTests libdir)
149+
-- ,
150+
-- roundTripBalanceCommentsTests
151+
-- ,
152+
-- roundTripMakeDeltaTests
152153
]
153154

154155
failingTests :: LibDir -> Test
@@ -230,8 +231,10 @@ tt' = do
230231
-- mkParserTest libdir "failing" "CppComment.hs"
231232
-- mkParserTest libdir "ghc-cpp" "Scan.hs"
232233
-- mkParserTest libdir "ghc-cpp" "Test1.hs"
233-
-- mkParserTest libdir "ghc-cpp" "WithoutSomeFixpoints.hs"
234-
mkParserTest libdir "ghc-cpp" "HelperMain.hs"
234+
mkParserTest libdir "ghc-cpp" "WithoutSomeFixpoints.hs"
235+
236+
-- mkParserTest libdir "ghc-cpp" "Promise.hs"
237+
-- mkParserTest libdir "ghc-cpp" "Set1.hs"
235238

236239
]
237240

tests/Test/CommonUtils.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ import GHC.Internal.Data.Version (Version, makeVersion)
3737
hackageWorkDir :: FilePath
3838
hackageWorkDir = "./hackage-roundtrip-work"
3939

40+
hackageWorkDirRest :: FilePath
41+
hackageWorkDirRest = "./hackage-roundtrip-work.rest"
42+
4043
-- ---------------------------------------------------------------------
4144

4245
-- | Round trip working dir, can be deleted
@@ -147,8 +150,9 @@ readFileGhc file = do
147150
packages :: IO [(String, Version)]
148151
packages = do
149152
packageDirsFull <- drop 2 <$> getDirectoryContents hackageWorkDir
153+
packageDirsFullRest <- drop 2 <$> getDirectoryContents hackageWorkDirRest
150154
let cond c = c == '-'
151-
let packageDirs = map (\p -> break cond $ reverse p) packageDirsFull
155+
let packageDirs = map (\p -> break cond $ reverse p) (packageDirsFull ++ packageDirsFullRest)
152156
let pp = map (\(v,n) -> (dashToLower $ reverse (drop 1 n), makeVersion $ parseVersion $ reverse v)) packageDirs
153157
return pp
154158

tests/examples/ghc-cpp/Set1.hs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
1-
{-# LANGUAGE GHC_CPP #-}
21
module ADP.Fusion.SynVar.Indices.Set1 where
32

4-
instance
5-
( IndexHdr s x0 i0 us (BS1 k I) cs c is (BS1 k I)
6-
) => AddIndexDense s (us:.BS1 k I) (cs:.c) (is:.BS1 k I) where
7-
addIndexDenseGo (cs:.c) (vs:.IVariable rb) (lbs:._) (ubs:._) (us:.BS1 uSet uBnd) (is:.BS1 set bnd)
8-
= flatten mk step . addIndexDenseGo cs vs lbs ubs us is . assert (rb==1) -- only works with one element
9-
where mk (SvS s t y') =
3+
instance AddIndexDense s where
4+
addIndexDenseGo = flatten
5+
where mk =
106
let
117
in
12-
#if ADPFUSION_DEBUGOUTPUT
13-
traceShow (set,bnd,rb) $
14-
#endif
15-
return (SvS s t y', Just $ set `clearBit` getBoundary bnd)
16-
step (_, Nothing) = return Done
8+
-- comment
9+
return ()
10+
step = return Done
1711

tests/examples/ghc-cpp/WithoutSomeFixpoints.hs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
1-
-- Do not edit! Automatically created with doctest-extract from src/Combinatorics/Permutation/WithoutSomeFixpoints.hs
2-
{-# LANGUAGE CPP #-}
31
{-# LINE 5 "src/Combinatorics/Permutation/WithoutSomeFixpoints.hs" #-}
42

53
module Test.Combinatorics.Permutation.WithoutSomeFixpoints where
64

75
import qualified Test.DocTest.Driver as DocTest
86

97
{-# LINE 6 "src/Combinatorics/Permutation/WithoutSomeFixpoints.hs" #-}
10-
import qualified Combinatorics.Permutation.WithoutSomeFixpoints as PermWOFP
11-
import qualified Combinatorics as Comb
12-
import qualified Test.QuickCheck as QC
13-
import Control.Applicative ((<$>))
148
import Data.List (nub)
159

1610
genPermutationWOFP :: QC.Gen (Int, String)

0 commit comments

Comments
 (0)