diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,8 @@
 # Changelog for ghc-lib-parser-ex
 
+## 8.10.0.7 released 2020-05-13
+- New function `fixitiesFromModule`
+
 ## 8.10.0.6 released 2020-05-05
 - Bugfix in `parsePragmasIntoDynFlags` that meant that default enabled/disabled extensions subsequently disabled/enabled via pragma weren't getting disabled/enabled
 
diff --git a/ghc-lib-parser-ex.cabal b/ghc-lib-parser-ex.cabal
--- a/ghc-lib-parser-ex.cabal
+++ b/ghc-lib-parser-ex.cabal
@@ -1,6 +1,6 @@
 cabal-version: >= 1.18
 name:           ghc-lib-parser-ex
-version:        8.10.0.6
+version:        8.10.0.7
 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
diff --git a/src/Language/Haskell/GhclibParserEx/Fixity.hs b/src/Language/Haskell/GhclibParserEx/Fixity.hs
--- a/src/Language/Haskell/GhclibParserEx/Fixity.hs
+++ b/src/Language/Haskell/GhclibParserEx/Fixity.hs
@@ -11,6 +11,7 @@
 
 module Language.Haskell.GhclibParserEx.Fixity(
     applyFixities
+  , fixitiesFromModule
   , preludeFixities, baseFixities
   , infixr_, infixl_, infix_, fixity
   ) where
@@ -206,3 +207,15 @@
 
 fixity :: FixityDirection -> Int -> [String] -> [(String, Fixity)]
 fixity a p = map (,Fixity (SourceText "") p a)
+
+#if defined (GHCLIB_API_811)
+fixitiesFromModule :: Located HsModule -> [(String, Fixity)]
+#else
+fixitiesFromModule :: Located (HsModule GhcPs) -> [(String, Fixity)]
+#endif
+fixitiesFromModule (L _ (HsModule _ _ _ decls _ _)) = concatMap f decls
+  where
+    f :: LHsDecl GhcPs -> [(String, Fixity)]
+    f (L _ (SigD _ (FixSig _ (FixitySig _ ops (Fixity _ p dir))))) =
+          fixity dir p (map (occNameString. rdrNameOcc . unLoc) ops)
+    f _ = []
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -171,6 +171,12 @@
           showSDocUnsafe (showAstData BlankSrcSpan d) /=
           showSDocUnsafe (showAstData BlankSrcSpan (applyFixities [] d))
         PFailed{} -> assertFailure "parse error"
+  , testCase "fixitiesFromModule" $ do
+      let flags = defaultDynFlags fakeSettings fakeLlvmConfig
+      case parseModule "infixl 4 <*!" flags of
+        POk _ m ->
+          assertBool "one fixity expected" $ not (null (fixitiesFromModule m))
+        PFailed{} -> assertFailure "parse error"
   ]
 
 extendInstancesTests :: TestTree
@@ -290,5 +296,22 @@
       assertBool "no extensions disabled" (null ds)
       assertBool "two extensions enabled" $ DeriveFunctor `elem` es && DeriveFoldable `elem` es
   , testCase "check instance Bounded Language" $ assertBool "enumerate is null" (not (null (enumerate @Language)))
-  , testCase "check instace Ord Extension" $ assertBool "minBound >= maxBound" (minBound @Extension < maxBound @Extension)
+  , testCase "check instance Ord Extension" $ assertBool "minBound >= maxBound" (minBound @Extension < maxBound @Extension)
+  , testCase "disable via pragma" $ withTempDir $ \tmpDir -> do
+      foo <- makeFile (tmpDir </> "Foo.hs") $ unlines
+        [ "{-# LANGUAGE NoStarIsType #-}"
+        , "{-# LANGUAGE ExplicitNamespaces #-}"
+        , "import GHC.TypeLits(KnownNat, type (+), type (*))"
+        ]
+      s <- readFile' foo
+      -- If 'StarIsType' ends up enabled after
+      -- 'parsePragmasIntoDynflags' has done its work, we'll get a
+      -- parse error (see
+      -- https://github.com/ndmitchell/hlint/issues/971).
+      parsePragmasIntoDynFlags flags ([StarIsType], []) foo s >>= \case
+        Left msg -> assertFailure msg
+        Right flags -> chkParseResult report flags $ parseFile foo flags s
   ]
+  where
+    flags = unsafeGlobalDynFlags
+    report flags msgs = concat [ showSDoc flags msg | msg <- pprErrMsgBagWithLoc msgs ]
