summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/GHC/Hs/Extension.hs12
-rw-r--r--compiler/GHC/Parser.y4
-rw-r--r--compiler/GHC/Parser/Annotation.hs6
-rw-r--r--compiler/GHC/Parser/PostProcess.hs26
-rw-r--r--testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr45
-rw-r--r--testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr9
-rw-r--r--testsuite/tests/parser/should_compile/DumpParsedAst.stderr17
-rw-r--r--testsuite/tests/parser/should_compile/DumpRenamedAst.stderr80
-rw-r--r--testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr40
-rw-r--r--testsuite/tests/parser/should_compile/KindSigs.stderr18
-rw-r--r--testsuite/tests/parser/should_compile/T14189.stderr4
-rw-r--r--testsuite/tests/printer/T18791.stderr9
-rw-r--r--utils/check-exact/ExactPrint.hs7
13 files changed, 104 insertions, 173 deletions
diff --git a/compiler/GHC/Hs/Extension.hs b/compiler/GHC/Hs/Extension.hs
index 841604ecb9..ce28e0355d 100644
--- a/compiler/GHC/Hs/Extension.hs
+++ b/compiler/GHC/Hs/Extension.hs
@@ -236,12 +236,12 @@ pprIfTc :: forall p. IsPass p => (p ~ 'Typechecked => SDoc) -> SDoc
pprIfTc pp = case ghcPass @p of GhcTc -> pp
_ -> empty
-type instance Anno (HsToken tok) = EpAnnCO
+type instance Anno (HsToken tok) = TokenLocation
-noHsTok :: GenLocated (EpAnn a) (HsToken tok)
-noHsTok = L noAnn HsTok
+noHsTok :: GenLocated TokenLocation (HsToken tok)
+noHsTok = L NoTokenLoc HsTok
-type instance Anno (HsUniToken tok utok) = EpAnnCO
+type instance Anno (HsUniToken tok utok) = TokenLocation
-noHsUniTok :: GenLocated (EpAnn a) (HsUniToken tok utok)
-noHsUniTok = L noAnn HsNormalTok
+noHsUniTok :: GenLocated TokenLocation (HsUniToken tok utok)
+noHsUniTok = L NoTokenLoc HsNormalTok
diff --git a/compiler/GHC/Parser.y b/compiler/GHC/Parser.y
index 6d0a276ab7..0cc1bc732a 100644
--- a/compiler/GHC/Parser.y
+++ b/compiler/GHC/Parser.y
@@ -4354,11 +4354,11 @@ listAsAnchor [] = spanAsAnchor noSrcSpan
listAsAnchor (L l _:_) = spanAsAnchor (locA l)
hsTok :: Located Token -> LHsToken tok GhcPs
-hsTok (L l _) = L (EpAnn (spanAsAnchor l) NoEpAnns emptyComments) HsTok
+hsTok (L l _) = L (mkTokenLocation l) HsTok
hsUniTok :: Located Token -> LHsUniToken tok utok GhcPs
hsUniTok t@(L l _) =
- L (EpAnn (spanAsAnchor l) NoEpAnns emptyComments)
+ L (mkTokenLocation l)
(if isUnicode t then HsUnicodeTok else HsNormalTok)
-- -------------------------------------
diff --git a/compiler/GHC/Parser/Annotation.hs b/compiler/GHC/Parser/Annotation.hs
index a914a14b71..b414e70be5 100644
--- a/compiler/GHC/Parser/Annotation.hs
+++ b/compiler/GHC/Parser/Annotation.hs
@@ -14,6 +14,7 @@ module GHC.Parser.Annotation (
-- * In-tree Exact Print Annotations
AddEpAnn(..),
EpaLocation(..), epaLocationRealSrcSpan, epaLocationFromSrcAnn,
+ TokenLocation(..),
DeltaPos(..), deltaPos, getDeltaLine,
EpAnn(..), Anchor(..), AnchorOperation(..),
@@ -405,6 +406,11 @@ data EpaLocation = EpaSpan RealSrcSpan
| EpaDelta DeltaPos
deriving (Data,Show,Eq,Ord)
+-- | Tokens embedded in the AST have an EpaLocation, unless they come from
+-- generated code (e.g. by TH).
+data TokenLocation = NoTokenLoc | TokenLoc !EpaLocation
+ deriving (Data,Show,Eq,Ord)
+
-- | Spacing between output items when exact printing. It captures
-- the spacing from the current print position on the page to the
-- position required for the thing about to be printed. This is
diff --git a/compiler/GHC/Parser/PostProcess.hs b/compiler/GHC/Parser/PostProcess.hs
index 688464dd9d..55b3c0d8a9 100644
--- a/compiler/GHC/Parser/PostProcess.hs
+++ b/compiler/GHC/Parser/PostProcess.hs
@@ -74,6 +74,9 @@ module GHC.Parser.PostProcess (
UnpackednessPragma(..),
mkMultTy,
+ -- Token location
+ mkTokenLocation,
+
-- Help with processing exports
ImpExpSubSpec(..),
ImpExpQcSpec(..),
@@ -2994,13 +2997,28 @@ mkLHsOpTy x op y =
mkMultTy :: LHsToken "%" GhcPs -> LHsType GhcPs -> LHsUniToken "->" "→" GhcPs -> HsArrow GhcPs
mkMultTy pct t@(L _ (HsTyLit _ (HsNumTy (SourceText "1") 1))) arr
-- See #18888 for the use of (SourceText "1") above
- = HsLinearArrow (HsPct1 (L (getLoc pct Semi.<> locOf1) HsTok) arr)
+ = HsLinearArrow (HsPct1 (L locOfPct1 HsTok) arr)
where
- -- The location of "1" in "%1".
- locOf1 :: EpAnn NoEpAnns
- locOf1 = EpAnn (spanAsAnchor (locA (getLoc t))) NoEpAnns emptyComments
+ -- The location of "%" combined with the location of "1".
+ locOfPct1 :: TokenLocation
+ locOfPct1 = token_location_widenR (getLoc pct) (locA (getLoc t))
mkMultTy pct t arr = HsExplicitMult pct t arr
+mkTokenLocation :: SrcSpan -> TokenLocation
+mkTokenLocation (UnhelpfulSpan _) = NoTokenLoc
+mkTokenLocation (RealSrcSpan r _) = TokenLoc (EpaSpan r)
+
+-- Precondition: the TokenLocation has EpaSpan, never EpaDelta.
+token_location_widenR :: TokenLocation -> SrcSpan -> TokenLocation
+token_location_widenR NoTokenLoc _ = NoTokenLoc
+token_location_widenR tl (UnhelpfulSpan _) = tl
+token_location_widenR (TokenLoc (EpaSpan r1)) (RealSrcSpan r2 _) =
+ (TokenLoc (EpaSpan (combineRealSrcSpans r1 r2)))
+token_location_widenR (TokenLoc (EpaDelta _)) _ =
+ -- Never happens because the parser does not produce EpaDelta.
+ panic "token_location_widenR: EpaDelta"
+
+
-----------------------------------------------------------------------------
-- Token symbols
diff --git a/testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr b/testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr
index 8054c405c8..0fcb9122ed 100644
--- a/testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr
+++ b/testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr
@@ -117,13 +117,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { T17544.hs:6:11-12 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { T17544.hs:6:11-12 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { T17544.hs:6:9 })
@@ -251,13 +246,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { T17544.hs:10:11-12 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { T17544.hs:10:11-12 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { T17544.hs:10:9 })
@@ -381,13 +371,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { T17544.hs:14:11-12 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { T17544.hs:14:11-12 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { T17544.hs:14:9 })
@@ -514,13 +499,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { T17544.hs:18:11-12 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { T17544.hs:18:11-12 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { T17544.hs:18:9 })
@@ -587,13 +567,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { T17544.hs:20:11-12 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { T17544.hs:20:11-12 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { T17544.hs:20:9 })
diff --git a/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr b/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr
index 6831df7140..d294430cd4 100644
--- a/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr
+++ b/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr
@@ -167,13 +167,8 @@
[(HsScaled
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { T17544_kw.hs:19:21-22 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { T17544_kw.hs:19:21-22 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnn
diff --git a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
index faf63b8a90..d68daf6738 100644
--- a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
+++ b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
@@ -146,10 +146,10 @@
(HsLinearArrow
(HsPct1
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsNormalTok))))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:8:26-30 })
@@ -556,10 +556,10 @@
(HsLinearArrow
(HsPct1
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsNormalTok))))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:15:25-29 })
@@ -846,13 +846,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { DumpParsedAst.hs:17:33-34 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { DumpParsedAst.hs:17:33-34 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:31 })
diff --git a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
index 66ff512a53..84519126fc 100644
--- a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
+++ b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
@@ -151,10 +151,10 @@
(HsLinearArrow
(HsPct1
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsNormalTok))))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:10:26-30 })
@@ -386,13 +386,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { DumpRenamedAst.hs:16:22-23 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { DumpRenamedAst.hs:16:22-23 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:16:20 })
@@ -414,13 +409,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { DumpRenamedAst.hs:16:27-28 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { DumpRenamedAst.hs:16:27-28 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:16:25 })
@@ -496,13 +486,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { DumpRenamedAst.hs:19:30-31 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { DumpRenamedAst.hs:19:30-31 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:19:28 })
@@ -539,13 +524,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { DumpRenamedAst.hs:19:54-55 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { DumpRenamedAst.hs:19:54-55 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:19:42-52 })
@@ -563,13 +543,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { DumpRenamedAst.hs:19:45-46 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { DumpRenamedAst.hs:19:45-46 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:19:43 })
@@ -612,13 +587,8 @@
[(HsScaled
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { DumpRenamedAst.hs:20:36-37 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { DumpRenamedAst.hs:20:36-37 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnn
@@ -663,13 +633,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { DumpRenamedAst.hs:20:27-28 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { DumpRenamedAst.hs:20:27-28 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:20:22-25 })
@@ -828,10 +793,10 @@
(HsLinearArrow
(HsPct1
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsNormalTok))))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:22:25-29 })
@@ -1020,13 +985,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { DumpRenamedAst.hs:24:33-34 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { DumpRenamedAst.hs:24:33-34 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:31 })
diff --git a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr
index addb3d0ff2..55c10d4729 100644
--- a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr
+++ b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr
@@ -108,7 +108,7 @@
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -141,7 +141,7 @@
(NoSourceText)
"T")))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -268,7 +268,7 @@
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -301,7 +301,7 @@
(NoSourceText)
"'MkT")))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -428,7 +428,7 @@
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -461,7 +461,7 @@
(NoSourceText)
"Peano")))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -588,7 +588,7 @@
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -621,7 +621,7 @@
(NoSourceText)
"'Zero")))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -748,7 +748,7 @@
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -781,7 +781,7 @@
(NoSourceText)
"'Succ")))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -1190,7 +1190,7 @@
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -1238,7 +1238,7 @@
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -1286,7 +1286,7 @@
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -1344,13 +1344,13 @@
[]
[]))))))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))))
,(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -1442,7 +1442,7 @@
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -1475,14 +1475,14 @@
(NoSourceText)
"main")))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
(HsPar
(EpAnnNotUsed)
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
(SrcSpanAnn (EpAnnNotUsed) { <no location info> })
@@ -1515,7 +1515,7 @@
(NoSourceText)
"DumpTypecheckedAst")))))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))))))))
,(L
(SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:19:1-23 })
diff --git a/testsuite/tests/parser/should_compile/KindSigs.stderr b/testsuite/tests/parser/should_compile/KindSigs.stderr
index 66d76ca683..a8914e9c78 100644
--- a/testsuite/tests/parser/should_compile/KindSigs.stderr
+++ b/testsuite/tests/parser/should_compile/KindSigs.stderr
@@ -684,13 +684,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { KindSigs.hs:22:22-23 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { KindSigs.hs:22:22-23 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { KindSigs.hs:22:8-20 })
@@ -757,13 +752,8 @@
[]))
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { KindSigs.hs:22:30-31 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { KindSigs.hs:22:30-31 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnnNotUsed) { KindSigs.hs:22:25-28 })
diff --git a/testsuite/tests/parser/should_compile/T14189.stderr b/testsuite/tests/parser/should_compile/T14189.stderr
index ecfcae56c8..c845817586 100644
--- a/testsuite/tests/parser/should_compile/T14189.stderr
+++ b/testsuite/tests/parser/should_compile/T14189.stderr
@@ -63,10 +63,10 @@
(HsLinearArrow
(HsPct1
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsTok))
(L
- (EpAnnNotUsed)
+ (NoTokenLoc)
(HsNormalTok))))
(L
(SrcSpanAnn (EpAnnNotUsed) { T14189.hs:6:18-20 })
diff --git a/testsuite/tests/printer/T18791.stderr b/testsuite/tests/printer/T18791.stderr
index abde8320b1..90b3db958d 100644
--- a/testsuite/tests/printer/T18791.stderr
+++ b/testsuite/tests/printer/T18791.stderr
@@ -91,13 +91,8 @@
[(HsScaled
(HsUnrestrictedArrow
(L
- (EpAnn
- (Anchor
- { T18791.hs:5:14-15 }
- (UnchangedAnchor))
- (NoEpAnns)
- (EpaComments
- []))
+ (TokenLoc
+ (EpaSpan { T18791.hs:5:14-15 }))
(HsNormalTok)))
(L
(SrcSpanAnn (EpAnn
diff --git a/utils/check-exact/ExactPrint.hs b/utils/check-exact/ExactPrint.hs
index 16631d0bd2..583adc682f 100644
--- a/utils/check-exact/ExactPrint.hs
+++ b/utils/check-exact/ExactPrint.hs
@@ -627,11 +627,8 @@ markKwA :: AnnKeywordId -> EpaLocation -> EPP ()
markKwA kw aa = printStringAtAA aa (keywordToString (G kw))
markToken :: forall tok. KnownSymbol tok => LHsToken tok GhcPs -> EPP ()
-markToken (L EpAnnNotUsed _) = return ()
-markToken (L (EpAnn (Anchor a a_op) _ _) _) = printStringAtAA aa (symbolVal (Proxy @tok))
- where aa = case a_op of
- UnchangedAnchor -> EpaSpan a
- MovedAnchor dp -> EpaDelta dp
+markToken (L NoTokenLoc _) = return ()
+markToken (L (TokenLoc aa) _) = printStringAtAA aa (symbolVal (Proxy @tok))
markUniToken :: forall tok utok. (KnownSymbol tok, KnownSymbol utok) => LHsUniToken tok utok GhcPs -> EPP ()
markUniToken (L l HsNormalTok) = markToken (L l (HsTok @tok))