
When parsing extremumNewton :: (Eq a, Fractional a) => (forall tag. forall tag1. Tower tag1 (Tower tag a) -> Tower tag1 (Tower tag a)) -> a -> [a] the nested `forall` declarations are parsed by ctypedoc :: { LHsType RdrName } : 'forall' tv_bndrs '.' ctypedoc {% hintExplicitForall (getLoc $1) >> ams (sLL $1 $> $ mkExplicitHsForAllTy $2 (noLoc []) $4) [mj AnnForall $1,mj AnnDot $3] } This generates a HsForAllTy for the first forall that simply wraps the second one, which is also a `ctypedoc`. But, when looking at the AST provided via ParsedSource, the two `forall`s are collapsed into a single one, containing both `tag` and `tag1` in the TyVarBndrs. In the process the annotation for the second forall loses its anchor, as that span is no longer in the AST. I cannot find where this collapsing takes place, can anyone point me at it? Thanks Alan