Skip to content

Commit 9de5985

Browse files
committed
Swift: fix subtracted constructors
1 parent 1365d09 commit 9de5985

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

swift/codegen/generators/qlgen.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,23 +89,26 @@ def _to_db_type(x: str) -> str:
8989
_final_db_class_lookup = {}
9090

9191

92+
def get_ql_ipa_class_db(name: str) -> ql.Synth.FinalClassDb:
93+
return _final_db_class_lookup.setdefault(name, ql.Synth.FinalClassDb(name=name,
94+
params=[
95+
ql.Synth.Param("id", _to_db_type(name))]))
96+
97+
9298
def get_ql_ipa_class(cls: schema.Class):
9399
if cls.derived:
94100
return ql.Synth.NonFinalClass(name=cls.name, derived=sorted(cls.derived),
95101
root=(cls.name == schema.root_class_name))
96102
if cls.ipa and cls.ipa.from_class is not None:
97103
source = cls.ipa.from_class
98-
_final_db_class_lookup.setdefault(source, ql.Synth.FinalClassDb(source)).subtract_type(cls.name)
104+
get_ql_ipa_class_db(source).subtract_type(cls.name)
99105
return ql.Synth.FinalClassDerivedIpa(name=cls.name,
100106
params=[ql.Synth.Param("id", _to_db_type(source))])
101107
if cls.ipa and cls.ipa.on_arguments is not None:
102108
return ql.Synth.FinalClassFreshIpa(name=cls.name,
103109
params=[ql.Synth.Param(k, _to_db_type(v))
104110
for k, v in cls.ipa.on_arguments.items()])
105-
ret = ql.Synth.FinalClassDb(name=cls.name,
106-
params=[ql.Synth.Param("id", _to_db_type(cls.name))])
107-
_final_db_class_lookup[cls.name] = ret
108-
return ret
111+
return get_ql_ipa_class_db(cls.name)
109112

110113

111114
def get_import(file: pathlib.Path, swift_dir: pathlib.Path):

swift/codegen/templates/ql_ipa_constructor_stub.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ private import codeql.swift.generated.Raw
33
{{#cls}}
44
{{#is_db}}
55
{{#has_subtracted_ipa_types}}
6-
private import codeql.swift.PureSynthConstructors
6+
private import codeql.swift.generated.PureSynthConstructors
77
{{/has_subtracted_ipa_types}}
88
{{/is_db}}
99

0 commit comments

Comments
 (0)