Skip to content

Commit 1c086aa

Browse files
committed
Swift: add internal imports to ParentChild.qll
1 parent e840b8f commit 1c086aa

File tree

6 files changed

+17
-6
lines changed

6 files changed

+17
-6
lines changed

swift/codegen/generators/qlgen.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,12 @@ def generate(opts, renderer):
331331
renderer.render(ql.ImportList([i for name, i in imports.items() if not classes[name].ql_internal]),
332332
include_file)
333333

334-
renderer.render(ql.GetParentImplementation(list(classes.values())), out / 'ParentChild.qll')
334+
renderer.render(
335+
ql.GetParentImplementation(
336+
classes=list(classes.values()),
337+
additional_imports=[i for name, i in imports.items() if classes[name].ql_internal],
338+
),
339+
out / 'ParentChild.qll')
335340

336341
for c in data.classes.values():
337342
if _should_skip_qltest(c, data.classes):

swift/codegen/lib/ql.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ class GetParentImplementation:
161161
template: ClassVar = 'ql_parent'
162162

163163
classes: List[Class] = field(default_factory=list)
164+
additional_imports: List[str] = field(default_factory=list)
164165

165166

166167
@dataclass

swift/codegen/templates/ql_parent.mustache

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// generated by {{generator}}
22

33
import codeql.swift.elements
4+
{{#additional_imports}}
5+
import {{.}}
6+
{{/additional_imports}}
47

58
private module Impl {
69
{{#classes}}

swift/codegen/test/test_qlgen.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,19 +181,20 @@ def test_internal_not_in_import_list(generate_import_list):
181181

182182
def test_hierarchy_children(generate_children_implementations):
183183
assert generate_children_implementations([
184-
schema.Class("A", derived={"B", "C"}),
184+
schema.Class("A", derived={"B", "C"}, pragmas=["ql_internal"]),
185185
schema.Class("B", bases=["A"], derived={"D"}),
186-
schema.Class("C", bases=["A"], derived={"D"}),
186+
schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]),
187187
schema.Class("D", bases=["B", "C"]),
188188
]) == ql.GetParentImplementation(
189-
classes=[ql.Class(name="A"),
189+
classes=[ql.Class(name="A", ql_internal=True),
190190
ql.Class(name="B", bases=["A"], imports=[
191191
stub_import_prefix + "A"]),
192192
ql.Class(name="C", bases=["A"], imports=[
193-
stub_import_prefix + "A"]),
193+
stub_import_prefix + "A"], ql_internal=True),
194194
ql.Class(name="D", final=True, bases=["B", "C"],
195195
imports=[stub_import_prefix + cls for cls in "BC"]),
196196
],
197+
additional_imports=[stub_import_prefix + cls for cls in "AC"],
197198
)
198199

199200

swift/ql/.generated.list

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ ql/lib/codeql/swift/generated/ErrorElement.qll 4b032abe8ffb71376a29c63e470a52943
375375
ql/lib/codeql/swift/generated/File.qll 61454459f5f1ae378bd4970ad1da4f39f3e696bac8a5eebdd162f131995c5316 3e6805f8858cd55dd0e0d0e5aeab923d6a55292dbf98b0029db1ae0208efe684
376376
ql/lib/codeql/swift/generated/Locatable.qll bdc98b9fb7788f44a4bf7e487ee5bd329473409950a8e9f116d61995615ad849 0b36b4fe45e2aa195e4bb70c50ea95f32f141b8e01e5f23466c6427dd9ab88fb
377377
ql/lib/codeql/swift/generated/Location.qll 851766e474cdfdfa67da42e0031fc42dd60196ff5edd39d82f08d3e32deb84c1 b29b2c37672f5acff15f1d3c5727d902f193e51122327b31bd27ec5f877bca3b
378-
ql/lib/codeql/swift/generated/ParentChild.qll cae61c8f54bd23e0d1faf7e33403020dabed5d34e4ccc89c2bcedbb57c336e0b 80e186d0ee76757a0f86cdb77703c66a7e6e5c4f3602f5bbb75912865004ca46
378+
ql/lib/codeql/swift/generated/ParentChild.qll 0f8559232a046fe48fff4add61caf9563daf2b921bf898d19de70165669681e4 d229113e146673e446b7e4517ee898d524edf16ab9cfcf01aab18d79042242ae
379379
ql/lib/codeql/swift/generated/PureSynthConstructors.qll 173c0dd59396a1de26fe870e3bc2766c46de689da2a4d8807cb62023bbce1a98 173c0dd59396a1de26fe870e3bc2766c46de689da2a4d8807cb62023bbce1a98
380380
ql/lib/codeql/swift/generated/Raw.qll 112397ddf13db0b83177c940f6681d2d1cf5224b8931ed8cdaaee63f3e9ce731 fbdd886f151a31709dcb058c790bdb2d8c304ac4183cfd5ddafcd70637bcf5a3
381381
ql/lib/codeql/swift/generated/Synth.qll 6a9e6edcc43732b6cf947d88b9562a591a54c651aa8e4f94b8b6139ff3f84b63 a1f37bb361fed57104f8277c8f8b1962a0a54b1f80c2d676e71c40a91d3af529

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// generated by codegen/codegen.py
22
import codeql.swift.elements
3+
import codeql.swift.elements.expr.SelfApplyExpr
34

45
private module Impl {
56
private Element getImmediateChildOfElement(Element e, int index, string partialPredicateCall) {

0 commit comments

Comments
 (0)