Constructor initialization for InitializationSequence. Untested WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91323 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaInit.h b/lib/Sema/SemaInit.h
index 2248474..7f28baa 100644
--- a/lib/Sema/SemaInit.h
+++ b/lib/Sema/SemaInit.h
@@ -306,6 +306,9 @@
     /// \brief A user-defined conversion sequence.
     UserDefinedConversion,
     
+    /// \brief A constructor call.
+    ConstructorConversion,
+    
     /// \brief A reference binding.
     ReferenceBinding,
 
@@ -337,7 +340,9 @@
     /// \brief Perform an implicit conversion sequence.
     SK_ConversionSequence,
     /// \brief Perform list-initialization
-    SK_ListInitialization
+    SK_ListInitialization,
+    /// \brief Perform initialization via a constructor.
+    SK_ConstructorInitialization
   };
   
   /// \brief A single step in the initialization sequence.
@@ -405,7 +410,9 @@
     /// initializer list.
     FK_InitListBadDestinationType,
     /// \brief Overloading for a user-defined conversion failed.
-    FK_UserConversionOverloadFailed
+    FK_UserConversionOverloadFailed,
+    /// \brief Overloaded for initialization by constructor failed.
+    FK_ConstructorOverloadFailed
   };
   
 private:
@@ -529,6 +536,10 @@
   /// \brief Add a list-initialiation step  
   void AddListInitializationStep(QualType T);
 
+  /// \brief Add a a constructor-initialization step.
+  void AddConstructorInitializationStep(CXXConstructorDecl *Constructor,
+                                        QualType T);
+  
   /// \brief Note that this initialization sequence failed.
   void SetFailed(FailureKind Failure) {
     SequenceKind = FailedSequence;