1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 06:32:10 +02:00
John Camelon 2004-05-15 17:31:25 +00:00
parent c2b76e8109
commit 5706a3abe2
2 changed files with 10 additions and 2 deletions

View file

@ -1578,4 +1578,10 @@ public class ScannerTestCase extends BaseScannerTest
initializeScanner( "\"\\?\\?<\""); //$NON-NLS-1$
validateString("\\?\\?<" ); //$NON-NLS-1$
}
public void testBug62384() throws Exception
{
initializeScanner( "18446744073709551615LL"); //$NON-NLS-1$
validateInteger( "18446744073709551615"); //$NON-NLS-1$
}
}

View file

@ -20,11 +20,13 @@ import org.eclipse.cdt.internal.core.parser.scanner.IScannerData;
public class TokenFactory {
static final String MAX_LONG_STRING = Long.toString( Long.MAX_VALUE );
static final int MAX_LONG_STRING_LENGTH = MAX_LONG_STRING.length();
static final String MAX_HEX_LONG_STRING = "0x" + Long.toString( Long.MAX_VALUE, 16 ); //$NON-NLS-1$
static final int MAX_HEX_LONG_STRING_LENGTH = MAX_HEX_LONG_STRING.length();
public static IToken createIntegerToken( String value, IScannerData scannerData )
{
if( value.compareTo( MAX_LONG_STRING ) > 0 )
if( value.length() > MAX_LONG_STRING_LENGTH || value.compareTo( MAX_LONG_STRING ) > 0 )
return createUniquelyImagedToken( IToken.tINTEGER, value, scannerData );
if( scannerData.getContextStack().getCurrentContext().getKind() == IScannerContext.ContextKind.MACROEXPANSION )
return new IntegerExpansionToken( IToken.tINTEGER, Long.parseLong(value ), scannerData.getContextStack() );
@ -34,7 +36,7 @@ public class TokenFactory {
public static IToken createHexadecimalIntegerToken( String value, IScannerData scannerData )
{
if( value.compareTo( MAX_HEX_LONG_STRING ) > 0 )
if( value.length() > MAX_HEX_LONG_STRING_LENGTH || value.compareTo( MAX_HEX_LONG_STRING ) > 0 )
return createUniquelyImagedToken( IToken.tHEXINT, value, scannerData );
if( scannerData.getContextStack().getCurrentContext().getKind() == IScannerContext.ContextKind.MACROEXPANSION )
return new HexIntegerExpansionToken( IToken.tHEXINT, value, scannerData.getContextStack() );