Skip to content

Commit b7543f5

Browse files
committed
Codegen: pass ql_internal to Stub
1 parent 10afa43 commit b7543f5

File tree

8 files changed

+35
-7
lines changed

8 files changed

+35
-7
lines changed

misc/codegen/generators/qlgen.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ def _get_doc(cls: schema.Class, prop: schema.Property, plural=None):
102102
return f"{prop_name} of this {class_name}"
103103

104104

105-
def get_ql_property(cls: schema.Class, prop: schema.Property, lookup: typing.Dict[str, schema.Class], prev_child: str = "") -> ql.Property:
105+
def get_ql_property(cls: schema.Class, prop: schema.Property, lookup: typing.Dict[str, schema.Class],
106+
prev_child: str = "") -> ql.Property:
106107
args = dict(
107108
type=prop.type if not prop.is_predicate else "predicate",
108109
qltest_skip="qltest_skip" in prop.pragmas,
@@ -310,7 +311,8 @@ def _get_stub(cls: schema.Class, base_import: str, generated_import_prefix: str)
310311
]
311312
else:
312313
accessors = []
313-
return ql.Stub(name=cls.name, base_import=base_import, import_prefix=generated_import_prefix, synth_accessors=accessors)
314+
return ql.Stub(name=cls.name, base_import=base_import, import_prefix=generated_import_prefix,
315+
synth_accessors=accessors, ql_internal="ql_internal" in cls.pragmas)
314316

315317

316318
def generate(opts, renderer):
@@ -426,7 +428,7 @@ def generate(opts, renderer):
426428
for stub_file, data in stubs.items():
427429
renderer.render(data, stub_file)
428430
renderer.render(ql.Synth.Types(root.name, generated_import_prefix,
429-
final_synth_types, non_final_synth_types), out / "Synth.qll")
431+
final_synth_types, non_final_synth_types), out / "Synth.qll")
430432
renderer.render(ql.ImportList(constructor_imports), out / "SynthConstructors.qll")
431433
renderer.render(ql.ImportList(synth_constructor_imports), out / "PureSynthConstructors.qll")
432434
if opts.ql_format:

misc/codegen/lib/ql.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ class Stub:
166166
base_import: str
167167
import_prefix: str
168168
synth_accessors: List[SynthUnderlyingAccessor] = field(default_factory=list)
169+
ql_internal: bool = False
169170

170171
@property
171172
def has_synth_accessors(self) -> bool:

misc/codegen/test/test_qlgen.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,15 @@ def test_one_empty_class(generate_classes):
153153
}
154154

155155

156+
def test_one_empty_internal_class(generate_classes):
157+
assert generate_classes([
158+
schema.Class("A", pragmas=["ql_internal"])
159+
]) == {
160+
"A.qll": (a_ql_stub(name="A", ql_internal=True),
161+
a_ql_class(name="A", final=True, ql_internal=True)),
162+
}
163+
164+
156165
def test_hierarchy(generate_classes):
157166
assert generate_classes([
158167
schema.Class("D", bases=["B", "C"]),

swift/ql/.generated.list

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)