From 87821eb4fc2cfc7d917d9e9d98bc1ca74282b97c Mon Sep 17 00:00:00 2001 From: John Camelon Date: Thu, 13 May 2004 18:52:13 +0000 Subject: [PATCH] Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=62042 --- .../cdt/core/parser/tests/ScannerTestCase.java | 17 ++++++++--------- .../internal/core/parser/scanner/Scanner.java | 8 ++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java index c75880b0483..1f75833583f 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java @@ -1473,15 +1473,6 @@ public class ScannerTestCase extends BaseScannerTest assertEquals( callback.problems.size(), 1 ); } - -// public void testGerman() throws ScannerException -// { -// initializeScanner("\"Lißä\" 'ß' /* Lißä */ Lißä "); -// validateString("Lißä"); -// validateChar( 'ß' ); -// validateIdentifier( "Lißä"); -// validateEOF(); -// } public void test54778() throws ScannerException { @@ -1563,4 +1554,12 @@ public class ScannerTestCase extends BaseScannerTest validateString( "ab"); //$NON-NLS-1$ validateEOF(); } + + public void testBug62042() throws Exception + { + Callback callback = new Callback(ParserMode.QUICK_PARSE); + initializeScanner( "0x", ParserMode.QUICK_PARSE, callback ); //$NON-NLS-1$ + validateEOF(); + assertFalse( callback.problems.isEmpty() ); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java index 7c1f3ed7317..69f22225f8f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java @@ -69,6 +69,7 @@ import org.eclipse.cdt.internal.core.parser.util.TraceUtil; public class Scanner implements IScanner { + protected static final String HEX_PREFIX = "0x"; //$NON-NLS-1$ private static final ObjectMacroDescriptor CPLUSPLUS_MACRO = new ObjectMacroDescriptor( __CPLUSPLUS, "199711L"); //$NON-NLS-1$ private static final ObjectMacroDescriptor STDC_VERSION_MACRO = new ObjectMacroDescriptor( __STDC_VERSION__, "199001L"); //$NON-NLS-1$ protected static final ObjectMacroDescriptor STDC_HOSTED_MACRO = new ObjectMacroDescriptor( __STDC_HOSTED__, "0"); //$NON-NLS-1$ @@ -1131,7 +1132,14 @@ public class Scanner implements IScanner { int tokenType = floatingPoint ? IToken.tFLOATINGPT : IToken.tINTEGER; if( tokenType == IToken.tINTEGER && hex ) + { + if( result.equals( HEX_PREFIX) ) + { + handleProblem( IProblem.SCANNER_BAD_HEX_FORMAT, HEX_PREFIX, beginOffset, false, true ); + return null; + } tokenType = IToken.tHEXINT; + } return newToken( tokenType,