aboutsummaryrefslogtreecommitdiff
path: root/clang/test
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2013-12-17 04:29:27 +0000
committerBill Wendling <isanbard@gmail.com>2013-12-17 04:29:27 +0000
commite4b2a6e3e16ac881b40b67098df4733cc765e0b3 (patch)
tree9f2a57078bcb40d283e5fd970a6d37c7ee42a611 /clang/test
parent55637a32e955638626812a6cb946dc76a130babe (diff)
downloadllvm-e4b2a6e3e16ac881b40b67098df4733cc765e0b3.zip
llvm-e4b2a6e3e16ac881b40b67098df4733cc765e0b3.tar.gz
llvm-e4b2a6e3e16ac881b40b67098df4733cc765e0b3.tar.bz2
Merging r197409:
------------------------------------------------------------------------ r197409 | rikka | 2013-12-16 11:19:18 -0800 (Mon, 16 Dec 2013) | 4 lines Make Sema::BuildCXXNestedNameSpecifier correctly clear the previous CXXScopeSpec when necessary while performing typo correction. This fixes the crash reported in PR18213 (the problem existed since r185487, and r193020 made it easier to hit). ------------------------------------------------------------------------ llvm-svn: 197463
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/SemaCXX/typo-correction-pt2.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/typo-correction-pt2.cpp b/clang/test/SemaCXX/typo-correction-pt2.cpp
index 2da52b3..525d11b 100644
--- a/clang/test/SemaCXX/typo-correction-pt2.cpp
+++ b/clang/test/SemaCXX/typo-correction-pt2.cpp
@@ -181,3 +181,21 @@ void test() {
MessageHeaders::ParseMessageHeaders(5, 4); // expected-error {{no member named 'ParseMessageHeaders' in 'fix_class_name_qualifier::MessageHeaders'; did you mean 'MessageUtils::ParseMessageHeaders'?}}
}
}
+
+namespace PR18213 { // expected-note {{'PR18213' declared here}}
+struct WrapperInfo {
+ int i;
+};
+
+template <typename T> struct Wrappable {
+ static WrapperInfo kWrapperInfo;
+};
+
+// Note the space before "::PR18213" is intended and needed, as it highlights
+// the actual typo, which is the leading "::".
+// TODO: Suggest removing the "::" from "::PR18213" (the right correction)
+// instead of incorrectly suggesting dropping "PR18213::WrapperInfo::".
+template <>
+PR18213::WrapperInfo ::PR18213::Wrappable<int>::kWrapperInfo = { 0 }; // expected-error {{no member named 'PR18213' in 'PR18213::WrapperInfo'; did you mean simply 'PR18213'?}} \
+ // expected-error {{C++ requires a type specifier for all declarations}}
+}