@@ -148,7 +148,7 @@ parseTypeClassDeclaration = do
148 idents <- P.many (indented *> identifier)
148 idents <- P.many (indented *> identifier)
149 members <- P.option [] . P.try $ do
149 members <- P.option [] . P.try $ do
150 indented *> reserved "where"
150 indented *> reserved "where"
151− mark (P.many (same *> parseTypeDeclaration))
151+ mark (P.many (same *> positioned parseTypeDeclaration))
152 return $ TypeClassDeclaration className idents members
152 return $ TypeClassDeclaration className idents members
154parseTypeInstanceDeclaration :: P.Parsec String ParseState Declaration
154parseTypeInstanceDeclaration :: P.Parsec String ParseState Declaration
@@ -164,14 +164,17 @@ parseTypeInstanceDeclaration = do
164 ty <- P.many (indented *> parseTypeAtom)
164 ty <- P.many (indented *> parseTypeAtom)
165 members <- P.option [] . P.try $ do
165 members <- P.option [] . P.try $ do
166 indented *> reserved "where"
166 indented *> reserved "where"
167− mark (P.many (same *> parseValueDeclaration))
167+ mark (P.many (same *> positioned parseValueDeclaration))
168 return $ TypeInstanceDeclaration name (fromMaybe [] deps) className ty members
168 return $ TypeInstanceDeclaration name (fromMaybe [] deps) className ty members
170+positioned :: P.Parsec String ParseState Declaration -> P.Parsec String ParseState Declaration
171+positioned d = PositionedDeclaration <$> sourcePos <*> d
171-- Parse a single declaration
174-- Parse a single declaration
173parseDeclaration :: P.Parsec String ParseState Declaration
176parseDeclaration :: P.Parsec String ParseState Declaration
174−parseDeclaration = PositionedDeclaration <$> sourcePos <*> P.choice
177+parseDeclaration = positioned (P.choice
175 [ parseDataDeclaration
178 [ parseDataDeclaration
176 , parseTypeDeclaration
179 , parseTypeDeclaration
177 , parseTypeSynonymDeclaration
180 , parseTypeSynonymDeclaration
@@ -181,7 +184,7 @@ parseDeclaration = PositionedDeclaration <$> sourcePos <*> P.choice
181 , parseImportDeclaration
184 , parseImportDeclaration
182 , parseTypeClassDeclaration
185 , parseTypeClassDeclaration
183 , parseTypeInstanceDeclaration
186 , parseTypeInstanceDeclaration
184− ] P.<?> "declaration"
187+ ]) P.<?> "declaration"
186parseLocalDeclaration :: P.Parsec String ParseState Declaration
189parseLocalDeclaration :: P.Parsec String ParseState Declaration
187parseLocalDeclaration = PositionedDeclaration <$> sourcePos <*> P.choice
190parseLocalDeclaration = PositionedDeclaration <$> sourcePos <*> P.choice