mirror of
https://github.com/github/codeql.git
synced 2025-12-22 03:36:30 +01:00
This introduces a `MethodRefExpr` node synthesized out of `DotSyntaxCallExpr` under the `LookupExpr` hierarchy. This means that much like ```free_function(1, 2)``` is a `CallExpr` with `getFunction` giving a `DeclRefExpr`, ```foo.method(1, 2)``` is now a `CallExpr` with `getFunction` giving a `MethodRefExpr`. `ApplyExpr::getStaticTarget` has been made work with it (as well as `ConstructorRefCallExpr` which for the moment has been left where it is), a new `MethodApplyExpr` has been introduced deriving from it, and control and data flow libraries have adapted. A small but was fixed in `qlgen` where the default constructor for DB types was not correctly subtracting derived IPA types depending on the order of definitions in `schema.yml`. There are still some occurrences of `DotSyntaxCallExpr`, and as already mentioned the other `SelfApply` class (`ConstructorRefCallExpr`) was left alone. Their treatment is left for a future PR.
12 lines
308 B
Plaintext
12 lines
308 B
Plaintext
// generated by codegen/codegen.py
|
|
import codeql.swift.elements
|
|
import TestUtils
|
|
|
|
from DotSyntaxCallExpr x, Expr getFunction, Expr getBase
|
|
where
|
|
toBeTested(x) and
|
|
not x.isUnknown() and
|
|
getFunction = x.getFunction() and
|
|
getBase = x.getBase()
|
|
select x, "getFunction:", getFunction, "getBase:", getBase
|