summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-07-01 00:59:40 +0200
committerAraq <rumpf_a@web.de>2014-07-01 00:59:40 +0200
commit7c5f87e413a2a11cad591f7dc6fb015869f0125c (patch)
tree2853ef847404b3ded7ab445c85d570d640f0a7a9
parent4860b46c7fd2850f8ec30c313434a2aed50c5561 (diff)
downloadNim-7c5f87e413a2a11cad591f7dc6fb015869f0125c.tar.gz
fixes #1265
-rw-r--r--compiler/lexer.nim10
1 files changed, 8 insertions, 2 deletions
diff --git a/compiler/lexer.nim b/compiler/lexer.nim
index 0b4e4348d..e343dfef6 100644
--- a/compiler/lexer.nim
+++ b/compiler/lexer.nim
@@ -424,8 +424,14 @@ proc getNumber(L: var TLexer): TToken =
       if (result.iNumber < low(int32)) or (result.iNumber > high(int32)):
         if result.tokType == tkIntLit:
           result.tokType = tkInt64Lit
-        elif result.tokType in {tkInt8Lit, tkInt16Lit}:
-          lexMessage(L, errInvalidNumber, result.literal)
+        elif result.tokType in {tkInt8Lit, tkInt16Lit, tkInt32Lit}:
+          lexMessage(L, errNumberOutOfRange, result.literal)
+      elif result.tokType == tkInt8Lit and
+          (result.iNumber < int8.low or result.iNumber > int8.high):
+        lexMessage(L, errNumberOutOfRange, result.literal)
+      elif result.tokType == tkInt16Lit and
+          (result.iNumber < int16.low or result.iNumber > int16.high):
+        lexMessage(L, errNumberOutOfRange, result.literal)
   except EInvalidValue:
     lexMessage(L, errInvalidNumber, result.literal)
   except EOverflow, EOutOfRange: