This commit is contained in:
Nora Dimitrijević 2022-09-29 17:04:11 +02:00
Родитель 29d7c0e21b
Коммит 28bd591107
2 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -13,10 +13,10 @@ import semmle.code.cpp.commons.Exclusions
/** Gets the sub-expression of 'e' with the earliest-starting Location */
Expr normalizeExpr(Expr e) {
if forex(Expr q | q = e.(Call).getQualifier() | not q instanceof ThisExpr)
if forex(Expr q | q = e.(Call).getQualifier() | not q.(ThisExpr).isCompilerGenerated())
then result = normalizeExpr(e.(Call).getQualifier())
else
if forex(Expr q | q = e.(FieldAccess).getQualifier() | not q instanceof ThisExpr)
if forex(Expr q | q = e.(FieldAccess).getQualifier() | not q.(ThisExpr).isCompilerGenerated())
then result = normalizeExpr(e.(FieldAccess).getQualifier())
else
if e.hasExplicitConversion()

Просмотреть файл

@ -40,6 +40,10 @@ int Foo::test(int (*baz)(int))
(void)i, // GOOD
(void)j;
if (i)
this->foo(i), // GOOD
foo(i);
if (i)
(void)i, // BAD
(void)j;