diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-02-05 05:54:49 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-02-05 05:54:49 +0000 |
commit | 3d3208675f79d05fd0b026c735fbe83ecd20a98b (patch) | |
tree | 23fa5746965d88316325d7c23ef23e86aa23a656 /clang/lib/Sema/SemaDecl.cpp | |
parent | 0360eac4dfea834a954ba7e116de9f7743665499 (diff) | |
download | bcm5719-llvm-3d3208675f79d05fd0b026c735fbe83ecd20a98b.tar.gz bcm5719-llvm-3d3208675f79d05fd0b026c735fbe83ecd20a98b.zip |
When the out-of-line definition differs from the declaration in the return type,
say "out-of-line definition differ from the declaration in the return type" instead of
the silly "functions that differ only in their return type cannot be overloaded".
Addresses rdar://7980179.
llvm-svn: 124939
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 9db68144666..aed950c8fcc 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -1201,7 +1201,11 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, Decl *OldD) { && OldReturnType->isObjCObjectPointerType()) ResQT = Context.mergeObjCGCQualifiers(NewQType, OldQType); if (ResQT.isNull()) { - Diag(New->getLocation(), diag::err_ovl_diff_return_type); + if (New->isCXXClassMember() && New->isOutOfLine()) + Diag(New->getLocation(), + diag::err_member_def_does_not_match_ret_type) << New; + else + Diag(New->getLocation(), diag::err_ovl_diff_return_type); Diag(Old->getLocation(), PrevDiag) << Old << Old->getType(); return true; } |