diff options
author | Markus Schorn | 2010-03-12 14:49:49 +0000 |
---|---|---|
committer | Markus Schorn | 2010-03-12 14:49:49 +0000 |
commit | 286e04711a19411f8ade68be2dddb94d7891407e (patch) | |
tree | 4dc9e7318c8bc7db9e02051da30b4d4d3ad3cd44 /core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java | |
parent | 477c241751ac9dc0ed95d93268003e89661f1ff0 (diff) | |
download | org.eclipse.cdt-286e04711a19411f8ade68be2dddb94d7891407e.tar.gz org.eclipse.cdt-286e04711a19411f8ade68be2dddb94d7891407e.tar.xz org.eclipse.cdt-286e04711a19411f8ade68be2dddb94d7891407e.zip |
Bug 302412: Direct list initialization.
Diffstat (limited to 'core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java')
-rw-r--r-- | core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java index 8c607c9d1b5..2836e42855e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java @@ -272,7 +272,7 @@ public class Conversions { private static Cost nonReferenceConversion(boolean sourceIsLValue, IType source, IType target, UDCMode udc, boolean isImpliedObject) throws DOMException { if (source instanceof InitializerListType) { - return listInitializationSequence(((InitializerListType) source), target, udc); + return listInitializationSequence(((InitializerListType) source), target, udc, false); } // [13.3.3.1-6] Subsume cv-qualifications IType uqSource= SemanticUtil.getNestedType(source, TDEF | ALLCVQ); @@ -280,13 +280,13 @@ public class Conversions { if (cost.converts() || udc == UDCMode.noUDC) return cost; - return checkUserDefinedConversionSequence(sourceIsLValue, source, target, udc == UDCMode.deferUDC); + return checkUserDefinedConversionSequence(sourceIsLValue, source, target, udc == UDCMode.deferUDC, false); } /** * 13.3.3.1.5 List-initialization sequence [over.ics.list] */ - private static Cost listInitializationSequence(InitializerListType arg, IType target, UDCMode udc) throws DOMException { + static Cost listInitializationSequence(InitializerListType arg, IType target, UDCMode udc, boolean isDirect) throws DOMException { IType listType= getInitListType(target); if (listType != null) { IType[] exprTypes= arg.getExpressionTypes(); @@ -319,7 +319,7 @@ public class Conversions { cost.setUserDefinedConversion(null); return cost; } - return checkUserDefinedConversionSequence(false, arg, target, udc == UDCMode.deferUDC); + return checkUserDefinedConversionSequence(false, arg, target, udc == UDCMode.deferUDC, isDirect); } IASTInitializerClause[] args = arg.getInitializerList().getClauses(); @@ -508,7 +508,7 @@ public class Conversions { /** * [13.3.3.1.2] User-defined conversions */ - static final Cost checkUserDefinedConversionSequence(boolean sourceIsLValue, IType source, IType target, boolean deferUDC) throws DOMException { + static final Cost checkUserDefinedConversionSequence(boolean sourceIsLValue, IType source, IType target, boolean deferUDC, boolean isDirect) throws DOMException { IType s= getNestedType(source, TDEF | CVTYPE | REF); IType t= getNestedType(target, TDEF | CVTYPE | REF); @@ -525,7 +525,7 @@ public class Conversions { if (t instanceof ICPPClassType) { if (s instanceof InitializerListType) { // 13.3.1.7 Initialization by list-initialization - return listInitializationOfClass((InitializerListType) s, (ICPPClassType) t, false); + return listInitializationOfClass((InitializerListType) s, (ICPPClassType) t, isDirect); } // 13.3.1.4 Copy initialization of class by user-defined conversion return copyInitalizationOfClass(sourceIsLValue, source, s, target, (ICPPClassType) t); @@ -552,7 +552,7 @@ public class Conversions { final IType target = parTypes[0]; if (getInitListType(target) != null) { hasInitListConstructor= true; - Cost cost= listInitializationSequence(arg, target, UDCMode.noUDC); + Cost cost= listInitializationSequence(arg, target, UDCMode.noUDC, isDirect); if (cost.converts()) { int cmp= cost.compareTo(bestCost); if (bestCost == null || cmp < 0) { |