diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-01-07 00:26:25 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-01-07 00:26:25 +0000 |
commit | 43a0857631abb25f2095de6092f02a718d8df1d0 (patch) | |
tree | 9501fd8abb5e4a35671bc7c86d7cef78077377df /clang | |
parent | 6da83624e44a4066c31524d60d2226de55c698a0 (diff) | |
download | bcm5719-llvm-43a0857631abb25f2095de6092f02a718d8df1d0.tar.gz bcm5719-llvm-43a0857631abb25f2095de6092f02a718d8df1d0.zip |
When we typo-correct a base class initializer, point to the base class
specifier that we corrected to.
llvm-svn: 92878
Diffstat (limited to 'clang')
-rw-r--r-- | clang/include/clang/Basic/DiagnosticSemaKinds.td | 3 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 9 | ||||
-rw-r--r-- | clang/test/FixIt/typo.cpp | 2 |
3 files changed, 11 insertions, 3 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 9d5ef0b4027..710e9772611 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -2594,7 +2594,8 @@ def err_undef_superclass_suggest : Error< "%2?">; def err_undeclared_protocol_suggest : Error< "cannot find protocol declaration for %0; did you mean %1?">; - +def note_base_class_specified_here : Note< + "base class %0 specified here">; } diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 7ae0440b409..d3c8de326c0 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -1091,7 +1091,14 @@ Sema::ActOnMemInitializer(DeclPtrTy ConstructorD, << MemberOrBase << false << R.getLookupName() << CodeModificationHint::CreateReplacement(R.getNameLoc(), R.getLookupName().getAsString()); - + + const CXXBaseSpecifier *BaseSpec = DirectBaseSpec? DirectBaseSpec + : VirtualBaseSpec; + Diag(BaseSpec->getSourceRange().getBegin(), + diag::note_base_class_specified_here) + << BaseSpec->getType() + << BaseSpec->getSourceRange(); + TyD = Type; } } diff --git a/clang/test/FixIt/typo.cpp b/clang/test/FixIt/typo.cpp index ffeb18dde10..50c6d312b8c 100644 --- a/clang/test/FixIt/typo.cpp +++ b/clang/test/FixIt/typo.cpp @@ -35,7 +35,7 @@ bool test_string(std::string s) { } struct Base { }; -struct Derived : public Base { +struct Derived : public Base { // expected-note{{base class 'struct Base' specified here}} int member; // expected-note 3{{'member' declared here}} Derived() : base(), // expected-error{{initializer 'base' does not name a non-static data member or base class; did you mean the base class 'Base'?}} |