@@ -198,7 +198,8 @@ SimpleConstructorList ::=
200data_ :: SyntaxInfo -> IdrisParser PDecl
200data_ :: SyntaxInfo -> IdrisParser PDecl
201+data_ syn = checkFixity' $
201−data_ syn = do (doc, argDocs, acc, dataOpts) <- try (do
202+ do (doc, argDocs, acc, dataOpts) <- try (do
202 (doc, argDocs) <- option noDocs docComment
203 (doc, argDocs) <- option noDocs docComment
203 pushIndent
204 pushIndent
204 acc <- accessibility
205 acc <- accessibility
@@ -250,6 +251,14 @@ data_ syn = do (doc, argDocs, acc, dataOpts) <- try (do
250 return d)
251 return d)
251 <?> "data type declaration"
252 <?> "data type declaration"
254+ checkFixity' :: IdrisParser PDecl -> IdrisParser PDecl
255+ checkFixity' p = do decl <- p
256+ case getName decl of
257+ Nothing -> return decl
258+ Just n -> do checkFixity n
260+ getName (PData _ _ _ _ _ (PDatadecl tyn _ _ _)) = Just tyn
253 mkPApp :: FC -> PTerm -> [PTerm] -> PTerm
262 mkPApp :: FC -> PTerm -> [PTerm] -> PTerm
254 mkPApp fc t [] = t
263 mkPApp fc t [] = t
255 mkPApp fc t xs = PApp fc t (map pexp xs)
264 mkPApp fc t xs = PApp fc t (map pexp xs)
@@ -277,6 +286,7 @@ constructor syn
277 let doc' = annotCode (tryFullExpr syn ist) doc
286 let doc' = annotCode (tryFullExpr syn ist) doc
278 argDocs' = [ (n, annotCode (tryFullExpr syn ist) d)
287 argDocs' = [ (n, annotCode (tryFullExpr syn ist) d)
279 | (n, d) <- argDocs ]
288 | (n, d) <- argDocs ]
280 return (doc', argDocs', cn, nfc, ty, fc, fs)
290 return (doc', argDocs', cn, nfc, ty, fc, fs)
281 <?> "constructor"
291 <?> "constructor"
@@ -293,6 +303,7 @@ simpleConstructor syn
293 fc <- getFC
303 fc <- getFC
294 args <- many (do notEndApp
304 args <- many (do notEndApp
295 simpleExpr syn)
305 simpleExpr syn)
296 return (doc', [], cn, nfc, args, fc, [])
307 return (doc', [], cn, nfc, args, fc, [])
297 <?> "constructor"
308 <?> "constructor"