diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope2.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope2.java index 947d8ea3f70..f43048be1d3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope2.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IScope2.java @@ -16,4 +16,6 @@ package org.eclipse.cdt.core.dom.ast; */ public interface IScope2 { + public IBinding getBinding(IASTName name); + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTName.java index 80d7b969c59..d57e65aacf3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTName.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CASTName.java @@ -35,21 +35,25 @@ public class CASTName extends CASTNode implements IASTName { this.name = name; } - /** - * - */ public CASTName() { name = EMPTY_CHAR_ARRAY; } - /* - * (non-Javadoc) - * - * @see org.eclipse.cdt.core.dom.ast.IASTName#resolveBinding() - */ + private static boolean inited = false; + private static boolean useScope2 = false; + public IBinding resolveBinding() { - if (binding == null) - CVisitor.createBinding(this); + if (binding == null) { + if (!inited) { + useScope2 = System.getProperty("doug.useScope2") != null ? true : false; + inited = true; + } + + if (useScope2) + binding = getScope(this, getPropertyInParent()).getBinding(this); + else + CVisitor.createBinding(this); + } return binding; }