Merge pull request #20995 from github/idrissrio/cpp/overlay/locations

C/C++ overlay: Add multiloc declaration to Overlay.qll
This commit is contained in:
Idriss Riouak
2025-12-11 14:00:12 +01:00
committed by GitHub

View File

@@ -20,9 +20,21 @@ private string getLocationFilePath(@location_default loc) {
*/ */
overlay[local] overlay[local]
private string getSingleLocationFilePath(@element e) { private string getSingleLocationFilePath(@element e) {
// @var_decl has a direct location in the var_decls relation exists(@location_default loc |
exists(@location_default loc | var_decls(e, _, _, _, loc) | result = getLocationFilePath(loc)) var_decls(e, _, _, _, loc)
//TODO: add other kinds of elements with single locations or
fun_decls(e, _, _, _, loc)
or
type_decls(e, _, loc)
or
namespace_decls(e, _, loc, _)
or
macroinvocations(e, _, loc, _)
or
preprocdirects(e, _, loc)
|
result = getLocationFilePath(loc)
)
} }
/** /**
@@ -30,11 +42,17 @@ private string getSingleLocationFilePath(@element e) {
*/ */
overlay[local] overlay[local]
private string getMultiLocationFilePath(@element e) { private string getMultiLocationFilePath(@element e) {
// @variable gets its location(s) from its @var_decl(s) exists(@location_default loc |
exists(@var_decl vd, @location_default loc | var_decls(vd, e, _, _, loc) | exists(@var_decl vd | var_decls(vd, e, _, _, loc))
or
exists(@fun_decl fd | fun_decls(fd, e, _, _, loc))
or
exists(@type_decl td | type_decls(td, e, loc))
or
exists(@namespace_decl nd | namespace_decls(nd, e, loc, _))
|
result = getLocationFilePath(loc) result = getLocationFilePath(loc)
) )
//TODO: add other kinds of elements with multiple locations
} }
/** /**