mirror of https://github.com/microsoft/clang.git
[Diag] Avoid emitting a redefinition note if no location is available.
Summary: The "previous definition is here" note is not helpful if there is no location information. The note will reference nothing in such a case. This patch first checks to see if there is location data, and if so the note diagnostic is emitted. This fixes PR15409. The issue in the first comment seems to already be resolved. This patch addresses the second example. Reviewers: bruno, rsmith Reviewed By: bruno Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D44901 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328712 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e34c81ff7c
commit
d36734b4d8
|
@ -4057,7 +4057,8 @@ void Sema::notePreviousDefinition(const NamedDecl *Old, SourceLocation New) {
|
|||
}
|
||||
|
||||
// Redefinition coming from different files or couldn't do better above.
|
||||
Diag(Old->getLocation(), diag::note_previous_definition);
|
||||
if (Old->getLocation().isValid())
|
||||
Diag(Old->getLocation(), diag::note_previous_definition);
|
||||
}
|
||||
|
||||
/// We've just determined that \p Old and \p New both appear to be definitions
|
||||
|
|
|
@ -4,3 +4,4 @@
|
|||
#pragma redefine_extname foo_static bar_static
|
||||
static int foo_static() { return 1; } // expected-warning {{#pragma redefine_extname is applicable to external C declarations only; not applied to function 'foo_static'}}
|
||||
|
||||
unsigned __int128_t; // expected-error {{redefinition of '__int128_t' as different kind of symbol}}
|
||||
|
|
Loading…
Reference in New Issue