summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Zimmerman <alan.zimm@gmail.com>2020-09-20 19:25:22 +0100
committerAlan Zimmerman <alan.zimm@gmail.com>2020-09-20 19:25:22 +0100
commitf91ea170d86fab45a9f4658b8b02f4adede9aef7 (patch)
tree4aa407ee0580f7b0bc5e872d2dbf8537737e2cc9
parent23f34f7be335f94dcebb7459008d4b1cfa926e3e (diff)
downloadhaskell-wip/az/ghc-9.0-anns-2.tar.gz
API Annotations: Fix annotation for strictnesswip/az/ghc-9.0-anns-2
This adds the correct location for a ! or ~. It is a reconstruction of 3ccc80ee6120db7ead579c6e9fc5c2164f3bf575, some of which got mangled in the backport process.
-rw-r--r--compiler/GHC/Parser/PostProcess.hs17
1 files changed, 11 insertions, 6 deletions
diff --git a/compiler/GHC/Parser/PostProcess.hs b/compiler/GHC/Parser/PostProcess.hs
index 5e7c9d8f04..e591f241d0 100644
--- a/compiler/GHC/Parser/PostProcess.hs
+++ b/compiler/GHC/Parser/PostProcess.hs
@@ -1374,19 +1374,24 @@ pBangTy lt@(L l1 _) xs =
Nothing -> (False, lt, pure (), xs)
Just (l2, anns, prag, unpk, xs') ->
let bl = combineSrcSpans l1 l2
- bt = addUnpackedness (prag, unpk) lt
- in (True, L bl bt, addAnnsAt bl anns, xs')
+ (anns2, bt) = addUnpackedness (prag, unpk) lt
+ in (True, L bl bt, addAnnsAt bl (anns ++ anns2), xs')
mkBangTy :: SrcStrictness -> LHsType GhcPs -> HsType GhcPs
mkBangTy strictness =
HsBangTy noExtField (HsSrcBang NoSourceText NoSrcUnpack strictness)
-addUnpackedness :: (SourceText, SrcUnpackedness) -> LHsType GhcPs -> HsType GhcPs
-addUnpackedness (prag, unpk) (L _ (HsBangTy x bang t))
+addUnpackedness :: (SourceText, SrcUnpackedness) -> LHsType GhcPs -> ([AddAnn], HsType GhcPs)
+addUnpackedness (prag, unpk) (L l (HsBangTy x bang t))
| HsSrcBang NoSourceText NoSrcUnpack strictness <- bang
- = HsBangTy x (HsSrcBang prag unpk strictness) t
+ = let
+ anns = case strictness of
+ SrcLazy -> [AddAnn AnnTilde (srcSpanFirstCharacter l)]
+ SrcStrict -> [AddAnn AnnBang (srcSpanFirstCharacter l)]
+ NoSrcStrict -> []
+ in (anns, HsBangTy x (HsSrcBang prag unpk strictness) t)
addUnpackedness (prag, unpk) t
- = HsBangTy noExtField (HsSrcBang prag unpk NoSrcStrict) t
+ = ([], HsBangTy noExtField (HsSrcBang prag unpk NoSrcStrict) t)
-- | Merge a /reversed/ and /non-empty/ soup of operators and operands
-- into a type.