@@ -418,13 +418,20 @@ pSimpleExpr syn =
418 <|> try (do x <- pfName; fc <- pfc; return (PRef fc x))
418 <|> try (do x <- pfName; fc <- pfc; return (PRef fc x))
419 <|> try (pPair syn)
419 <|> try (pPair syn)
420 <|> try (do lchar '('; e <- pExpr syn; lchar ')'; return e)
420 <|> try (do lchar '('; e <- pExpr syn; lchar ')'; return e)
421− <|> try (do c <- pConstant; return (PConstant c))
421+ <|> try (do c <- pConstant; fc <- pfc
422+ return (modifyConst syn fc (PConstant c)))
422 <|> do reserved "Set"; return PSet
423 <|> do reserved "Set"; return PSet
423 <|> try (do symbol "()"; fc <- pfc; return (PTrue fc))
424 <|> try (do symbol "()"; fc <- pfc; return (PTrue fc))
424 <|> try (do symbol "_|_"; fc <- pfc; return (PFalse fc))
425 <|> try (do symbol "_|_"; fc <- pfc; return (PFalse fc))
425 <|> do lchar '_'; return Placeholder
426 <|> do lchar '_'; return Placeholder
426 <|> pSimpleExtExpr syn
427 <|> pSimpleExtExpr syn
429+modifyConst :: SyntaxInfo -> FC -> PTerm -> PTerm
430+modifyConst syn fc (PConstant (I x))
431+ | not (inPattern syn)
432+ = PApp fc (PRef fc (UN ["fromInteger"])) [pexp (PConstant (I x))]
433+modifyConst syn fc x = x
428pPair syn = do lchar '('; l <- pExpr syn; op <- pairOp
435pPair syn = do lchar '('; l <- pExpr syn; op <- pairOp
429 fc <- pfc
436 fc <- pfc
430 r <- pExpr syn; lchar ')';
437 r <- pExpr syn; lchar ')';
@@ -470,9 +477,11 @@ pLambda syn = do lchar '\\';
470 sc <- pExpr syn
477 sc <- pExpr syn
471 return (bindList PLam xt sc)
478 return (bindList PLam xt sc)
473−pLet syn = do reserved "let"; n <- pName; lchar '='; v <- pExpr syn
480+pLet syn = do reserved "let"; n <- pName;
481+ ty <- option Placeholder (do lchar ':'; pExpr' syn)
482+ lchar '='; v <- pExpr syn
474 reserved "in"; sc <- pExpr syn
483 reserved "in"; sc <- pExpr syn
475− return (PLet n Placeholder v sc)
484+ return (PLet n ty v sc)
477pPi syn =
486pPi syn =
478 try (do lazy <- option False (do lchar '|'; return True)
487 try (do lazy <- option False (do lchar '|'; return True)