From 83af620c1c591b72150026ca739f326c07d6590c Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <etienne.kneuss@epfl.ch>
Date: Wed, 18 Feb 2015 13:11:42 +0100
Subject: [PATCH] Promote IntLiterals to BigIntLiterals when used in a
 comparison

---
 .../scala/leon/frontends/scalac/CodeExtraction.scala | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/main/scala/leon/frontends/scalac/CodeExtraction.scala b/src/main/scala/leon/frontends/scalac/CodeExtraction.scala
index df19be74d..7acbe7175 100644
--- a/src/main/scala/leon/frontends/scalac/CodeExtraction.scala
+++ b/src/main/scala/leon/frontends/scalac/CodeExtraction.scala
@@ -1335,11 +1335,17 @@ trait CodeExtraction extends ASTExtractors {
           val rl = extractTree(l)
           val rr = extractTree(r)
 
-          (rl.getType, rr.getType) match {
-            case (rt, lt) if isSubtypeOf(rt, lt) || isSubtypeOf(lt, rt) =>
+          (rl, rr) match {
+            case (IsTyped(_, rt), IsTyped(_, lt)) if isSubtypeOf(rt, lt) || isSubtypeOf(lt, rt) =>
               Equals(rl, rr)
 
-            case (rt, lt) =>
+            case (IntLiteral(v), IsTyped(_, IntegerType)) =>
+              Equals(InfiniteIntegerLiteral(v), rr)
+
+            case (IsTyped(_, IntegerType), IntLiteral(v)) =>
+              Equals(rl, InfiniteIntegerLiteral(v))
+
+            case (IsTyped(_, rt), IsTyped(_, lt)) =>
               outOfSubsetError(tr, "Invalid comparison: (_: "+rt+") == (_: "+lt+")")
           }
 
-- 
GitLab