Skip to content

Commit 4825e6b

Browse files
committed
Swift: change some children
* made `members` children of an `IterableDeclContext` * removed `elements` from the children of `EnumCaseDecl`, as they are already children of the enclosing `EnumDecl` * removed `base` from the children of `SelfApplyExpr`, as they currently are already descendants via `getArgument(0).getExpr()`. We should maybe consider either removing `base` from the schema and add it as a shortcut on QL, or finish up replacing all `SelfApplyExpr` instances with synthesized types.
1 parent 55e5fa2 commit 4825e6b

File tree

2 files changed

+11
-15
lines changed

2 files changed

+11
-15
lines changed

swift/codegen/schema.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@ Type:
6060
canonical_type: Type
6161

6262
IterableDeclContext:
63-
members: Decl*
63+
_children:
64+
members: Decl*
6465

6566
ExtensionDecl:
6667
extended_type_decl: NominalTypeDecl
@@ -293,8 +294,7 @@ TypeAliasType:
293294

294295
EnumCaseDecl:
295296
_extends: Decl
296-
_children:
297-
elements: EnumElementDecl*
297+
elements: EnumElementDecl*
298298

299299
IfConfigDecl:
300300
_extends: Decl
@@ -836,8 +836,7 @@ PrefixUnaryExpr:
836836

837837
SelfApplyExpr:
838838
_extends: ApplyExpr
839-
_children:
840-
base: Expr
839+
base: Expr
841840

842841
ArrayExpr:
843842
_extends: CollectionExpr

swift/ql/lib/codeql/swift/generated/ParentChild.qll

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,18 @@ private module Impl {
6060
private Element getImmediateChildOfIterableDeclContext(
6161
IterableDeclContext e, int index, string partialPredicateCall
6262
) {
63-
exists(int b, int bElement, int n |
63+
exists(int b, int bElement, int n, int nMember |
6464
b = 0 and
6565
bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and
6666
n = bElement and
67+
nMember = n + 1 + max(int i | i = -1 or exists(e.getImmediateMember(i)) | i) and
6768
(
6869
none()
6970
or
7071
result = getImmediateChildOfElement(e, index - b, partialPredicateCall)
72+
or
73+
result = e.getImmediateMember(index - n) and
74+
partialPredicateCall = "Member(" + (index - n).toString() + ")"
7175
)
7276
)
7377
}
@@ -1562,18 +1566,14 @@ private module Impl {
15621566
private Element getImmediateChildOfEnumCaseDecl(
15631567
EnumCaseDecl e, int index, string partialPredicateCall
15641568
) {
1565-
exists(int b, int bDecl, int n, int nElement |
1569+
exists(int b, int bDecl, int n |
15661570
b = 0 and
15671571
bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and
15681572
n = bDecl and
1569-
nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and
15701573
(
15711574
none()
15721575
or
15731576
result = getImmediateChildOfDecl(e, index - b, partialPredicateCall)
1574-
or
1575-
result = e.getImmediateElement(index - n) and
1576-
partialPredicateCall = "Element(" + (index - n).toString() + ")"
15771577
)
15781578
)
15791579
}
@@ -3970,17 +3970,14 @@ private module Impl {
39703970
private Element getImmediateChildOfSelfApplyExpr(
39713971
SelfApplyExpr e, int index, string partialPredicateCall
39723972
) {
3973-
exists(int b, int bApplyExpr, int n, int nBase |
3973+
exists(int b, int bApplyExpr, int n |
39743974
b = 0 and
39753975
bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and
39763976
n = bApplyExpr and
3977-
nBase = n + 1 and
39783977
(
39793978
none()
39803979
or
39813980
result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall)
3982-
or
3983-
index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()"
39843981
)
39853982
)
39863983
}

0 commit comments

Comments
 (0)