Skip to content

Commit d79f745

Browse files
committed
annotate infix declarations
1 parent cd437b2 commit d79f745

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

src/Language/Haskell/Names/Open/Instances.hs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import Language.Haskell.Names.Open.Base
1414
import Language.Haskell.Names.Open.Derived ()
1515
import Language.Haskell.Names.GetBound
1616
import Language.Haskell.Names.RecordWildcards
17-
import Language.Haskell.Names.SyntaxUtils
1817
import Language.Haskell.Exts.Annotated
1918
import Language.Haskell.Names.SyntaxUtils
2019
import qualified Data.Data as D
@@ -63,6 +62,12 @@ instance (Resolvable l, SrcInfo l, D.Data l) => Resolvable (Decl l) where
6362
<| sc -: l
6463
<*> fmap (map qNameToName) (rtraverse (map nameToQName names) (exprV sc))
6564
<| sc -: ty
65+
InfixDecl l assoc mp ops ->
66+
c InfixDecl
67+
<| sc -: l
68+
<| sc -: assoc
69+
<| sc -: mp
70+
<| exprV sc -: ops
6671
_ -> defaultRtraverse e sc
6772

6873
instance (Resolvable l, SrcInfo l, D.Data l) => Resolvable (Type l) where
@@ -405,6 +410,19 @@ instance (Resolvable l, SrcInfo l, D.Data l) => Resolvable (ClassDecl l) where
405410
<| sc -: t)
406411
_ -> defaultRtraverse e sc
407412

413+
instance (Resolvable l, SrcInfo l, D.Data l) => Resolvable (Op l) where
414+
rtraverse e sc =
415+
case e of
416+
VarOp l name ->
417+
c VarOp
418+
<| sc -: l
419+
<*> fmap qNameToName (alg (nameToQName name) (exprV sc))
420+
ConOp l name ->
421+
c ConOp
422+
<| sc -: l
423+
<*> fmap qNameToName (alg (nameToQName name) (exprV sc))
424+
425+
408426
{-
409427
Note [Nested pattern scopes]
410428
~~~~~~~~~~~~~~~~~~~~~~

tests/annotations/Infix.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module Infix where
2+
3+
infixr 3 $$$
4+
5+
($$$) x y = x y

tests/annotations/Infix.hs.golden

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
$$$ at 3:10 is a global value, Infix.$$$
2+
$$$ at 5:2 is a value bound here
3+
x at 5:7 is a value bound here
4+
y at 5:9 is a value bound here
5+
x at 5:13 is a local value defined at 5:7
6+
x at 5:13 is a local value defined at 5:7
7+
y at 5:15 is a local value defined at 5:9
8+
y at 5:15 is a local value defined at 5:9

0 commit comments

Comments
 (0)