packages feed

ghc-lib-parser-ex 8.10.0.13 → 8.10.0.14

raw patch · 6 files changed

+130/−82 lines, 6 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Language.Haskell.GhclibParserEx.Config: fakeLlvmConfig :: LlvmConfig
- Language.Haskell.GhclibParserEx.Config: fakeSettings :: Settings
+ Language.Haskell.GhclibParserEx.GHC.Settings.Config: fakeLlvmConfig :: LlvmConfig
+ Language.Haskell.GhclibParserEx.GHC.Settings.Config: fakeSettings :: Settings
+ Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader: isSymbolRdrName :: RdrName -> Bool

Files

ChangeLog.md view
@@ -1,16 +1,25 @@ # Changelog for ghc-lib-parser-ex +## 8.10.0.14 released 2020-06-10+- New function `isSymbolRdrName`++## 0.20200601 released 2020-06-01+ ## 8.10.0.13 released 2020-05-31 - Sync `extra` with HLint  ## 8.10.0.12 released 2020-05-31-- New module `GHC.Hs`+- New module `Language.Haskell.GhclibParserEx.GHC.Hs`  ## 8.10.0.11 released 2020-05-18 - Upgrade to `ghc-lib-parser-8.10.1.20200523`  ## 8.10.0.10 released 2020-05-18 - Upgrade to `ghc-lib-parser-8.10.1.20200518`++## Unreleased+- New module+  - `Language.Haskell.GhclibParserEx.GHC.Settings.Config` to replace `Language.Haskell.GhclibParserEx.Config` (which remains for now but deprecated and will be removed in a future release)  ## 8.10.0.9 released 2020-05-16 - New modules
ghc-lib-parser-ex.cabal view
@@ -1,6 +1,6 @@ cabal-version: >= 1.18 name:           ghc-lib-parser-ex-version:        8.10.0.13+version:        8.10.0.14 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@@ -34,9 +34,9 @@  library   exposed-modules:-      Language.Haskell.GhclibParserEx.Config       Language.Haskell.GhclibParserEx.Dump       Language.Haskell.GhclibParserEx.Fixity+      Language.Haskell.GhclibParserEx.GHC.Settings.Config       Language.Haskell.GhclibParserEx.GHC.Driver.Flags       Language.Haskell.GhclibParserEx.GHC.Driver.Session       Language.Haskell.GhclibParserEx.GHC.Hs@@ -51,6 +51,7 @@       Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader       Language.Haskell.GhclibParserEx.GHC.Utils.Outputable       -- Deprecated and will be removed in a future release.+      Language.Haskell.GhclibParserEx.Config       Language.Haskell.GhclibParserEx.Parse       Language.Haskell.GhclibParserEx.Outputable   other-modules:
src/Language/Haskell/GhclibParserEx/Config.hs view
@@ -1,80 +1,9 @@ -- Copyright (c) 2020, Shayne Fletcher. All rights reserved. -- SPDX-License-Identifier: BSD-3-Clause. -{-# OPTIONS_GHC -Wno-missing-fields #-}-{-# LANGUAGE CPP #-}-#include "ghclib_api.h"-module Language.Haskell.GhclibParserEx.Config(-    fakeSettings-  , fakeLlvmConfig+module Language.Haskell.GhclibParserEx.Config+  {-# DEPRECATED "Use Language.Haskell.GhclibParserEx.GHC.Settings.Config instead" #-} (+  module Language.Haskell.GhclibParserEx.GHC.Settings.Config   )-where--import Config-#if defined (GHCLIB_API_811)-import GHC.Driver.Session-import GHC.Utils.Fingerprint-import GHC.Platform-import GHC.Settings-#elif defined (GHCLIB_API_810)-import DynFlags-import Fingerprint-import GHC.Platform-import ToolSettings-#else-import DynFlags-import Fingerprint-import Platform-#endif--fakeSettings :: Settings-fakeSettings = Settings-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)-  { sGhcNameVersion=ghcNameVersion-  , sFileSettings=fileSettings-  , sTargetPlatform=platform-  , sPlatformMisc=platformMisc-  , sPlatformConstants=platformConstants-  , sToolSettings=toolSettings-  }-#else-  { sTargetPlatform=platform-  , sPlatformConstants=platformConstants-  , sProjectVersion=cProjectVersion-  , sProgramName="ghc"-  , sOpt_P_fingerprint=fingerprint0-  }-#endif   where-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)-    toolSettings = ToolSettings {-      toolSettings_opt_P_fingerprint=fingerprint0-      }-    fileSettings = FileSettings {}-    platformMisc = PlatformMisc {}-    ghcNameVersion =-      GhcNameVersion{ghcNameVersion_programName="ghc"-                    ,ghcNameVersion_projectVersion=cProjectVersion-                    }-#endif-    platform =-      Platform{-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)-        platformWordSize = PW8-      , platformMini = PlatformMini {platformMini_arch=ArchUnknown, platformMini_os=OSUnknown}-#else-        platformWordSize=8-      , platformOS=OSUnknown-#endif-      , platformUnregisterised=True-      }-    platformConstants =-      PlatformConstants{pc_DYNAMIC_BY_DEFAULT=False,pc_WORD_SIZE=8}--#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)-fakeLlvmConfig :: LlvmConfig-fakeLlvmConfig = LlvmConfig [] []-#else-fakeLlvmConfig :: (LlvmTargets, LlvmPasses)-fakeLlvmConfig = ([], [])-#endif+import Language.Haskell.GhclibParserEx.GHC.Settings.Config
+ src/Language/Haskell/GhclibParserEx/GHC/Settings/Config.hs view
@@ -0,0 +1,95 @@+-- Copyright (c) 2020, Shayne Fletcher. All rights reserved.+-- SPDX-License-Identifier: BSD-3-Clause.++{-# OPTIONS_GHC -Wno-missing-fields #-}+{-# LANGUAGE CPP #-}+#include "ghclib_api.h"++module Language.Haskell.GhclibParserEx.GHC.Settings.Config(+    fakeSettings+  , fakeLlvmConfig+  )+where++#if defined (GHCLIB_API_811)+import GHC.Settings.Config+import GHC.Driver.Session+import GHC.Utils.Fingerprint+import GHC.Platform+import GHC.Settings+#elif defined (GHCLIB_API_810)+import Config+import DynFlags+import Fingerprint+import GHC.Platform+import ToolSettings+#else+import Config+import DynFlags+import Fingerprint+import Platform+#endif++fakeSettings :: Settings+fakeSettings = Settings+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+  { sGhcNameVersion=ghcNameVersion+  , sFileSettings=fileSettings+  , sTargetPlatform=platform+  , sPlatformMisc=platformMisc+  , sPlatformConstants=platformConstants+  , sToolSettings=toolSettings+  }+#else+  { sTargetPlatform=platform+  , sPlatformConstants=platformConstants+  , sProjectVersion=cProjectVersion+  , sProgramName="ghc"+  , sOpt_P_fingerprint=fingerprint0+  }+#endif+  where+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+    toolSettings = ToolSettings {+      toolSettings_opt_P_fingerprint=fingerprint0+      }+    fileSettings = FileSettings {}+    platformMisc = PlatformMisc {}+    ghcNameVersion =+      GhcNameVersion{ghcNameVersion_programName="ghc"+                    ,ghcNameVersion_projectVersion=cProjectVersion+                    }+#endif+    platform =+      Platform{+#if defined(GHCLIB_API_811)+    -- It doesn't matter what values we write here as these fields are+    -- not referenced for our purposes. However the fields are strict+    -- so we must say something.+        platformByteOrder=LittleEndian+      , platformHasGnuNonexecStack=True+      , platformHasIdentDirective=False+      , platformHasSubsectionsViaSymbols=False+      , platformIsCrossCompiling=False+      , platformLeadingUnderscore=False+      ,+#endif+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+        platformWordSize = PW8+      , platformMini = PlatformMini {platformMini_arch=ArchUnknown, platformMini_os=OSUnknown}+#else+        platformWordSize=8+      , platformOS=OSUnknown+#endif+      , platformUnregisterised=True+      }+    platformConstants =+      PlatformConstants{pc_DYNAMIC_BY_DEFAULT=False,pc_WORD_SIZE=8}++#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)+fakeLlvmConfig :: LlvmConfig+fakeLlvmConfig = LlvmConfig [] []+#else+fakeLlvmConfig :: (LlvmTargets, LlvmPasses)+fakeLlvmConfig = ([], [])+#endif
src/Language/Haskell/GhclibParserEx/GHC/Types/Name/Reader.hs view
@@ -5,7 +5,7 @@ #include "ghclib_api.h"  module Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader(-   occNameStr, rdrNameStr, isSpecial, unqual, fromQual+   occNameStr, rdrNameStr, isSpecial, unqual, fromQual, isSymbolRdrName  ) where @@ -41,3 +41,8 @@ fromQual (L _ (Qual _ x)) = Just x fromQual (L _ (Unqual x)) = Just x fromQual _ = Nothing++-- Test if the reader name is that of an operator (be it a data+-- constructor, variable or whatever).+isSymbolRdrName :: RdrName -> Bool+isSymbolRdrName = isSymOcc . rdrNameOcc
test/Test.hs view
@@ -17,9 +17,9 @@ import Data.List.Extra import Data.Maybe -import Language.Haskell.GhclibParserEx.Config import Language.Haskell.GhclibParserEx.Dump import Language.Haskell.GhclibParserEx.Fixity+import Language.Haskell.GhclibParserEx.GHC.Settings.Config import Language.Haskell.GhclibParserEx.GHC.Parser import Language.Haskell.GhclibParserEx.GHC.Hs import Language.Haskell.GhclibParserEx.GHC.Hs.ExtendInstances@@ -27,6 +27,7 @@ import Language.Haskell.GhclibParserEx.GHC.Hs.Pat import Language.Haskell.GhclibParserEx.GHC.Driver.Flags() import Language.Haskell.GhclibParserEx.GHC.Driver.Session+import Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader  #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810) import GHC.Hs@@ -39,12 +40,16 @@ import GHC.Parser.Lexer import GHC.Utils.Outputable import GHC.Utils.Error+import GHC.Types.Name.Reader+import GHC.Types.Name.Occurrence #else import SrcLoc import DynFlags import Lexer import Outputable import ErrUtils+import RdrName+import OccName #endif import GHC.LanguageExtensions.Type #if defined (GHCLIB_API_808)@@ -330,12 +335,16 @@  nameTests :: TestTree nameTests = testGroup "Name tests"-  [ testCase "Module (1)" $+  [ testCase "modName (1)" $       moduleTest "module Foo.Bar.Baz where" flags         (\n -> assertBool "Unexpected name string" $ modName n == "Foo.Bar.Baz")-  , testCase "Module (2)" $+  , testCase "modName (2)" $       moduleTest "f x = x * 2" flags         (\n -> assertBool "Unexpected name string" $ modName n == "Main")+  , testCase "isSymbolRdrName (1)" $ assertBool "Expected 'True'" $ isSymbolRdrName (mkRdrUnqual (mkVarOcc "+"))+  , testCase "isSymbolRdrName (2)" $ assertBool "Expected 'False'" $ not (isSymbolRdrName (mkRdrUnqual (mkVarOcc "_foo")))+  , testCase "isSymbolRdrName (3)" $ assertBool "Expected 'False'" $ not (isSymbolRdrName (mkRdrUnqual (mkVarOcc "foo'")))+  , testCase "isSymbolRdrName (4)" $ assertBool "Expected 'True'" $ isSymbolRdrName (mkRdrUnqual (mkVarOcc ":+:"))   ]   where     flags = defaultDynFlags fakeSettings fakeLlvmConfig