packages feed

ghc-lib-parser-ex 9.8.0.0 → 9.8.0.1

raw patch · 5 files changed

+68/−24 lines, 5 files

Files

ChangeLog.md view
@@ -1,5 +1,8 @@ # Changelog for ghc-lib-parser-ex +## 9.8.0.1 released+- New functions `isWildPat`+ ## 9.8.0.0 released - Companion to `ghc-lib-parser-9.8.1.20231009` 
ghc-lib-parser-ex.cabal view
@@ -1,6 +1,6 @@ cabal-version:  1.18 name:           ghc-lib-parser-ex-version:        9.8.0.0+version:        9.8.0.1 description:    Please see the README on GitHub at <https://github.com/shayne-fletcher/ghc-lib-parser-ex#readme> homepage:       https://github.com/shayne-fletcher/ghc-lib-parser-ex#readme bug-reports:    https://github.com/shayne-fletcher/ghc-lib-parser-ex/issues
src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs view
@@ -83,7 +83,13 @@ isAnyApp x = isApp x || isOpApp x isDo = \case (L _ HsDo{}) -> True; _ -> False isLexeme = \case (L _ HsVar{}) -> True; (L _ HsOverLit{}) -> True; (L _ HsLit{}) -> True; _ -> False+-- 'isLambda' semantics are match form `\p -> e` exclusively+#if ! ( defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8) )+--ghc api >= 9.8.1+isLambda = \case (L _ (HsLam _ LamSingle _)) -> True; _ -> False+#else isLambda = \case (L _ HsLam{}) -> True; _ -> False+#endif #if ! ( defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8) ) -- ghc api >= 9.6.1 isQuasiQuoteExpr = \case (L _ (HsUntypedSplice _ HsQuasiQuote{})) -> True; _ -> False@@ -100,8 +106,12 @@   (L _ HsLam{}) -> True   (L _ ExplicitTuple{}) -> True   (L _ ExplicitList{}) -> True-#if ! ( defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8) )--- ghc api >= 9.4.1++#if ! ( defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8) )+-- ghc api >= 9.8+  (L _ (HsPar _  x )) -> isWHNF x+#elif ! ( defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8) )+-- ghc api >= 9.4   (L _ (HsPar _ _ x _)) -> isWHNF x #else   (L _ (HsPar _ x)) -> isWHNF x@@ -127,11 +137,13 @@ #endif isQuasiQuoteSplice = \case HsQuasiQuote{} -> True; _ -> False --#if ! ( defined (GHC_8_10) || defined (GHC_8_8) )+#if ( defined (GHC_8_10) || defined (GHC_8_8) ) isStrictMatch :: HsMatchContext GhcPs -> Bool-#else+#elif ( defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) ) isStrictMatch :: HsMatchContext RdrName -> Bool+#else+-- ghc > 9.8.1+isStrictMatch :: HsMatchContext (GenLocated SrcSpanAnnN RdrName) -> Bool #endif isStrictMatch = \case FunRhs{mc_strictness=SrcStrict} -> True; _ -> False 
src/Language/Haskell/GhclibParserEx/GHC/Hs/Pat.hs view
@@ -8,6 +8,7 @@   , fromPChar   , hasPFieldsDotDot   , isPFieldWildcard, isPWildcard, isPFieldPun, isPatTypeSig, isPBangPat, isPViewPat+  , isWildPat {- alias for 'isPWildcard' -}   , isSplicePat  ) where @@ -126,6 +127,9 @@ isPWildcard (L _ (WildPat _)) = True #endif isPWildcard _ = False++isWildPat :: LPat GhcPs -> Bool+isWildPat = isPWildcard  #if !( defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8) ) isPFieldPun :: LHsFieldBind GhcPs (LFieldOcc GhcPs) (LPat GhcPs) -> Bool
test/Test.hs view
@@ -17,11 +17,11 @@ import Data.List.Extra import Data.Maybe import Data.Generics.Uniplate.Data-#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2)+#if !(defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8)) import GHC.Data.Bag-#if !defined (GHC_9_2)+#  if !defined (GHC_9_2) import GHC.Driver.Errors.Types-#endif+#  endif import GHC.Types.Error #endif @@ -47,21 +47,26 @@ import Language.Haskell.GhclibParserEx.GHC.Driver.Session import Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader -#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10)+#if !defined (GHC_8_8)+-- ghc >= 8.10 import GHC.Hs #else import HsSyn #endif-#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0)+#if !( defined (GHC_8_10) || defined (GHC_8_8) )+-- ghc >= 9.0 import GHC.Types.SrcLoc import GHC.Driver.Session import GHC.Parser.Lexer-#  if !defined (GHC_9_10) && !defined (GHC_9_8) && !defined (GHC_9_6)+#  if defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0)+--   9.0 <= ghc <= 9.4 import GHC.Utils.Outputable #  endif #  if !defined (GHC_9_0)+--   ghc >= 9.2 import GHC.Driver.Ppr-#    if !defined (GHC_9_10) && !defined (GHC_9_8) && !defined (GHC_9_6) && !defined (GHC_9_4)+#    if defined (GHC_9_2)+--     ghc = 9.2 import GHC.Parser.Errors.Ppr #    endif #  endif@@ -69,6 +74,7 @@ import GHC.Types.Name.Reader import GHC.Types.Name.Occurrence #else+-- ghc < 9.0 import SrcLoc import DynFlags import Lexer@@ -77,15 +83,17 @@ import RdrName import OccName #endif-import GHC.LanguageExtensions.Type #if defined (GHC_8_8)+-- ghc = 8.8 import Bag #endif+import GHC.LanguageExtensions.Type  basicDynFlags :: DynFlags basicDynFlags =   defaultDynFlags fakeSettings-#if !defined (GHC_9_10) && !defined (GHC_9_8) && !defined (GHC_9_6)+#if defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8)+-- ghc <= 9.4                                 fakeLlvmConfig #endif @@ -113,7 +121,8 @@     writeFile relPath contents     return relPath -#if defined(GHC_9_10) || defined (GHC_9_8) || defined(GHC_9_6)+#if !(defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.6 report :: DynFlags -> Bag (MsgEnvelope GhcMessage) -> String report flags msgs = concat [ showSDoc flags msg | msg <- pprMsgEnvelopeBagWithLocDefault msgs ] #elif defined (GHC_9_4)@@ -130,7 +139,8 @@ chkParseResult :: DynFlags -> ParseResult a -> IO () chkParseResult flags = \case     POk s _ -> do-#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4)+#if !(defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.4       let (wrns, errs) = getPsMessages s #elif defined (GHC_9_2)       let (wrns, errs) = getMessages s@@ -138,7 +148,8 @@       let (wrns, errs) = getMessages s flags #endif       when (not (null errs) || not (null wrns)) $-#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4)+#if !(defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.4         assertFailure (           report flags (getMessages (GhcPsMessage <$> wrns)) ++           report flags (getMessages (GhcPsMessage <$> errs))@@ -148,7 +159,8 @@ #else         assertFailure (report flags wrns ++ report flags errs) #endif-#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4)+#if !(defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.4     PFailed s -> assertFailure (report flags $ getMessages (GhcPsMessage <$> snd (getPsMessages s))) #elif defined (GHC_9_2)     PFailed s -> assertFailure (report flags $ fmap pprError (snd (getMessages s)))@@ -263,7 +275,8 @@       exprTest "1 + 2 * 3" flags         (\e ->             assertBool "parse tree not affected" $-#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2)+#if !(defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.2               showSDocUnsafe (showAstData BlankSrcSpan BlankEpAnnotations e) /=               showSDocUnsafe (showAstData BlankSrcSpan BlankEpAnnotations (applyFixities [] e)) #else@@ -275,7 +288,8 @@       case parseDeclaration "f (1 : 2 :[]) = 1" flags of         POk _ d ->           assertBool "parse tree not affected" $-#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2)+#if !(defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.2           showSDocUnsafe (showAstData BlankSrcSpan BlankEpAnnotations d) /=           showSDocUnsafe (showAstData BlankSrcSpan BlankEpAnnotations (applyFixities [] d)) #else@@ -329,12 +343,20 @@   , testCase "isDot" $ test "f . g" $ \case L _ (OpApp _ _ op _) -> assert' $ isDot op; _ -> assertFailure "unexpected"   , testCase "isReturn" $ test "return x" $ \case L _ (HsApp _ f _) -> assert' $ isReturn f; _ -> assertFailure "unexpected"   , testCase "isReturn" $ test "pure x" $ \case L _ (HsApp _ f _) -> assert' $ isReturn f; _ -> assertFailure "unexpected"-#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4)+#if !(defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.8+  , testCase "isSection" $ test "(1 +)" $ \case L _ (HsPar _ x) -> assert' $ isSection x; _ -> assertFailure "unexpected"+#elif !(defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.4   , testCase "isSection" $ test "(1 +)" $ \case L _ (HsPar _ _ x _) -> assert' $ isSection x; _ -> assertFailure "unexpected" #else   , testCase "isSection" $ test "(1 +)" $ \case L _ (HsPar _ x) -> assert' $ isSection x; _ -> assertFailure "unexpected" #endif-#if defined (GHC_9_10) || defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4)+#if !(defined (GHC_9_8) || defined (GHC_9_6) || defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.8+  , testCase "isSection" $ test "(+ 1)" $ \case L _ (HsPar _ x) -> assert' $ isSection x; _ -> assertFailure "unexpected"+#elif !(defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))+-- ghc >= 9.4   , testCase "isSection" $ test "(+ 1)" $ \case L _ (HsPar _ _ x _) -> assert' $ isSection x; _ -> assertFailure "unexpected" #else   , testCase "isSection" $ test "(+ 1)" $ \case L _ (HsPar _ x) -> assert' $ isSection x; _ -> assertFailure "unexpected"@@ -359,6 +381,7 @@   , testCase "isLexeme" $ test "3" $ assert' . isLexeme   , testCase "isLexeme" $ test "f x" $ assert' . not . isLexeme   , testCase "isLambda" $ test "\\x -> 12" $ assert' . isLambda+  , testCase "isLambda" $ test_with_exts [ LambdaCase ]  "\\case _ -> 12" $ assert' . not . isLambda   , testCase "isLambda" $ test "foo" $ assert' . not . isLambda   , testCase "isDotApp" $ test "f . g" $ assert' . isDotApp   , testCase "isDotApp" $ test "f $ g" $ assert' . not . isDotApp@@ -389,7 +412,7 @@   , testCase "isSpliceDecl" $ test "$x" $ assert' . isSpliceDecl . unLoc   , testCase "isSpliceDecl" $ test "f$x" $ assert' . not . isSpliceDecl . unLoc   , testCase "isSpliceDecl" $ test "$(a + b)" $ assert' . isSpliceDecl . unLoc-#if !( defined(GHC_8_8) || defined(GHC_8_10) || defined (GHC_9_0) || defined (GHC_9_2) || defined(GHC_9_4) )+#if !(defined (GHC_9_4) || defined (GHC_9_2) || defined (GHC_9_0) || defined (GHC_8_10) || defined (GHC_8_8))   -- ghc api >= 9.6.1   , testCase "isTypedSplice" $ test "$$foo" $ assert' . isTypedSplice . unLoc   , testCase "isTypedSplice" $ test "$foo" $ assert' . not . isTypedSplice . unLoc@@ -443,6 +466,8 @@   , testCase "fromPChar" $ test "'a'" $ assert' . (== Just 'a') . fromPChar   , testCase "fromPChar" $ test "\"a\"" $ assert' . isNothing . fromPChar   , testCase "isSplicePat" $ test "$(varP pylonExPtrVarName)" $ assert' . isSplicePat+  , testCase "isWildPat" $ test "_" $ assert' . isWildPat+  , testCase "isWildPat" $ test "p@(L _ (VisPat _ pat))" $ assert' . not . isWildPat   ]   where     assert' = assertBool ""