Merge pull request #1818 from jbj/lambda_capture-upgrade-perf

C++: Fix lambda_capture upgrade query join order
This commit is contained in:
ian-semmle 2019-08-24 18:26:05 +01:00 коммит произвёл GitHub
Родитель 2590019058 52e4058903
Коммит 8d037da049
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 16 добавлений и 5 удалений

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

@ -5,11 +5,22 @@ class Field extends @membervariable { string toString() { none() } }
class Location extends @location_default { string toString() { none() } }
class Type extends @usertype { string toString() { none() } }
pragma[noopt]
predicate lambda_capture_new(LambdaCapture lc, Lambda l, int i, Field f,
boolean captured_by_reference, boolean is_implicit,
Location loc)
{
exists(Type t |
lambda_capture(lc, l, i, captured_by_reference, is_implicit, loc) and
expr_types(l, t, _) and
t instanceof Type and
member(t, i, f) and
f instanceof Field
)
}
from LambdaCapture lc, Lambda l, int i, Field f,
boolean captured_by_reference, boolean is_implicit,
Location loc, Type t
where lambda_capture(lc, l, i, captured_by_reference, is_implicit, loc)
and expr_types(l, t, _)
and member(t, i, f)
Location loc
where lambda_capture_new(lc, l, i, f, captured_by_reference, is_implicit, loc)
select lc, l, i, f, captured_by_reference, is_implicit, loc