diff --git a/compiler/lexer.nim b/compiler/lexer.nim index 9e5f4e9d7f..6a104d1391 100644 --- a/compiler/lexer.nim +++ b/compiler/lexer.nim @@ -408,12 +408,12 @@ proc GetNumber(L: var TLexer): TToken = (result.tokType == tkFloat64Lit): result.fnumber = parseFloat(result.literal) if result.tokType == tkIntLit: result.tokType = tkFloatLit - else: - result.iNumber = ParseBiggestInt(result.literal) - if (result.iNumber < low(int32)) or (result.iNumber > high(int32)): - if result.tokType == tkIntLit: + else: + result.iNumber = parseBiggestInt(result.literal) + if (result.iNumber < low(int32)) or (result.iNumber > high(int32)): + if result.tokType == tkIntLit: result.tokType = tkInt64Lit - elif result.tokType != tkInt64Lit: + elif result.tokType in {tkInt8Lit, tkInt16Lit}: lexMessage(L, errInvalidNumber, result.literal) except EInvalidValue: lexMessage(L, errInvalidNumber, result.literal) diff --git a/tests/compile/tvarious.nim b/tests/compile/tvarious.nim index e91de92459..25f48bb30d 100644 --- a/tests/compile/tvarious.nim +++ b/tests/compile/tvarious.nim @@ -1,4 +1,7 @@ # Test various aspects + +# bug #572 +var a=12345678901'u64 var x = (x: 42, y: (a: 8, z: 10)) echo x.y