From db27a94a9e37844a986a6c075a71d17142ff2671 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Sun, 3 Jan 2016 01:47:44 -0500 Subject: [PATCH] Bug 484959 - Instantiate return expression of constexpr function template Change-Id: If9f181581924395ba575167b34aca89a88931578 Signed-off-by: Nathan Ridge --- .../parser/tests/ast2/AST2TemplateTests.java | 18 +++++ .../core/parser/tests/ast2/AST2TestBase.java | 4 +- .../tests/IndexCPPTemplateResolutionTest.java | 19 ++++++ .../core/testplugin/util/BaseTestCase.java | 7 ++ .../dom/parser/cpp/CPPDeferredFunction.java | 3 +- .../core/dom/parser/cpp/CPPFunction.java | 6 +- .../parser/cpp/CPPFunctionSpecialization.java | 11 +++- .../dom/parser/cpp/CPPFunctionTemplate.java | 2 +- .../cpp/CPPTemplateNonTypeArgument.java | 3 - .../parser/cpp/ICPPComputableFunction.java | 5 +- .../dom/parser/cpp/semantics/EvalFixed.java | 10 ++- .../cpp/semantics/EvalFunctionCall.java | 2 +- .../composite/cpp/CompositeCPPFunction.java | 5 +- .../internal/core/pdom/dom/PDOMBinding.java | 4 +- .../core/pdom/dom/c/PDOMCEnumeration.java | 3 +- .../core/pdom/dom/c/PDOMCEnumerator.java | 3 +- .../core/pdom/dom/c/PDOMCFunction.java | 3 +- .../core/pdom/dom/c/PDOMCLinkage.java | 2 +- .../core/pdom/dom/c/PDOMCStructure.java | 5 +- .../core/pdom/dom/c/PDOMCTypedef.java | 3 +- .../core/pdom/dom/c/PDOMCVariable.java | 3 +- .../dom/cpp/IPDOMCPPTemplateParameter.java | 3 +- .../dom/cpp/PDOMCPPClassSpecialization.java | 4 +- .../pdom/dom/cpp/PDOMCPPClassTemplate.java | 7 +- .../core/pdom/dom/cpp/PDOMCPPClassType.java | 5 +- .../core/pdom/dom/cpp/PDOMCPPConstructor.java | 5 +- .../dom/cpp/PDOMCPPConstructorInstance.java | 5 +- .../cpp/PDOMCPPConstructorSpecialization.java | 6 +- .../dom/cpp/PDOMCPPConstructorTemplate.java | 7 +- ...MCPPConstructorTemplateSpecialization.java | 5 +- .../core/pdom/dom/cpp/PDOMCPPEnumeration.java | 3 +- .../cpp/PDOMCPPEnumerationSpecialization.java | 3 +- .../core/pdom/dom/cpp/PDOMCPPEnumerator.java | 3 +- .../cpp/PDOMCPPEnumeratorSpecialization.java | 3 +- .../core/pdom/dom/cpp/PDOMCPPFunction.java | 11 ++-- .../pdom/dom/cpp/PDOMCPPFunctionInstance.java | 7 +- .../cpp/PDOMCPPFunctionSpecialization.java | 7 +- .../pdom/dom/cpp/PDOMCPPFunctionTemplate.java | 11 ++-- ...PDOMCPPFunctionTemplateSpecialization.java | 5 +- .../core/pdom/dom/cpp/PDOMCPPLinkage.java | 66 ++++++++++--------- .../core/pdom/dom/cpp/PDOMCPPMethod.java | 9 +-- .../pdom/dom/cpp/PDOMCPPMethodInstance.java | 7 +- .../dom/cpp/PDOMCPPMethodSpecialization.java | 5 +- .../pdom/dom/cpp/PDOMCPPMethodTemplate.java | 5 +- .../PDOMCPPMethodTemplateSpecialization.java | 5 +- .../core/pdom/dom/cpp/PDOMCPPNamespace.java | 3 +- .../pdom/dom/cpp/PDOMCPPNamespaceAlias.java | 3 +- .../cpp/PDOMCPPTemplateNonTypeParameter.java | 3 +- .../cpp/PDOMCPPTemplateTemplateParameter.java | 3 +- .../dom/cpp/PDOMCPPTemplateTypeParameter.java | 3 +- .../core/pdom/dom/cpp/PDOMCPPTypedef.java | 3 +- .../core/pdom/dom/cpp/PDOMCPPVariable.java | 3 +- 52 files changed, 220 insertions(+), 119 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java index b1f5f80b0a0..f926b67c0a4 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java @@ -8752,6 +8752,24 @@ public class AST2TemplateTests extends AST2TestBase { public void testConstexprFunctionCallWithNonConstexprArguments_429891() throws Exception { parseAndCheckBindings(); } + + // template + // struct S; + // + // template <> + // struct S { + // static const int value = 42; + // }; + // + // template + // constexpr int foo() { + // return S::value; + // } + // + // constexpr int waldo = foo(); + public void testInstantiationOfReturnExpression_484959() throws Exception { + getAssertionHelper().assertVariableValue("waldo", 42); + } // template class A {}; // template class B {}; 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 67f4a04eb31..538ca6f1de8 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 @@ -776,9 +776,7 @@ public class AST2TestBase extends BaseTestCase { public void assertVariableValue(String variableName, long expectedValue) { IVariable var = assertNonProblem(variableName); - assertNotNull(var.getInitialValue()); - assertNotNull(var.getInitialValue().numericalValue()); - assertEquals(expectedValue, var.getInitialValue().numericalValue().longValue()); + BaseTestCase.assertVariableValue(var, expectedValue); } public U assertType(T obj, Class... cs) { diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java index 88c8ce41e94..7c4153cc69c 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java @@ -2644,6 +2644,25 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa public void testSpecializationOfConstexprFunction_420995() throws Exception { checkBindings(); } + + // template + // struct S; + // + // template <> + // struct S { + // static const int value = 42; + // }; + // + // template + // constexpr int foo() { + // return S::value; + // } + + // constexpr int waldo = foo(); + public void testInstantiationOfReturnExpression_484959() throws Exception { + ICPPVariable waldo = getBindingFromASTName("waldo", 5); + assertVariableValue(waldo, 42); + } // template // class waldo { diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java index 606fb5ab88c..67dbfb78fe0 100644 --- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java +++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java @@ -32,6 +32,7 @@ import junit.framework.TestResult; import junit.framework.TestSuite; import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ElementChangedEvent; @@ -349,4 +350,10 @@ public class BaseTestCase extends TestCase { } return clazz.cast(o); } + + protected static void assertVariableValue(IVariable var, long expectedValue) { + assertNotNull(var.getInitialValue()); + assertNotNull(var.getInitialValue().numericalValue()); + assertEquals(expectedValue, var.getInitialValue().numericalValue().longValue()); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredFunction.java index bc13b50c14b..33818e9a70e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPDeferredFunction.java @@ -12,6 +12,7 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.dom.parser.cpp; +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; @@ -162,7 +163,7 @@ public class CPPDeferredFunction extends CPPUnknownBinding implements ICPPDeferr } @Override - public ICPPEvaluation getReturnExpression() { + public ICPPEvaluation getReturnExpression(IASTNode point) { return null; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java index 65775e0634f..a395b59a1e1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java @@ -673,7 +673,7 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt } @Override - public ICPPEvaluation getReturnExpression() { + public ICPPEvaluation getReturnExpression(IASTNode point) { if (!isConstexpr()) return null; if (definition == null) @@ -710,9 +710,9 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt return EvalFixed.INCOMPLETE; } - public static ICPPEvaluation getReturnExpression(ICPPFunction function) { + public static ICPPEvaluation getReturnExpression(ICPPFunction function, IASTNode point) { if (function instanceof ICPPComputableFunction) { - return ((ICPPComputableFunction) function).getReturnExpression(); + return ((ICPPComputableFunction) function).getReturnExpression(point); } return null; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java index 72e6cfadb14..f78d6ddd8d3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java @@ -35,6 +35,8 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameterMap; import org.eclipse.cdt.core.index.IIndexBinding; import org.eclipse.cdt.internal.core.dom.parser.ASTInternal; import org.eclipse.cdt.internal.core.dom.parser.ASTQueries; +import org.eclipse.cdt.internal.core.dom.parser.Value; +import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPTemplates; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; /** @@ -319,7 +321,7 @@ public class CPPFunctionSpecialization extends CPPSpecialization implements ICPP } @Override - public ICPPEvaluation getReturnExpression() { + public ICPPEvaluation getReturnExpression(IASTNode point) { if (!isConstexpr()) return null; @@ -330,7 +332,12 @@ public class CPPFunctionSpecialization extends CPPSpecialization implements ICPP } IBinding f = getSpecializedBinding(); if (f instanceof ICPPComputableFunction) { - return ((ICPPComputableFunction) f).getReturnExpression(); + ICPPEvaluation eval = ((ICPPComputableFunction) f).getReturnExpression(point); + if (eval != null) { + eval = eval.instantiate(getTemplateParameterMap(), -1, + CPPTemplates.getSpecializationContext(getOwner()), Value.MAX_RECURSION_DEPTH, point); + } + return eval; } return null; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java index 24e683d50ed..2371c745abc 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java @@ -438,7 +438,7 @@ public class CPPFunctionTemplate extends CPPTemplateDefinition } @Override - public ICPPEvaluation getReturnExpression() { + public ICPPEvaluation getReturnExpression(IASTNode point) { if (!isConstexpr()) return null; ICPPASTFunctionDefinition functionDefinition = CPPFunction.getFunctionDefinition(getDefinition()); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateNonTypeArgument.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateNonTypeArgument.java index 4059477b1e9..41c52a2d28b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateNonTypeArgument.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateNonTypeArgument.java @@ -39,9 +39,6 @@ public class CPPTemplateNonTypeArgument implements ICPPTemplateArgument { IValue value = evaluation.getValue(point); if (value == Value.ERROR) { fEvaluation = EvalFixed.INCOMPLETE; - } else if (value.getEvaluation() instanceof EvalFixed) { - // Avoid nesting EvalFixed's as nesting causes the signature to be different. - fEvaluation = value.getEvaluation(); } else { fEvaluation= new EvalFixed(evaluation.getType(point), evaluation.getValueCategory(point), value); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPComputableFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPComputableFunction.java index 9d4cef2b01b..7273d58f898 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPComputableFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ICPPComputableFunction.java @@ -10,6 +10,8 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.dom.parser.cpp; +import org.eclipse.cdt.core.dom.ast.IASTNode; + /** * Represents a function the return value of which may potentially be calculated at parsing time. */ @@ -17,6 +19,7 @@ public interface ICPPComputableFunction { /** * For a constexpr function returns the return statement expression. Otherwise returns * {@code null}. + * @param point the point of instantiation for name lookups */ - public ICPPEvaluation getReturnExpression(); + public ICPPEvaluation getReturnExpression(IASTNode point); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFixed.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFixed.java index b2a230fec75..f4bdccf2b27 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFixed.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFixed.java @@ -45,6 +45,14 @@ public class EvalFixed extends CPPEvaluation { private boolean fCheckedIsValueDependent; public EvalFixed(IType type, ValueCategory cat, IValue value) { + // Avoid nesting EvalFixed's as nesting causes the signature to be different. + if (value.getEvaluation() instanceof EvalFixed) { + EvalFixed inner = (EvalFixed) value.getEvaluation(); + type = inner.fType; + cat = inner.fValueCategory; + value = inner.fValue; + } + if (type instanceof CPPBasicType) { Long num = value.numericalValue(); if (num != null) { @@ -57,7 +65,7 @@ public class EvalFixed extends CPPEvaluation { fValueCategory= cat; fValue= value; } - + public IType getType() { return fType; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java index ad043072ca6..ed7e6680528 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java @@ -244,7 +244,7 @@ public class EvalFunctionCall extends CPPDependentEvaluation { } if (function == null) return this; - ICPPEvaluation eval = CPPFunction.getReturnExpression(function); + ICPPEvaluation eval = CPPFunction.getReturnExpression(function, context.getPoint()); if (eval == null) return EvalFixed.INCOMPLETE; CPPFunctionParameterMap parameterMap = buildParameterMap(function); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunction.java index c560bf398e0..b670b9156a8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPFunction.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.index.composite.cpp; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; @@ -139,7 +140,7 @@ class CompositeCPPFunction extends CompositeCPPBinding implements ICPPFunction, } @Override - public ICPPEvaluation getReturnExpression() { - return CPPFunction.getReturnExpression((ICPPFunction) rbinding); + public ICPPEvaluation getReturnExpression(IASTNode point) { + return CPPFunction.getReturnExpression((ICPPFunction) rbinding, point); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java index 3ab841422ad..844e149cedd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java @@ -19,6 +19,7 @@ import java.lang.reflect.Modifier; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IFunction; import org.eclipse.cdt.core.dom.ast.IFunctionType; @@ -436,9 +437,10 @@ public abstract class PDOMBinding extends PDOMNamedNode implements IPDOMBinding /** * The binding is reused by a declaration or definition, we may need to update modifiers. + * @param point the point of instantiation for name lookups * @throws CoreException */ - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java index 460105ee04f..eee1e1c95a8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; +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; @@ -62,7 +63,7 @@ class PDOMCEnumeration extends PDOMBinding implements IEnumeration, IIndexType, } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { storeValueBounds((IEnumeration) newBinding); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java index fcf9141a181..96c1b497807 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java @@ -11,6 +11,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.c; import org.eclipse.cdt.core.CCorePlugin; +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.IType; @@ -64,7 +65,7 @@ class PDOMCEnumerator extends PDOMBinding implements IEnumerator { } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof IEnumerator) storeValue(getDB(), (IEnumerator) newBinding); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java index bdf49ba46e3..d14cc57a80a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java @@ -15,6 +15,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.c; import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IFunction; import org.eclipse.cdt.core.dom.ast.IFunctionType; @@ -76,7 +77,7 @@ class PDOMCFunction extends PDOMBinding implements IFunction { } @Override - public void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(final PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (!(newBinding instanceof IFunction)) return; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java index 801ea5f0b8b..5b0225469f7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java @@ -114,7 +114,7 @@ class PDOMCLinkage extends PDOMLinkage implements IIndexCBindingConstants { if (shouldUpdate(pdomBinding, fromName)) { IBinding fromBinding = fromName.getBinding(); - pdomBinding.update(this, fromBinding); + pdomBinding.update(this, fromBinding, null); // Update the tags based on the tags from the new binding. This cannot be done in // PDOMBinding.update, because not all subclasses (e.g., PDOMCFunction) call diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java index 551a29ca77d..af69e272d8d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.ast.EScopeKind; import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.ICompositeType; @@ -71,12 +72,12 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, ICCom } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ICompositeType) { ICompositeType ct= (ICompositeType) newBinding; setKind(ct); setAnonymous(ct); - super.update(linkage, newBinding); + super.update(linkage, newBinding, point); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java index 54b9e574b13..29dd3590f26 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.c; import org.eclipse.cdt.core.CCorePlugin; 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.IFunctionType; import org.eclipse.cdt.core.dom.ast.IType; @@ -55,7 +56,7 @@ class PDOMCTypedef extends PDOMBinding implements ITypedef, ITypeContainer, IInd } @Override - public void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(final PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ITypedef) { ITypedef td= (ITypedef) newBinding; try { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java index a6db02ad068..7c343ca4372 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.c; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IValue; @@ -66,7 +67,7 @@ class PDOMCVariable extends PDOMBinding implements IVariable { } @Override - public void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(final PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof IVariable) { final Database db = getDB(); IVariable var= (IVariable) newBinding; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/IPDOMCPPTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/IPDOMCPPTemplateParameter.java index 3a373f1fd61..c239b526fec 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/IPDOMCPPTemplateParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/IPDOMCPPTemplateParameter.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.dom.cpp; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; import org.eclipse.cdt.internal.core.pdom.dom.IInternalPDOMNode; @@ -29,7 +30,7 @@ public interface IPDOMCPPTemplateParameter extends IInternalPDOMNode, ICPPTempla */ void configure(ICPPTemplateParameter templateParameter); - void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException; + void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException; /** * parameters of template template parameters need to be deleted. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java index 0c3e42ea58f..6bf5cc58a08 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassSpecialization.java @@ -89,11 +89,11 @@ class PDOMCPPClassSpecialization extends PDOMCPPSpecialization } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ICPPClassType) { ICPPClassType classType= (ICPPClassType) newBinding; setFlags(classType); - super.update(linkage, newBinding); + super.update(linkage, newBinding, point); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java index c617727ffa9..ac767413b1a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; 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.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; @@ -116,8 +117,8 @@ public class PDOMCPPClassTemplate extends PDOMCPPClassType } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { - super.update(linkage, newBinding); + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { + super.update(linkage, newBinding, point); if (newBinding instanceof ICPPClassTemplate) { ICPPClassTemplate ct= (ICPPClassTemplate) newBinding; try { @@ -157,7 +158,7 @@ public class PDOMCPPClassTemplate extends PDOMCPPClassType // Reuse param result[i]= j; props[j]= -1; - allParams[j].update(linkage, newPar); + allParams[j].update(linkage, newPar, null); if (j != i) reorder= true; continue outer; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java index 09eadc78cf5..6871ec4bcad 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java @@ -22,6 +22,7 @@ import java.util.List; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IType; @@ -84,13 +85,13 @@ class PDOMCPPClassType extends PDOMCPPBinding implements IPDOMCPPClassType, IPDO } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ICPPClassType) { ICPPClassType ct= (ICPPClassType) newBinding; setKind(ct); setAnonymous(ct); setFinal(ct); - super.update(linkage, newBinding); + super.update(linkage, newBinding, point); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructor.java index 267565bf2b0..12c6651575e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructor.java @@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -20,9 +21,9 @@ import org.eclipse.core.runtime.CoreException; class PDOMCPPConstructor extends PDOMCPPMethod implements ICPPConstructor { - public PDOMCPPConstructor(PDOMCPPLinkage linkage, PDOMNode parent, ICPPConstructor method) + public PDOMCPPConstructor(PDOMCPPLinkage linkage, PDOMNode parent, ICPPConstructor method, IASTNode point) throws CoreException, DOMException { - super(linkage, parent, method); + super(linkage, parent, method, point); } public PDOMCPPConstructor(PDOMLinkage linkage, long record) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorInstance.java index 988a9f6b71f..f8db6e35dc8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorInstance.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.dom.cpp; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; @@ -29,8 +30,8 @@ public class PDOMCPPConstructorInstance extends PDOMCPPMethodInstance implements protected static final int RECORD_SIZE = PDOMCPPMethodInstance.RECORD_SIZE + 0; public PDOMCPPConstructorInstance(PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method, - PDOMBinding instantiated) throws CoreException { - super(linkage, parent, method, instantiated); + PDOMBinding instantiated, IASTNode point) throws CoreException { + super(linkage, parent, method, instantiated, point); } public PDOMCPPConstructorInstance(PDOMLinkage linkage, long bindingRecord) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorSpecialization.java index 37697394e6a..a108634fc89 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorSpecialization.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.dom.cpp; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; @@ -27,8 +28,9 @@ class PDOMCPPConstructorSpecialization extends PDOMCPPMethodSpecialization imple @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPMethodSpecialization.RECORD_SIZE + 0; - public PDOMCPPConstructorSpecialization(PDOMCPPLinkage linkage, PDOMNode parent, ICPPConstructor constructor, PDOMBinding specialized) throws CoreException { - super(linkage, parent, constructor, specialized); + public PDOMCPPConstructorSpecialization(PDOMCPPLinkage linkage, PDOMNode parent, + ICPPConstructor constructor, PDOMBinding specialized, IASTNode point) throws CoreException { + super(linkage, parent, constructor, specialized, point); } public PDOMCPPConstructorSpecialization(PDOMLinkage linkage, long bindingRecord) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplate.java index f4a07040df8..3abac8a532d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplate.java @@ -11,6 +11,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -22,9 +23,9 @@ import org.eclipse.core.runtime.CoreException; */ class PDOMCPPConstructorTemplate extends PDOMCPPMethodTemplate implements ICPPConstructor { - public PDOMCPPConstructorTemplate(PDOMCPPLinkage linkage, PDOMNode parent, ICPPConstructor method) - throws CoreException, DOMException { - super(linkage, parent, method); + public PDOMCPPConstructorTemplate(PDOMCPPLinkage linkage, PDOMNode parent, ICPPConstructor method, + IASTNode point) throws CoreException, DOMException { + super(linkage, parent, method, point); } public PDOMCPPConstructorTemplate(PDOMLinkage linkage, long record) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplateSpecialization.java index 6a3cf9b187a..59b4298960f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPConstructorTemplateSpecialization.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.dom.cpp; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; @@ -27,8 +28,8 @@ class PDOMCPPConstructorTemplateSpecialization extends PDOMCPPMethodTemplateSpec protected static final int RECORD_SIZE = PDOMCPPMethodTemplateSpecialization.RECORD_SIZE + 0; public PDOMCPPConstructorTemplateSpecialization(PDOMCPPLinkage linkage, PDOMNode parent, - ICPPConstructor constructor, PDOMBinding specialized) throws CoreException { - super(linkage, parent, constructor, specialized); + ICPPConstructor constructor, PDOMBinding specialized, IASTNode point) throws CoreException { + super(linkage, parent, constructor, specialized, point); } public PDOMCPPConstructorTemplateSpecialization(PDOMLinkage linkage, long bindingRecord) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java index fecab6232a7..98cdae53a17 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java @@ -18,6 +18,7 @@ import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; +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; @@ -67,7 +68,7 @@ class PDOMCPPEnumeration extends PDOMCPPBinding implements IPDOMCPPEnumType, IPD } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { storeProperties((ICPPEnumeration) newBinding); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerationSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerationSpecialization.java index 9ea8bb6be88..97578904ff3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerationSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerationSpecialization.java @@ -17,6 +17,7 @@ import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; +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; @@ -74,7 +75,7 @@ class PDOMCPPEnumerationSpecialization extends PDOMCPPSpecialization } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { storeProperties((ICPPEnumeration) newBinding); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java index 89eb26525ba..67e1c7fd08b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; +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.IType; @@ -65,7 +66,7 @@ class PDOMCPPEnumerator extends PDOMCPPBinding implements IPDOMCPPEnumerator { } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof IEnumerator) { IValue value= ((IEnumerator) newBinding).getValue(); if (value != null) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeratorSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeratorSpecialization.java index 352031e46dc..25de2717e82 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeratorSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeratorSpecialization.java @@ -11,6 +11,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; +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.IType; @@ -65,7 +66,7 @@ class PDOMCPPEnumeratorSpecialization extends PDOMCPPSpecialization implements I } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof IEnumerator) { IValue value= ((IEnumerator) newBinding).getValue(); if (value != null) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java index 2e87ba1d8b4..d4deb3f6d0b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java @@ -15,6 +15,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; 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.ISemanticProblem; @@ -92,7 +93,7 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl private ICPPFunctionType fType; // No need for volatile, all fields of ICPPFunctionTypes are final. public PDOMCPPFunction(PDOMCPPLinkage linkage, PDOMNode parent, ICPPFunction function, - boolean setTypes) throws CoreException, DOMException { + boolean setTypes, IASTNode point) throws CoreException, DOMException { super(linkage, parent, function.getNameCharArray()); Database db = getDB(); Integer sigHash = IndexCPPSignatureUtil.getSignatureHash(function); @@ -100,7 +101,7 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl db.putShort(record + ANNOTATION, getAnnotation(function)); db.putShort(record + REQUIRED_ARG_COUNT, (short) function.getRequiredArgumentCount()); if (setTypes) { - linkage.new ConfigureFunction(function, this); + linkage.new ConfigureFunction(function, this, point); } } @@ -131,7 +132,7 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl } @Override - public void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(final PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (!(newBinding instanceof ICPPFunction)) return; @@ -184,7 +185,7 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl if (oldRec != 0) { PDOMCPPTypeList.clearTypes(this, oldRec); } - linkage.storeEvaluation(record + RETURN_EXPRESSION, CPPFunction.getReturnExpression(func)); + linkage.storeEvaluation(record + RETURN_EXPRESSION, CPPFunction.getReturnExpression(func, point)); } private void storeExceptionSpec(IType[] exceptionSpec) throws CoreException { @@ -415,7 +416,7 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl } @Override - public ICPPEvaluation getReturnExpression() { + public ICPPEvaluation getReturnExpression(IASTNode point) { if (!isConstexpr()) return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionInstance.java index 6a5a88f8168..d4a88484907 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionInstance.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionInstance; @@ -39,9 +40,9 @@ class PDOMCPPFunctionInstance extends PDOMCPPFunctionSpecialization implements I @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPFunctionSpecialization.RECORD_SIZE + 8; - public PDOMCPPFunctionInstance(PDOMCPPLinkage linkage, PDOMNode parent, ICPPFunction function, PDOMBinding orig) - throws CoreException { - super(linkage, parent, function, orig); + public PDOMCPPFunctionInstance(PDOMCPPLinkage linkage, PDOMNode parent, ICPPFunction function, + PDOMBinding orig, IASTNode point) throws CoreException { + super(linkage, parent, function, orig, point); final Database db = getDB(); long exceptSpecRec = PDOMCPPTypeList.putTypes(this, function.getExceptionSpecification()); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java index 1f50d3ad20f..62407ba0723 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionSpecialization.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IFunctionType; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.ISemanticProblem; @@ -84,7 +85,7 @@ class PDOMCPPFunctionSpecialization extends PDOMCPPSpecialization private int fRequiredArgCount= -1; public PDOMCPPFunctionSpecialization(PDOMCPPLinkage linkage, PDOMNode parent, ICPPFunction astFunction, - PDOMBinding specialized) throws CoreException { + PDOMBinding specialized, IASTNode point) throws CoreException { super(linkage, parent, (ICPPSpecialization) astFunction, specialized); Database db = getDB(); @@ -129,7 +130,7 @@ class PDOMCPPFunctionSpecialization extends PDOMCPPSpecialization typelist = PDOMCPPTypeList.putTypes(this, astFunction.getExceptionSpecification()); } db.putRecPtr(record + EXCEPTION_SPEC, typelist); - linkage.new ConfigureFunctionSpecialization(astFunction, this); + linkage.new ConfigureFunctionSpecialization(astFunction, this, point); } private short getAnnotation(ICPPFunction astFunction) { @@ -329,7 +330,7 @@ class PDOMCPPFunctionSpecialization extends PDOMCPPSpecialization } @Override - public ICPPEvaluation getReturnExpression() { + public ICPPEvaluation getReturnExpression(IASTNode point) { if (!isConstexpr()) return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplate.java index 6b5ac1a9300..8ec75ce3cf9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplate.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; 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.cpp.ICPPFunctionTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument; @@ -42,15 +43,15 @@ class PDOMCPPFunctionTemplate extends PDOMCPPFunction private volatile IPDOMCPPTemplateParameter[] params; // Cached template parameters. - public PDOMCPPFunctionTemplate(PDOMCPPLinkage linkage, PDOMNode parent, ICPPFunctionTemplate template) - throws CoreException, DOMException { - super(linkage, parent, template, false); + public PDOMCPPFunctionTemplate(PDOMCPPLinkage linkage, PDOMNode parent, ICPPFunctionTemplate template, + IASTNode point) throws CoreException, DOMException { + super(linkage, parent, template, false, point); final ICPPTemplateParameter[] origParams= template.getTemplateParameters(); params = PDOMTemplateParameterArray.createPDOMTemplateParameters(linkage, this, origParams); final Database db = getDB(); long rec= PDOMTemplateParameterArray.putArray(db, params); db.putRecPtr(record + TEMPLATE_PARAMS, rec); - linkage.new ConfigureFunctionTemplate(template, this); + linkage.new ConfigureFunctionTemplate(template, this, point); } public PDOMCPPFunctionTemplate(PDOMLinkage linkage, long bindingRecord) { @@ -58,7 +59,7 @@ class PDOMCPPFunctionTemplate extends PDOMCPPFunction } @Override - public void update(PDOMLinkage linkage, IBinding name) { + public void update(PDOMLinkage linkage, IBinding name, IASTNode point) { // no support for updating templates, yet. } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplateSpecialization.java index b0c257d7f7a..497b25e713c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplateSpecialization.java @@ -11,6 +11,7 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.dom.cpp; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; @@ -32,8 +33,8 @@ class PDOMCPPFunctionTemplateSpecialization extends PDOMCPPFunctionSpecializatio implements ICPPFunctionTemplate, ICPPInstanceCache, IPDOMMemberOwner { public PDOMCPPFunctionTemplateSpecialization(PDOMCPPLinkage linkage, PDOMNode parent, - ICPPFunctionTemplate template, PDOMBinding specialized) throws CoreException { - super(linkage, parent, template, specialized); + ICPPFunctionTemplate template, PDOMBinding specialized, IASTNode point) throws CoreException { + super(linkage, parent, template, specialized, point); } public PDOMCPPFunctionTemplateSpecialization(PDOMLinkage linkage, long bindingRecord) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java index 9b21d78e004..3fd80fc7c16 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java @@ -232,7 +232,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { } } } - + class ConfigureFunction implements Runnable { private final PDOMCPPFunction fFunction; private final ICPPFunctionType fOriginalFunctionType; @@ -240,12 +240,13 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { private final IType[] fOriginalExceptionSpec; private final ICPPEvaluation fReturnExpression; - public ConfigureFunction(ICPPFunction original, PDOMCPPFunction function) throws DOMException { + public ConfigureFunction(ICPPFunction original, PDOMCPPFunction function, IASTNode point) + throws DOMException { fFunction = function; fOriginalFunctionType= original.getType(); fOriginalParameters= original.getParameters(); fOriginalExceptionSpec= function.extractExceptionSpec(original); - fReturnExpression= CPPFunction.getReturnExpression(original); + fReturnExpression= CPPFunction.getReturnExpression(original, point); postProcesses.add(this); } @@ -260,9 +261,10 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { private final PDOMCPPFunctionSpecialization fSpec; private final ICPPEvaluation fReturnExpression; - public ConfigureFunctionSpecialization(ICPPFunction original, PDOMCPPFunctionSpecialization spec) { + public ConfigureFunctionSpecialization(ICPPFunction original, PDOMCPPFunctionSpecialization spec, + IASTNode point) { fSpec = spec; - fReturnExpression = CPPFunction.getReturnExpression(original); + fReturnExpression = CPPFunction.getReturnExpression(original, point); postProcesses.add(this); } @@ -297,14 +299,15 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { private final IType[] fOriginalExceptionSpec; private final ICPPEvaluation fReturnExpression; - public ConfigureFunctionTemplate(ICPPFunctionTemplate original, PDOMCPPFunctionTemplate template) throws DOMException { + public ConfigureFunctionTemplate(ICPPFunctionTemplate original, PDOMCPPFunctionTemplate template, + IASTNode point) throws DOMException { fTemplate = template; fTemplateParameters= template.getTemplateParameters(); fOriginalTemplateParameters= original.getTemplateParameters(); fOriginalFunctionType= original.getType(); fOriginalParameters= original.getParameters(); fOriginalExceptionSpec= template.extractExceptionSpec(original); - fReturnExpression= CPPFunction.getReturnExpression(original); + fReturnExpression= CPPFunction.getReturnExpression(original, point); postProcesses.add(this); } @@ -435,7 +438,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { pdomBinding = adaptBinding(parent, binding, fileLocalRec); if (pdomBinding == null) { try { - pdomBinding = createBinding(parent, binding, fileLocalRec[0]); + pdomBinding = createBinding(parent, binding, fileLocalRec[0], fromName); if (pdomBinding != null) { getPDOM().putCachedResult(inputBinding, pdomBinding); if (inputBinding instanceof CPPClosureType) { @@ -458,7 +461,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { if (shouldUpdate(pdomBinding, fromName)) { IBinding fromBinding = fromName.getBinding(); - pdomBinding.update(this, fromBinding); + pdomBinding.update(this, fromBinding, null); // Update the tags based on the tags from the new binding. This cannot be done in // PDOMBinding.update, because not all subclasses (e.g., PDOMCPPFunction) call @@ -498,7 +501,8 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { return false; } - PDOMBinding createBinding(PDOMNode parent, IBinding binding, long fileLocalRec) throws CoreException, DOMException { + PDOMBinding createBinding(PDOMNode parent, IBinding binding, long fileLocalRec, IASTNode point) + throws CoreException, DOMException { PDOMBinding pdomBinding= null; PDOMNode parent2= null; @@ -514,7 +518,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { if (pdomSpecialized == null) return null; - pdomBinding = createSpecialization(parent, pdomSpecialized, binding); + pdomBinding = createSpecialization(parent, pdomSpecialized, binding, point); } else if (binding instanceof ICPPClassTemplatePartialSpecialization) { ICPPClassTemplate primary = ((ICPPClassTemplatePartialSpecialization) binding).getPrimaryClassTemplate(); PDOMBinding pdomPrimary = addBinding(primary, null); @@ -542,22 +546,22 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { pdomBinding = new PDOMCPPVariable(this, parent, var); } else if (binding instanceof ICPPFunctionTemplate) { if (binding instanceof ICPPConstructor) { - pdomBinding= new PDOMCPPConstructorTemplate(this, parent, (ICPPConstructor) binding); + pdomBinding= new PDOMCPPConstructorTemplate(this, parent, (ICPPConstructor) binding, point); } else if (binding instanceof ICPPMethod) { - pdomBinding= new PDOMCPPMethodTemplate(this, parent, (ICPPMethod) binding); + pdomBinding= new PDOMCPPMethodTemplate(this, parent, (ICPPMethod) binding, point); } else if (binding instanceof ICPPFunction) { - pdomBinding= new PDOMCPPFunctionTemplate(this, parent, (ICPPFunctionTemplate) binding); + pdomBinding= new PDOMCPPFunctionTemplate(this, parent, (ICPPFunctionTemplate) binding, point); } } else if (binding instanceof ICPPConstructor) { if (parent instanceof PDOMCPPClassType || parent instanceof PDOMCPPClassSpecialization) { - pdomBinding = new PDOMCPPConstructor(this, parent, (ICPPConstructor) binding); + pdomBinding = new PDOMCPPConstructor(this, parent, (ICPPConstructor) binding, point); } } else if (binding instanceof ICPPMethod) { if (parent instanceof PDOMCPPClassType || parent instanceof PDOMCPPClassSpecialization) { - pdomBinding = new PDOMCPPMethod(this, parent, (ICPPMethod) binding); + pdomBinding = new PDOMCPPMethod(this, parent, (ICPPMethod) binding, point); } } else if (binding instanceof ICPPFunction) { - pdomBinding = new PDOMCPPFunction(this, parent, (ICPPFunction) binding, true); + pdomBinding = new PDOMCPPFunction(this, parent, (ICPPFunction) binding, true, point); } else if (binding instanceof ICPPNamespaceAlias) { pdomBinding = new PDOMCPPNamespaceAlias(this, parent, (ICPPNamespaceAlias) binding); } else if (binding instanceof ICPPNamespace) { @@ -653,16 +657,16 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { } } - private PDOMBinding createSpecialization(PDOMNode parent, PDOMBinding orig, IBinding special) - throws CoreException, DOMException { + private PDOMBinding createSpecialization(PDOMNode parent, PDOMBinding orig, IBinding special, + IASTNode point) throws CoreException, DOMException { PDOMBinding result= null; if (special instanceof ICPPTemplateInstance) { if (special instanceof ICPPConstructor && orig instanceof ICPPConstructor) { - result= new PDOMCPPConstructorInstance(this, parent, (ICPPConstructor) special, orig); + result= new PDOMCPPConstructorInstance(this, parent, (ICPPConstructor) special, orig, point); } else if (special instanceof ICPPMethod && orig instanceof ICPPMethod) { - result= new PDOMCPPMethodInstance(this, parent, (ICPPMethod) special, orig); + result= new PDOMCPPMethodInstance(this, parent, (ICPPMethod) special, orig, point); } else if (special instanceof ICPPFunction && orig instanceof ICPPFunction) { - result= new PDOMCPPFunctionInstance(this, parent, (ICPPFunction) special, orig); + result= new PDOMCPPFunctionInstance(this, parent, (ICPPFunction) special, orig, point); } else if (special instanceof ICPPClassType && orig instanceof ICPPClassType) { result= new PDOMCPPClassInstance(this, parent, (ICPPClassType) special, orig); } @@ -670,11 +674,11 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { result= new PDOMCPPFieldSpecialization(this, parent, (ICPPField) special, orig); } else if (special instanceof ICPPFunctionTemplate) { if (special instanceof ICPPConstructor) { - result= new PDOMCPPConstructorTemplateSpecialization(this, parent, (ICPPConstructor) special, orig); + result= new PDOMCPPConstructorTemplateSpecialization(this, parent, (ICPPConstructor) special, orig, point); } else if (special instanceof ICPPMethod) { - result= new PDOMCPPMethodTemplateSpecialization(this, parent, (ICPPMethod) special, orig); + result= new PDOMCPPMethodTemplateSpecialization(this, parent, (ICPPMethod) special, orig, point); } else if (special instanceof ICPPFunction) { - result= new PDOMCPPFunctionTemplateSpecialization(this, parent, (ICPPFunctionTemplate) special, orig); + result= new PDOMCPPFunctionTemplateSpecialization(this, parent, (ICPPFunctionTemplate) special, orig, point); } } else if (special instanceof ICPPClassTemplatePartialSpecialization) { ICPPClassTemplatePartialSpecialization partialSpecSpec = (ICPPClassTemplatePartialSpecialization) special; @@ -685,11 +689,11 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { partialSpecSpec, (PDOMCPPClassTemplateSpecialization) pdomPrimarySpec); } } else if (special instanceof ICPPConstructor) { - result= new PDOMCPPConstructorSpecialization(this, parent, (ICPPConstructor) special, orig); + result= new PDOMCPPConstructorSpecialization(this, parent, (ICPPConstructor) special, orig, point); } else if (special instanceof ICPPMethod) { - result= new PDOMCPPMethodSpecialization(this, parent, (ICPPMethod) special, orig); + result= new PDOMCPPMethodSpecialization(this, parent, (ICPPMethod) special, orig, point); } else if (special instanceof ICPPFunction) { - result= new PDOMCPPFunctionSpecialization(this, parent, (ICPPFunction) special, orig); + result= new PDOMCPPFunctionSpecialization(this, parent, (ICPPFunction) special, orig, point); } else if (special instanceof ICPPClassTemplate) { result= new PDOMCPPClassTemplateSpecialization(this, parent, (ICPPClassTemplate) special, orig); } else if (special instanceof ICPPClassType) { @@ -721,9 +725,9 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { if (!(method instanceof IProblemBinding)) { PDOMBinding pdomBinding= adaptBinding(method); if (pdomBinding == null) { - pdomBinding = createBinding(type, method, fileLocalRec); + pdomBinding = createBinding(type, method, fileLocalRec, point); } else if (!getPDOM().hasLastingDefinition(pdomBinding)) { - pdomBinding.update(this, method); + pdomBinding.update(this, method, null); old.remove(pdomBinding); // Update the tags based on the tags from the new binding. This was in @@ -735,7 +739,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { } for (ICPPMethod method : old) { if (method instanceof PDOMBinding) - ((PDOMBinding) method).update(this, null); + ((PDOMBinding) method).update(this, null, null); } } } catch (DOMException e) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java index 2de997b6aea..ea236355d1e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java @@ -63,8 +63,9 @@ class PDOMCPPMethod extends PDOMCPPFunction implements ICPPMethod { private byte annotation1= -1; - public PDOMCPPMethod(PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method) throws CoreException, DOMException { - super(linkage, parent, method, true); + public PDOMCPPMethod(PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method, IASTNode point) + throws CoreException, DOMException { + super(linkage, parent, method, true, point); Database db = getDB(); @@ -81,10 +82,10 @@ class PDOMCPPMethod extends PDOMCPPFunction implements ICPPMethod { } @Override - public final void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public final void update(final PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ICPPMethod) { ICPPMethod method= (ICPPMethod) newBinding; - super.update(linkage, newBinding); + super.update(linkage, newBinding, point); annotation1= -1; try { final byte annot = PDOMCPPAnnotation.encodeExtraAnnotation(method); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodInstance.java index e2cbeba4567..d2d45941eab 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodInstance.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodInstance.java @@ -12,6 +12,7 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom.dom.cpp; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants; @@ -30,9 +31,9 @@ class PDOMCPPMethodInstance extends PDOMCPPFunctionInstance implements ICPPMetho @SuppressWarnings("hiding") protected static final int RECORD_SIZE = PDOMCPPFunctionInstance.RECORD_SIZE + 0; - public PDOMCPPMethodInstance(PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method, PDOMBinding instantiated) - throws CoreException { - super(linkage, parent, method, instantiated); + public PDOMCPPMethodInstance(PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method, + PDOMBinding instantiated, IASTNode point) throws CoreException { + super(linkage, parent, method, instantiated, point); } public PDOMCPPMethodInstance(PDOMLinkage linkage, long bindingRecord) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodSpecialization.java index 142b6ece483..cbe9c8f48ee 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodSpecialization.java @@ -51,8 +51,9 @@ class PDOMCPPMethodSpecialization extends PDOMCPPFunctionSpecialization */ private static final int CV_OFFSET = PDOMCPPAnnotation.MAX_EXTRA_OFFSET + 1; - public PDOMCPPMethodSpecialization(PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method, PDOMBinding specialized) throws CoreException { - super(linkage, parent, method, specialized); + public PDOMCPPMethodSpecialization(PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method, + PDOMBinding specialized, IASTNode point) throws CoreException { + super(linkage, parent, method, specialized, point); Database db = getDB(); try { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodTemplate.java index 894c6f9e3fa..db13728351c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodTemplate.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType; @@ -49,9 +50,9 @@ class PDOMCPPMethodTemplate extends PDOMCPPFunctionTemplate implements ICPPMetho private byte annotation1= -1; - public PDOMCPPMethodTemplate(PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method) + public PDOMCPPMethodTemplate(PDOMCPPLinkage linkage, PDOMNode parent, ICPPMethod method, IASTNode point) throws CoreException, DOMException { - super(linkage, parent, (ICPPFunctionTemplate) method); + super(linkage, parent, (ICPPFunctionTemplate) method, point); Database db = getDB(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodTemplateSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodTemplateSpecialization.java index 3c05c0f3133..4618de5d040 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodTemplateSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethodTemplateSpecialization.java @@ -15,6 +15,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; 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.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionTemplate; @@ -40,8 +41,8 @@ class PDOMCPPMethodTemplateSpecialization extends PDOMCPPFunctionTemplateSpecial private volatile IPDOMCPPTemplateParameter[] fTemplateParameters; public PDOMCPPMethodTemplateSpecialization(PDOMCPPLinkage linkage, PDOMNode parent, - ICPPMethod method, PDOMBinding specialized) throws CoreException { - super(linkage, parent, (ICPPFunctionTemplate) method, specialized); + ICPPMethod method, PDOMBinding specialized, IASTNode point) throws CoreException { + super(linkage, parent, (ICPPFunctionTemplate) method, specialized, point); computeTemplateParameters((ICPPFunctionTemplate) method); // Sets fTemplateParameters final Database db = getDB(); long rec = PDOMTemplateParameterArray.putArray(db, fTemplateParameters); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java index 9e785d9d7ef..0c481f87551 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java @@ -22,6 +22,7 @@ import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.ast.EScopeKind; import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; @@ -76,7 +77,7 @@ class PDOMCPPNamespace extends PDOMCPPBinding } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { updateFlag((ICPPNamespace) newBinding); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java index e03177f30bb..119cdbd35e5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceAlias; @@ -43,7 +44,7 @@ class PDOMCPPNamespaceAlias extends PDOMCPPBinding implements ICPPNamespaceAlias } @Override - public void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(final PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ICPPNamespaceAlias) { ICPPNamespaceAlias alias= (ICPPNamespaceAlias) newBinding; IBinding newTarget= alias.getBinding(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateNonTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateNonTypeParameter.java index 38b316d6725..953d73888d1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateNonTypeParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateNonTypeParameter.java @@ -16,6 +16,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTExpression; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IValue; @@ -81,7 +82,7 @@ class PDOMCPPTemplateNonTypeParameter extends PDOMCPPBinding } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ICPPTemplateNonTypeParameter) { ICPPTemplateNonTypeParameter ntp= (ICPPTemplateNonTypeParameter) newBinding; updateName(newBinding.getNameCharArray()); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java index 99b3af59252..6f0f2373382 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTemplateParameter.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMVisitor; 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.IField; import org.eclipse.cdt.core.dom.ast.IScope; @@ -201,7 +202,7 @@ public class PDOMCPPTemplateTemplateParameter extends PDOMCPPBinding } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ICPPTemplateTemplateParameter) { final Database db = getDB(); ICPPTemplateTemplateParameter ttp= (ICPPTemplateTemplateParameter) newBinding; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java index 75e77cb093a..c0e97007838 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTemplateTypeParameter.java @@ -15,6 +15,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMVisitor; 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.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; @@ -185,7 +186,7 @@ class PDOMCPPTemplateTypeParameter extends PDOMCPPBinding implements IPDOMMember } @Override - public void update(PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ICPPTemplateTypeParameter) { ICPPTemplateTypeParameter ttp= (ICPPTemplateTypeParameter) newBinding; updateName(newBinding.getNameCharArray()); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java index 1b1b833e8f0..ac6f4c54f4f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IFunctionType; import org.eclipse.cdt.core.dom.ast.IType; @@ -47,7 +48,7 @@ class PDOMCPPTypedef extends PDOMCPPBinding implements ITypedef, ITypeContainer, } @Override - public void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(final PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof ITypedef) { ITypedef td= (ITypedef) newBinding; setType(linkage, td.getType()); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java index 522efe19939..2d5b98c175c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IValue; @@ -55,7 +56,7 @@ class PDOMCPPVariable extends PDOMCPPBinding implements ICPPVariable { } @Override - public void update(final PDOMLinkage linkage, IBinding newBinding) throws CoreException { + public void update(final PDOMLinkage linkage, IBinding newBinding, IASTNode point) throws CoreException { if (newBinding instanceof IVariable) { final Database db = getDB(); IVariable var= (IVariable) newBinding;