@@ -157,11 +157,21 @@ DefaultEliminator ::= 'noelim'?
157157 -}
158158dataOpts :: DataOpts -> IdrisParser DataOpts
159159dataOpts opts
160− = do reserved "%elim"; dataOpts (DefaultEliminator : DefaultCaseFun : opts)
161− <|> do reserved "%case"; dataOpts (DefaultCaseFun : opts)
160+ = do fc <- reservedFC "%elim"
161+ warnElim fc
162+ dataOpts (DefaultEliminator : DefaultCaseFun : opts)
163+ <|> do fc <- reservedFC "%case"
164+ warnElim fc
165+ dataOpts (DefaultCaseFun : opts)
162166 <|> do reserved "%error_reverse"; dataOpts (DataErrRev : opts)
163167 <|> return opts
164168 <?> "data options"
169+ where warnElim fc =
170+ do ist <- get
171+ let cmdline = opt_cmdline (idris_options ist)
172+ unless (NoElimDeprecationWarnings `elem` cmdline) $
173+ put ist { parserWarnings =
174+ (fc, Msg "Eliminator generation is deprecated. Use an eliminator generator in a library instead.") : parserWarnings ist }
165175
166176{- | Parses a data type declaration
167177Data ::= DocComment? Accessibility? DataI DefaultEliminator FnName TypeSig ExplicitTypeDataRest?