mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 06:32:10 +02:00
This commit is contained in:
parent
c2b76e8109
commit
5706a3abe2
2 changed files with 10 additions and 2 deletions
|
@ -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$
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() );
|
||||
|
|
Loading…
Add table
Reference in a new issue