@@ -753,12 +753,14 @@ pClause syn
753753 return ([], [])]
754754 let capp = PApp fc (PRef fc n)
755755 (iargs ++ cargs ++ map pexp args)
756+ ist <- getState
757+ setState (ist { lastParse = Just n })
756758 return $ PClause n capp wargs rhs wheres)
757759 <|> try (do wargs <- many1 (pWExpr syn)
758760 ist <- getState
759− (n, capp, owargs) <- case lastParse ist of
760− Just t -> return t
761− Nothing -> fail "Invalid clause"
761+ n <- case lastParse ist of
762+ Just t -> return t
763+ Nothing -> fail "Invalid clause"
762764 rhs <- pRHS syn n
763765 let ctxt = tt_ctxt ist
764766 let wsyn = syn { syn_namespace = [] }
@@ -781,6 +783,8 @@ pClause syn
781783 ds <- many1 $ pFunDecl syn
782784 let withs = map (fillLHSD n capp wargs) $ concat ds
783785 lchar '}'
786+ ist <- getState
787+ setState (ist { lastParse = Just n })
784788 return $ PWith n capp wargs wval withs)
785789
786790 <|> try (do wargs <- many1 (pWExpr syn)
@@ -805,7 +809,7 @@ pClause syn
805809 return ([], [])]
806810 ist <- getState
807811 let capp = PApp fc (PRef fc n) [pexp l, pexp r]
808− setState (ist { lastParse = Just (n, capp, wargs) })
812+ setState (ist { lastParse = Just n })
809813 return $ PClause n capp wargs rhs wheres
810814
811815 <|> do l <- pArgExpr syn
@@ -822,6 +826,7 @@ pClause syn
822826 ist <- getState
823827 let capp = PApp fc (PRef fc n) [pexp l, pexp r]
824828 let withs = map (fillLHSD n capp wargs) $ concat ds
829+ setState (ist { lastParse = Just n })
825830 return $ PWith n capp wargs wval withs
826831 where
827832 fillLHS n capp owargs (PClauseR wargs v ws)