<div dir="ltr"><div><div><div><div><div><div><div>When parsing<br><br>    extremumNewton :: (Eq a, Fractional a) =><br>                  (forall tag. forall tag1.<br>                          Tower tag1 (Tower tag a)<br>                              -> Tower tag1 (Tower tag a))<br>                      -> a -> [a]<br><br></div>the nested `forall` declarations are parsed by<br><br>    ctypedoc :: { LHsType RdrName }<br>            : 'forall' tv_bndrs '.' ctypedoc {% hintExplicitForall (getLoc $1) >><br>                                                ams (sLL $1 $> $ mkExplicitHsForAllTy $2<br>                                                                      (noLoc []) $4)<br>                                                    [mj AnnForall $1,mj AnnDot $3] }<br><br></div>This generates a HsForAllTy for the first forall that simply wraps the second one, which is also a `ctypedoc`.<br><br></div>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.<br><br></div>In the process the annotation for the second forall loses its anchor, as that span is no longer in the AST.<br><br></div>I cannot find where this collapsing takes place, can  anyone point me at it?<br><br></div>Thanks<br></div>  Alan<br></div>