@@ -19,6 +19,7 @@ def get_ql_property(cls: schema.Class, prop: schema.Property):
1919 type = prop .type ,
2020 tablename = inflection .tableize (cls .name ),
2121 tableparams = ["this" ] + ["result" if p is prop else "_" for p in cls .properties if p .is_single ],
22+ is_child = prop .is_child ,
2223 )
2324 elif prop .is_repeated :
2425 return ql .Property (
@@ -28,6 +29,7 @@ def get_ql_property(cls: schema.Class, prop: schema.Property):
2829 tablename = inflection .tableize (f"{ cls .name } _{ prop .name } " ),
2930 tableparams = ["this" , "index" , "result" ],
3031 is_optional = prop .is_optional ,
32+ is_child = prop .is_child ,
3133 )
3234 elif prop .is_optional :
3335 return ql .Property (
@@ -36,6 +38,7 @@ def get_ql_property(cls: schema.Class, prop: schema.Property):
3638 tablename = inflection .tableize (f"{ cls .name } _{ prop .name } " ),
3739 tableparams = ["this" , "result" ],
3840 is_optional = True ,
41+ is_child = prop .is_child ,
3942 )
4043 elif prop .is_predicate :
4144 return ql .Property (
@@ -96,6 +99,7 @@ def generate(opts, renderer):
9699 data = schema .load (input )
97100
98101 classes = [get_ql_class (cls ) for cls in data .classes ]
102+ classes .sort (key = lambda cls : cls .name )
99103 imports = {}
100104
101105 for c in classes :
@@ -110,11 +114,14 @@ def generate(opts, renderer):
110114 stub = ql .Stub (name = c .name , base_import = get_import (qll , opts .swift_dir ))
111115 renderer .render (stub , stub_file )
112116
113- # for example path/to/syntax/generated -> path/to/syntax .qll
117+ # for example path/to/elements -> path/to/elements .qll
114118 include_file = stub_out .with_suffix (".qll" )
115- all_imports = ql .ImportList ([ v for _ , v in sorted (imports .items ())] )
119+ all_imports = ql .ImportList (list ( sorted (imports .values ())) )
116120 renderer .render (all_imports , include_file )
117121
122+ renderer .render (ql .GetParentImplementation (classes = classes , imports = [get_import (include_file , opts .swift_dir )]),
123+ out / 'GetImmediateParent.qll' )
124+
118125 renderer .cleanup (existing )
119126 if opts .ql_format :
120127 format (opts .codeql_binary , renderer .written )
0 commit comments