@@ -96,7 +96,7 @@ moduleHeader :: IdrisParser (Maybe (Docstring ()), [String])
96moduleHeader = try (do docs <- optional docComment
96moduleHeader = try (do docs <- optional docComment
97 noArgs docs
97 noArgs docs
98 reserved "module"
98 reserved "module"
99− i <- identifier
99+ i <- fst <$> identifier
100 option ';' (lchar ';')
100 option ';' (lchar ';')
101 return (fmap fst docs, moduleName i))
101 return (fmap fst docs, moduleName i))
102 <|> try (do lchar '%'; reserved "unqualified"
102 <|> try (do lchar '%'; reserved "unqualified"
@@ -118,8 +118,8 @@ import_ :: IdrisParser (Bool, String, Maybe String, FC)
118import_ = do fc <- getFC
118import_ = do fc <- getFC
119 reserved "import"
119 reserved "import"
120 reexport <- option False (do reserved "public"; return True)
120 reexport <- option False (do reserved "public"; return True)
121− id <- identifier
121+ id <- fst <$> identifier
122− newName <- optional (reserved "as" *> identifier)
122+ newName <- optional (reserved "as" *> (fst <$> identifier))
123 option ';' (lchar ';')
123 option ';' (lchar ';')
124 return (reexport, toPath id, toPath <$> newName, fc)
124 return (reexport, toPath id, toPath <$> newName, fc)
125 <?> "import statement"
125 <?> "import statement"
@@ -356,11 +356,11 @@ SyntaxSym ::= '[' Name_t ']'
358syntaxSym :: IdrisParser SSymbol
358syntaxSym :: IdrisParser SSymbol
359−syntaxSym = try (do lchar '['; n <- name; lchar ']'
359+syntaxSym = try (do lchar '['; n <- fst <$> name; lchar ']'
360 return (Expr n))
360 return (Expr n))
361− <|> try (do lchar '{'; n <- name; lchar '}'
361+ <|> try (do lchar '{'; n <- fst <$> name; lchar '}'
362 return (Binding n))
362 return (Binding n))
363− <|> do n <- iName []
363+ <|> do n <- fst <$> iName []
364 return (Keyword n)
364 return (Keyword n)
365 <|> do sym <- fmap fst stringLiteral
365 <|> do sym <- fmap fst stringLiteral
366 return (Symbol sym)
366 return (Symbol sym)
@@ -402,7 +402,7 @@ fnDecl' syn = checkFixity $
402 opts <- fnOpts initOpts
402 opts <- fnOpts initOpts
403 acc <- optional accessibility
403 acc <- optional accessibility
404 opts' <- fnOpts opts
404 opts' <- fnOpts opts
405− n_in <- fnName
405+ n_in <- fst <$> fnName
406 let n = expandNS syn n_in
406 let n = expandNS syn n_in
407 fc <- getFC
407 fc <- getFC
408 lchar ':'
408 lchar ':'
@@ -489,7 +489,7 @@ fnOpts opts
489 <|> return opts
489 <|> return opts
490 <?> "function modifier"
490 <?> "function modifier"
491 where nameTimes :: IdrisParser (Name, Maybe Int)
491 where nameTimes :: IdrisParser (Name, Maybe Int)
492− nameTimes = do n <- fnName
492+ nameTimes = do n <- fst <$> fnName
493 t <- option Nothing (do reds <- fmap fst natural
493 t <- option Nothing (do reds <- fmap fst natural
494 return (Just (fromInteger reds)))
494 return (Just (fromInteger reds)))
495 return (n, t)
495 return (n, t)
@@ -515,7 +515,7 @@ postulate syn = do (doc, ext)
515 opts <- fnOpts initOpts
515 opts <- fnOpts initOpts
516 acc <- optional accessibility
516 acc <- optional accessibility
517 opts' <- fnOpts opts
517 opts' <- fnOpts opts
518− n_in <- fnName
518+ n_in <- fst <$> fnName
519 let n = expandNS syn n_in
519 let n = expandNS syn n_in
520 lchar ':'
520 lchar ':'
521 ty <- typeExpr (allowImp syn)
521 ty <- typeExpr (allowImp syn)
@@ -592,7 +592,7 @@ Namespace ::=
593namespace :: SyntaxInfo -> IdrisParser [PDecl]
593namespace :: SyntaxInfo -> IdrisParser [PDecl]
594namespace syn =
594namespace syn =
595− do reserved "namespace"; n <- identifier;
595+ do reserved "namespace"; n <- fst <$> identifier
596 openBlock
596 openBlock
597 ds <- some (decl syn { syn_namespace = n : syn_namespace syn })
597 ds <- some (decl syn { syn_namespace = n : syn_namespace syn })
598 closeBlock
598 closeBlock
@@ -659,7 +659,7 @@ class_ syn = do (doc, argDocs, acc)
659 return (doc, argDocs, acc))
659 return (doc, argDocs, acc))
660 fc <- getFC
660 fc <- getFC
661 cons <- constraintList syn
661 cons <- constraintList syn
662− n_in <- fnName
662+ n_in <- fst <$> fnName
663 let n = expandNS syn n_in
663 let n = expandNS syn n_in
664 cs <- many carg
664 cs <- many carg
665 fds <- option (map fst cs) fundeps
665 fds <- option (map fst cs) fundeps
@@ -669,12 +669,12 @@ class_ syn = do (doc, argDocs, acc)
669 <?> "type-class declaration"
669 <?> "type-class declaration"
671 fundeps :: IdrisParser [Name]
671 fundeps :: IdrisParser [Name]
672− fundeps = do lchar '|'; sepBy name (lchar ',')
672+ fundeps = do lchar '|'; sepBy (fst <$> name) (lchar ',')
674 carg :: IdrisParser (Name, PTerm)
674 carg :: IdrisParser (Name, PTerm)
675− carg = do lchar '('; i <- name; lchar ':'; ty <- expr syn; lchar ')'
675+ carg = do lchar '('; i <- (fst <$> name); lchar ':'; ty <- expr syn; lchar ')'
676 return (i, ty)
676 return (i, ty)
677− <|> do i <- name
677+ <|> do i <- fst <$> name
678 fc <- getFC
678 fc <- getFC
679 return (i, PType fc)
679 return (i, PType fc)
@@ -696,7 +696,7 @@ instance_ syn = do (doc, argDocs)
696 fc <- getFC
696 fc <- getFC
697 en <- optional instanceName
697 en <- optional instanceName
698 cs <- constraintList syn
698 cs <- constraintList syn
699− cn <- fnName
699+ cn <- fst <$> fnName
700 args <- many (simpleExpr syn)
700 args <- many (simpleExpr syn)
701 let sc = PApp fc (PRef fc cn) (map pexp args)
701 let sc = PApp fc (PRef fc cn) (map pexp args)
702 let t = bindList (PPi constraint) cs sc
702 let t = bindList (PPi constraint) cs sc
@@ -704,7 +704,7 @@ instance_ syn = do (doc, argDocs)
704 return [PInstance doc argDocs syn fc cs cn args t en ds]
704 return [PInstance doc argDocs syn fc cs cn args t en ds]
705 <?> "instance declaration"
705 <?> "instance declaration"
706 where instanceName :: IdrisParser Name
706 where instanceName :: IdrisParser Name
707− instanceName = do lchar '['; n_in <- fnName; lchar ']'
707+ instanceName = do lchar '['; n_in <- fst <$> fnName; lchar ']'
708 let n = expandNS syn n_in
708 let n = expandNS syn n_in
710 <?> "instance name"
710 <?> "instance name"
@@ -748,7 +748,7 @@ NameList ::=
748usingDeclList :: SyntaxInfo -> IdrisParser [Using]
748usingDeclList :: SyntaxInfo -> IdrisParser [Using]
749usingDeclList syn
749usingDeclList syn
750 = try (sepBy1 (usingDecl syn) (lchar ','))
750 = try (sepBy1 (usingDecl syn) (lchar ','))
751− <|> do ns <- sepBy1 name (lchar ',')
751+ <|> do ns <- sepBy1 (fst <$> name) (lchar ',')
752 lchar ':'
752 lchar ':'
753 t <- typeExpr (disallowImp syn)
753 t <- typeExpr (disallowImp syn)
754 return (map (\x -> UImplicit x t) ns)
754 return (map (\x -> UImplicit x t) ns)
@@ -764,12 +764,12 @@ UsingDecl ::=
766usingDecl :: SyntaxInfo -> IdrisParser Using
766usingDecl :: SyntaxInfo -> IdrisParser Using
767−usingDecl syn = try (do x <- fnName
767+usingDecl syn = try (do x <- fst <$> fnName
768 lchar ':'
768 lchar ':'
769 t <- typeExpr (disallowImp syn)
769 t <- typeExpr (disallowImp syn)
770 return (UImplicit x t))
770 return (UImplicit x t))
771− <|> do c <- fnName
771+ <|> do c <- fst <$> fnName
772− xs <- some fnName
772+ xs <- some (fst <$> fnName)
773 return (UConstraint c xs)
773 return (UConstraint c xs)
774 <?> "using declaration"
774 <?> "using declaration"
@@ -793,7 +793,7 @@ CAF ::= 'let' FnName '=' Expr Terminator;
794caf :: SyntaxInfo -> IdrisParser PDecl
794caf :: SyntaxInfo -> IdrisParser PDecl
795caf syn = do reserved "let"
795caf syn = do reserved "let"
796− n_in <- fnName; let n = expandNS syn n_in
796+ n_in <- fst <$> fnName; let n = expandNS syn n_in
797 lchar '='
797 lchar '='
798 t <- expr syn
798 t <- expr syn
799 terminator
799 terminator
@@ -829,7 +829,7 @@ rhs :: SyntaxInfo -> Name -> IdrisParser PTerm
829rhs syn n = do lchar '='; expr syn
829rhs syn n = do lchar '='; expr syn
830 <|> do symbol "?=";
830 <|> do symbol "?=";
831 fc <- getFC
831 fc <- getFC
832− name <- option n' (do symbol "{"; n <- fnName; symbol "}";
832+ name <- option n' (do symbol "{"; n <- fst <$> fnName; symbol "}";
833 return n)
833 return n)
834 r <- expr syn
834 r <- expr syn
835 return (addLet fc name r)
835 return (addLet fc name r)
@@ -903,7 +903,7 @@ clause syn
903 symbol "<=="
903 symbol "<=="
904 return ty)
904 return ty)
905 fc <- getFC
905 fc <- getFC
906− n_in <- fnName; let n = expandNS syn n_in
906+ n_in <- fst <$> fnName; let n = expandNS syn n_in
907 r <- rhs syn n
907 r <- rhs syn n
908 ist <- get
908 ist <- get
909 let ctxt = tt_ctxt ist
909 let ctxt = tt_ctxt ist
@@ -955,7 +955,7 @@ clause syn
955 put (ist { lastParse = Just n })
955 put (ist { lastParse = Just n })
956 return $ PWith fc n capp wargs wval pn withs)
956 return $ PWith fc n capp wargs wval pn withs)
957 <|> do pushIndent
957 <|> do pushIndent
958− n_in <- fnName; let n = expandNS syn n_in
958+ n_in <- fst <$> fnName; let n = expandNS syn n_in
959 cargs <- many (constraintArg syn)
959 cargs <- many (constraintArg syn)
960 fc <- getFC
960 fc <- getFC
961 args <- many (try (implicitArg (syn { inPattern = True } ))
961 args <- many (try (implicitArg (syn { inPattern = True } ))
@@ -989,7 +989,7 @@ clause syn
989 <?> "function clause"
989 <?> "function clause"
991 optProof = option Nothing (do reserved "proof"
991 optProof = option Nothing (do reserved "proof"
992− n <- fnName
992+ n <- fst <$> fnName
993 return (Just n))
993 return (Just n))
995 fillLHS :: Name -> PTerm -> [PTerm] -> PClause -> PClause
995 fillLHS :: Name -> PTerm -> [PTerm] -> PClause -> PClause
@@ -1042,7 +1042,8 @@ Codegen ::= 'C'
1044codegen_ :: IdrisParser Codegen
1044codegen_ :: IdrisParser Codegen
1045+codegen_ = do n <- fst <$> identifier
1045−codegen_ = do n <- identifier; return (Via (map toLower n))
1046+ return (Via (map toLower n))
1046 <|> do reserved "Bytecode"; return Bytecode
1047 <|> do reserved "Bytecode"; return Bytecode
1047 <?> "code generation language"
1048 <?> "code generation language"
@@ -1091,9 +1092,9 @@ directive syn = do try (lchar '%' *> reserved "lib")
1091 cgn <- codegen_
1092 cgn <- codegen_
1092 hdr <- fst <$> stringLiteral
1093 hdr <- fst <$> stringLiteral
1093 return [PDirective (DInclude cgn hdr)]
1094 return [PDirective (DInclude cgn hdr)]
1094− <|> do try (lchar '%' *> reserved "hide"); n <- fnName
1095+ <|> do try (lchar '%' *> reserved "hide"); n <- fst <$> fnName
1095 return [PDirective (DHide n)]
1096 return [PDirective (DHide n)]
1096− <|> do try (lchar '%' *> reserved "freeze"); n <- iName []
1097+ <|> do try (lchar '%' *> reserved "freeze"); n <- fst <$> iName []
1097 return [PDirective (DFreeze n)]
1098 return [PDirective (DFreeze n)]
1098 <|> do try (lchar '%' *> reserved "access"); acc <- accessibility
1099 <|> do try (lchar '%' *> reserved "access"); acc <- accessibility
1099 return [PDirective (DAccess acc)]
1100 return [PDirective (DAccess acc)]
@@ -1108,20 +1109,20 @@ directive syn = do try (lchar '%' *> reserved "lib")
1108 libs <- sepBy1 (fmap fst stringLiteral) (lchar ',')
1109 libs <- sepBy1 (fmap fst stringLiteral) (lchar ',')
1109 return [PDirective (DDynamicLibs libs)]
1110 return [PDirective (DDynamicLibs libs)]
1110 <|> do try (lchar '%' *> reserved "name")
1111 <|> do try (lchar '%' *> reserved "name")
1111− ty <- fnName
1112+ ty <- fst <$> fnName
1112− ns <- sepBy1 name (lchar ',')
1113+ ns <- sepBy1 (fst <$> name) (lchar ',')
1113 return [PDirective (DNameHint ty ns)]
1114 return [PDirective (DNameHint ty ns)]
1114 <|> do try (lchar '%' *> reserved "error_handlers")
1115 <|> do try (lchar '%' *> reserved "error_handlers")
1115− fn <- fnName
1116+ fn <- fst <$> fnName
1116− arg <- fnName
1117+ arg <- fst <$> fnName
1117− ns <- sepBy1 name (lchar ',')
1118+ ns <- sepBy1 (fst <$> name) (lchar ',')
1118 return [PDirective (DErrorHandlers fn arg ns) ]
1119 return [PDirective (DErrorHandlers fn arg ns) ]
1119 <|> do try (lchar '%' *> reserved "language"); ext <- pLangExt;
1120 <|> do try (lchar '%' *> reserved "language"); ext <- pLangExt;
1120 return [PDirective (DLanguage ext)]
1121 return [PDirective (DLanguage ext)]
1121 <|> do fc <- getFC
1122 <|> do fc <- getFC
1122 try (lchar '%' *> reserved "used")
1123 try (lchar '%' *> reserved "used")
1123− fn <- fnName
1124+ fn <- fst <$> fnName
1124− arg <- iName []
1125+ arg <- fst <$> iName []
1125 return [PDirective (DUsed fc fn arg)]
1126 return [PDirective (DUsed fc fn arg)]
1126 <?> "directive"
1127 <?> "directive"
@@ -1156,14 +1157,14 @@ provider syn = do doc <- try (do (doc, _) <- docstring syn
1156 provideTerm doc <|> providePostulate doc
1157 provideTerm doc <|> providePostulate doc
1157 <?> "type provider"
1158 <?> "type provider"
1158 where provideTerm doc =
1159 where provideTerm doc =
1159− do lchar '('; n <- fnName; lchar ':'; t <- typeExpr syn; lchar ')'
1160+ do lchar '('; n <- fst <$> fnName; lchar ':'; t <- typeExpr syn; lchar ')'
1160 fc <- getFC
1161 fc <- getFC
1161 reserved "with"
1162 reserved "with"
1162 e <- expr syn <?> "provider expression"
1163 e <- expr syn <?> "provider expression"
1163 return [PProvider doc syn fc (ProvTerm t e) n]
1164 return [PProvider doc syn fc (ProvTerm t e) n]
1164 providePostulate doc =
1165 providePostulate doc =
1165 do reserved "postulate"
1166 do reserved "postulate"
1166− n <- fnName
1167+ n <- fst <$> fnName
1167 fc <- getFC
1168 fc <- getFC
1168 reserved "with"
1169 reserved "with"
1169 e <- expr syn <?> "provider expression"
1170 e <- expr syn <?> "provider expression"