Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java')
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java48
1 files changed, 48 insertions, 0 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 b3f7f2f604c..17aa6293c13 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
@@ -45,6 +45,7 @@ import org.eclipse.cdt.core.dom.ast.IASTInitializerExpression;
import org.eclipse.cdt.core.dom.ast.IASTLabelStatement;
import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNameOwner;
import org.eclipse.cdt.core.dom.ast.IASTNamedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTProblemDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTReturnStatement;
@@ -7261,4 +7262,51 @@ public class AST2CPPTests extends AST2BaseTest {
public void testLookupFromInlineFriend_284690() throws Exception {
parseAndCheckBindings(getAboveComment(), ParserLanguage.CPP);
}
+
+ // int v1;
+ // static int v2;
+ // extern int v3;
+ // int v4= 12;
+ // static int v5= 1;
+ // class X {
+ // int v6;
+ // static const int v7;
+ // static const int v8= 1;
+ // };
+ // const int X::v7= 1;
+ public void testVariableDefVsDecl_286259() throws Exception {
+ String[] declNames= {"v3"};
+ String[] defNames= {"v1", "v2", "v4", "v5", "X::v7"};
+ IASTTranslationUnit tu= parseAndCheckBindings(getAboveComment(), ParserLanguage.CPP);
+ checkDeclDef(declNames, defNames, tu.getDeclarations());
+
+ declNames= new String[] {"v7"};
+ defNames= new String[] {"v6", "v8"};
+ IASTCompositeTypeSpecifier cls= getCompositeType(tu, 5);
+ checkDeclDef(declNames, defNames, cls.getMembers());
+ }
+
+ private void checkDeclDef(String[] declNames, String[] defNames, IASTDeclaration[] decls) {
+ int i=0, j=0;
+ for (IASTDeclaration decl : decls) {
+ final IASTDeclarator[] dtors = ((IASTSimpleDeclaration) decl).getDeclarators();
+ for (IASTDeclarator dtor : dtors) {
+ final String name = dtor.getName().toString();
+ switch (dtor.getRoleForName(dtor.getName())) {
+ case IASTNameOwner.r_declaration:
+ assertTrue("Unexpected decl " + name, i < declNames.length);
+ assertEquals(declNames[i++], name);
+ break;
+ case IASTNameOwner.r_definition:
+ assertTrue("Unexpected decl " + name, i < defNames.length);
+ assertEquals(defNames[j++], name);
+ break;
+ default:
+ assertTrue(name, false);
+ }
+ }
+ }
+ assertEquals(declNames.length, i);
+ assertEquals(defNames.length, j);
+ }
}

Back to the top