mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Swift: generate getParent implementation
By explicitly marking children in the `schema.yml` file, an internal `getAChild` predicate is implemented, that is in turn used in `AstNode` to implement `getParent`. This is yet to be used in the control flow library to replace the hand-rolled implementation. A further, more complex step is to use the same information to fully generate the core implementation of `PrintAst` (including the accessor string). This will be done later. The `parent` tests use the same swift code as the extractor tests, and this is currently enforced by `sync-files.py`. Notice that `qltest.sh` had to be modified to deal with multiple files, which was not working yet.
This commit is contained in:
@@ -25,7 +25,7 @@ repos:
|
|||||||
|
|
||||||
- id: sync-files
|
- id: sync-files
|
||||||
name: Fix files required to be identical
|
name: Fix files required to be identical
|
||||||
files: \.(qll?|qhelp)$
|
files: \.(qll?|qhelp|swift)$
|
||||||
language: system
|
language: system
|
||||||
entry: python3 config/sync-files.py --latest
|
entry: python3 config/sync-files.py --latest
|
||||||
pass_filenames: false
|
pass_filenames: false
|
||||||
|
|||||||
@@ -566,5 +566,21 @@
|
|||||||
"Typo database": [
|
"Typo database": [
|
||||||
"javascript/ql/src/Expressions/TypoDatabase.qll",
|
"javascript/ql/src/Expressions/TypoDatabase.qll",
|
||||||
"ql/ql/src/codeql_ql/style/TypoDatabase.qll"
|
"ql/ql/src/codeql_ql/style/TypoDatabase.qll"
|
||||||
|
],
|
||||||
|
"Swift declarations test file": [
|
||||||
|
"swift/ql/test/extractor-tests/declarations/declarations.swift",
|
||||||
|
"swift/ql/test/library-tests/parent/declarations.swift"
|
||||||
|
],
|
||||||
|
"Swift statements test file": [
|
||||||
|
"swift/ql/test/extractor-tests/statements/statements.swift",
|
||||||
|
"swift/ql/test/library-tests/parent/statements.swift"
|
||||||
|
],
|
||||||
|
"Swift expressions test file": [
|
||||||
|
"swift/ql/test/extractor-tests/expressions/expressions.swift",
|
||||||
|
"swift/ql/test/library-tests/parent/expressions.swift"
|
||||||
|
],
|
||||||
|
"Swift patterns test file": [
|
||||||
|
"swift/ql/test/extractor-tests/patterns/patterns.swift",
|
||||||
|
"swift/ql/test/library-tests/parent/patterns.swift"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ def get_ql_property(cls: schema.Class, prop: schema.Property):
|
|||||||
type=prop.type,
|
type=prop.type,
|
||||||
tablename=inflection.tableize(cls.name),
|
tablename=inflection.tableize(cls.name),
|
||||||
tableparams=["this"] + ["result" if p is prop else "_" for p in cls.properties if p.is_single],
|
tableparams=["this"] + ["result" if p is prop else "_" for p in cls.properties if p.is_single],
|
||||||
|
is_child=prop.is_child,
|
||||||
)
|
)
|
||||||
elif prop.is_repeated:
|
elif prop.is_repeated:
|
||||||
return ql.Property(
|
return ql.Property(
|
||||||
@@ -28,6 +29,7 @@ def get_ql_property(cls: schema.Class, prop: schema.Property):
|
|||||||
tablename=inflection.tableize(f"{cls.name}_{prop.name}"),
|
tablename=inflection.tableize(f"{cls.name}_{prop.name}"),
|
||||||
tableparams=["this", "index", "result"],
|
tableparams=["this", "index", "result"],
|
||||||
is_optional=prop.is_optional,
|
is_optional=prop.is_optional,
|
||||||
|
is_child=prop.is_child,
|
||||||
)
|
)
|
||||||
elif prop.is_optional:
|
elif prop.is_optional:
|
||||||
return ql.Property(
|
return ql.Property(
|
||||||
@@ -36,6 +38,7 @@ def get_ql_property(cls: schema.Class, prop: schema.Property):
|
|||||||
tablename=inflection.tableize(f"{cls.name}_{prop.name}"),
|
tablename=inflection.tableize(f"{cls.name}_{prop.name}"),
|
||||||
tableparams=["this", "result"],
|
tableparams=["this", "result"],
|
||||||
is_optional=True,
|
is_optional=True,
|
||||||
|
is_child=prop.is_child,
|
||||||
)
|
)
|
||||||
elif prop.is_predicate:
|
elif prop.is_predicate:
|
||||||
return ql.Property(
|
return ql.Property(
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ class Property:
|
|||||||
local_var: str = "x"
|
local_var: str = "x"
|
||||||
is_optional: bool = False
|
is_optional: bool = False
|
||||||
is_predicate: bool = False
|
is_predicate: bool = False
|
||||||
|
is_child: bool = False
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
if self.tableparams:
|
if self.tableparams:
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ class Property:
|
|||||||
|
|
||||||
name: str
|
name: str
|
||||||
type: str = None
|
type: str = None
|
||||||
|
is_child: bool = False
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -62,17 +63,18 @@ class Schema:
|
|||||||
includes: Set[str] = field(default_factory=set)
|
includes: Set[str] = field(default_factory=set)
|
||||||
|
|
||||||
|
|
||||||
def _parse_property(name, type):
|
def _parse_property(name: str, type: str, is_child: bool = False):
|
||||||
|
assert not (is_child and type[0].islower()), f"children must have class type, got {type} for {name}"
|
||||||
if type.endswith("?*"):
|
if type.endswith("?*"):
|
||||||
return RepeatedOptionalProperty(name, type[:-2])
|
return RepeatedOptionalProperty(name, type[:-2], is_child=is_child)
|
||||||
elif type.endswith("*"):
|
elif type.endswith("*"):
|
||||||
return RepeatedProperty(name, type[:-1])
|
return RepeatedProperty(name, type[:-1], is_child=is_child)
|
||||||
elif type.endswith("?"):
|
elif type.endswith("?"):
|
||||||
return OptionalProperty(name, type[:-1])
|
return OptionalProperty(name, type[:-1], is_child=is_child)
|
||||||
elif type == "predicate":
|
elif type == "predicate":
|
||||||
return PredicateProperty(name)
|
return PredicateProperty(name)
|
||||||
else:
|
else:
|
||||||
return SingleProperty(name, type)
|
return SingleProperty(name, type, is_child=is_child)
|
||||||
|
|
||||||
|
|
||||||
class _DirSelector:
|
class _DirSelector:
|
||||||
@@ -109,6 +111,8 @@ def load(path):
|
|||||||
classes[base].derived.add(name)
|
classes[base].derived.add(name)
|
||||||
elif k == "_dir":
|
elif k == "_dir":
|
||||||
cls.dir = pathlib.Path(v)
|
cls.dir = pathlib.Path(v)
|
||||||
|
elif k == "_children":
|
||||||
|
cls.properties.extend(_parse_property(kk, vv, is_child=True) for kk, vv in v.items())
|
||||||
if not cls.bases and cls.name != root_class_name:
|
if not cls.bases and cls.name != root_class_name:
|
||||||
cls.bases.add(root_class_name)
|
cls.bases.add(root_class_name)
|
||||||
classes[root_class_name].derived.add(name)
|
classes[root_class_name].derived.add(name)
|
||||||
|
|||||||
@@ -52,9 +52,10 @@ AstNode:
|
|||||||
|
|
||||||
ConditionElement:
|
ConditionElement:
|
||||||
_extends: Locatable
|
_extends: Locatable
|
||||||
boolean: Expr?
|
_children:
|
||||||
pattern: Pattern?
|
boolean: Expr?
|
||||||
initializer: Expr?
|
pattern: Pattern?
|
||||||
|
initializer: Expr?
|
||||||
_dir: stmt
|
_dir: stmt
|
||||||
|
|
||||||
AnyFunctionType:
|
AnyFunctionType:
|
||||||
@@ -247,7 +248,8 @@ TypeAliasType:
|
|||||||
|
|
||||||
EnumCaseDecl:
|
EnumCaseDecl:
|
||||||
_extends: Decl
|
_extends: Decl
|
||||||
elements: EnumElementDecl*
|
_children:
|
||||||
|
elements: EnumElementDecl*
|
||||||
|
|
||||||
IfConfigDecl:
|
IfConfigDecl:
|
||||||
_extends: Decl
|
_extends: Decl
|
||||||
@@ -264,8 +266,9 @@ OperatorDecl:
|
|||||||
|
|
||||||
PatternBindingDecl:
|
PatternBindingDecl:
|
||||||
_extends: Decl
|
_extends: Decl
|
||||||
inits: Expr?*
|
_children:
|
||||||
patterns: Pattern*
|
inits: Expr?*
|
||||||
|
patterns: Pattern*
|
||||||
|
|
||||||
PoundDiagnosticDecl:
|
PoundDiagnosticDecl:
|
||||||
_extends: Decl
|
_extends: Decl
|
||||||
@@ -275,7 +278,8 @@ PrecedenceGroupDecl:
|
|||||||
|
|
||||||
TopLevelCodeDecl:
|
TopLevelCodeDecl:
|
||||||
_extends: Decl
|
_extends: Decl
|
||||||
body: BraceStmt
|
_children:
|
||||||
|
body: BraceStmt
|
||||||
|
|
||||||
ValueDecl:
|
ValueDecl:
|
||||||
_extends: Decl
|
_extends: Decl
|
||||||
@@ -286,37 +290,43 @@ AbstractClosureExpr:
|
|||||||
|
|
||||||
AnyTryExpr:
|
AnyTryExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
AppliedPropertyWrapperExpr:
|
AppliedPropertyWrapperExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
|
|
||||||
Argument:
|
Argument:
|
||||||
label: string
|
label: string
|
||||||
expr: Expr
|
_children:
|
||||||
|
expr: Expr
|
||||||
_dir: expr
|
_dir: expr
|
||||||
|
|
||||||
ApplyExpr:
|
ApplyExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
function: Expr
|
_children:
|
||||||
arguments: Argument*
|
function: Expr
|
||||||
|
arguments: Argument*
|
||||||
|
|
||||||
ArrowExpr:
|
ArrowExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
|
|
||||||
AssignExpr:
|
AssignExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
dest: Expr
|
_children:
|
||||||
source: Expr
|
dest: Expr
|
||||||
|
source: Expr
|
||||||
|
|
||||||
BindOptionalExpr:
|
BindOptionalExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
CaptureListExpr:
|
CaptureListExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
binding_decls: PatternBindingDecl*
|
_children:
|
||||||
closure_body: ClosureExpr
|
binding_decls: PatternBindingDecl*
|
||||||
|
closure_body: ClosureExpr
|
||||||
|
|
||||||
CodeCompletionExpr:
|
CodeCompletionExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
@@ -343,103 +353,121 @@ DiscardAssignmentExpr:
|
|||||||
|
|
||||||
DotSyntaxBaseIgnoredExpr:
|
DotSyntaxBaseIgnoredExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
qualifier: Expr
|
_children:
|
||||||
sub_expr: Expr
|
qualifier: Expr
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
DynamicTypeExpr:
|
DynamicTypeExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
base_expr: Expr
|
_children:
|
||||||
|
base_expr: Expr
|
||||||
|
|
||||||
EditorPlaceholderExpr:
|
EditorPlaceholderExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
|
|
||||||
EnumIsCaseExpr:
|
EnumIsCaseExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
type_repr: TypeRepr
|
sub_expr: Expr
|
||||||
element: EnumElementDecl
|
type_repr: TypeRepr
|
||||||
|
element: EnumElementDecl
|
||||||
|
|
||||||
ErrorExpr:
|
ErrorExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
|
|
||||||
ExplicitCastExpr:
|
ExplicitCastExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
ForceValueExpr:
|
ForceValueExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
IdentityExpr:
|
IdentityExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
IfExpr:
|
IfExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
condition: Expr
|
_children:
|
||||||
then_expr: Expr
|
condition: Expr
|
||||||
else_expr: Expr
|
then_expr: Expr
|
||||||
|
else_expr: Expr
|
||||||
|
|
||||||
ImplicitConversionExpr:
|
ImplicitConversionExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
InOutExpr:
|
InOutExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
KeyPathApplicationExpr:
|
KeyPathApplicationExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
base: Expr
|
_children:
|
||||||
key_path: Expr
|
base: Expr
|
||||||
|
key_path: Expr
|
||||||
|
|
||||||
KeyPathDotExpr:
|
KeyPathDotExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
|
|
||||||
KeyPathExpr:
|
KeyPathExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
parsed_root: Expr?
|
_children:
|
||||||
parsed_path: Expr?
|
parsed_root: Expr?
|
||||||
|
parsed_path: Expr?
|
||||||
|
|
||||||
LazyInitializerExpr:
|
LazyInitializerExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
LiteralExpr:
|
LiteralExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
|
|
||||||
LookupExpr:
|
LookupExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
base_expr: Expr
|
_children:
|
||||||
|
base_expr: Expr
|
||||||
member: Decl
|
member: Decl
|
||||||
|
|
||||||
MakeTemporarilyEscapableExpr:
|
MakeTemporarilyEscapableExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
escaping_closure: OpaqueValueExpr
|
_children:
|
||||||
nonescaping_closure: Expr
|
escaping_closure: OpaqueValueExpr
|
||||||
sub_expr: Expr
|
nonescaping_closure: Expr
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
ObjCSelectorExpr:
|
ObjCSelectorExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
method: AbstractFunctionDecl
|
method: AbstractFunctionDecl
|
||||||
|
|
||||||
OneWayExpr:
|
OneWayExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
OpaqueValueExpr:
|
OpaqueValueExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
|
|
||||||
OpenExistentialExpr:
|
OpenExistentialExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
existential: Expr
|
sub_expr: Expr
|
||||||
opaque_expr: OpaqueValueExpr
|
existential: Expr
|
||||||
|
opaque_expr: OpaqueValueExpr
|
||||||
|
|
||||||
OptionalEvaluationExpr:
|
OptionalEvaluationExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
OtherConstructorDeclRefExpr:
|
OtherConstructorDeclRefExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
@@ -452,8 +480,9 @@ PropertyWrapperValuePlaceholderExpr:
|
|||||||
|
|
||||||
RebindSelfInConstructorExpr:
|
RebindSelfInConstructorExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
self: VarDecl
|
sub_expr: Expr
|
||||||
|
self: VarDecl
|
||||||
|
|
||||||
SequenceExpr:
|
SequenceExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
@@ -464,22 +493,26 @@ SuperRefExpr:
|
|||||||
|
|
||||||
TapExpr:
|
TapExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr?
|
_children:
|
||||||
|
sub_expr: Expr?
|
||||||
|
body: BraceStmt
|
||||||
var: VarDecl
|
var: VarDecl
|
||||||
body: BraceStmt
|
|
||||||
|
|
||||||
TupleElementExpr:
|
TupleElementExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
index: int
|
index: int
|
||||||
|
|
||||||
TupleExpr:
|
TupleExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
elements: Expr*
|
_children:
|
||||||
|
elements: Expr*
|
||||||
|
|
||||||
TypeExpr:
|
TypeExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
type_repr: TypeRepr?
|
_children:
|
||||||
|
type_repr: TypeRepr?
|
||||||
|
|
||||||
UnresolvedDeclRefExpr:
|
UnresolvedDeclRefExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
@@ -498,14 +531,16 @@ UnresolvedSpecializeExpr:
|
|||||||
|
|
||||||
VarargExpansionExpr:
|
VarargExpansionExpr:
|
||||||
_extends: Expr
|
_extends: Expr
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
AnyPattern:
|
AnyPattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
|
|
||||||
BindingPattern:
|
BindingPattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
sub_pattern: Pattern
|
_children:
|
||||||
|
sub_pattern: Pattern
|
||||||
|
|
||||||
BoolPattern:
|
BoolPattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
@@ -514,11 +549,13 @@ BoolPattern:
|
|||||||
EnumElementPattern:
|
EnumElementPattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
element: EnumElementDecl
|
element: EnumElementDecl
|
||||||
sub_pattern: Pattern?
|
_children:
|
||||||
|
sub_pattern: Pattern?
|
||||||
|
|
||||||
ExprPattern:
|
ExprPattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
IsPattern:
|
IsPattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
@@ -531,24 +568,29 @@ NamedPattern:
|
|||||||
|
|
||||||
OptionalSomePattern:
|
OptionalSomePattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
sub_pattern: Pattern
|
_children:
|
||||||
|
sub_pattern: Pattern
|
||||||
|
|
||||||
ParenPattern:
|
ParenPattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
sub_pattern: Pattern
|
_children:
|
||||||
|
sub_pattern: Pattern
|
||||||
|
|
||||||
TuplePattern:
|
TuplePattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
elements: Pattern*
|
_children:
|
||||||
|
elements: Pattern*
|
||||||
|
|
||||||
TypedPattern:
|
TypedPattern:
|
||||||
_extends: Pattern
|
_extends: Pattern
|
||||||
sub_pattern: Pattern
|
_children:
|
||||||
type_repr: TypeRepr?
|
sub_pattern: Pattern
|
||||||
|
type_repr: TypeRepr?
|
||||||
|
|
||||||
BraceStmt:
|
BraceStmt:
|
||||||
_extends: Stmt
|
_extends: Stmt
|
||||||
elements: AstNode*
|
_children:
|
||||||
|
elements: AstNode*
|
||||||
|
|
||||||
BreakStmt:
|
BreakStmt:
|
||||||
_extends: Stmt
|
_extends: Stmt
|
||||||
@@ -557,14 +599,16 @@ BreakStmt:
|
|||||||
|
|
||||||
CaseStmt:
|
CaseStmt:
|
||||||
_extends: Stmt
|
_extends: Stmt
|
||||||
body: Stmt
|
_children:
|
||||||
labels: CaseLabelItem*
|
body: Stmt
|
||||||
|
labels: CaseLabelItem*
|
||||||
variables: VarDecl*
|
variables: VarDecl*
|
||||||
|
|
||||||
CaseLabelItem:
|
CaseLabelItem:
|
||||||
_extends: AstNode
|
_extends: AstNode
|
||||||
pattern: Pattern
|
_children:
|
||||||
guard: Expr?
|
pattern: Pattern
|
||||||
|
guard: Expr?
|
||||||
_dir: stmt
|
_dir: stmt
|
||||||
|
|
||||||
ContinueStmt:
|
ContinueStmt:
|
||||||
@@ -574,7 +618,8 @@ ContinueStmt:
|
|||||||
|
|
||||||
DeferStmt:
|
DeferStmt:
|
||||||
_extends: Stmt
|
_extends: Stmt
|
||||||
body: BraceStmt
|
_children:
|
||||||
|
body: BraceStmt
|
||||||
|
|
||||||
FailStmt:
|
FailStmt:
|
||||||
_extends: Stmt
|
_extends: Stmt
|
||||||
@@ -593,15 +638,18 @@ PoundAssertStmt:
|
|||||||
|
|
||||||
ReturnStmt:
|
ReturnStmt:
|
||||||
_extends: Stmt
|
_extends: Stmt
|
||||||
result: Expr?
|
_children:
|
||||||
|
result: Expr?
|
||||||
|
|
||||||
ThrowStmt:
|
ThrowStmt:
|
||||||
_extends: Stmt
|
_extends: Stmt
|
||||||
sub_expr: Expr
|
_children:
|
||||||
|
sub_expr: Expr
|
||||||
|
|
||||||
YieldStmt:
|
YieldStmt:
|
||||||
_extends: Stmt
|
_extends: Stmt
|
||||||
results: Expr*
|
_children:
|
||||||
|
results: Expr*
|
||||||
|
|
||||||
BoundGenericType:
|
BoundGenericType:
|
||||||
_extends: NominalOrBoundGenericNominalType
|
_extends: NominalOrBoundGenericNominalType
|
||||||
@@ -657,17 +705,20 @@ AbstractFunctionDecl:
|
|||||||
- GenericContext
|
- GenericContext
|
||||||
- ValueDecl
|
- ValueDecl
|
||||||
name: string
|
name: string
|
||||||
body: BraceStmt?
|
_children:
|
||||||
params: ParamDecl*
|
body: BraceStmt?
|
||||||
|
params: ParamDecl*
|
||||||
|
|
||||||
AbstractStorageDecl:
|
AbstractStorageDecl:
|
||||||
_extends: ValueDecl
|
_extends: ValueDecl
|
||||||
accessor_decls: AccessorDecl*
|
_children:
|
||||||
|
accessor_decls: AccessorDecl*
|
||||||
|
|
||||||
EnumElementDecl:
|
EnumElementDecl:
|
||||||
_extends: ValueDecl
|
_extends: ValueDecl
|
||||||
name: string
|
name: string
|
||||||
params: ParamDecl*
|
_children:
|
||||||
|
params: ParamDecl*
|
||||||
|
|
||||||
TypeDecl:
|
TypeDecl:
|
||||||
_extends: ValueDecl
|
_extends: ValueDecl
|
||||||
@@ -676,11 +727,13 @@ TypeDecl:
|
|||||||
|
|
||||||
AutoClosureExpr:
|
AutoClosureExpr:
|
||||||
_extends: AbstractClosureExpr
|
_extends: AbstractClosureExpr
|
||||||
body: BraceStmt
|
_children:
|
||||||
|
body: BraceStmt
|
||||||
|
|
||||||
ClosureExpr:
|
ClosureExpr:
|
||||||
_extends: AbstractClosureExpr
|
_extends: AbstractClosureExpr
|
||||||
body: BraceStmt
|
_children:
|
||||||
|
body: BraceStmt
|
||||||
|
|
||||||
ForceTryExpr:
|
ForceTryExpr:
|
||||||
_extends: AnyTryExpr
|
_extends: AnyTryExpr
|
||||||
@@ -705,15 +758,18 @@ PrefixUnaryExpr:
|
|||||||
|
|
||||||
SelfApplyExpr:
|
SelfApplyExpr:
|
||||||
_extends: ApplyExpr
|
_extends: ApplyExpr
|
||||||
base_expr: Expr
|
_children:
|
||||||
|
base_expr: Expr
|
||||||
|
|
||||||
ArrayExpr:
|
ArrayExpr:
|
||||||
_extends: CollectionExpr
|
_extends: CollectionExpr
|
||||||
elements: Expr*
|
_children:
|
||||||
|
elements: Expr*
|
||||||
|
|
||||||
DictionaryExpr:
|
DictionaryExpr:
|
||||||
_extends: CollectionExpr
|
_extends: CollectionExpr
|
||||||
elements: Expr*
|
_children:
|
||||||
|
elements: Expr*
|
||||||
|
|
||||||
CheckedCastExpr:
|
CheckedCastExpr:
|
||||||
_extends: ExplicitCastExpr
|
_extends: ExplicitCastExpr
|
||||||
@@ -832,9 +888,10 @@ BuiltinLiteralExpr:
|
|||||||
InterpolatedStringLiteralExpr:
|
InterpolatedStringLiteralExpr:
|
||||||
_extends: LiteralExpr
|
_extends: LiteralExpr
|
||||||
interpolation_expr: OpaqueValueExpr?
|
interpolation_expr: OpaqueValueExpr?
|
||||||
interpolation_count_expr: Expr?
|
_children:
|
||||||
literal_capacity_expr: Expr?
|
interpolation_count_expr: Expr?
|
||||||
appending_expr: TapExpr?
|
literal_capacity_expr: Expr?
|
||||||
|
appending_expr: TapExpr?
|
||||||
|
|
||||||
RegexLiteralExpr:
|
RegexLiteralExpr:
|
||||||
_extends: LiteralExpr
|
_extends: LiteralExpr
|
||||||
@@ -857,7 +914,8 @@ MemberRefExpr:
|
|||||||
SubscriptExpr:
|
SubscriptExpr:
|
||||||
_extends:
|
_extends:
|
||||||
- LookupExpr
|
- LookupExpr
|
||||||
arguments: Argument*
|
_children:
|
||||||
|
arguments: Argument*
|
||||||
has_direct_to_storage_semantics: predicate
|
has_direct_to_storage_semantics: predicate
|
||||||
has_direct_to_implementation_semantics: predicate
|
has_direct_to_implementation_semantics: predicate
|
||||||
has_ordinary_semantics: predicate
|
has_ordinary_semantics: predicate
|
||||||
@@ -867,38 +925,45 @@ OverloadedDeclRefExpr:
|
|||||||
|
|
||||||
DoCatchStmt:
|
DoCatchStmt:
|
||||||
_extends: LabeledStmt
|
_extends: LabeledStmt
|
||||||
body: Stmt
|
_children:
|
||||||
catches: CaseStmt*
|
body: Stmt
|
||||||
|
catches: CaseStmt*
|
||||||
|
|
||||||
DoStmt:
|
DoStmt:
|
||||||
_extends: LabeledStmt
|
_extends: LabeledStmt
|
||||||
body: BraceStmt
|
_children:
|
||||||
|
body: BraceStmt
|
||||||
|
|
||||||
ForEachStmt:
|
ForEachStmt:
|
||||||
_extends: LabeledStmt
|
_extends: LabeledStmt
|
||||||
pattern: Pattern
|
_children:
|
||||||
sequence: Expr
|
pattern: Pattern
|
||||||
where: Expr?
|
sequence: Expr
|
||||||
body: BraceStmt
|
where: Expr?
|
||||||
|
body: BraceStmt
|
||||||
|
|
||||||
LabeledConditionalStmt:
|
LabeledConditionalStmt:
|
||||||
_extends: LabeledStmt
|
_extends: LabeledStmt
|
||||||
condition: StmtCondition
|
_children:
|
||||||
|
condition: StmtCondition
|
||||||
|
|
||||||
StmtCondition:
|
StmtCondition:
|
||||||
_extends: AstNode
|
_extends: AstNode
|
||||||
elements: ConditionElement*
|
_children:
|
||||||
|
elements: ConditionElement*
|
||||||
_dir: stmt
|
_dir: stmt
|
||||||
|
|
||||||
RepeatWhileStmt:
|
RepeatWhileStmt:
|
||||||
_extends: LabeledStmt
|
_extends: LabeledStmt
|
||||||
condition: Expr
|
_children:
|
||||||
body: Stmt
|
condition: Expr
|
||||||
|
body: Stmt
|
||||||
|
|
||||||
SwitchStmt:
|
SwitchStmt:
|
||||||
_extends: LabeledStmt
|
_extends: LabeledStmt
|
||||||
expr: Expr
|
_children:
|
||||||
cases: CaseStmt*
|
expr: Expr
|
||||||
|
cases: CaseStmt*
|
||||||
|
|
||||||
BoundGenericClassType:
|
BoundGenericClassType:
|
||||||
_extends: BoundGenericType
|
_extends: BoundGenericType
|
||||||
@@ -943,7 +1008,8 @@ SubscriptDecl:
|
|||||||
_extends:
|
_extends:
|
||||||
- AbstractStorageDecl
|
- AbstractStorageDecl
|
||||||
- GenericContext
|
- GenericContext
|
||||||
params: ParamDecl*
|
_children:
|
||||||
|
params: ParamDecl*
|
||||||
element_type: Type
|
element_type: Type
|
||||||
|
|
||||||
VarDecl:
|
VarDecl:
|
||||||
@@ -1006,16 +1072,19 @@ DynamicSubscriptExpr:
|
|||||||
|
|
||||||
GuardStmt:
|
GuardStmt:
|
||||||
_extends: LabeledConditionalStmt
|
_extends: LabeledConditionalStmt
|
||||||
body: BraceStmt
|
_children:
|
||||||
|
body: BraceStmt
|
||||||
|
|
||||||
IfStmt:
|
IfStmt:
|
||||||
_extends: LabeledConditionalStmt
|
_extends: LabeledConditionalStmt
|
||||||
then: Stmt
|
_children:
|
||||||
else: Stmt?
|
then: Stmt
|
||||||
|
else: Stmt?
|
||||||
|
|
||||||
WhileStmt:
|
WhileStmt:
|
||||||
_extends: LabeledConditionalStmt
|
_extends: LabeledConditionalStmt
|
||||||
body: Stmt
|
_children:
|
||||||
|
body: Stmt
|
||||||
|
|
||||||
AccessorDecl:
|
AccessorDecl:
|
||||||
_extends: FuncDecl
|
_extends: FuncDecl
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
// generated by {{generator}}
|
// generated by {{generator}}
|
||||||
|
|
||||||
|
{{^root}}
|
||||||
|
import codeql.swift.elements.Element
|
||||||
|
{{/root}}
|
||||||
{{#imports}}
|
{{#imports}}
|
||||||
import {{.}}
|
import {{.}}
|
||||||
{{/imports}}
|
{{/imports}}
|
||||||
@@ -19,10 +22,26 @@ class {{name}}Base extends {{db_id}}{{#bases}}, {{.}}{{/bases}} {
|
|||||||
or
|
or
|
||||||
result = getResolveStep().resolve()
|
result = getResolveStep().resolve()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{{name}}Base getAChild() { none() } // overridden by subclasses, internal use only
|
||||||
{{/root}}
|
{{/root}}
|
||||||
{{#final}}
|
{{#final}}
|
||||||
override string getAPrimaryQlClass() { result = "{{name}}" }
|
override string getAPrimaryQlClass() { result = "{{name}}" }
|
||||||
{{/final}}
|
{{/final}}
|
||||||
|
{{^root}}
|
||||||
|
|
||||||
|
cached override Element getAChild() {
|
||||||
|
none()
|
||||||
|
{{#bases}}
|
||||||
|
or result = {{.}}.super.getAChild()
|
||||||
|
{{/bases}}
|
||||||
|
{{#properties}}
|
||||||
|
{{#is_child}}
|
||||||
|
or result = {{getter}}({{#is_repeated}}_{{/is_repeated}})
|
||||||
|
{{/is_child}}
|
||||||
|
{{/properties}}
|
||||||
|
}
|
||||||
|
{{/root}}
|
||||||
{{#properties}}
|
{{#properties}}
|
||||||
|
|
||||||
{{type}} {{getter}}({{#is_repeated}}int index{{/is_repeated}}) {
|
{{type}} {{getter}}({{#is_repeated}}int index{{/is_repeated}}) {
|
||||||
|
|||||||
@@ -99,44 +99,47 @@ def test_single_properties(opts, input, renderer):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_optional_property(opts, input, renderer):
|
@pytest.mark.parametrize("is_child", [False, True])
|
||||||
|
def test_optional_property(opts, input, renderer, is_child):
|
||||||
input.classes = [
|
input.classes = [
|
||||||
schema.Class("MyObject", properties=[schema.OptionalProperty("foo", "bar")]),
|
schema.Class("MyObject", properties=[schema.OptionalProperty("foo", "bar", is_child=is_child)]),
|
||||||
]
|
]
|
||||||
assert generate(opts, renderer) == {
|
assert generate(opts, renderer) == {
|
||||||
import_file(): ql.ImportList([stub_import_prefix + "MyObject"]),
|
import_file(): ql.ImportList([stub_import_prefix + "MyObject"]),
|
||||||
stub_path() / "MyObject.qll": ql.Stub(name="MyObject", base_import=gen_import_prefix + "MyObject"),
|
stub_path() / "MyObject.qll": ql.Stub(name="MyObject", base_import=gen_import_prefix + "MyObject"),
|
||||||
ql_output_path() / "MyObject.qll": ql.Class(name="MyObject", final=True, properties=[
|
ql_output_path() / "MyObject.qll": ql.Class(name="MyObject", final=True, properties=[
|
||||||
ql.Property(singular="Foo", type="bar", tablename="my_object_foos", tableparams=["this", "result"],
|
ql.Property(singular="Foo", type="bar", tablename="my_object_foos", tableparams=["this", "result"],
|
||||||
is_optional=True),
|
is_optional=True, is_child=is_child),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_repeated_property(opts, input, renderer):
|
@pytest.mark.parametrize("is_child", [False, True])
|
||||||
|
def test_repeated_property(opts, input, renderer, is_child):
|
||||||
input.classes = [
|
input.classes = [
|
||||||
schema.Class("MyObject", properties=[schema.RepeatedProperty("foo", "bar")]),
|
schema.Class("MyObject", properties=[schema.RepeatedProperty("foo", "bar", is_child=is_child)]),
|
||||||
]
|
]
|
||||||
assert generate(opts, renderer) == {
|
assert generate(opts, renderer) == {
|
||||||
import_file(): ql.ImportList([stub_import_prefix + "MyObject"]),
|
import_file(): ql.ImportList([stub_import_prefix + "MyObject"]),
|
||||||
stub_path() / "MyObject.qll": ql.Stub(name="MyObject", base_import=gen_import_prefix + "MyObject"),
|
stub_path() / "MyObject.qll": ql.Stub(name="MyObject", base_import=gen_import_prefix + "MyObject"),
|
||||||
ql_output_path() / "MyObject.qll": ql.Class(name="MyObject", final=True, properties=[
|
ql_output_path() / "MyObject.qll": ql.Class(name="MyObject", final=True, properties=[
|
||||||
ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos",
|
ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos",
|
||||||
tableparams=["this", "index", "result"]),
|
tableparams=["this", "index", "result"], is_child=is_child),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_repeated_optional_property(opts, input, renderer):
|
@pytest.mark.parametrize("is_child", [False, True])
|
||||||
|
def test_repeated_optional_property(opts, input, renderer, is_child):
|
||||||
input.classes = [
|
input.classes = [
|
||||||
schema.Class("MyObject", properties=[schema.RepeatedOptionalProperty("foo", "bar")]),
|
schema.Class("MyObject", properties=[schema.RepeatedOptionalProperty("foo", "bar", is_child=is_child)]),
|
||||||
]
|
]
|
||||||
assert generate(opts, renderer) == {
|
assert generate(opts, renderer) == {
|
||||||
import_file(): ql.ImportList([stub_import_prefix + "MyObject"]),
|
import_file(): ql.ImportList([stub_import_prefix + "MyObject"]),
|
||||||
stub_path() / "MyObject.qll": ql.Stub(name="MyObject", base_import=gen_import_prefix + "MyObject"),
|
stub_path() / "MyObject.qll": ql.Stub(name="MyObject", base_import=gen_import_prefix + "MyObject"),
|
||||||
ql_output_path() / "MyObject.qll": ql.Class(name="MyObject", final=True, properties=[
|
ql_output_path() / "MyObject.qll": ql.Class(name="MyObject", final=True, properties=[
|
||||||
ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos",
|
ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos",
|
||||||
tableparams=["this", "index", "result"], is_optional=True),
|
tableparams=["this", "index", "result"], is_optional=True, is_child=is_child),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,9 +158,10 @@ def test_predicate_property(opts, input, renderer):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_single_class_property(opts, input, renderer):
|
@pytest.mark.parametrize("is_child", [False, True])
|
||||||
|
def test_single_class_property(opts, input, renderer, is_child):
|
||||||
input.classes = [
|
input.classes = [
|
||||||
schema.Class("MyObject", properties=[schema.SingleProperty("foo", "Bar")]),
|
schema.Class("MyObject", properties=[schema.SingleProperty("foo", "Bar", is_child=is_child)]),
|
||||||
schema.Class("Bar"),
|
schema.Class("Bar"),
|
||||||
]
|
]
|
||||||
assert generate(opts, renderer) == {
|
assert generate(opts, renderer) == {
|
||||||
@@ -166,7 +170,8 @@ def test_single_class_property(opts, input, renderer):
|
|||||||
stub_path() / "Bar.qll": ql.Stub(name="Bar", base_import=gen_import_prefix + "Bar"),
|
stub_path() / "Bar.qll": ql.Stub(name="Bar", base_import=gen_import_prefix + "Bar"),
|
||||||
ql_output_path() / "MyObject.qll": ql.Class(
|
ql_output_path() / "MyObject.qll": ql.Class(
|
||||||
name="MyObject", final=True, imports=[stub_import_prefix + "Bar"], properties=[
|
name="MyObject", final=True, imports=[stub_import_prefix + "Bar"], properties=[
|
||||||
ql.Property(singular="Foo", type="Bar", tablename="my_objects", tableparams=["this", "result"]),
|
ql.Property(singular="Foo", type="Bar", tablename="my_objects", tableparams=["this", "result"],
|
||||||
|
is_child=is_child),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
ql_output_path() / "Bar.qll": ql.Class(name="Bar", final=True)
|
ql_output_path() / "Bar.qll": ql.Class(name="Bar", final=True)
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
from swift.codegen.test.utils import *
|
from swift.codegen.test.utils import *
|
||||||
|
|
||||||
root_name = schema.root_class_name
|
root_name = schema.root_class_name
|
||||||
@@ -163,9 +165,43 @@ Element:
|
|||||||
assert ret.classes == [
|
assert ret.classes == [
|
||||||
schema.Class(root_name, properties=[
|
schema.Class(root_name, properties=[
|
||||||
schema.SingleProperty('x', 'string'),
|
schema.SingleProperty('x', 'string'),
|
||||||
]),
|
]),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def test_children(load):
|
||||||
|
ret = load("""
|
||||||
|
A:
|
||||||
|
a: string
|
||||||
|
b: B*
|
||||||
|
_children:
|
||||||
|
c: C
|
||||||
|
d: D*
|
||||||
|
e: E?
|
||||||
|
f: F?*
|
||||||
|
""")
|
||||||
|
assert ret.classes == [
|
||||||
|
schema.Class(root_name, derived={'A'}),
|
||||||
|
schema.Class('A', bases={root_name}, properties=[
|
||||||
|
schema.SingleProperty('a', 'string'),
|
||||||
|
schema.RepeatedProperty('b', 'B'),
|
||||||
|
schema.SingleProperty('c', 'C', is_child=True),
|
||||||
|
schema.RepeatedProperty('d', 'D', is_child=True),
|
||||||
|
schema.OptionalProperty('e', 'E', is_child=True),
|
||||||
|
schema.RepeatedOptionalProperty('f', 'F', is_child=True),
|
||||||
|
]),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("type", ["string", "int", "boolean", "predicate"])
|
||||||
|
def test_builtin_and_predicate_children_not_allowed(load, type):
|
||||||
|
with pytest.raises(AssertionError):
|
||||||
|
load(f"""
|
||||||
|
A:
|
||||||
|
_children:
|
||||||
|
x: {type}
|
||||||
|
""")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
sys.exit(pytest.main([__file__] + sys.argv[1:]))
|
sys.exit(pytest.main([__file__] + sys.argv[1:]))
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ class ExprVisitor : public AstVisitorBase<ExprVisitor> {
|
|||||||
auto varLabel = dispatcher_.fetchLabel(expr->getVar());
|
auto varLabel = dispatcher_.fetchLabel(expr->getVar());
|
||||||
auto bodyLabel = dispatcher_.fetchLabel(expr->getBody());
|
auto bodyLabel = dispatcher_.fetchLabel(expr->getBody());
|
||||||
|
|
||||||
dispatcher_.emit(TapExprsTrap{label, varLabel, bodyLabel});
|
dispatcher_.emit(TapExprsTrap{label, bodyLabel, varLabel});
|
||||||
if (auto subExpr = expr->getSubExpr()) {
|
if (auto subExpr = expr->getSubExpr()) {
|
||||||
dispatcher_.emit(TapExprSubExprsTrap{label, dispatcher_.fetchLabel(subExpr)});
|
dispatcher_.emit(TapExprSubExprsTrap{label, dispatcher_.fetchLabel(subExpr)});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
// generated by codegen/codegen.py, remove this comment if you wish to edit this file
|
|
||||||
private import codeql.swift.generated.AstNode
|
private import codeql.swift.generated.AstNode
|
||||||
|
|
||||||
class AstNode extends AstNodeBase { }
|
class AstNode extends AstNodeBase {
|
||||||
|
AstNode getParent() {
|
||||||
|
result = unique(AstNode x | this = x.getAChild() and not exists(x.getResolveStep()) | x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
private import codeql.swift.generated.Element
|
private import codeql.swift.generated.Element
|
||||||
|
|
||||||
class Element extends ElementBase {
|
class Element extends ElementBase {
|
||||||
private predicate resolvesTo(Element e) { e.getResolveStep() = this }
|
private predicate resolvesFrom(Element e) { e.getResolveStep() = this }
|
||||||
|
|
||||||
override string toString() { result = getPrimaryQlClasses() }
|
override string toString() { result = getPrimaryQlClasses() }
|
||||||
|
|
||||||
Element getFullyUnresolved() {
|
Element getFullyUnresolved() {
|
||||||
not this.resolvesTo(_) and result = this
|
not this.resolvesFrom(_) and result = this
|
||||||
or
|
or
|
||||||
exists(Element e |
|
exists(Element e |
|
||||||
this.resolvesTo(e) and
|
this.resolvesFrom(e) and
|
||||||
result = e.getFullyUnresolved()
|
result = e.getFullyUnresolved()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.Locatable
|
import codeql.swift.elements.Locatable
|
||||||
|
|
||||||
class AstNodeBase extends @ast_node, Locatable { }
|
class AstNodeBase extends @ast_node, Locatable {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Locatable.super.getAChild()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -14,5 +14,7 @@ class ElementBase extends @element {
|
|||||||
result = getResolveStep().resolve()
|
result = getResolveStep().resolve()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ElementBase getAChild() { none() } // overridden by subclasses, internal use only
|
||||||
|
|
||||||
predicate isUnknown() { element_is_unknown(this) }
|
predicate isUnknown() { element_is_unknown(this) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
import codeql.swift.elements.Element
|
import codeql.swift.elements.Element
|
||||||
|
import codeql.swift.elements.Element
|
||||||
|
|
||||||
class FileBase extends @file, Element {
|
class FileBase extends @file, Element {
|
||||||
override string getAPrimaryQlClass() { result = "File" }
|
override string getAPrimaryQlClass() { result = "File" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Element.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
string getName() { files(this, result) }
|
string getName() { files(this, result) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
import codeql.swift.elements.Element
|
import codeql.swift.elements.Element
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.Location
|
import codeql.swift.elements.Location
|
||||||
|
|
||||||
class LocatableBase extends @locatable, Element {
|
class LocatableBase extends @locatable, Element {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Element.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
Location getLocation() {
|
Location getLocation() {
|
||||||
exists(Location x |
|
exists(Location x |
|
||||||
locatables(this, x) and
|
locatables(this, x) and
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
import codeql.swift.elements.Element
|
import codeql.swift.elements.Element
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.File
|
import codeql.swift.elements.File
|
||||||
|
|
||||||
class LocationBase extends @location, Element {
|
class LocationBase extends @location, Element {
|
||||||
override string getAPrimaryQlClass() { result = "Location" }
|
override string getAPrimaryQlClass() { result = "Location" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Element.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
File getFile() {
|
File getFile() {
|
||||||
exists(File x |
|
exists(File x |
|
||||||
locations(this, x, _, _, _, _) and
|
locations(this, x, _, _, _, _) and
|
||||||
|
|||||||
@@ -1,10 +1,20 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.stmt.BraceStmt
|
import codeql.swift.elements.stmt.BraceStmt
|
||||||
import codeql.swift.elements.decl.GenericContext
|
import codeql.swift.elements.decl.GenericContext
|
||||||
import codeql.swift.elements.decl.ParamDecl
|
import codeql.swift.elements.decl.ParamDecl
|
||||||
import codeql.swift.elements.decl.ValueDecl
|
import codeql.swift.elements.decl.ValueDecl
|
||||||
|
|
||||||
class AbstractFunctionDeclBase extends @abstract_function_decl, GenericContext, ValueDecl {
|
class AbstractFunctionDeclBase extends @abstract_function_decl, GenericContext, ValueDecl {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = GenericContext.super.getAChild() or
|
||||||
|
result = ValueDecl.super.getAChild() or
|
||||||
|
result = getBody() or
|
||||||
|
result = getParam(_)
|
||||||
|
}
|
||||||
|
|
||||||
string getName() { abstract_function_decls(this, result) }
|
string getName() { abstract_function_decls(this, result) }
|
||||||
|
|
||||||
BraceStmt getBody() {
|
BraceStmt getBody() {
|
||||||
|
|||||||
@@ -1,8 +1,16 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.AccessorDecl
|
import codeql.swift.elements.decl.AccessorDecl
|
||||||
import codeql.swift.elements.decl.ValueDecl
|
import codeql.swift.elements.decl.ValueDecl
|
||||||
|
|
||||||
class AbstractStorageDeclBase extends @abstract_storage_decl, ValueDecl {
|
class AbstractStorageDeclBase extends @abstract_storage_decl, ValueDecl {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ValueDecl.super.getAChild() or
|
||||||
|
result = getAccessorDecl(_)
|
||||||
|
}
|
||||||
|
|
||||||
AccessorDecl getAccessorDecl(int index) {
|
AccessorDecl getAccessorDecl(int index) {
|
||||||
exists(AccessorDecl x |
|
exists(AccessorDecl x |
|
||||||
abstract_storage_decl_accessor_decls(this, index, x) and
|
abstract_storage_decl_accessor_decls(this, index, x) and
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.TypeDecl
|
import codeql.swift.elements.decl.TypeDecl
|
||||||
|
|
||||||
class AbstractTypeParamDeclBase extends @abstract_type_param_decl, TypeDecl { }
|
class AbstractTypeParamDeclBase extends @abstract_type_param_decl, TypeDecl {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = TypeDecl.super.getAChild()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.FuncDecl
|
import codeql.swift.elements.decl.FuncDecl
|
||||||
|
|
||||||
class AccessorDeclBase extends @accessor_decl, FuncDecl {
|
class AccessorDeclBase extends @accessor_decl, FuncDecl {
|
||||||
override string getAPrimaryQlClass() { result = "AccessorDecl" }
|
override string getAPrimaryQlClass() { result = "AccessorDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = FuncDecl.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
predicate isGetter() { accessor_decl_is_getter(this) }
|
predicate isGetter() { accessor_decl_is_getter(this) }
|
||||||
|
|
||||||
predicate isSetter() { accessor_decl_is_setter(this) }
|
predicate isSetter() { accessor_decl_is_setter(this) }
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.AbstractTypeParamDecl
|
import codeql.swift.elements.decl.AbstractTypeParamDecl
|
||||||
|
|
||||||
class AssociatedTypeDeclBase extends @associated_type_decl, AbstractTypeParamDecl {
|
class AssociatedTypeDeclBase extends @associated_type_decl, AbstractTypeParamDecl {
|
||||||
override string getAPrimaryQlClass() { result = "AssociatedTypeDecl" }
|
override string getAPrimaryQlClass() { result = "AssociatedTypeDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AbstractTypeParamDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.NominalTypeDecl
|
import codeql.swift.elements.decl.NominalTypeDecl
|
||||||
|
|
||||||
class ClassDeclBase extends @class_decl, NominalTypeDecl {
|
class ClassDeclBase extends @class_decl, NominalTypeDecl {
|
||||||
override string getAPrimaryQlClass() { result = "ClassDecl" }
|
override string getAPrimaryQlClass() { result = "ClassDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = NominalTypeDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.FuncDecl
|
import codeql.swift.elements.decl.FuncDecl
|
||||||
|
|
||||||
class ConcreteFuncDeclBase extends @concrete_func_decl, FuncDecl {
|
class ConcreteFuncDeclBase extends @concrete_func_decl, FuncDecl {
|
||||||
override string getAPrimaryQlClass() { result = "ConcreteFuncDecl" }
|
override string getAPrimaryQlClass() { result = "ConcreteFuncDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = FuncDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.VarDecl
|
import codeql.swift.elements.decl.VarDecl
|
||||||
|
|
||||||
class ConcreteVarDeclBase extends @concrete_var_decl, VarDecl {
|
class ConcreteVarDeclBase extends @concrete_var_decl, VarDecl {
|
||||||
override string getAPrimaryQlClass() { result = "ConcreteVarDecl" }
|
override string getAPrimaryQlClass() { result = "ConcreteVarDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = VarDecl.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
int getIntroducerInt() { concrete_var_decls(this, result) }
|
int getIntroducerInt() { concrete_var_decls(this, result) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.AbstractFunctionDecl
|
import codeql.swift.elements.decl.AbstractFunctionDecl
|
||||||
|
|
||||||
class ConstructorDeclBase extends @constructor_decl, AbstractFunctionDecl {
|
class ConstructorDeclBase extends @constructor_decl, AbstractFunctionDecl {
|
||||||
override string getAPrimaryQlClass() { result = "ConstructorDecl" }
|
override string getAPrimaryQlClass() { result = "ConstructorDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AbstractFunctionDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.AstNode
|
import codeql.swift.elements.AstNode
|
||||||
|
|
||||||
class DeclBase extends @decl, AstNode { }
|
class DeclBase extends @decl, AstNode {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AstNode.super.getAChild()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.AbstractFunctionDecl
|
import codeql.swift.elements.decl.AbstractFunctionDecl
|
||||||
|
|
||||||
class DestructorDeclBase extends @destructor_decl, AbstractFunctionDecl {
|
class DestructorDeclBase extends @destructor_decl, AbstractFunctionDecl {
|
||||||
override string getAPrimaryQlClass() { result = "DestructorDecl" }
|
override string getAPrimaryQlClass() { result = "DestructorDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AbstractFunctionDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
import codeql.swift.elements.decl.EnumElementDecl
|
import codeql.swift.elements.decl.EnumElementDecl
|
||||||
|
|
||||||
class EnumCaseDeclBase extends @enum_case_decl, Decl {
|
class EnumCaseDeclBase extends @enum_case_decl, Decl {
|
||||||
override string getAPrimaryQlClass() { result = "EnumCaseDecl" }
|
override string getAPrimaryQlClass() { result = "EnumCaseDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild() or
|
||||||
|
result = getElement(_)
|
||||||
|
}
|
||||||
|
|
||||||
EnumElementDecl getElement(int index) {
|
EnumElementDecl getElement(int index) {
|
||||||
exists(EnumElementDecl x |
|
exists(EnumElementDecl x |
|
||||||
enum_case_decl_elements(this, index, x) and
|
enum_case_decl_elements(this, index, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.NominalTypeDecl
|
import codeql.swift.elements.decl.NominalTypeDecl
|
||||||
|
|
||||||
class EnumDeclBase extends @enum_decl, NominalTypeDecl {
|
class EnumDeclBase extends @enum_decl, NominalTypeDecl {
|
||||||
override string getAPrimaryQlClass() { result = "EnumDecl" }
|
override string getAPrimaryQlClass() { result = "EnumDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = NominalTypeDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.ParamDecl
|
import codeql.swift.elements.decl.ParamDecl
|
||||||
import codeql.swift.elements.decl.ValueDecl
|
import codeql.swift.elements.decl.ValueDecl
|
||||||
|
|
||||||
class EnumElementDeclBase extends @enum_element_decl, ValueDecl {
|
class EnumElementDeclBase extends @enum_element_decl, ValueDecl {
|
||||||
override string getAPrimaryQlClass() { result = "EnumElementDecl" }
|
override string getAPrimaryQlClass() { result = "EnumElementDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ValueDecl.super.getAChild() or
|
||||||
|
result = getParam(_)
|
||||||
|
}
|
||||||
|
|
||||||
string getName() { enum_element_decls(this, result) }
|
string getName() { enum_element_decls(this, result) }
|
||||||
|
|
||||||
ParamDecl getParam(int index) {
|
ParamDecl getParam(int index) {
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
import codeql.swift.elements.decl.GenericContext
|
import codeql.swift.elements.decl.GenericContext
|
||||||
import codeql.swift.elements.decl.IterableDeclContext
|
import codeql.swift.elements.decl.IterableDeclContext
|
||||||
|
|
||||||
class ExtensionDeclBase extends @extension_decl, Decl, GenericContext, IterableDeclContext {
|
class ExtensionDeclBase extends @extension_decl, Decl, GenericContext, IterableDeclContext {
|
||||||
override string getAPrimaryQlClass() { result = "ExtensionDecl" }
|
override string getAPrimaryQlClass() { result = "ExtensionDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild() or
|
||||||
|
result = GenericContext.super.getAChild() or
|
||||||
|
result = IterableDeclContext.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.AbstractFunctionDecl
|
import codeql.swift.elements.decl.AbstractFunctionDecl
|
||||||
|
|
||||||
class FuncDeclBase extends @func_decl, AbstractFunctionDecl { }
|
class FuncDeclBase extends @func_decl, AbstractFunctionDecl {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AbstractFunctionDecl.super.getAChild()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
import codeql.swift.elements.Element
|
import codeql.swift.elements.Element
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.GenericTypeParamDecl
|
import codeql.swift.elements.decl.GenericTypeParamDecl
|
||||||
|
|
||||||
class GenericContextBase extends @generic_context, Element {
|
class GenericContextBase extends @generic_context, Element {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Element.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
GenericTypeParamDecl getGenericTypeParam(int index) {
|
GenericTypeParamDecl getGenericTypeParam(int index) {
|
||||||
exists(GenericTypeParamDecl x |
|
exists(GenericTypeParamDecl x |
|
||||||
generic_context_generic_type_params(this, index, x) and
|
generic_context_generic_type_params(this, index, x) and
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.GenericContext
|
import codeql.swift.elements.decl.GenericContext
|
||||||
import codeql.swift.elements.decl.TypeDecl
|
import codeql.swift.elements.decl.TypeDecl
|
||||||
|
|
||||||
class GenericTypeDeclBase extends @generic_type_decl, GenericContext, TypeDecl { }
|
class GenericTypeDeclBase extends @generic_type_decl, GenericContext, TypeDecl {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = GenericContext.super.getAChild() or
|
||||||
|
result = TypeDecl.super.getAChild()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.AbstractTypeParamDecl
|
import codeql.swift.elements.decl.AbstractTypeParamDecl
|
||||||
|
|
||||||
class GenericTypeParamDeclBase extends @generic_type_param_decl, AbstractTypeParamDecl {
|
class GenericTypeParamDeclBase extends @generic_type_param_decl, AbstractTypeParamDecl {
|
||||||
override string getAPrimaryQlClass() { result = "GenericTypeParamDecl" }
|
override string getAPrimaryQlClass() { result = "GenericTypeParamDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AbstractTypeParamDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
|
|
||||||
class IfConfigDeclBase extends @if_config_decl, Decl {
|
class IfConfigDeclBase extends @if_config_decl, Decl {
|
||||||
override string getAPrimaryQlClass() { result = "IfConfigDecl" }
|
override string getAPrimaryQlClass() { result = "IfConfigDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
|
|
||||||
class ImportDeclBase extends @import_decl, Decl {
|
class ImportDeclBase extends @import_decl, Decl {
|
||||||
override string getAPrimaryQlClass() { result = "ImportDecl" }
|
override string getAPrimaryQlClass() { result = "ImportDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.OperatorDecl
|
import codeql.swift.elements.decl.OperatorDecl
|
||||||
import codeql.swift.elements.decl.PrecedenceGroupDecl
|
import codeql.swift.elements.decl.PrecedenceGroupDecl
|
||||||
|
|
||||||
class InfixOperatorDeclBase extends @infix_operator_decl, OperatorDecl {
|
class InfixOperatorDeclBase extends @infix_operator_decl, OperatorDecl {
|
||||||
override string getAPrimaryQlClass() { result = "InfixOperatorDecl" }
|
override string getAPrimaryQlClass() { result = "InfixOperatorDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = OperatorDecl.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
PrecedenceGroupDecl getPrecedenceGroup() {
|
PrecedenceGroupDecl getPrecedenceGroup() {
|
||||||
exists(PrecedenceGroupDecl x |
|
exists(PrecedenceGroupDecl x |
|
||||||
infix_operator_decl_precedence_groups(this, x) and
|
infix_operator_decl_precedence_groups(this, x) and
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
import codeql.swift.elements.Element
|
import codeql.swift.elements.Element
|
||||||
|
|
||||||
class IterableDeclContextBase extends @iterable_decl_context, Element {
|
class IterableDeclContextBase extends @iterable_decl_context, Element {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Element.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
Decl getMember(int index) {
|
Decl getMember(int index) {
|
||||||
exists(Decl x |
|
exists(Decl x |
|
||||||
iterable_decl_context_members(this, index, x) and
|
iterable_decl_context_members(this, index, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
|
|
||||||
class MissingMemberDeclBase extends @missing_member_decl, Decl {
|
class MissingMemberDeclBase extends @missing_member_decl, Decl {
|
||||||
override string getAPrimaryQlClass() { result = "MissingMemberDecl" }
|
override string getAPrimaryQlClass() { result = "MissingMemberDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.TypeDecl
|
import codeql.swift.elements.decl.TypeDecl
|
||||||
|
|
||||||
class ModuleDeclBase extends @module_decl, TypeDecl {
|
class ModuleDeclBase extends @module_decl, TypeDecl {
|
||||||
override string getAPrimaryQlClass() { result = "ModuleDecl" }
|
override string getAPrimaryQlClass() { result = "ModuleDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = TypeDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,17 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.GenericTypeDecl
|
import codeql.swift.elements.decl.GenericTypeDecl
|
||||||
import codeql.swift.elements.decl.IterableDeclContext
|
import codeql.swift.elements.decl.IterableDeclContext
|
||||||
import codeql.swift.elements.type.Type
|
import codeql.swift.elements.type.Type
|
||||||
|
|
||||||
class NominalTypeDeclBase extends @nominal_type_decl, GenericTypeDecl, IterableDeclContext {
|
class NominalTypeDeclBase extends @nominal_type_decl, GenericTypeDecl, IterableDeclContext {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = GenericTypeDecl.super.getAChild() or
|
||||||
|
result = IterableDeclContext.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
Type getType() {
|
Type getType() {
|
||||||
exists(Type x |
|
exists(Type x |
|
||||||
nominal_type_decls(this, x) and
|
nominal_type_decls(this, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.GenericTypeDecl
|
import codeql.swift.elements.decl.GenericTypeDecl
|
||||||
|
|
||||||
class OpaqueTypeDeclBase extends @opaque_type_decl, GenericTypeDecl {
|
class OpaqueTypeDeclBase extends @opaque_type_decl, GenericTypeDecl {
|
||||||
override string getAPrimaryQlClass() { result = "OpaqueTypeDecl" }
|
override string getAPrimaryQlClass() { result = "OpaqueTypeDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = GenericTypeDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
|
|
||||||
class OperatorDeclBase extends @operator_decl, Decl {
|
class OperatorDeclBase extends @operator_decl, Decl {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
string getName() { operator_decls(this, result) }
|
string getName() { operator_decls(this, result) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.VarDecl
|
import codeql.swift.elements.decl.VarDecl
|
||||||
|
|
||||||
class ParamDeclBase extends @param_decl, VarDecl {
|
class ParamDeclBase extends @param_decl, VarDecl {
|
||||||
override string getAPrimaryQlClass() { result = "ParamDecl" }
|
override string getAPrimaryQlClass() { result = "ParamDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = VarDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
import codeql.swift.elements.pattern.Pattern
|
import codeql.swift.elements.pattern.Pattern
|
||||||
@@ -6,6 +7,14 @@ import codeql.swift.elements.pattern.Pattern
|
|||||||
class PatternBindingDeclBase extends @pattern_binding_decl, Decl {
|
class PatternBindingDeclBase extends @pattern_binding_decl, Decl {
|
||||||
override string getAPrimaryQlClass() { result = "PatternBindingDecl" }
|
override string getAPrimaryQlClass() { result = "PatternBindingDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild() or
|
||||||
|
result = getInit(_) or
|
||||||
|
result = getPattern(_)
|
||||||
|
}
|
||||||
|
|
||||||
Expr getInit(int index) {
|
Expr getInit(int index) {
|
||||||
exists(Expr x |
|
exists(Expr x |
|
||||||
pattern_binding_decl_inits(this, index, x) and
|
pattern_binding_decl_inits(this, index, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.OperatorDecl
|
import codeql.swift.elements.decl.OperatorDecl
|
||||||
|
|
||||||
class PostfixOperatorDeclBase extends @postfix_operator_decl, OperatorDecl {
|
class PostfixOperatorDeclBase extends @postfix_operator_decl, OperatorDecl {
|
||||||
override string getAPrimaryQlClass() { result = "PostfixOperatorDecl" }
|
override string getAPrimaryQlClass() { result = "PostfixOperatorDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = OperatorDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
|
|
||||||
class PoundDiagnosticDeclBase extends @pound_diagnostic_decl, Decl {
|
class PoundDiagnosticDeclBase extends @pound_diagnostic_decl, Decl {
|
||||||
override string getAPrimaryQlClass() { result = "PoundDiagnosticDecl" }
|
override string getAPrimaryQlClass() { result = "PoundDiagnosticDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
|
|
||||||
class PrecedenceGroupDeclBase extends @precedence_group_decl, Decl {
|
class PrecedenceGroupDeclBase extends @precedence_group_decl, Decl {
|
||||||
override string getAPrimaryQlClass() { result = "PrecedenceGroupDecl" }
|
override string getAPrimaryQlClass() { result = "PrecedenceGroupDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.OperatorDecl
|
import codeql.swift.elements.decl.OperatorDecl
|
||||||
|
|
||||||
class PrefixOperatorDeclBase extends @prefix_operator_decl, OperatorDecl {
|
class PrefixOperatorDeclBase extends @prefix_operator_decl, OperatorDecl {
|
||||||
override string getAPrimaryQlClass() { result = "PrefixOperatorDecl" }
|
override string getAPrimaryQlClass() { result = "PrefixOperatorDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = OperatorDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.NominalTypeDecl
|
import codeql.swift.elements.decl.NominalTypeDecl
|
||||||
|
|
||||||
class ProtocolDeclBase extends @protocol_decl, NominalTypeDecl {
|
class ProtocolDeclBase extends @protocol_decl, NominalTypeDecl {
|
||||||
override string getAPrimaryQlClass() { result = "ProtocolDecl" }
|
override string getAPrimaryQlClass() { result = "ProtocolDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = NominalTypeDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.NominalTypeDecl
|
import codeql.swift.elements.decl.NominalTypeDecl
|
||||||
|
|
||||||
class StructDeclBase extends @struct_decl, NominalTypeDecl {
|
class StructDeclBase extends @struct_decl, NominalTypeDecl {
|
||||||
override string getAPrimaryQlClass() { result = "StructDecl" }
|
override string getAPrimaryQlClass() { result = "StructDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = NominalTypeDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.AbstractStorageDecl
|
import codeql.swift.elements.decl.AbstractStorageDecl
|
||||||
import codeql.swift.elements.decl.GenericContext
|
import codeql.swift.elements.decl.GenericContext
|
||||||
import codeql.swift.elements.decl.ParamDecl
|
import codeql.swift.elements.decl.ParamDecl
|
||||||
@@ -7,6 +8,14 @@ import codeql.swift.elements.type.Type
|
|||||||
class SubscriptDeclBase extends @subscript_decl, AbstractStorageDecl, GenericContext {
|
class SubscriptDeclBase extends @subscript_decl, AbstractStorageDecl, GenericContext {
|
||||||
override string getAPrimaryQlClass() { result = "SubscriptDecl" }
|
override string getAPrimaryQlClass() { result = "SubscriptDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AbstractStorageDecl.super.getAChild() or
|
||||||
|
result = GenericContext.super.getAChild() or
|
||||||
|
result = getParam(_)
|
||||||
|
}
|
||||||
|
|
||||||
ParamDecl getParam(int index) {
|
ParamDecl getParam(int index) {
|
||||||
exists(ParamDecl x |
|
exists(ParamDecl x |
|
||||||
subscript_decl_params(this, index, x) and
|
subscript_decl_params(this, index, x) and
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.stmt.BraceStmt
|
import codeql.swift.elements.stmt.BraceStmt
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
|
|
||||||
class TopLevelCodeDeclBase extends @top_level_code_decl, Decl {
|
class TopLevelCodeDeclBase extends @top_level_code_decl, Decl {
|
||||||
override string getAPrimaryQlClass() { result = "TopLevelCodeDecl" }
|
override string getAPrimaryQlClass() { result = "TopLevelCodeDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild() or
|
||||||
|
result = getBody()
|
||||||
|
}
|
||||||
|
|
||||||
BraceStmt getBody() {
|
BraceStmt getBody() {
|
||||||
exists(BraceStmt x |
|
exists(BraceStmt x |
|
||||||
top_level_code_decls(this, x) and
|
top_level_code_decls(this, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.GenericTypeDecl
|
import codeql.swift.elements.decl.GenericTypeDecl
|
||||||
|
|
||||||
class TypeAliasDeclBase extends @type_alias_decl, GenericTypeDecl {
|
class TypeAliasDeclBase extends @type_alias_decl, GenericTypeDecl {
|
||||||
override string getAPrimaryQlClass() { result = "TypeAliasDecl" }
|
override string getAPrimaryQlClass() { result = "TypeAliasDecl" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = GenericTypeDecl.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.type.Type
|
import codeql.swift.elements.type.Type
|
||||||
import codeql.swift.elements.decl.ValueDecl
|
import codeql.swift.elements.decl.ValueDecl
|
||||||
|
|
||||||
class TypeDeclBase extends @type_decl, ValueDecl {
|
class TypeDeclBase extends @type_decl, ValueDecl {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ValueDecl.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
string getName() { type_decls(this, result) }
|
string getName() { type_decls(this, result) }
|
||||||
|
|
||||||
Type getBaseType(int index) {
|
Type getBaseType(int index) {
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
import codeql.swift.elements.type.Type
|
import codeql.swift.elements.type.Type
|
||||||
|
|
||||||
class ValueDeclBase extends @value_decl, Decl {
|
class ValueDeclBase extends @value_decl, Decl {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Decl.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
Type getInterfaceType() {
|
Type getInterfaceType() {
|
||||||
exists(Type x |
|
exists(Type x |
|
||||||
value_decls(this, x) and
|
value_decls(this, x) and
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.AbstractStorageDecl
|
import codeql.swift.elements.decl.AbstractStorageDecl
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
import codeql.swift.elements.pattern.Pattern
|
import codeql.swift.elements.pattern.Pattern
|
||||||
import codeql.swift.elements.type.Type
|
import codeql.swift.elements.type.Type
|
||||||
|
|
||||||
class VarDeclBase extends @var_decl, AbstractStorageDecl {
|
class VarDeclBase extends @var_decl, AbstractStorageDecl {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AbstractStorageDecl.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
string getName() { var_decls(this, result, _) }
|
string getName() { var_decls(this, result, _) }
|
||||||
|
|
||||||
Type getType() {
|
Type getType() {
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class AbstractClosureExprBase extends @abstract_closure_expr, Expr { }
|
class AbstractClosureExprBase extends @abstract_closure_expr, Expr {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class AnyHashableErasureExprBase extends @any_hashable_erasure_expr, ImplicitConversionExpr {
|
class AnyHashableErasureExprBase extends @any_hashable_erasure_expr, ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "AnyHashableErasureExpr" }
|
override string getAPrimaryQlClass() { result = "AnyHashableErasureExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class AnyTryExprBase extends @any_try_expr, Expr {
|
class AnyTryExprBase extends @any_try_expr, Expr {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild() or
|
||||||
|
result = getSubExpr()
|
||||||
|
}
|
||||||
|
|
||||||
Expr getSubExpr() {
|
Expr getSubExpr() {
|
||||||
exists(Expr x |
|
exists(Expr x |
|
||||||
any_try_exprs(this, x) and
|
any_try_exprs(this, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class AppliedPropertyWrapperExprBase extends @applied_property_wrapper_expr, Expr {
|
class AppliedPropertyWrapperExprBase extends @applied_property_wrapper_expr, Expr {
|
||||||
override string getAPrimaryQlClass() { result = "AppliedPropertyWrapperExpr" }
|
override string getAPrimaryQlClass() { result = "AppliedPropertyWrapperExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Argument
|
import codeql.swift.elements.expr.Argument
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class ApplyExprBase extends @apply_expr, Expr {
|
class ApplyExprBase extends @apply_expr, Expr {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild() or
|
||||||
|
result = getFunction() or
|
||||||
|
result = getArgument(_)
|
||||||
|
}
|
||||||
|
|
||||||
Expr getFunction() {
|
Expr getFunction() {
|
||||||
exists(Expr x |
|
exists(Expr x |
|
||||||
apply_exprs(this, x) and
|
apply_exprs(this, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class ArchetypeToSuperExprBase extends @archetype_to_super_expr, ImplicitConversionExpr {
|
class ArchetypeToSuperExprBase extends @archetype_to_super_expr, ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "ArchetypeToSuperExpr" }
|
override string getAPrimaryQlClass() { result = "ArchetypeToSuperExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
import codeql.swift.elements.Element
|
import codeql.swift.elements.Element
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class ArgumentBase extends @argument, Element {
|
class ArgumentBase extends @argument, Element {
|
||||||
override string getAPrimaryQlClass() { result = "Argument" }
|
override string getAPrimaryQlClass() { result = "Argument" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Element.super.getAChild() or
|
||||||
|
result = getExpr()
|
||||||
|
}
|
||||||
|
|
||||||
string getLabel() { arguments(this, result, _) }
|
string getLabel() { arguments(this, result, _) }
|
||||||
|
|
||||||
Expr getExpr() {
|
Expr getExpr() {
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.CollectionExpr
|
import codeql.swift.elements.expr.CollectionExpr
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class ArrayExprBase extends @array_expr, CollectionExpr {
|
class ArrayExprBase extends @array_expr, CollectionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "ArrayExpr" }
|
override string getAPrimaryQlClass() { result = "ArrayExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = CollectionExpr.super.getAChild() or
|
||||||
|
result = getElement(_)
|
||||||
|
}
|
||||||
|
|
||||||
Expr getElement(int index) {
|
Expr getElement(int index) {
|
||||||
exists(Expr x |
|
exists(Expr x |
|
||||||
array_expr_elements(this, index, x) and
|
array_expr_elements(this, index, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class ArrayToPointerExprBase extends @array_to_pointer_expr, ImplicitConversionExpr {
|
class ArrayToPointerExprBase extends @array_to_pointer_expr, ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "ArrayToPointerExpr" }
|
override string getAPrimaryQlClass() { result = "ArrayToPointerExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class ArrowExprBase extends @arrow_expr, Expr {
|
class ArrowExprBase extends @arrow_expr, Expr {
|
||||||
override string getAPrimaryQlClass() { result = "ArrowExpr" }
|
override string getAPrimaryQlClass() { result = "ArrowExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class AssignExprBase extends @assign_expr, Expr {
|
class AssignExprBase extends @assign_expr, Expr {
|
||||||
override string getAPrimaryQlClass() { result = "AssignExpr" }
|
override string getAPrimaryQlClass() { result = "AssignExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild() or
|
||||||
|
result = getDest() or
|
||||||
|
result = getSource()
|
||||||
|
}
|
||||||
|
|
||||||
Expr getDest() {
|
Expr getDest() {
|
||||||
exists(Expr x |
|
exists(Expr x |
|
||||||
assign_exprs(this, x, _) and
|
assign_exprs(this, x, _) and
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.AbstractClosureExpr
|
import codeql.swift.elements.expr.AbstractClosureExpr
|
||||||
import codeql.swift.elements.stmt.BraceStmt
|
import codeql.swift.elements.stmt.BraceStmt
|
||||||
|
|
||||||
class AutoClosureExprBase extends @auto_closure_expr, AbstractClosureExpr {
|
class AutoClosureExprBase extends @auto_closure_expr, AbstractClosureExpr {
|
||||||
override string getAPrimaryQlClass() { result = "AutoClosureExpr" }
|
override string getAPrimaryQlClass() { result = "AutoClosureExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AbstractClosureExpr.super.getAChild() or
|
||||||
|
result = getBody()
|
||||||
|
}
|
||||||
|
|
||||||
BraceStmt getBody() {
|
BraceStmt getBody() {
|
||||||
exists(BraceStmt x |
|
exists(BraceStmt x |
|
||||||
auto_closure_exprs(this, x) and
|
auto_closure_exprs(this, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.IdentityExpr
|
import codeql.swift.elements.expr.IdentityExpr
|
||||||
|
|
||||||
class AwaitExprBase extends @await_expr, IdentityExpr {
|
class AwaitExprBase extends @await_expr, IdentityExpr {
|
||||||
override string getAPrimaryQlClass() { result = "AwaitExpr" }
|
override string getAPrimaryQlClass() { result = "AwaitExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = IdentityExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ApplyExpr
|
import codeql.swift.elements.expr.ApplyExpr
|
||||||
|
|
||||||
class BinaryExprBase extends @binary_expr, ApplyExpr {
|
class BinaryExprBase extends @binary_expr, ApplyExpr {
|
||||||
override string getAPrimaryQlClass() { result = "BinaryExpr" }
|
override string getAPrimaryQlClass() { result = "BinaryExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ApplyExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,17 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class BindOptionalExprBase extends @bind_optional_expr, Expr {
|
class BindOptionalExprBase extends @bind_optional_expr, Expr {
|
||||||
override string getAPrimaryQlClass() { result = "BindOptionalExpr" }
|
override string getAPrimaryQlClass() { result = "BindOptionalExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild() or
|
||||||
|
result = getSubExpr()
|
||||||
|
}
|
||||||
|
|
||||||
Expr getSubExpr() {
|
Expr getSubExpr() {
|
||||||
exists(Expr x |
|
exists(Expr x |
|
||||||
bind_optional_exprs(this, x) and
|
bind_optional_exprs(this, x) and
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.BuiltinLiteralExpr
|
import codeql.swift.elements.expr.BuiltinLiteralExpr
|
||||||
|
|
||||||
class BooleanLiteralExprBase extends @boolean_literal_expr, BuiltinLiteralExpr {
|
class BooleanLiteralExprBase extends @boolean_literal_expr, BuiltinLiteralExpr {
|
||||||
override string getAPrimaryQlClass() { result = "BooleanLiteralExpr" }
|
override string getAPrimaryQlClass() { result = "BooleanLiteralExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = BuiltinLiteralExpr.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
boolean getValue() { boolean_literal_exprs(this, result) }
|
boolean getValue() { boolean_literal_exprs(this, result) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class BridgeFromObjCExprBase extends @bridge_from_obj_c_expr, ImplicitConversionExpr {
|
class BridgeFromObjCExprBase extends @bridge_from_obj_c_expr, ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "BridgeFromObjCExpr" }
|
override string getAPrimaryQlClass() { result = "BridgeFromObjCExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class BridgeToObjCExprBase extends @bridge_to_obj_c_expr, ImplicitConversionExpr {
|
class BridgeToObjCExprBase extends @bridge_to_obj_c_expr, ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "BridgeToObjCExpr" }
|
override string getAPrimaryQlClass() { result = "BridgeToObjCExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.LiteralExpr
|
import codeql.swift.elements.expr.LiteralExpr
|
||||||
|
|
||||||
class BuiltinLiteralExprBase extends @builtin_literal_expr, LiteralExpr { }
|
class BuiltinLiteralExprBase extends @builtin_literal_expr, LiteralExpr {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = LiteralExpr.super.getAChild()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ApplyExpr
|
import codeql.swift.elements.expr.ApplyExpr
|
||||||
|
|
||||||
class CallExprBase extends @call_expr, ApplyExpr {
|
class CallExprBase extends @call_expr, ApplyExpr {
|
||||||
override string getAPrimaryQlClass() { result = "CallExpr" }
|
override string getAPrimaryQlClass() { result = "CallExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ApplyExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ClosureExpr
|
import codeql.swift.elements.expr.ClosureExpr
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
import codeql.swift.elements.decl.PatternBindingDecl
|
import codeql.swift.elements.decl.PatternBindingDecl
|
||||||
@@ -6,6 +7,14 @@ import codeql.swift.elements.decl.PatternBindingDecl
|
|||||||
class CaptureListExprBase extends @capture_list_expr, Expr {
|
class CaptureListExprBase extends @capture_list_expr, Expr {
|
||||||
override string getAPrimaryQlClass() { result = "CaptureListExpr" }
|
override string getAPrimaryQlClass() { result = "CaptureListExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild() or
|
||||||
|
result = getBindingDecl(_) or
|
||||||
|
result = getClosureBody()
|
||||||
|
}
|
||||||
|
|
||||||
PatternBindingDecl getBindingDecl(int index) {
|
PatternBindingDecl getBindingDecl(int index) {
|
||||||
exists(PatternBindingDecl x |
|
exists(PatternBindingDecl x |
|
||||||
capture_list_expr_binding_decls(this, index, x) and
|
capture_list_expr_binding_decls(this, index, x) and
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ExplicitCastExpr
|
import codeql.swift.elements.expr.ExplicitCastExpr
|
||||||
|
|
||||||
class CheckedCastExprBase extends @checked_cast_expr, ExplicitCastExpr { }
|
class CheckedCastExprBase extends @checked_cast_expr, ExplicitCastExpr {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ExplicitCastExpr.super.getAChild()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class ClassMetatypeToObjectExprBase extends @class_metatype_to_object_expr, ImplicitConversionExpr {
|
class ClassMetatypeToObjectExprBase extends @class_metatype_to_object_expr, ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "ClassMetatypeToObjectExpr" }
|
override string getAPrimaryQlClass() { result = "ClassMetatypeToObjectExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.AbstractClosureExpr
|
import codeql.swift.elements.expr.AbstractClosureExpr
|
||||||
import codeql.swift.elements.stmt.BraceStmt
|
import codeql.swift.elements.stmt.BraceStmt
|
||||||
|
|
||||||
class ClosureExprBase extends @closure_expr, AbstractClosureExpr {
|
class ClosureExprBase extends @closure_expr, AbstractClosureExpr {
|
||||||
override string getAPrimaryQlClass() { result = "ClosureExpr" }
|
override string getAPrimaryQlClass() { result = "ClosureExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = AbstractClosureExpr.super.getAChild() or
|
||||||
|
result = getBody()
|
||||||
|
}
|
||||||
|
|
||||||
BraceStmt getBody() {
|
BraceStmt getBody() {
|
||||||
exists(BraceStmt x |
|
exists(BraceStmt x |
|
||||||
closure_exprs(this, x) and
|
closure_exprs(this, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class CodeCompletionExprBase extends @code_completion_expr, Expr {
|
class CodeCompletionExprBase extends @code_completion_expr, Expr {
|
||||||
override string getAPrimaryQlClass() { result = "CodeCompletionExpr" }
|
override string getAPrimaryQlClass() { result = "CodeCompletionExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ExplicitCastExpr
|
import codeql.swift.elements.expr.ExplicitCastExpr
|
||||||
|
|
||||||
class CoerceExprBase extends @coerce_expr, ExplicitCastExpr {
|
class CoerceExprBase extends @coerce_expr, ExplicitCastExpr {
|
||||||
override string getAPrimaryQlClass() { result = "CoerceExpr" }
|
override string getAPrimaryQlClass() { result = "CoerceExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ExplicitCastExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class CollectionExprBase extends @collection_expr, Expr { }
|
class CollectionExprBase extends @collection_expr, Expr {
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class CollectionUpcastConversionExprBase extends @collection_upcast_conversion_expr,
|
class CollectionUpcastConversionExprBase extends @collection_upcast_conversion_expr,
|
||||||
ImplicitConversionExpr {
|
ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "CollectionUpcastConversionExpr" }
|
override string getAPrimaryQlClass() { result = "CollectionUpcastConversionExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class ConditionalBridgeFromObjCExprBase extends @conditional_bridge_from_obj_c_expr,
|
class ConditionalBridgeFromObjCExprBase extends @conditional_bridge_from_obj_c_expr,
|
||||||
ImplicitConversionExpr {
|
ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "ConditionalBridgeFromObjCExpr" }
|
override string getAPrimaryQlClass() { result = "ConditionalBridgeFromObjCExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.CheckedCastExpr
|
import codeql.swift.elements.expr.CheckedCastExpr
|
||||||
|
|
||||||
class ConditionalCheckedCastExprBase extends @conditional_checked_cast_expr, CheckedCastExpr {
|
class ConditionalCheckedCastExprBase extends @conditional_checked_cast_expr, CheckedCastExpr {
|
||||||
override string getAPrimaryQlClass() { result = "ConditionalCheckedCastExpr" }
|
override string getAPrimaryQlClass() { result = "ConditionalCheckedCastExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = CheckedCastExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.SelfApplyExpr
|
import codeql.swift.elements.expr.SelfApplyExpr
|
||||||
|
|
||||||
class ConstructorRefCallExprBase extends @constructor_ref_call_expr, SelfApplyExpr {
|
class ConstructorRefCallExprBase extends @constructor_ref_call_expr, SelfApplyExpr {
|
||||||
override string getAPrimaryQlClass() { result = "ConstructorRefCallExpr" }
|
override string getAPrimaryQlClass() { result = "ConstructorRefCallExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = SelfApplyExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class CovariantFunctionConversionExprBase extends @covariant_function_conversion_expr,
|
class CovariantFunctionConversionExprBase extends @covariant_function_conversion_expr,
|
||||||
ImplicitConversionExpr {
|
ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "CovariantFunctionConversionExpr" }
|
override string getAPrimaryQlClass() { result = "CovariantFunctionConversionExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class CovariantReturnConversionExprBase extends @covariant_return_conversion_expr,
|
class CovariantReturnConversionExprBase extends @covariant_return_conversion_expr,
|
||||||
ImplicitConversionExpr {
|
ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "CovariantReturnConversionExpr" }
|
override string getAPrimaryQlClass() { result = "CovariantReturnConversionExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.decl.Decl
|
import codeql.swift.elements.decl.Decl
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
import codeql.swift.elements.type.Type
|
import codeql.swift.elements.type.Type
|
||||||
@@ -6,6 +7,12 @@ import codeql.swift.elements.type.Type
|
|||||||
class DeclRefExprBase extends @decl_ref_expr, Expr {
|
class DeclRefExprBase extends @decl_ref_expr, Expr {
|
||||||
override string getAPrimaryQlClass() { result = "DeclRefExpr" }
|
override string getAPrimaryQlClass() { result = "DeclRefExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
Decl getDecl() {
|
Decl getDecl() {
|
||||||
exists(Decl x |
|
exists(Decl x |
|
||||||
decl_ref_exprs(this, x) and
|
decl_ref_exprs(this, x) and
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
import codeql.swift.elements.decl.ParamDecl
|
import codeql.swift.elements.decl.ParamDecl
|
||||||
|
|
||||||
class DefaultArgumentExprBase extends @default_argument_expr, Expr {
|
class DefaultArgumentExprBase extends @default_argument_expr, Expr {
|
||||||
override string getAPrimaryQlClass() { result = "DefaultArgumentExpr" }
|
override string getAPrimaryQlClass() { result = "DefaultArgumentExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild()
|
||||||
|
}
|
||||||
|
|
||||||
ParamDecl getParamDecl() {
|
ParamDecl getParamDecl() {
|
||||||
exists(ParamDecl x |
|
exists(ParamDecl x |
|
||||||
default_argument_exprs(this, x, _) and
|
default_argument_exprs(this, x, _) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class DerivedToBaseExprBase extends @derived_to_base_expr, ImplicitConversionExpr {
|
class DerivedToBaseExprBase extends @derived_to_base_expr, ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "DerivedToBaseExpr" }
|
override string getAPrimaryQlClass() { result = "DerivedToBaseExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class DestructureTupleExprBase extends @destructure_tuple_expr, ImplicitConversionExpr {
|
class DestructureTupleExprBase extends @destructure_tuple_expr, ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "DestructureTupleExpr" }
|
override string getAPrimaryQlClass() { result = "DestructureTupleExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,18 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.CollectionExpr
|
import codeql.swift.elements.expr.CollectionExpr
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class DictionaryExprBase extends @dictionary_expr, CollectionExpr {
|
class DictionaryExprBase extends @dictionary_expr, CollectionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "DictionaryExpr" }
|
override string getAPrimaryQlClass() { result = "DictionaryExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = CollectionExpr.super.getAChild() or
|
||||||
|
result = getElement(_)
|
||||||
|
}
|
||||||
|
|
||||||
Expr getElement(int index) {
|
Expr getElement(int index) {
|
||||||
exists(Expr x |
|
exists(Expr x |
|
||||||
dictionary_expr_elements(this, index, x) and
|
dictionary_expr_elements(this, index, x) and
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class DifferentiableFunctionExprBase extends @differentiable_function_expr, ImplicitConversionExpr {
|
class DifferentiableFunctionExprBase extends @differentiable_function_expr, ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "DifferentiableFunctionExpr" }
|
override string getAPrimaryQlClass() { result = "DifferentiableFunctionExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.ImplicitConversionExpr
|
import codeql.swift.elements.expr.ImplicitConversionExpr
|
||||||
|
|
||||||
class DifferentiableFunctionExtractOriginalExprBase extends @differentiable_function_extract_original_expr,
|
class DifferentiableFunctionExtractOriginalExprBase extends @differentiable_function_extract_original_expr,
|
||||||
ImplicitConversionExpr {
|
ImplicitConversionExpr {
|
||||||
override string getAPrimaryQlClass() { result = "DifferentiableFunctionExtractOriginalExpr" }
|
override string getAPrimaryQlClass() { result = "DifferentiableFunctionExtractOriginalExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = ImplicitConversionExpr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
// generated by codegen/codegen.py
|
// generated by codegen/codegen.py
|
||||||
|
import codeql.swift.elements.Element
|
||||||
import codeql.swift.elements.expr.Expr
|
import codeql.swift.elements.expr.Expr
|
||||||
|
|
||||||
class DiscardAssignmentExprBase extends @discard_assignment_expr, Expr {
|
class DiscardAssignmentExprBase extends @discard_assignment_expr, Expr {
|
||||||
override string getAPrimaryQlClass() { result = "DiscardAssignmentExpr" }
|
override string getAPrimaryQlClass() { result = "DiscardAssignmentExpr" }
|
||||||
|
|
||||||
|
cached
|
||||||
|
override Element getAChild() {
|
||||||
|
none() or
|
||||||
|
result = Expr.super.getAChild()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user