Skip to content

Commit c5bb32d

Browse files
committed
Swift: create common ErrorElement superclass
1 parent a2c0d47 commit c5bb32d

28 files changed

+210
-247
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import codeql.swift.elements.DbFile
66
import codeql.swift.elements.DbLocation
77
import codeql.swift.elements.Diagnostics
88
import codeql.swift.elements.Element
9+
import codeql.swift.elements.ErrorElement
910
import codeql.swift.elements.File
1011
import codeql.swift.elements.Locatable
1112
import codeql.swift.elements.Location
1213
import codeql.swift.elements.UnknownFile
1314
import codeql.swift.elements.UnknownLocation
14-
import codeql.swift.elements.UnresolvedElement
1515
import codeql.swift.elements.UnspecifiedElement
1616
import codeql.swift.elements.decl.AbstractFunctionDecl
1717
import codeql.swift.elements.decl.AbstractStorageDecl

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

Lines changed: 0 additions & 4 deletions
This file was deleted.

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

Lines changed: 78 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,21 @@ private module Impl {
135135
)
136136
}
137137

138+
private Element getImmediateChildOfErrorElement(
139+
ErrorElement e, int index, string partialPredicateCall
140+
) {
141+
exists(int b, int bLocatable, int n |
142+
b = 0 and
143+
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
144+
n = bLocatable and
145+
(
146+
none()
147+
or
148+
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
149+
)
150+
)
151+
}
152+
138153
private Element getImmediateChildOfUnknownFile(
139154
UnknownFile e, int index, string partialPredicateCall
140155
) {
@@ -165,32 +180,18 @@ private module Impl {
165180
)
166181
}
167182

168-
private Element getImmediateChildOfUnresolvedElement(
169-
UnresolvedElement e, int index, string partialPredicateCall
170-
) {
171-
exists(int b, int bLocatable, int n |
172-
b = 0 and
173-
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
174-
n = bLocatable and
175-
(
176-
none()
177-
or
178-
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
179-
)
180-
)
181-
}
182-
183183
private Element getImmediateChildOfUnspecifiedElement(
184184
UnspecifiedElement e, int index, string partialPredicateCall
185185
) {
186-
exists(int b, int bLocatable, int n |
186+
exists(int b, int bErrorElement, int n |
187187
b = 0 and
188-
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
189-
n = bLocatable and
188+
bErrorElement =
189+
b + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
190+
n = bErrorElement and
190191
(
191192
none()
192193
or
193-
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
194+
result = getImmediateChildOfErrorElement(e, index - b, partialPredicateCall)
194195
)
195196
)
196197
}
@@ -1221,14 +1222,18 @@ private module Impl {
12211222
}
12221223

12231224
private Element getImmediateChildOfErrorExpr(ErrorExpr e, int index, string partialPredicateCall) {
1224-
exists(int b, int bExpr, int n |
1225+
exists(int b, int bExpr, int bErrorElement, int n |
12251226
b = 0 and
12261227
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
1227-
n = bExpr and
1228+
bErrorElement =
1229+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
1230+
n = bErrorElement and
12281231
(
12291232
none()
12301233
or
12311234
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
1235+
or
1236+
result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall)
12321237
)
12331238
)
12341239
}
@@ -1598,14 +1603,18 @@ private module Impl {
15981603
private Element getImmediateChildOfOverloadedDeclRefExpr(
15991604
OverloadedDeclRefExpr e, int index, string partialPredicateCall
16001605
) {
1601-
exists(int b, int bExpr, int n |
1606+
exists(int b, int bExpr, int bErrorElement, int n |
16021607
b = 0 and
16031608
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
1604-
n = bExpr and
1609+
bErrorElement =
1610+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
1611+
n = bErrorElement and
16051612
(
16061613
none()
16071614
or
16081615
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
1616+
or
1617+
result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall)
16091618
)
16101619
)
16111620
}
@@ -1763,38 +1772,38 @@ private module Impl {
17631772
private Element getImmediateChildOfUnresolvedDeclRefExpr(
17641773
UnresolvedDeclRefExpr e, int index, string partialPredicateCall
17651774
) {
1766-
exists(int b, int bExpr, int bUnresolvedElement, int n |
1775+
exists(int b, int bExpr, int bErrorElement, int n |
17671776
b = 0 and
17681777
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
1769-
bUnresolvedElement =
1770-
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
1771-
n = bUnresolvedElement and
1778+
bErrorElement =
1779+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
1780+
n = bErrorElement and
17721781
(
17731782
none()
17741783
or
17751784
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
17761785
or
1777-
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
1786+
result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall)
17781787
)
17791788
)
17801789
}
17811790

17821791
private Element getImmediateChildOfUnresolvedDotExpr(
17831792
UnresolvedDotExpr e, int index, string partialPredicateCall
17841793
) {
1785-
exists(int b, int bExpr, int bUnresolvedElement, int n, int nBase |
1794+
exists(int b, int bExpr, int bErrorElement, int n, int nBase |
17861795
b = 0 and
17871796
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
1788-
bUnresolvedElement =
1789-
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
1790-
n = bUnresolvedElement and
1797+
bErrorElement =
1798+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
1799+
n = bErrorElement and
17911800
nBase = n + 1 and
17921801
(
17931802
none()
17941803
or
17951804
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
17961805
or
1797-
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
1806+
result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall)
17981807
or
17991808
index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()"
18001809
)
@@ -1804,38 +1813,38 @@ private module Impl {
18041813
private Element getImmediateChildOfUnresolvedMemberExpr(
18051814
UnresolvedMemberExpr e, int index, string partialPredicateCall
18061815
) {
1807-
exists(int b, int bExpr, int bUnresolvedElement, int n |
1816+
exists(int b, int bExpr, int bErrorElement, int n |
18081817
b = 0 and
18091818
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
1810-
bUnresolvedElement =
1811-
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
1812-
n = bUnresolvedElement and
1819+
bErrorElement =
1820+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
1821+
n = bErrorElement and
18131822
(
18141823
none()
18151824
or
18161825
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
18171826
or
1818-
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
1827+
result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall)
18191828
)
18201829
)
18211830
}
18221831

18231832
private Element getImmediateChildOfUnresolvedPatternExpr(
18241833
UnresolvedPatternExpr e, int index, string partialPredicateCall
18251834
) {
1826-
exists(int b, int bExpr, int bUnresolvedElement, int n, int nSubPattern |
1835+
exists(int b, int bExpr, int bErrorElement, int n, int nSubPattern |
18271836
b = 0 and
18281837
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
1829-
bUnresolvedElement =
1830-
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
1831-
n = bUnresolvedElement and
1838+
bErrorElement =
1839+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
1840+
n = bErrorElement and
18321841
nSubPattern = n + 1 and
18331842
(
18341843
none()
18351844
or
18361845
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
18371846
or
1838-
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
1847+
result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall)
18391848
or
18401849
index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()"
18411850
)
@@ -1845,19 +1854,19 @@ private module Impl {
18451854
private Element getImmediateChildOfUnresolvedSpecializeExpr(
18461855
UnresolvedSpecializeExpr e, int index, string partialPredicateCall
18471856
) {
1848-
exists(int b, int bExpr, int bUnresolvedElement, int n, int nSubExpr |
1857+
exists(int b, int bExpr, int bErrorElement, int n, int nSubExpr |
18491858
b = 0 and
18501859
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
1851-
bUnresolvedElement =
1852-
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
1853-
n = bUnresolvedElement and
1860+
bErrorElement =
1861+
bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
1862+
n = bErrorElement and
18541863
nSubExpr = n + 1 and
18551864
(
18561865
none()
18571866
or
18581867
result = getImmediateChildOfExpr(e, index - b, partialPredicateCall)
18591868
or
1860-
result = getImmediateChildOfUnresolvedElement(e, index - bExpr, partialPredicateCall)
1869+
result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall)
18611870
or
18621871
index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()"
18631872
)
@@ -2841,45 +2850,43 @@ private module Impl {
28412850
private Element getImmediateChildOfUnresolvedMemberChainResultExpr(
28422851
UnresolvedMemberChainResultExpr e, int index, string partialPredicateCall
28432852
) {
2844-
exists(int b, int bIdentityExpr, int bUnresolvedElement, int n |
2853+
exists(int b, int bIdentityExpr, int bErrorElement, int n |
28452854
b = 0 and
28462855
bIdentityExpr =
28472856
b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and
2848-
bUnresolvedElement =
2857+
bErrorElement =
28492858
bIdentityExpr + 1 +
2850-
max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
2851-
n = bUnresolvedElement and
2859+
max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
2860+
n = bErrorElement and
28522861
(
28532862
none()
28542863
or
28552864
result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall)
28562865
or
2857-
result =
2858-
getImmediateChildOfUnresolvedElement(e, index - bIdentityExpr, partialPredicateCall)
2866+
result = getImmediateChildOfErrorElement(e, index - bIdentityExpr, partialPredicateCall)
28592867
)
28602868
)
28612869
}
28622870

28632871
private Element getImmediateChildOfUnresolvedTypeConversionExpr(
28642872
UnresolvedTypeConversionExpr e, int index, string partialPredicateCall
28652873
) {
2866-
exists(int b, int bImplicitConversionExpr, int bUnresolvedElement, int n |
2874+
exists(int b, int bImplicitConversionExpr, int bErrorElement, int n |
28672875
b = 0 and
28682876
bImplicitConversionExpr =
28692877
b + 1 +
28702878
max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and
2871-
bUnresolvedElement =
2879+
bErrorElement =
28722880
bImplicitConversionExpr + 1 +
2873-
max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
2874-
n = bUnresolvedElement and
2881+
max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
2882+
n = bErrorElement and
28752883
(
28762884
none()
28772885
or
28782886
result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall)
28792887
or
28802888
result =
2881-
getImmediateChildOfUnresolvedElement(e, index - bImplicitConversionExpr,
2882-
partialPredicateCall)
2889+
getImmediateChildOfErrorElement(e, index - bImplicitConversionExpr, partialPredicateCall)
28832890
)
28842891
)
28852892
}
@@ -3874,14 +3881,18 @@ private module Impl {
38743881
}
38753882

38763883
private Element getImmediateChildOfErrorType(ErrorType e, int index, string partialPredicateCall) {
3877-
exists(int b, int bType, int n |
3884+
exists(int b, int bType, int bErrorElement, int n |
38783885
b = 0 and
38793886
bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and
3880-
n = bType and
3887+
bErrorElement =
3888+
bType + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
3889+
n = bErrorElement and
38813890
(
38823891
none()
38833892
or
38843893
result = getImmediateChildOfType(e, index - b, partialPredicateCall)
3894+
or
3895+
result = getImmediateChildOfErrorElement(e, index - bType, partialPredicateCall)
38853896
)
38863897
)
38873898
}
@@ -4145,18 +4156,18 @@ private module Impl {
41454156
private Element getImmediateChildOfUnresolvedType(
41464157
UnresolvedType e, int index, string partialPredicateCall
41474158
) {
4148-
exists(int b, int bType, int bUnresolvedElement, int n |
4159+
exists(int b, int bType, int bErrorElement, int n |
41494160
b = 0 and
41504161
bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and
4151-
bUnresolvedElement =
4152-
bType + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnresolvedElement(e, i, _)) | i) and
4153-
n = bUnresolvedElement and
4162+
bErrorElement =
4163+
bType + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and
4164+
n = bErrorElement and
41544165
(
41554166
none()
41564167
or
41574168
result = getImmediateChildOfType(e, index - b, partialPredicateCall)
41584169
or
4159-
result = getImmediateChildOfUnresolvedElement(e, index - bType, partialPredicateCall)
4170+
result = getImmediateChildOfErrorElement(e, index - bType, partialPredicateCall)
41604171
)
41614172
)
41624173
}

0 commit comments

Comments
 (0)