diff options
author | Markus Schorn | 2008-07-25 12:52:22 +0000 |
---|---|---|
committer | Markus Schorn | 2008-07-25 12:52:22 +0000 |
commit | 91778c287bbe11ccae0da1ed54f314f4bbda39f3 (patch) | |
tree | a908dfbe33b25ffbb1b3f524b5aca7d4266b6cb8 /lrparser/org.eclipse.cdt.core.lrparser/old | |
parent | d548722c4eb1557b158bb81f3fb9ff2ae06fe517 (diff) | |
download | org.eclipse.cdt-91778c287bbe11ccae0da1ed54f314f4bbda39f3.tar.gz org.eclipse.cdt-91778c287bbe11ccae0da1ed54f314f4bbda39f3.tar.xz org.eclipse.cdt-91778c287bbe11ccae0da1ed54f314f4bbda39f3.zip |
Reworked parts of template instantiation, fixes bug 236197.
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser/old')
7 files changed, 66 insertions, 2 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumeration.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumeration.java index de7210b3a13..86cc2ccff8f 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumeration.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumeration.java @@ -14,12 +14,16 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.cdt.core.dom.ILinkage; +import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IEnumeration; import org.eclipse.cdt.core.dom.ast.IEnumerator; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.internal.core.dom.Linkage; +import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; import org.eclipse.core.runtime.PlatformObject; @SuppressWarnings("restriction") @@ -102,6 +106,10 @@ public class C99Enumeration extends PlatformObject implements IC99Binding, IEnum this.scope = scope; } - - + public IBinding getOwner() throws DOMException { + if (scope != null) { + return CVisitor.findEnclosingFunction((IASTNode) scope.getScopeName()); // local or global + } + return null; + } } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumerator.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumerator.java index f0f3a8a2f50..620b53662e5 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumerator.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Enumerator.java @@ -11,10 +11,14 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings; import org.eclipse.cdt.core.dom.ILinkage; +import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IEnumerator; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.internal.core.dom.Linkage; +import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; import org.eclipse.core.runtime.PlatformObject; @SuppressWarnings("restriction") @@ -64,4 +68,10 @@ public class C99Enumerator extends PlatformObject implements IC99Binding, IEnume this.scope = scope; } + public IBinding getOwner() throws DOMException { + if (scope != null) { + return CVisitor.findEnclosingFunction((IASTNode) scope.getScopeName()); // local or global + } + return null; + } } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Function.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Function.java index 0570ea5b5ca..dfcc0559232 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Function.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Function.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.cdt.core.dom.ILinkage; +import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IFunction; import org.eclipse.cdt.core.dom.ast.IFunctionType; import org.eclipse.cdt.core.dom.ast.IParameter; @@ -150,4 +151,8 @@ public class C99Function extends PlatformObject implements IC99Binding, IFunctio public void setScope(IScope scope) { this.scope = scope; } + + public IBinding getOwner() { + return null; + } } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Label.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Label.java index 6182aab8dfa..17e3db6f3b8 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Label.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Label.java @@ -11,10 +11,14 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings; import org.eclipse.cdt.core.dom.ILinkage; +import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTLabelStatement; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.ILabel; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.internal.core.dom.Linkage; +import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; import org.eclipse.core.runtime.PlatformObject; @SuppressWarnings("restriction") @@ -59,4 +63,11 @@ public class C99Label extends PlatformObject implements IC99Binding, ILabel { public void setScope(IScope scope) { this.scope = scope; } + + public IBinding getOwner() throws DOMException { + if (scope != null) { + return CVisitor.findEnclosingFunction((IASTNode) scope.getScopeName()); // local or global + } + return null; + } } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Structure.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Structure.java index b6d315cb07c..fc43d3667e6 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Structure.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Structure.java @@ -14,12 +14,16 @@ import java.util.LinkedHashMap; import java.util.Map; import org.eclipse.cdt.core.dom.ILinkage; +import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.internal.core.dom.Linkage; +import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; import org.eclipse.core.runtime.PlatformObject; @SuppressWarnings("restriction") @@ -144,4 +148,10 @@ public class C99Structure extends PlatformObject implements IC99Binding, ICompos this.scope = scope; } + public IBinding getOwner() throws DOMException { + if (scope != null) { + return CVisitor.findEnclosingFunction((IASTNode) scope.getScopeName()); // local or global + } + return null; + } } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Typedef.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Typedef.java index 458697bfa7a..ac10b603e70 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Typedef.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Typedef.java @@ -12,11 +12,14 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings; import org.eclipse.cdt.core.dom.ILinkage; import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.internal.core.dom.Linkage; import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer; +import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; import org.eclipse.core.runtime.PlatformObject; @SuppressWarnings("restriction") @@ -98,4 +101,11 @@ public class C99Typedef extends PlatformObject implements IC99Binding, ITypedef, public void setScope(IScope scope) { this.scope = scope; } + + public IBinding getOwner() throws DOMException { + if (scope != null) { + return CVisitor.findEnclosingFunction((IASTNode) scope.getScopeName()); // local or global + } + return null; + } } diff --git a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Variable.java b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Variable.java index d93ecdd74e1..b48a46f3648 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Variable.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/old/org/eclipse/cdt/internal/core/dom/lrparser/c99/bindings/C99Variable.java @@ -11,10 +11,14 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99.bindings; import org.eclipse.cdt.core.dom.ILinkage; +import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.internal.core.dom.Linkage; +import org.eclipse.cdt.internal.core.dom.parser.c.CVisitor; import org.eclipse.core.runtime.PlatformObject; @SuppressWarnings("restriction") @@ -109,4 +113,10 @@ public class C99Variable extends PlatformObject implements IC99Binding, IVariabl this.scope = scope; } + public IBinding getOwner() throws DOMException { + if (scope == null) + return null; + + return CVisitor.findDeclarationOwner((IASTNode) scope.getScopeName(), true); + } } |