diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/NumberRuleTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/NumberRuleTest.java index 81d1bcffec4..0fb106aeeeb 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/NumberRuleTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/NumberRuleTest.java @@ -114,6 +114,13 @@ public class NumberRuleTest extends TestCase { // assertNoNumber("1e+"); } + public void testBug163691() { + assertNoNumber("+x1"); + assertNoNumber("-z0"); + assertNoNumber("- 0"); + assertNoNumber("+ 9"); + } + /** * Validate that given string is recognized as a number. * @param string diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/NumberRule.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/NumberRule.java index e6b87db22b5..c2344f25c9f 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/NumberRule.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/NumberRule.java @@ -55,7 +55,6 @@ public class NumberRule implements IRule } if (ch == '0') { int xCh = scanner.read(); - ++unreadCount; if (xCh == 'x' || xCh == 'X') { // hexnumber starting with [+-]?0[xX] do { @@ -66,9 +65,9 @@ public class NumberRule implements IRule } scanner.unread(); // assert ch == '0'; - } else if (!Character.isDigit((char)ch)) { - ch = scanner.read(); - ++unreadCount; + } else if (ch == '.') { + ch = scanner.read(); + ++unreadCount; } if (Character.isDigit((char)ch)) { // need at least one digit