+ }
+ else
+ {
+ bool isSigned = constant[0] == '-';
+ int64 i64 = strtoll(constant, null, 0);
+ uint64 ui64 = strtoull(constant, null, 0);
+ bool is64Bit = false;
+ if(isSigned)
+ {
+ if(i64 < MININT)
+ is64Bit = true;
+ }
+ else
+ {
+ if(ui64 > MAXINT)
+ {
+ if(ui64 > MAXDWORD)
+ {
+ is64Bit = true;
+ if(ui64 <= MAXINT64 && (constant[0] != '0' || !constant[1]))
+ isSigned = true;
+ }
+ }
+ else if(constant[0] != '0' || !constant[1])
+ isSigned = true;
+ }
+ type.kind = is64Bit ? int64Type : intType;
+ type.isSigned = isSigned;
+ }