summaryrefslogtreecommitdiffstats
path: root/include/clang
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2012-04-01 19:54:59 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2012-04-01 19:54:59 +0000
commit70e24fccc8ef4aa8be03a778e9655bfcfa79dd14 (patch)
tree6efa1d81ce9377e7d4ecf8d481b665d76976c1a9 /include/clang
parent4a5f724538cbc275370c9504e8169ce92503256c (diff)
Properly handle explicit constructors in list-initialization. Fixes PR12120.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153849 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang')
-rw-r--r--include/clang/Basic/DiagnosticSemaKinds.td4
-rw-r--r--include/clang/Sema/Initialization.h4
2 files changed, 7 insertions, 1 deletions
diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td
index 32ac7be9e5..863f9db164 100644
--- a/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/include/clang/Basic/DiagnosticSemaKinds.td
@@ -1189,6 +1189,10 @@ def warn_cxx98_compat_temp_copy : Warning<
"an inaccessible constructor|find no viable constructor|find ambiguous "
"constructors|invoke a deleted constructor}0 in C++98">,
InGroup<CXX98CompatBindToTemporaryCopy>, DefaultIgnore;
+def err_selected_explicit_constructor : Error<
+ "chosen constructor is explicit in copy-initialization">;
+def note_constructor_declared_here : Note<
+ "constructor declared here">;
// C++11 decltype
def err_decltype_in_declarator : Error<
diff --git a/include/clang/Sema/Initialization.h b/include/clang/Sema/Initialization.h
index 9040703436..6d92df6322 100644
--- a/include/clang/Sema/Initialization.h
+++ b/include/clang/Sema/Initialization.h
@@ -719,7 +719,9 @@ public:
FK_PlaceholderType,
/// \brief Failed to initialize a std::initializer_list because copy
/// construction of some element failed.
- FK_InitListElementCopyFailure
+ FK_InitListElementCopyFailure,
+ /// \brief List-copy-initialization chose an explicit constructor.
+ FK_ExplicitConstructor
};
private: