diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java index 8842ae1fa8e..88307d3388b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java @@ -95,12 +95,12 @@ public final class CompositeValue implements IValue { return 0 <= index && index < values.length; } - public static IValue create(EvalInitList initList) { + public static IValue create(EvalInitList initList, IASTNode point) { ICPPEvaluation[] clauses = initList.getClauses(); ICPPEvaluation[] values = new ICPPEvaluation[clauses.length]; for (int i = 0; i < clauses.length; i++) { ICPPEvaluation eval = clauses[i]; - values[i] = new EvalFixed(eval.getType(null), eval.getValueCategory(null), eval.getValue(null)); + values[i] = new EvalFixed(eval.getType(point), eval.getValueCategory(point), eval.getValue(point)); } return new CompositeValue(initList, values); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVariable.java index b08f6add520..aa3b886780d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVariable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVariable.java @@ -250,7 +250,7 @@ public class CPPVariable extends PlatformObject implements ICPPInternalVariable return null; } if (!initEval.isValueDependent() ) { - IASTNode point = fDefinition != null ? fDefinition : fDeclarations[0]; + IASTNode point = fDefinition != null ? fDefinition : fDeclarations[0]; return initEval.getValue(point); } return DependentValue.create(initEval); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalInitList.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalInitList.java index 22dc33df119..4f05a467f6a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalInitList.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalInitList.java @@ -96,7 +96,7 @@ public class EvalInitList extends CPPDependentEvaluation { if (isValueDependent()) { return DependentValue.create(this); } - return CompositeValue.create(this); + return CompositeValue.create(this, point); } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalTypeId.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalTypeId.java index 06bc9d7356b..9a323a6c5eb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalTypeId.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalTypeId.java @@ -148,7 +148,7 @@ public class EvalTypeId extends CPPDependentEvaluation { if (fInputType instanceof ICPPClassType) { ICPPClassType classType = (ICPPClassType) fInputType; - IBinding ctor = getConstructor(null); + IBinding ctor = getConstructor(point); if (EvalUtil.isCompilerGeneratedCtor(ctor)) { return CompositeValue.create(classType); } else if (ctor == AGGREGATE_INITIALIZATION) {