Merge pull request #7928 from jketema/structured-bindings-db-scheme

C++: Add table that identifies C++ structured bindings
This commit is contained in:
Jeroen Ketema
2022-02-22 17:34:26 +01:00
committed by GitHub
10 changed files with 8409 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
description: Add relation for tracking variables from structured binding declarations
compatibility: full
is_structured_binding.rel: delete

View File

@@ -0,0 +1,4 @@
---
category: feature
---
* Added a `isStructuredBinding` predicate to the `Variable` class which holds when the variable is declared as part of a structured binding declaration.

View File

@@ -169,6 +169,12 @@ class Variable extends Declaration, @variable {
variable_instantiation(underlyingElement(this), unresolveElement(v))
}
/**
* Holds if this variable is declated as part of a structured binding
* declaration. For example, `x` in `auto [x, y] = ...`.
*/
predicate isStructuredBinding() { is_structured_binding(underlyingElement(this)) }
/**
* Holds if this is a compiler-generated variable. For example, a
* [range-based for loop](http://en.cppreference.com/w/cpp/language/range-for)

View File

@@ -446,6 +446,7 @@ var_decl_specifiers(
int id: @var_decl ref,
string name: string ref
)
is_structured_binding(unique int id: @variable ref);
type_decls(
unique int id: @type_decl,

View File

@@ -14877,6 +14877,17 @@
</dependencies>
</relation>
<relation>
<name>is_structured_binding</name>
<cardinality>10</cardinality>
<columnsizes>
<e>
<k>id</k>
<v>10</v>
</e>
</columnsizes>
<dependencies/>
</relation>
<relation>
<name>type_decls</name>
<cardinality>1316547</cardinality>
<columnsizes>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
description: Add relation for tracking variables from structured binding declarations
compatibility: backwards