diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java index 431ed11c8be..33ee56d405d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CVisitor.java @@ -1064,20 +1064,22 @@ public class CVisitor extends ASTQueries { } private static IASTNode getContainingBlockItem(IASTNode node) { - IASTNode parent = node.getParent(); - if (parent instanceof IASTDeclaration) { - IASTNode p = parent.getParent(); - if (p instanceof IASTDeclarationStatement) - return p; - return parent; - } else if (parent instanceof IASTCompoundStatement || // parent is something that can contain a declaration - parent instanceof IASTTranslationUnit || - parent instanceof IASTForStatement || - parent instanceof IASTFunctionDeclarator) { - return node; + for (IASTNode parent = node.getParent(); parent != null; parent = parent.getParent()) { + if (parent instanceof IASTDeclaration) { + IASTNode p = parent.getParent(); + if (p instanceof IASTDeclarationStatement) + return p; + return parent; + } + if (parent instanceof IASTCompoundStatement || // parent is something that can contain a declaration + parent instanceof IASTTranslationUnit || + parent instanceof IASTForStatement || + parent instanceof IASTFunctionDeclarator) { + return node; + } + node = parent; } - - return getContainingBlockItem(parent); + return null; } /** diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java index 4f9518752e7..c3e27ab96e9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java @@ -1362,10 +1362,8 @@ public class CPPVisitor extends ASTQueries { public static IASTNode getContainingBlockItem(IASTNode node) { if (node == null) return null; if (node.getPropertyInParent() == null) return null; - IASTNode parent = node.getParent(); - if (parent == null) - return null; - while (parent != null) { + + for (IASTNode parent = node.getParent(); parent != null; parent = parent.getParent()) { if (parent instanceof IASTDeclaration) { IASTNode p = parent.getParent(); if (p instanceof IASTDeclarationStatement) @@ -1387,7 +1385,6 @@ public class CPPVisitor extends ASTQueries { return parent; } node = parent; - parent = node.getParent(); } return null; }