Reusing an existing attribute diagnostic
In a previous patch, a new generic error diagnostic for inconsistent attributes was added. In this commit I reuse this diagnostic for ns_returns_retained attribute check. Differential Revision: https://reviews.llvm.org/D32697 llvm-svn: 302024
This commit is contained in:
parent
d0baa524d0
commit
bada0d4628
|
@ -2820,9 +2820,6 @@ def warn_cconv_structors : Warning<
|
||||||
def err_regparm_mismatch : Error<"function declared with regparm(%0) "
|
def err_regparm_mismatch : Error<"function declared with regparm(%0) "
|
||||||
"attribute was previously declared "
|
"attribute was previously declared "
|
||||||
"%plural{0:without the regparm|:with the regparm(%1)}1 attribute">;
|
"%plural{0:without the regparm|:with the regparm(%1)}1 attribute">;
|
||||||
def err_returns_retained_mismatch : Error<
|
|
||||||
"function declared with the ns_returns_retained attribute "
|
|
||||||
"was previously declared without the ns_returns_retained attribute">;
|
|
||||||
def err_function_attribute_mismatch : Error<
|
def err_function_attribute_mismatch : Error<
|
||||||
"function declared with %0 attribute "
|
"function declared with %0 attribute "
|
||||||
"was previously declared without the %0 attribute">;
|
"was previously declared without the %0 attribute">;
|
||||||
|
|
|
@ -2951,7 +2951,8 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, NamedDecl *&OldD,
|
||||||
// Merge ns_returns_retained attribute.
|
// Merge ns_returns_retained attribute.
|
||||||
if (OldTypeInfo.getProducesResult() != NewTypeInfo.getProducesResult()) {
|
if (OldTypeInfo.getProducesResult() != NewTypeInfo.getProducesResult()) {
|
||||||
if (NewTypeInfo.getProducesResult()) {
|
if (NewTypeInfo.getProducesResult()) {
|
||||||
Diag(New->getLocation(), diag::err_returns_retained_mismatch);
|
Diag(New->getLocation(), diag::err_function_attribute_mismatch)
|
||||||
|
<< "'ns_returns_retained'";
|
||||||
Diag(OldLocation, diag::note_previous_declaration);
|
Diag(OldLocation, diag::note_previous_declaration);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -199,4 +199,4 @@ class rdar10142572 {
|
||||||
};
|
};
|
||||||
|
|
||||||
id rdar10142572::f() { return 0; } // okay: merged down
|
id rdar10142572::f() { return 0; } // okay: merged down
|
||||||
id __attribute__((ns_returns_retained)) rdar10142572::g() { return 0; } // expected-error{{function declared with the ns_returns_retained attribute was previously declared without the ns_returns_retained attribute}}
|
id __attribute__((ns_returns_retained)) rdar10142572::g() { return 0; } // expected-error{{function declared with 'ns_returns_retained' attribute was previously declared without the 'ns_returns_retained' attribute}}
|
||||||
|
|
Loading…
Reference in New Issue