mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-09-10 12:03:16 +02:00
Bug 580062 - Self assignment check fix
Fix for false positive error in assignment operator checker when a noexcept specifier is used. Change-Id: If82788cda4a37af1c628a937a6960f59de6b0f5b
This commit is contained in:
parent
a60ea13d40
commit
b390885211
2 changed files with 17 additions and 1 deletions
|
@ -112,7 +112,7 @@ public class AssignmentOperatorChecker extends AbstractIndexAstChecker {
|
||||||
reportProblem(MISS_SELF_CHECK_ID, info.decl);
|
reportProblem(MISS_SELF_CHECK_ID, info.decl);
|
||||||
}
|
}
|
||||||
info.decl = null;
|
info.decl = null;
|
||||||
} else {
|
} else if (expression.getPropertyInParent() != ICPPASTFunctionDeclarator.NOEXCEPT_EXPRESSION) {
|
||||||
reportProblem(MISS_SELF_CHECK_ID, info.decl);
|
reportProblem(MISS_SELF_CHECK_ID, info.decl);
|
||||||
info.decl = null;
|
info.decl = null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,22 @@ public class AssignmentOperatorCheckerTest extends CheckerTestCase {
|
||||||
checkNoErrorsOfKind(MISS_SELF_ID);
|
checkNoErrorsOfKind(MISS_SELF_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//class Foo {
|
||||||
|
//public:
|
||||||
|
//Foo& operator=(Foo& f) noexcept (false);
|
||||||
|
//};
|
||||||
|
//Foo& Foo::operator=(Foo& f) noexcept (false) {
|
||||||
|
// if (this != &f) {
|
||||||
|
// return *this;
|
||||||
|
// }
|
||||||
|
// return *this;
|
||||||
|
//}
|
||||||
|
public void testWithNoErrorNoexcept() throws Exception {
|
||||||
|
loadCodeAndRun(getAboveComment());
|
||||||
|
checkNoErrorsOfKind(MISS_REF_ID);
|
||||||
|
checkNoErrorsOfKind(MISS_SELF_ID);
|
||||||
|
}
|
||||||
|
|
||||||
//class Foo {
|
//class Foo {
|
||||||
//public:
|
//public:
|
||||||
//Foo operator=(const Foo& f);
|
//Foo operator=(const Foo& f);
|
||||||
|
|
Loading…
Add table
Reference in a new issue