From 936b844596fda5bc8beed2a3b06a03f651c0ef17 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Tue, 7 Oct 2014 15:06:03 -0700 Subject: [PATCH] Improved assert[Non]ProblemOnFirstIdentifier methods. --- .../core/parser/tests/ast2/AST2CPPTests.java | 2 +- .../core/parser/tests/ast2/AST2TestBase.java | 25 ++++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index 6673e302ee4..7f0c1cefc11 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -8334,7 +8334,7 @@ public class AST2CPPTests extends AST2TestBase { public void testLambdaWithCapture_446225() throws Exception { BindingAssertionHelper bh = getAssertionHelper(); ICPPVariable foo1= bh.assertNonProblemOnFirstIdentifier("foo =", ICPPVariable.class); - ICPPVariable foo2= bh.assertNonProblemOnFirstIdentifier("foo]", ICPPVariable.class); + ICPPVariable foo2= bh.assertNonProblemOnFirstIdentifier("[foo]", ICPPVariable.class); assertTrue(foo1 == foo2); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java index ccd16348db1..e255cb12115 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TestBase.java @@ -550,15 +550,26 @@ public class AST2TestBase extends BaseTestCase { return (T) binding; } - private int getIdentifierLength(String str) { + private int getIdentifierOffset(String str) { + for (int i = 0; i < str.length(); ++i) { + if (Character.isJavaIdentifierPart(str.charAt(i))) + return i; + } + fail("Didn't find identifier in \"" + str + "\""); + return -1; + } + + private int getIdentifierLength(String str, int offset) { int i; - for (i = 0; i < str.length() && Character.isJavaIdentifierPart(str.charAt(i)); ++i) { + for (i = offset; i < str.length() && Character.isJavaIdentifierPart(str.charAt(i)); ++i) { } return i; } public IProblemBinding assertProblemOnFirstIdentifier(String section) { - return assertProblem(section, getIdentifierLength(section)); + int offset = getIdentifierOffset(section); + String identifier = section.substring(offset, getIdentifierLength(section, offset)); + return assertProblem(section, identifier); } public IProblemBinding assertProblemOnFirstIdentifier(String section, int problemId) { @@ -568,10 +579,12 @@ public class AST2TestBase extends BaseTestCase { } public T assertNonProblemOnFirstIdentifier(String section, Class... cs) { - return assertNonProblem(section, getIdentifierLength(section), cs); + int offset = getIdentifierOffset(section); + String identifier = section.substring(offset, getIdentifierLength(section, offset)); + return assertNonProblem(section, identifier, cs); } - public void assertNoName(String section, int len) { + public void assertNoName(String section, int len) { IASTName name= findName(section, len); if (name != null) { String selection = section.substring(0, len); @@ -586,7 +599,7 @@ public class AST2TestBase extends BaseTestCase { public IASTImplicitName assertImplicitName(String section, int len, Class bindingClass) { IASTName name = findImplicitName(section, len); final String selection = section.substring(0, len); - assertNotNull("did not find \"" + selection + "\"", name); + assertNotNull("Did not find \"" + selection + "\"", name); assertInstance(name, IASTImplicitName.class); IASTImplicitNameOwner owner = (IASTImplicitNameOwner) name.getParent();