Skip to content

Commit 72a4bd3

Browse files
committed
Swift: group unresolved elements and remove their tests
1 parent 0e62d6f commit 72a4bd3

32 files changed

+195
-135
lines changed

swift/codegen/schema.yml

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ Element:
1717
_pragma: cpp_skip # this is emitted using trap entries directly
1818
_pragma: qltest_skip
1919

20+
UnresolvedElement:
21+
_pragma: [ qltest_collapse_hierarchy, qltest_skip ]
22+
2023
File:
2124
name: string
2225
_pragma: qltest_collapse_hierarchy
@@ -27,7 +30,7 @@ DbFile:
2730
UnknownFile:
2831
_extends: File
2932
_synth:
30-
on: {}
33+
on: { }
3134

3235
Locatable:
3336
location:
@@ -41,15 +44,15 @@ Location:
4144
start_column: int
4245
end_line: int
4346
end_column: int
44-
_pragma: [qltest_skip, qltest_collapse_hierarchy]
47+
_pragma: [ qltest_skip, qltest_collapse_hierarchy ]
4548

4649
DbLocation:
4750
_extends: Location
4851

4952
UnknownLocation:
5053
_extends: Location
5154
_synth:
52-
on: {}
55+
on: { }
5356

5457
Comment:
5558
_extends: Locatable
@@ -179,7 +182,9 @@ TypeVariableType:
179182
_extends: Type
180183

181184
UnresolvedType:
182-
_extends: Type
185+
_extends:
186+
- Type
187+
- UnresolvedElement
183188

184189
ClassDecl:
185190
_extends: NominalTypeDecl
@@ -573,28 +578,36 @@ TypeExpr:
573578
type_repr: TypeRepr?
574579

575580
UnresolvedDeclRefExpr:
576-
_extends: Expr
581+
_extends:
582+
- Expr
583+
- UnresolvedElement
577584
name: string?
578585

579586
UnresolvedDotExpr:
580-
_extends: Expr
587+
_extends:
588+
- Expr
589+
- UnresolvedElement
581590
_children:
582591
base: Expr
583592
name: string
584593

585594
UnresolvedMemberExpr:
586-
_extends: Expr
595+
_extends:
596+
- Expr
597+
- UnresolvedElement
587598
name: string
588-
_pragma: qltest_skip # we should really never extract these
589599

590600
UnresolvedPatternExpr:
591-
_extends: Expr
601+
_extends:
602+
- Expr
603+
- UnresolvedElement
592604
_children:
593605
sub_pattern: Pattern
594606

595607
UnresolvedSpecializeExpr:
596-
_extends: Expr
597-
_pragma: qltest_skip # we should really never extract these
608+
_extends:
609+
- Expr
610+
- UnresolvedElement
598611

599612
VarargExpansionExpr:
600613
_extends: Expr
@@ -856,7 +869,9 @@ ParenExpr:
856869
_extends: IdentityExpr
857870

858871
UnresolvedMemberChainResultExpr:
859-
_extends: IdentityExpr
872+
_extends:
873+
- IdentityExpr
874+
- UnresolvedElement
860875

861876
AnyHashableErasureExpr:
862877
_extends: ImplicitConversionExpr
@@ -952,7 +967,9 @@ UnevaluatedInstanceExpr:
952967
_extends: ImplicitConversionExpr
953968

954969
UnresolvedTypeConversionExpr:
955-
_extends: ImplicitConversionExpr
970+
_extends:
971+
- ImplicitConversionExpr
972+
- UnresolvedElement
956973

957974
BuiltinLiteralExpr:
958975
_extends: LiteralExpr

swift/ql/lib/codeql/swift/elements.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import codeql.swift.elements.Locatable
1010
import codeql.swift.elements.Location
1111
import codeql.swift.elements.UnknownFile
1212
import codeql.swift.elements.UnknownLocation
13+
import codeql.swift.elements.UnresolvedElement
1314
import codeql.swift.elements.decl.AbstractFunctionDecl
1415
import codeql.swift.elements.decl.AbstractStorageDecl
1516
import codeql.swift.elements.decl.AbstractTypeParamDecl
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// generated by codegen/codegen.py, remove this comment if you wish to edit this file
2+
private import codeql.swift.generated.UnresolvedElement
3+
4+
class UnresolvedElement extends UnresolvedElementBase { }

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

Lines changed: 68 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,21 @@ private module Impl {
120120
)
121121
}
122122

123+
private Element getImmediateChildOfUnresolvedElement(
124+
UnresolvedElement e, int index, string partialPredicateCall
125+
) {
126+
exists(int b, int bElement, int n |
127+
b = 0 and
128+
bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and
129+
n = bElement and
130+
(
131+
none()
132+
or
133+
result = getImmediateChildOfElement(e, index - b, partialPredicateCall)
134+
)
135+
)
136+
}
137+
123138
private Element getImmediateChildOfAnyFunctionType(
124139
AnyFunctionType e, int index, string partialPredicateCall
125140
) {
@@ -563,14 +578,18 @@ private module Impl {
563578
private Element getImmediateChildOfUnresolvedType(
564579
UnresolvedType e, int index, string partialPredicateCall
565580
) {
566-
exists(int b, int bType, int n |
581+
exists(int b, int bType, int bUnresolvedElement, int n |
567582
b = 0 and
568583
bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and
569-
n = bType and
584+
bUnresolvedElement =
585+
bType + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
586+
n = bUnresolvedElement and
570587
(
571588
none()
572589
or
573590
result = getImmediateChildOfType(e, index - b, partialPredicateCall)
591+
or
592+
result = getImmediateChildOfUnresolvedElement(e, index - bType, partialPredicateCall)
574593
)
575594
)
576595
}
@@ -2630,31 +2649,39 @@ private module Impl {
26302649
private Element getImmediateChildOfUnresolvedDeclRefExpr(
26312650
UnresolvedDeclRefExpr e, int index, string partialPredicateCall
26322651
) {
2633-
exists(int b, int bExpr, int n |
2652+
exists(int b, int bExpr, int bUnresolvedElement, int n |
26342653
b = 0 and
26352654
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
2636-
n = bExpr and
2655+
bUnresolvedElement =
2656+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
2657+
n = bUnresolvedElement and
26372658
(
26382659
none()
26392660
or
26402661
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
2662+
or
2663+
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
26412664
)
26422665
)
26432666
}
26442667

26452668
private Element getImmediateChildOfUnresolvedDotExpr(
26462669
UnresolvedDotExpr e, int index, string partialPredicateCall
26472670
) {
2648-
exists(int b, int bExpr, int n, int nBase |
2671+
exists(int b, int bExpr, int bUnresolvedElement, int n, int nBase |
26492672
b = 0 and
26502673
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
2651-
n = bExpr and
2674+
bUnresolvedElement =
2675+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
2676+
n = bUnresolvedElement and
26522677
nBase = n + 1 and
26532678
(
26542679
none()
26552680
or
26562681
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
26572682
or
2683+
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
2684+
or
26582685
index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()"
26592686
)
26602687
)
@@ -2663,31 +2690,39 @@ private module Impl {
26632690
private Element getImmediateChildOfUnresolvedMemberExpr(
26642691
UnresolvedMemberExpr e, int index, string partialPredicateCall
26652692
) {
2666-
exists(int b, int bExpr, int n |
2693+
exists(int b, int bExpr, int bUnresolvedElement, int n |
26672694
b = 0 and
26682695
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
2669-
n = bExpr and
2696+
bUnresolvedElement =
2697+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
2698+
n = bUnresolvedElement and
26702699
(
26712700
none()
26722701
or
26732702
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
2703+
or
2704+
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
26742705
)
26752706
)
26762707
}
26772708

26782709
private Element getImmediateChildOfUnresolvedPatternExpr(
26792710
UnresolvedPatternExpr e, int index, string partialPredicateCall
26802711
) {
2681-
exists(int b, int bExpr, int n, int nSubPattern |
2712+
exists(int b, int bExpr, int bUnresolvedElement, int n, int nSubPattern |
26822713
b = 0 and
26832714
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
2684-
n = bExpr and
2715+
bUnresolvedElement =
2716+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
2717+
n = bUnresolvedElement and
26852718
nSubPattern = n + 1 and
26862719
(
26872720
none()
26882721
or
26892722
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
26902723
or
2724+
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
2725+
or
26912726
index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()"
26922727
)
26932728
)
@@ -2696,14 +2731,18 @@ private module Impl {
26962731
private Element getImmediateChildOfUnresolvedSpecializeExpr(
26972732
UnresolvedSpecializeExpr e, int index, string partialPredicateCall
26982733
) {
2699-
exists(int b, int bExpr, int n |
2734+
exists(int b, int bExpr, int bUnresolvedElement, int n |
27002735
b = 0 and
27012736
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
2702-
n = bExpr and
2737+
bUnresolvedElement =
2738+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
2739+
n = bUnresolvedElement and
27032740
(
27042741
none()
27052742
or
27062743
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
2744+
or
2745+
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
27072746
)
27082747
)
27092748
}
@@ -4104,32 +4143,45 @@ private module Impl {
41044143
private Element getImmediateChildOfUnresolvedMemberChainResultExpr(
41054144
UnresolvedMemberChainResultExpr e, int index, string partialPredicateCall
41064145
) {
4107-
exists(int b, int bIdentityExpr, int n |
4146+
exists(int b, int bIdentityExpr, int bUnresolvedElement, int n |
41084147
b = 0 and
41094148
bIdentityExpr =
41104149
b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and
4111-
n = bIdentityExpr and
4150+
bUnresolvedElement =
4151+
bIdentityExpr + 1 +
4152+
max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
4153+
n = bUnresolvedElement and
41124154
(
41134155
none()
41144156
or
41154157
result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall)
4158+
or
4159+
result =
4160+
getImmediateChildOfUnresolvedElement(e, index - bIdentityExpr, partialPredicateCall)
41164161
)
41174162
)
41184163
}
41194164

41204165
private Element getImmediateChildOfUnresolvedTypeConversionExpr(
41214166
UnresolvedTypeConversionExpr e, int index, string partialPredicateCall
41224167
) {
4123-
exists(int b, int bImplicitConversionExpr, int n |
4168+
exists(int b, int bImplicitConversionExpr, int bUnresolvedElement, int n |
41244169
b = 0 and
41254170
bImplicitConversionExpr =
41264171
b + 1 +
41274172
max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and
4128-
n = bImplicitConversionExpr and
4173+
bUnresolvedElement =
4174+
bImplicitConversionExpr + 1 +
4175+
max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
4176+
n = bUnresolvedElement and
41294177
(
41304178
none()
41314179
or
41324180
result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall)
4181+
or
4182+
result =
4183+
getImmediateChildOfUnresolvedElement(e, index - bImplicitConversionExpr,
4184+
partialPredicateCall)
41334185
)
41344186
)
41354187
}

0 commit comments

Comments
 (0)