diff --git a/misc/codegen/generators/qlgen.py b/misc/codegen/generators/qlgen.py index 271046404b1d..c3848917c49e 100755 --- a/misc/codegen/generators/qlgen.py +++ b/misc/codegen/generators/qlgen.py @@ -30,6 +30,7 @@ import typing import itertools import os +import dataclasses import inflection @@ -113,117 +114,197 @@ def _get_doc(cls: schema.Class, prop: schema.Property, plural=None): return f"{prop_name} of this {class_name}" -def _type_is_hideable(t: str, lookup: typing.Dict[str, schema.ClassBase]) -> bool: - if t in lookup: - match lookup[t]: +@dataclasses.dataclass +class Resolver: + lookup: typing.Dict[str, schema.ClassBase] + _property_cache: typing.Dict[tuple[int, int], ql.Property] = dataclasses.field( + default_factory=dict, init=False + ) + _class_cache: typing.Dict[int, ql.Class] = dataclasses.field( + default_factory=dict, init=False + ) + + def _type_is_hideable(self, t: str) -> bool: + match self.lookup.get(t): case schema.Class() as cls: return "ql_hideable" in cls.pragmas - return False - - -def get_ql_property( - cls: schema.Class, - prop: schema.Property, - lookup: typing.Dict[str, schema.ClassBase], - prev_child: str = "", -) -> ql.Property: - - args = dict( - type=prop.type if not prop.is_predicate else "predicate", - qltest_skip="qltest_skip" in prop.pragmas, - prev_child=prev_child if prop.is_child else None, - is_optional=prop.is_optional, - is_predicate=prop.is_predicate, - is_unordered=prop.is_unordered, - description=prop.description, - synth=bool(cls.synth) or prop.synth, - type_is_hideable=_type_is_hideable(prop.type, lookup), - type_is_codegen_class=prop.type in lookup and not lookup[prop.type].imported, - internal="ql_internal" in prop.pragmas, - ) - ql_name = prop.pragmas.get("ql_name", prop.name) - db_table_name = prop.pragmas.get("ql_db_table_name") - if db_table_name and prop.is_single: - raise Error( - f"`db_table_name` pragma is not supported for single properties, but {cls.name}.{prop.name} has it" - ) - if prop.is_single: - args.update( - singular=inflection.camelize(ql_name), - tablename=inflection.tableize(cls.name), - tableparams=["this"] - + ["result" if p is prop else "_" for p in cls.properties if p.is_single], - doc=_get_doc(cls, prop), - ) - elif prop.is_repeated: - args.update( - singular=inflection.singularize(inflection.camelize(ql_name)), - plural=inflection.pluralize(inflection.camelize(ql_name)), - tablename=db_table_name or inflection.tableize(f"{cls.name}_{prop.name}"), - tableparams=( - ["this", "index", "result"] - if not prop.is_unordered - else ["this", "result"] - ), - doc=_get_doc(cls, prop, plural=False), - doc_plural=_get_doc(cls, prop, plural=True), - ) - elif prop.is_optional: - args.update( - singular=inflection.camelize(ql_name), - tablename=db_table_name or inflection.tableize(f"{cls.name}_{prop.name}"), - tableparams=["this", "result"], - doc=_get_doc(cls, prop), - ) - elif prop.is_predicate: - args.update( - singular=inflection.camelize(ql_name, uppercase_first_letter=False), - tablename=db_table_name or inflection.underscore(f"{cls.name}_{prop.name}"), - tableparams=["this"], - doc=_get_doc(cls, prop), + case _: + return False + + def get_ql_property( + self, + cls: schema.Class, + prop: schema.Property, + ) -> ql.Property: + cache_key = (id(cls), id(prop)) + if cache_key not in self._property_cache: + args = dict( + type=prop.type if not prop.is_predicate else "predicate", + qltest_skip="qltest_skip" in prop.pragmas, + is_optional=prop.is_optional, + is_predicate=prop.is_predicate, + is_unordered=prop.is_unordered, + description=prop.description, + synth=bool(cls.synth) or prop.synth, + type_is_hideable=self._type_is_hideable(prop.type), + type_is_codegen_class=prop.type in self.lookup + and not self.lookup[prop.type].imported, + internal="ql_internal" in prop.pragmas, + cfg=prop.is_child + and prop.type in self.lookup + and self.lookup[prop.type].cfg, + is_child=prop.is_child, + ) + ql_name = prop.pragmas.get("ql_name", prop.name) + db_table_name = prop.pragmas.get("ql_db_table_name") + if db_table_name and prop.is_single: + raise Error( + f"`db_table_name` pragma is not supported for single properties, but {cls.name}.{prop.name} has it" + ) + if prop.is_single: + args.update( + singular=inflection.camelize(ql_name), + tablename=inflection.tableize(cls.name), + tableparams=["this"] + + [ + "result" if p is prop else "_" + for p in cls.properties + if p.is_single + ], + doc=_get_doc(cls, prop), + ) + elif prop.is_repeated: + args.update( + singular=inflection.singularize(inflection.camelize(ql_name)), + plural=inflection.pluralize(inflection.camelize(ql_name)), + tablename=db_table_name + or inflection.tableize(f"{cls.name}_{prop.name}"), + tableparams=( + ["this", "index", "result"] + if not prop.is_unordered + else ["this", "result"] + ), + doc=_get_doc(cls, prop, plural=False), + doc_plural=_get_doc(cls, prop, plural=True), + ) + elif prop.is_optional: + args.update( + singular=inflection.camelize(ql_name), + tablename=db_table_name + or inflection.tableize(f"{cls.name}_{prop.name}"), + tableparams=["this", "result"], + doc=_get_doc(cls, prop), + ) + elif prop.is_predicate: + args.update( + singular=inflection.camelize(ql_name, uppercase_first_letter=False), + tablename=db_table_name + or inflection.underscore(f"{cls.name}_{prop.name}"), + tableparams=["this"], + doc=_get_doc(cls, prop), + ) + else: + raise ValueError( + f"unknown property kind for {prop.name} from {cls.name}" + ) + self._property_cache[cache_key] = ql.Property(**args) + return self._property_cache[cache_key] + + def get_ql_class(self, cls: schema.Class) -> ql.Class: + cache_key = id(cls) + if cache_key not in self._class_cache: + if "ql_name" in cls.pragmas: + raise Error( + "ql_name is not supported yet for classes, only for properties" + ) + properties = [self.get_ql_property(cls, p) for p in cls.properties] + all_children = [ + ql.Child(self.get_ql_property(c, p)) + for c, p in self._get_all_properties(cls) + if p.is_child + ] + for prev, child in zip([""] + all_children, all_children): + child.prev = prev and prev.property.singular + self._class_cache[cache_key] = ql.Class( + name=cls.name, + bases=cls.bases, + bases_impl=[base + "Impl::" + base for base in cls.bases], + final=not cls.derived, + properties=properties, + all_children=all_children, + dir=pathlib.Path(cls.group or ""), + doc=cls.doc, + hideable="ql_hideable" in cls.pragmas, + internal="ql_internal" in cls.pragmas, + cfg=cls.cfg, + ) + return self._class_cache[cache_key] + + def get_ql_cfg_class( + self, + cls: schema.Class, + ) -> ql.CfgClass: + return ql.CfgClass( + name=cls.name, + bases=[base for base in cls.bases if self.lookup[base.base].cfg], + properties=cls.properties, + doc=cls.doc, ) - else: - raise ValueError(f"unknown property kind for {prop.name} from {cls.name}") - return ql.Property(**args) + def _get_all_properties( + self, + cls: schema.Class, + already_seen: typing.Optional[typing.Set[int]] = None, + ) -> typing.Iterable[typing.Tuple[schema.Class, schema.Property]]: + # deduplicate using ids + if already_seen is None: + already_seen = set() + for b in cls.bases: + base = self.lookup[b] + for item in self._get_all_properties(base, already_seen): + yield item + for p in cls.properties: + if id(p) not in already_seen: + already_seen.add(id(p)) + yield cls, p + + def get_all_properties_to_be_tested( + self, + cls: schema.Class, + ) -> typing.Iterable[ql.PropertyForTest]: + for c, p in self._get_all_properties(cls): + if not ("qltest_skip" in c.pragmas or "qltest_skip" in p.pragmas): + p = self.get_ql_property(c, p) + yield ql.PropertyForTest( + p.getter, + is_total=p.is_single or p.is_predicate, + type=p.type if not p.is_predicate else None, + is_indexed=p.is_indexed, + ) -def get_ql_class( - cls: schema.Class, lookup: typing.Dict[str, schema.ClassBase] -) -> ql.Class: - if "ql_name" in cls.pragmas: - raise Error("ql_name is not supported yet for classes, only for properties") - prev_child = "" - properties = [] - for p in cls.properties: - prop = get_ql_property(cls, p, lookup, prev_child) - if prop.is_child: - prev_child = prop.singular - if prop.type in lookup and lookup[prop.type].cfg: - prop.cfg = True - properties.append(prop) - return ql.Class( - name=cls.name, - bases=cls.bases, - bases_impl=[base + "Impl::" + base for base in cls.bases], - final=not cls.derived, - properties=properties, - dir=pathlib.Path(cls.group or ""), - doc=cls.doc, - hideable="ql_hideable" in cls.pragmas, - internal="ql_internal" in cls.pragmas, - cfg=cls.cfg, - ) + def _is_in_qltest_collapsed_hierarchy( + self, + cls: schema.Class, + ) -> bool: + return ( + "qltest_collapse_hierarchy" in cls.pragmas + or self._is_under_qltest_collapsed_hierarchy(cls) + ) + def _is_under_qltest_collapsed_hierarchy( + self, + cls: schema.Class, + ) -> bool: + return "qltest_uncollapse_hierarchy" not in cls.pragmas and any( + self._is_in_qltest_collapsed_hierarchy(self.lookup[b]) for b in cls.bases + ) -def get_ql_cfg_class( - cls: schema.Class, lookup: typing.Dict[str, ql.Class] -) -> ql.CfgClass: - return ql.CfgClass( - name=cls.name, - bases=[base for base in cls.bases if lookup[base.base].cfg], - properties=cls.properties, - doc=cls.doc, - ) + def should_skip_qltest(self, cls: schema.Class) -> bool: + return ( + "qltest_skip" in cls.pragmas + or not (cls.final or "qltest_collapse_hierarchy" in cls.pragmas) + or self._is_under_qltest_collapsed_hierarchy(cls) + ) def _to_db_type(x: str) -> str: @@ -330,69 +411,6 @@ def _get_path_public(cls: schema.Class) -> pathlib.Path: ).with_suffix(".qll") -def _get_all_properties( - cls: schema.Class, - lookup: typing.Dict[str, schema.Class], - already_seen: typing.Optional[typing.Set[int]] = None, -) -> typing.Iterable[typing.Tuple[schema.Class, schema.Property]]: - # deduplicate using ids - if already_seen is None: - already_seen = set() - for b in sorted(cls.bases): - base = lookup[b] - for item in _get_all_properties(base, lookup, already_seen): - yield item - for p in cls.properties: - if id(p) not in already_seen: - already_seen.add(id(p)) - yield cls, p - - -def _get_all_properties_to_be_tested( - cls: schema.Class, lookup: typing.Dict[str, schema.Class] -) -> typing.Iterable[ql.PropertyForTest]: - for c, p in _get_all_properties(cls, lookup): - if not ("qltest_skip" in c.pragmas or "qltest_skip" in p.pragmas): - # TODO here operations are duplicated, but should be better if we split ql and qltest generation - p = get_ql_property(c, p, lookup) - yield ql.PropertyForTest( - p.getter, - is_total=p.is_single or p.is_predicate, - type=p.type if not p.is_predicate else None, - is_indexed=p.is_indexed, - ) - - -def _partition_iter(x, pred): - x1, x2 = itertools.tee(x) - return filter(pred, x1), itertools.filterfalse(pred, x2) - - -def _is_in_qltest_collapsed_hierarchy( - cls: schema.Class, lookup: typing.Dict[str, schema.Class] -): - return ( - "qltest_collapse_hierarchy" in cls.pragmas - or _is_under_qltest_collapsed_hierarchy(cls, lookup) - ) - - -def _is_under_qltest_collapsed_hierarchy( - cls: schema.Class, lookup: typing.Dict[str, schema.Class] -): - return "qltest_uncollapse_hierarchy" not in cls.pragmas and any( - _is_in_qltest_collapsed_hierarchy(lookup[b], lookup) for b in cls.bases - ) - - -def should_skip_qltest(cls: schema.Class, lookup: typing.Dict[str, schema.Class]): - return ( - "qltest_skip" in cls.pragmas - or not (cls.final or "qltest_collapse_hierarchy" in cls.pragmas) - or _is_under_qltest_collapsed_hierarchy(cls, lookup) - ) - - def _get_stub( cls: schema.Class, base_import: str, generated_import_prefix: str ) -> ql.Stub: @@ -478,8 +496,10 @@ def generate(opts, renderer): data = schemaloader.load_file(input) + resolver = Resolver(data.classes) + classes = { - name: get_ql_class(cls, data.classes) + name: resolver.get_ql_class(cls) for name, cls in data.classes.items() if not cls.imported } @@ -529,7 +549,7 @@ def generate(opts, renderer): ) imports_impl[c.name + "Impl"] = path_impl + "Impl" if c.cfg: - cfg_classes.append(get_ql_cfg_class(c, classes)) + cfg_classes.append(resolver.get_ql_cfg_class(c)) for c in classes.values(): qll = out / c.path.with_suffix(".qll") @@ -600,7 +620,7 @@ def generate(opts, renderer): for c in data.classes.values(): if c.imported: continue - if should_skip_qltest(c, data.classes): + if resolver.should_skip_qltest(c): continue test_with_name = c.pragmas.get("qltest_test_with") test_with = data.classes[test_with_name] if test_with_name else c @@ -619,9 +639,7 @@ def generate(opts, renderer): renderer.render( ql.ClassTester( class_name=c.name, - properties=list( - _get_all_properties_to_be_tested(c, data.classes) - ), + properties=list(resolver.get_all_properties_to_be_tested(c)), elements_module=elements_module, # in case of collapsed hierarchies we want to see the actual QL class in results show_ql_class="qltest_collapse_hierarchy" in c.pragmas, diff --git a/misc/codegen/generators/rusttestgen.py b/misc/codegen/generators/rusttestgen.py index a46d2584127b..4c6e2cb61174 100644 --- a/misc/codegen/generators/rusttestgen.py +++ b/misc/codegen/generators/rusttestgen.py @@ -59,13 +59,12 @@ def generate(opts, renderer): registry=opts.ql_test_output / ".generated_tests.list", force=opts.force, ) as renderer: + + resolver = qlgen.Resolver(schema.classes) for cls in schema.classes.values(): if cls.imported: continue - if ( - qlgen.should_skip_qltest(cls, schema.classes) - or "rust_skip_doc_test" in cls.pragmas - ): + if resolver.should_skip_qltest(cls) or "rust_skip_doc_test" in cls.pragmas: continue code = _get_code(cls.doc) for p in schema.iter_properties(cls.name): diff --git a/misc/codegen/lib/ql.py b/misc/codegen/lib/ql.py index 034cf452fb70..503570c2adc3 100644 --- a/misc/codegen/lib/ql.py +++ b/misc/codegen/lib/ql.py @@ -37,7 +37,6 @@ class Property: is_optional: bool = False is_predicate: bool = False is_unordered: bool = False - prev_child: Optional[str] = None qltest_skip: bool = False description: List[str] = field(default_factory=list) doc: Optional[str] = None @@ -48,6 +47,7 @@ class Property: type_is_self: bool = False internal: bool = False cfg: bool = False + is_child: bool = False def __post_init__(self): if self.tableparams: @@ -76,10 +76,6 @@ def is_repeated(self): def is_single(self): return not (self.is_optional or self.is_repeated or self.is_predicate) - @property - def is_child(self): - return self.prev_child is not None - @property def is_indexed(self) -> bool: return self.is_repeated and not self.is_unordered @@ -89,6 +85,12 @@ def type_alias(self) -> Optional[str]: return self.type + "Alias" if self.type_is_self else self.type +@dataclass +class Child: + property: Property + prev: str = "" + + @dataclass class Base: base: str @@ -107,6 +109,7 @@ class Class: bases_impl: List[Base] = field(default_factory=list) final: bool = False properties: List[Property] = field(default_factory=list) + all_children: List[Child] = field(default_factory=list) dir: pathlib.Path = pathlib.Path() imports: List[str] = field(default_factory=list) import_prefix: Optional[str] = None @@ -148,7 +151,7 @@ def db_id(self) -> str: @property def has_children(self) -> bool: - return any(p.is_child for p in self.properties) + return bool(self.all_children) @property def last_base(self) -> str: diff --git a/misc/codegen/templates/ql_parent.mustache b/misc/codegen/templates/ql_parent.mustache index 67b975183736..84bc0d79a0b7 100644 --- a/misc/codegen/templates/ql_parent.mustache +++ b/misc/codegen/templates/ql_parent.mustache @@ -9,51 +9,39 @@ import {{.}} private module Impl { {{#classes}} - private Element getImmediateChildOf{{name}}({{name}} e, int index, string partialPredicateCall) { - {{! avoid unused argument warnings on root element, assuming the root element has no children }} - {{#root}}none(){{/root}} - {{^root}} - {{! b is the base offset 0, for ease of generation }} - {{! b is constructed to be strictly greater than the indexes required for children coming from }} - {{! n is the base offset for direct children, equal to the last base offset from above }} - {{! n is constructed to be strictly greater than the indexes for children }} - exists(int b{{#bases}}, int b{{.}}{{/bases}}, int n{{#properties}}{{#is_child}}, int n{{singular}}{{/is_child}}{{/properties}} | - b = 0 - {{#bases}} - and - b{{.}} = b{{prev}} + 1 + max(int i | i = -1 or exists(getImmediateChildOf{{.}}(e, i, _)) | i) - {{/bases}} - and - n = b{{last_base}} - {{#properties}} - {{#is_child}} - {{! n is defined on top of the previous definition }} - {{! for single and optional properties it adds 1 (regardless of whether the optional property exists) }} - {{! for repeated it adds 1 + the maximum index (which works for repeated optional as well) }} - and - n{{singular}} = n{{prev_child}} + 1{{#is_repeated}}+ max(int i | i = -1 or exists(e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(i)) | i){{/is_repeated}} - {{/is_child}} - {{/properties}} and ( - none() - {{#bases}} - or - result = getImmediateChildOf{{.}}(e, index - b{{prev}}, partialPredicateCall) - {{/bases}} - {{#properties}} - {{#is_child}} - or - {{#is_repeated}} - result = e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(index - n{{prev_child}}) and partialPredicateCall = "{{singular}}(" + (index - n{{prev_child}}).toString() + ")" - {{/is_repeated}} - {{^is_repeated}} - index = n{{prev_child}} and result = e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}() and partialPredicateCall = "{{singular}}()" - {{/is_repeated}} - {{/is_child}} - {{/properties}} - )) - {{/root}} - } - + {{#final}} + private Element getImmediateChildOf{{name}}({{name}} e, int index, string partialPredicateCall) { + {{^has_children}}none(){{/has_children}} + {{#has_children}} + {{! n is the base offset 0, for ease of generation }} + {{! n is constructed to be strictly greater than the indexes for children }} + exists(int n{{#all_children}}, int n{{property.singular}}{{/all_children}} | + n = 0 + {{#all_children}} + {{#property}} + {{! n is defined on top of the previous definition }} + {{! for single and optional properties it adds 1 (regardless of whether the optional property exists) }} + {{! for repeated it adds 1 + the maximum index (which works for repeated optional as well) }} + and + n{{singular}} = n{{prev}} + 1{{#is_repeated}}+ max(int i | i = -1 or exists(e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(i)) | i){{/is_repeated}} + {{/property}} + {{/all_children}} and ( + none() + {{#all_children}} + {{#property}} + or + {{#is_repeated}} + result = e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}(index - n{{prev}}) and partialPredicateCall = "{{singular}}(" + (index - n{{prev}}).toString() + ")" + {{/is_repeated}} + {{^is_repeated}} + index = n{{prev}} and result = e.get{{#type_is_hideable}}Immediate{{/type_is_hideable}}{{singular}}() and partialPredicateCall = "{{singular}}()" + {{/is_repeated}} + {{/property}} + {{/all_children}} + )) + {{/has_children}} + } + {{/final}} {{/classes}} cached Element getImmediateChild(Element e, int index, string partialAccessor) { diff --git a/misc/codegen/test/test_ql.py b/misc/codegen/test/test_ql.py index 406c6134a477..237e2d6ecd02 100644 --- a/misc/codegen/test/test_ql.py +++ b/misc/codegen/test/test_ql.py @@ -133,22 +133,10 @@ def test_non_root_class(): assert not cls.root -@pytest.mark.parametrize( - "prev_child,is_child", [(None, False), ("", True), ("x", True)] -) -def test_is_child(prev_child, is_child): - p = ql.Property("Foo", "int", prev_child=prev_child) - assert p.is_child is is_child - - -def test_empty_class_no_children(): - cls = ql.Class("Class", properties=[]) - assert cls.has_children is False - - def test_class_no_children(): cls = ql.Class( - "Class", properties=[ql.Property("Foo", "int"), ql.Property("Bar", "string")] + "Class", + all_children=[], ) assert cls.has_children is False @@ -156,11 +144,7 @@ def test_class_no_children(): def test_class_with_children(): cls = ql.Class( "Class", - properties=[ - ql.Property("Foo", "int"), - ql.Property("Child", "x", prev_child=""), - ql.Property("Bar", "string"), - ], + all_children=[ql.Child(ql.Property("Foo", "int"))], ) assert cls.has_children is True diff --git a/misc/codegen/test/test_qlgen.py b/misc/codegen/test/test_qlgen.py index 71fba74bee62..a2434432390f 100644 --- a/misc/codegen/test/test_qlgen.py +++ b/misc/codegen/test/test_qlgen.py @@ -388,11 +388,101 @@ def test_internal_property(generate_classes): def test_children(generate_classes): + expected_parent_property = ql.Property( + singular="ParentChild", + type="int", + is_child=True, + tablename="parents", + tableparams=["this", "result"], + doc="parent child of this parent", + ) + expected_properties = [ + ql.Property( + singular="A", + type="int", + tablename="my_objects", + tableparams=["this", "result", "_"], + doc="a of this my object", + ), + ql.Property( + singular="Child1", + type="int", + tablename="my_objects", + tableparams=["this", "_", "result"], + is_child=True, + doc="child 1 of this my object", + ), + ql.Property( + singular="B", + plural="Bs", + type="int", + tablename="my_object_bs", + tableparams=["this", "index", "result"], + doc="b of this my object", + doc_plural="bs of this my object", + ), + ql.Property( + singular="Child", + plural="Children", + type="int", + tablename="my_object_children", + tableparams=["this", "index", "result"], + is_child=True, + doc="child of this my object", + doc_plural="children of this my object", + ), + ql.Property( + singular="C", + type="int", + tablename="my_object_cs", + tableparams=["this", "result"], + is_optional=True, + doc="c of this my object", + ), + ql.Property( + singular="Child3", + type="int", + tablename="my_object_child_3s", + tableparams=["this", "result"], + is_optional=True, + is_child=True, + doc="child 3 of this my object", + ), + ql.Property( + singular="D", + plural="Ds", + type="int", + tablename="my_object_ds", + tableparams=["this", "index", "result"], + is_optional=True, + doc="d of this my object", + doc_plural="ds of this my object", + ), + ql.Property( + singular="Child4", + plural="Child4s", + type="int", + tablename="my_object_child_4s", + tableparams=["this", "index", "result"], + is_optional=True, + is_child=True, + doc="child 4 of this my object", + doc_plural="child 4s of this my object", + ), + ] assert generate_classes( [ schema.Class("FakeRoot"), + schema.Class( + "Parent", + derived={"MyObject"}, + properties=[ + schema.SingleProperty("parent_child", "int", is_child=True), + ], + ), schema.Class( "MyObject", + bases=["Parent"], properties=[ schema.SingleProperty("a", "int"), schema.SingleProperty("child_1", "int", is_child=True), @@ -413,87 +503,53 @@ def test_children(generate_classes): name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"] ), ), + "Parent.qll": ( + a_ql_class_public(name="Parent"), + a_ql_stub(name="Parent"), + a_ql_class( + name="Parent", + imports=[stub_import_prefix + "Parent"], + properties=[expected_parent_property], + all_children=[ + ql.Child( + expected_parent_property, + ), + ], + ), + ), "MyObject.qll": ( - a_ql_class_public(name="MyObject"), + a_ql_class_public(name="MyObject", imports=[stub_import_prefix + "Parent"]), a_ql_stub(name="MyObject"), a_ql_class( name="MyObject", final=True, - properties=[ - ql.Property( - singular="A", - type="int", - tablename="my_objects", - tableparams=["this", "result", "_"], - doc="a of this my object", + bases=["Parent"], + bases_impl=["ParentImpl::Parent"], + properties=expected_properties, + all_children=[ + ql.Child( + expected_parent_property, ), - ql.Property( - singular="Child1", - type="int", - tablename="my_objects", - tableparams=["this", "_", "result"], - prev_child="", - doc="child 1 of this my object", + ql.Child( + expected_properties[1], + prev="ParentChild", ), - ql.Property( - singular="B", - plural="Bs", - type="int", - tablename="my_object_bs", - tableparams=["this", "index", "result"], - doc="b of this my object", - doc_plural="bs of this my object", - ), - ql.Property( - singular="Child", - plural="Children", - type="int", - tablename="my_object_children", - tableparams=["this", "index", "result"], - prev_child="Child1", - doc="child of this my object", - doc_plural="children of this my object", - ), - ql.Property( - singular="C", - type="int", - tablename="my_object_cs", - tableparams=["this", "result"], - is_optional=True, - doc="c of this my object", - ), - ql.Property( - singular="Child3", - type="int", - tablename="my_object_child_3s", - tableparams=["this", "result"], - is_optional=True, - prev_child="Child", - doc="child 3 of this my object", + ql.Child( + expected_properties[3], + prev="Child1", ), - ql.Property( - singular="D", - plural="Ds", - type="int", - tablename="my_object_ds", - tableparams=["this", "index", "result"], - is_optional=True, - doc="d of this my object", - doc_plural="ds of this my object", + ql.Child( + expected_properties[5], + prev="Child", ), - ql.Property( - singular="Child4", - plural="Child4s", - type="int", - tablename="my_object_child_4s", - tableparams=["this", "index", "result"], - is_optional=True, - prev_child="Child3", - doc="child 4 of this my object", - doc_plural="child 4s of this my object", + ql.Child( + expected_properties[7], + prev="Child3", ), ], - imports=[stub_import_prefix + "MyObject"], + imports=[ + stub_import_prefix + "internal.ParentImpl::Impl as ParentImpl" + ], ), ), } @@ -547,14 +603,13 @@ def test_single_properties(generate_classes): } -@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")]) -def test_optional_property(generate_classes, is_child, prev_child): +def test_optional_property(generate_classes): assert generate_classes( [ schema.Class("FakeRoot"), schema.Class( "MyObject", - properties=[schema.OptionalProperty("foo", "bar", is_child=is_child)], + properties=[schema.OptionalProperty("foo", "bar")], ), ] ) == { @@ -578,7 +633,6 @@ def test_optional_property(generate_classes, is_child, prev_child): tablename="my_object_foos", tableparams=["this", "result"], is_optional=True, - prev_child=prev_child, doc="foo of this my object", ), ], @@ -588,14 +642,13 @@ def test_optional_property(generate_classes, is_child, prev_child): } -@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")]) -def test_repeated_property(generate_classes, is_child, prev_child): +def test_repeated_property(generate_classes): assert generate_classes( [ schema.Class("FakeRoot"), schema.Class( "MyObject", - properties=[schema.RepeatedProperty("foo", "bar", is_child=is_child)], + properties=[schema.RepeatedProperty("foo", "bar")], ), ] ) == { @@ -619,7 +672,6 @@ def test_repeated_property(generate_classes, is_child, prev_child): type="bar", tablename="my_object_foos", tableparams=["this", "index", "result"], - prev_child=prev_child, doc="foo of this my object", doc_plural="foos of this my object", ), @@ -670,16 +722,13 @@ def test_repeated_unordered_property(generate_classes): } -@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")]) -def test_repeated_optional_property(generate_classes, is_child, prev_child): +def test_repeated_optional_property(generate_classes): assert generate_classes( [ schema.Class("FakeRoot"), schema.Class( "MyObject", - properties=[ - schema.RepeatedOptionalProperty("foo", "bar", is_child=is_child) - ], + properties=[schema.RepeatedOptionalProperty("foo", "bar")], ), ] ) == { @@ -704,7 +753,6 @@ def test_repeated_optional_property(generate_classes, is_child, prev_child): tablename="my_object_foos", tableparams=["this", "index", "result"], is_optional=True, - prev_child=prev_child, doc="foo of this my object", doc_plural="foos of this my object", ), @@ -743,14 +791,13 @@ def test_predicate_property(generate_classes): } -@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")]) -def test_single_class_property(generate_classes, is_child, prev_child): +def test_single_class_property(generate_classes): assert generate_classes( [ schema.Class("Bar"), schema.Class( "MyObject", - properties=[schema.SingleProperty("foo", "Bar", is_child=is_child)], + properties=[schema.SingleProperty("foo", "Bar")], ), ] ) == { @@ -767,7 +814,6 @@ def test_single_class_property(generate_classes, is_child, prev_child): type="Bar", tablename="my_objects", tableparams=["this", "result"], - prev_child=prev_child, doc="foo of this my object", type_is_codegen_class=True, ), diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index c15913176a79..b24b912a3e07 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -577,7 +577,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126 -lib/codeql/rust/elements/internal/generated/ParentChild.qll 24db280d50c02a657a862626ea611a6fa8dab2e03aa4fd86fb61dd69032df333 2b1b2da55bd6f8fe30192afb83843eebd24c9b3e2561a714da4977bccb4ef6cc +lib/codeql/rust/elements/internal/generated/ParentChild.qll ff51da9dd3d1f739057f764f46244fb361c950bf7d1f61007e33d92581ec45e1 bebe239202e79d5a31e29f42f5e9d88139cf07e0fb2541fdd95b8e65154d2776 lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd @@ -707,7 +707,7 @@ test/extractor-tests/generated/FormatArgsExpr/FormatArgsArg.ql 5abcb565dcd2822e2 test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr.ql 243c2f9d830f1eae915749e81ac78d3c140280385b0002d10fcc4d2feaf14711 72b90a99a8b1c16baf1e254e1e3463c3ce5409624a2a90829122717d4e5a2b74 test/extractor-tests/generated/FormatArgsExpr/FormatArgument.ql 0a345eb48dba8e535d12a00e88008e71b3ce692fbf8f9686c8885e158635dffe eab1f230fd572474a3f304f97d05bbf4a004c52773aaf2d34f999192244c0b80 test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql 24108cdc54feb77c24bb7894744e36e374f0c03d46d6e6c3fcb2012b1ad117f6 05a6b6f51029ee1a15039aa9d738bb1fd7145148f1aad790198fba832572c719 -test/extractor-tests/generated/Function/Function.ql 3fccfb248ffe18fb1df1c12feba1c07f1a41edac58c9d77087971a8f94a013d7 1500438db913c101747911fd570a2f2197e4282f0156d1acd9a0026aec3cceb8 +test/extractor-tests/generated/Function/Function.ql 3a30225887bd7d6fbcd6dda1c946683a2b0e289f45bc8a8fe832abe662024d4e 225475fa02be09a1b0c0fcd56a003b026b3ac938f591a47e8fbead4873b2b202 test/extractor-tests/generated/GenericArgList/GenericArgList.ql 9bd6873e56a381a693fed0f595d60d973d0073ba7afa303750d5c6a0b887a811 0b373079f65aa91cacabfc9729c91215082a915197eb657b66bcdb3b6d5e7e53 test/extractor-tests/generated/GenericParamList/GenericParamList.ql 206f270690f5c142777d43cf87b65d6dda5ec9f3953c17ee943fe3d0e7b7761c 38a6e0bbca916778f85b106609df6d5929baed006d55811ec0d71c75fe137e92 test/extractor-tests/generated/IdentPat/IdentPat.ql 23006eddf0ca1188e11ba5ee25ad62a83157b83e0b99119bf924c7f74fd8e70d 6e572f48f607f0ced309113304019ccc0a828f6ddd71e818369504dcf832a0b5 diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll index 30ae1ef0be93..0d2f567f798d 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -9,107 +9,29 @@ import codeql.rust.elements.internal.ExtractorStep import codeql.rust.elements.internal.NamedCrate private module Impl { - private Element getImmediateChildOfElement(Element e, int index, string partialPredicateCall) { - none() - } - private Element getImmediateChildOfExtractorStep( ExtractorStep e, int index, string partialPredicateCall ) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLocatable(Locatable e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfNamedCrate(NamedCrate e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfUnextracted( - Unextracted e, int index, string partialPredicateCall - ) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAstNode(AstNode e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfCrate(Crate e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfFormat(Format e, int index, string partialPredicateCall) { - exists( - int b, int bLocatable, int n, int nArgumentRef, int nWidthArgument, int nPrecisionArgument - | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and + exists(int n, int nArgumentRef, int nWidthArgument, int nPrecisionArgument | + n = 0 and nArgumentRef = n + 1 and nWidthArgument = nArgumentRef + 1 and nPrecisionArgument = nWidthArgument + 1 and ( none() or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - or index = n and result = e.getArgumentRef() and partialPredicateCall = "ArgumentRef()" or index = nArgumentRef and @@ -126,90 +48,36 @@ private module Impl { private Element getImmediateChildOfFormatArgument( FormatArgument e, int index, string partialPredicateCall ) { - exists(int b, int bLocatable, int n, int nVariable | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and + exists(int n, int nVariable | + n = 0 and nVariable = n + 1 and ( none() or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - or index = n and result = e.getVariable() and partialPredicateCall = "Variable()" ) ) } private Element getImmediateChildOfMissing(Missing e, int index, string partialPredicateCall) { - exists(int b, int bUnextracted, int n | - b = 0 and - bUnextracted = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnextracted(e, i, _)) | i) and - n = bUnextracted and - ( - none() - or - result = getImmediateChildOfUnextracted(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnimplemented( Unimplemented e, int index, string partialPredicateCall ) { - exists(int b, int bUnextracted, int n | - b = 0 and - bUnextracted = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnextracted(e, i, _)) | i) and - n = bUnextracted and - ( - none() - or - result = getImmediateChildOfUnextracted(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAbi(Abi e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } - private Element getImmediateChildOfAddressable( - Addressable e, int index, string partialPredicateCall - ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } + private Element getImmediateChildOfAbi(Abi e, int index, string partialPredicateCall) { none() } private Element getImmediateChildOfArgList(ArgList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nArg | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nArg | + n = 0 and nArg = n + 1 + max(int i | i = -1 or exists(e.getArg(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getArg(index - n) and partialPredicateCall = "Arg(" + (index - n).toString() + ")" ) @@ -217,45 +85,19 @@ private module Impl { } private Element getImmediateChildOfAsmDirSpec(AsmDirSpec e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAsmOperand(AsmOperand e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAsmOperandExpr( AsmOperandExpr e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nInExpr, int nOutExpr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nInExpr, int nOutExpr | + n = 0 and nInExpr = n + 1 and nOutExpr = nInExpr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getInExpr() and partialPredicateCall = "InExpr()" or index = nInExpr and result = e.getOutExpr() and partialPredicateCall = "OutExpr()" @@ -264,74 +106,31 @@ private module Impl { } private Element getImmediateChildOfAsmOption(AsmOption e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAsmPiece(AsmPiece e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAsmRegSpec(AsmRegSpec e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nIdentifier | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nIdentifier | + n = 0 and nIdentifier = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getIdentifier() and partialPredicateCall = "Identifier()" ) ) } - private Element getImmediateChildOfAssocItem(AssocItem e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfAssocItemList( AssocItemList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAssocItem, int nAttr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAssocItem, int nAttr | + n = 0 and nAssocItem = n + 1 + max(int i | i = -1 or exists(e.getAssocItem(i)) | i) and nAttr = nAssocItem + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAssocItem(index - n) and partialPredicateCall = "AssocItem(" + (index - n).toString() + ")" or @@ -342,54 +141,26 @@ private module Impl { } private Element getImmediateChildOfAttr(Attr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nMeta | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nMeta | + n = 0 and nMeta = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getMeta() and partialPredicateCall = "Meta()" ) ) } - private Element getImmediateChildOfCallable(Callable e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nParamList, int nAttr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - nParamList = n + 1 and - nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or - index = n and result = e.getParamList() and partialPredicateCall = "ParamList()" - or - result = e.getAttr(index - nParamList) and - partialPredicateCall = "Attr(" + (index - nParamList).toString() + ")" - ) - ) - } - private Element getImmediateChildOfClosureBinder( ClosureBinder e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nGenericParamList | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nGenericParamList | + n = 0 and nGenericParamList = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" @@ -397,46 +168,16 @@ private module Impl { ) } - private Element getImmediateChildOfExpr(Expr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfExternItem(ExternItem e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfExternItemList( ExternItemList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAttr, int nExternItem | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nExternItem | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExternItem = nAttr + 1 + max(int i | i = -1 or exists(e.getExternItem(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -446,33 +187,16 @@ private module Impl { ) } - private Element getImmediateChildOfFieldList(FieldList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfFormatArgsArg( FormatArgsArg e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nExpr, int nName | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nExpr, int nName | + n = 0 and nExpr = n + 1 and nName = nExpr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" or index = nExpr and result = e.getName() and partialPredicateCall = "Name()" @@ -480,66 +204,30 @@ private module Impl { ) } - private Element getImmediateChildOfGenericArg(GenericArg e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfGenericArgList( GenericArgList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nGenericArg | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nGenericArg | + n = 0 and nGenericArg = n + 1 + max(int i | i = -1 or exists(e.getGenericArg(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getGenericArg(index - n) and partialPredicateCall = "GenericArg(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfGenericParam( - GenericParam e, int index, string partialPredicateCall - ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfGenericParamList( GenericParamList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nGenericParam | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nGenericParam | + n = 0 and nGenericParam = n + 1 + max(int i | i = -1 or exists(e.getGenericParam(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getGenericParam(index - n) and partialPredicateCall = "GenericParam(" + (index - n).toString() + ")" ) @@ -547,17 +235,13 @@ private module Impl { } private Element getImmediateChildOfItemList(ItemList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nItem | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nItem | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nItem = nAttr + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -568,48 +252,36 @@ private module Impl { } private Element getImmediateChildOfLabel(Label e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nLifetime | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nLifetime | + n = 0 and nLifetime = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" ) ) } private Element getImmediateChildOfLetElse(LetElse e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nBlockExpr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nBlockExpr | + n = 0 and nBlockExpr = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getBlockExpr() and partialPredicateCall = "BlockExpr()" ) ) } private Element getImmediateChildOfMacroItems(MacroItems e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nItem | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nItem | + n = 0 and nItem = n + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getItem(index - n) and partialPredicateCall = "Item(" + (index - n).toString() + ")" ) @@ -617,10 +289,8 @@ private module Impl { } private Element getImmediateChildOfMatchArm(MatchArm e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nExpr, int nGuard, int nPat | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nExpr, int nGuard, int nPat | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and nGuard = nExpr + 1 and @@ -628,8 +298,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -645,17 +313,13 @@ private module Impl { private Element getImmediateChildOfMatchArmList( MatchArmList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nArm, int nAttr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nArm, int nAttr | + n = 0 and nArm = n + 1 + max(int i | i = -1 or exists(e.getArm(i)) | i) and nAttr = nArm + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getArm(index - n) and partialPredicateCall = "Arm(" + (index - n).toString() + ")" or @@ -666,34 +330,26 @@ private module Impl { } private Element getImmediateChildOfMatchGuard(MatchGuard e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nCondition | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nCondition | + n = 0 and nCondition = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getCondition() and partialPredicateCall = "Condition()" ) ) } private Element getImmediateChildOfMeta(Meta e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nExpr, int nPath, int nTokenTree | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nExpr, int nPath, int nTokenTree | + n = 0 and nExpr = n + 1 and nPath = nExpr + 1 and nTokenTree = nPath + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" or index = nExpr and result = e.getPath() and partialPredicateCall = "Path()" @@ -703,51 +359,16 @@ private module Impl { ) } - private Element getImmediateChildOfName(Name e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfParamBase(ParamBase e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nTypeRepr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nTypeRepr = nAttr + 1 and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" - ) - ) - } + private Element getImmediateChildOfName(Name e, int index, string partialPredicateCall) { none() } private Element getImmediateChildOfParamList(ParamList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nParam, int nSelfParam | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nParam, int nSelfParam | + n = 0 and nParam = n + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and nSelfParam = nParam + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getParam(index - n) and partialPredicateCall = "Param(" + (index - n).toString() + ")" or @@ -759,47 +380,26 @@ private module Impl { private Element getImmediateChildOfParenthesizedArgList( ParenthesizedArgList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nTypeArg | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nTypeArg | + n = 0 and nTypeArg = n + 1 + max(int i | i = -1 or exists(e.getTypeArg(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getTypeArg(index - n) and partialPredicateCall = "TypeArg(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfPat(Pat e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfPath(Path e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nQualifier, int nSegment | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nQualifier, int nSegment | + n = 0 and nQualifier = n + 1 and nSegment = nQualifier + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getQualifier() and partialPredicateCall = "Qualifier()" or index = nQualifier and result = e.getSegment() and partialPredicateCall = "Segment()" @@ -811,12 +411,10 @@ private module Impl { PathSegment e, int index, string partialPredicateCall ) { exists( - int b, int bAstNode, int n, int nGenericArgList, int nIdentifier, int nParenthesizedArgList, - int nRetType, int nReturnTypeSyntax, int nTypeRepr, int nTraitTypeRepr + int n, int nGenericArgList, int nIdentifier, int nParenthesizedArgList, int nRetType, + int nReturnTypeSyntax, int nTypeRepr, int nTraitTypeRepr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + n = 0 and nGenericArgList = n + 1 and nIdentifier = nGenericArgList + 1 and nParenthesizedArgList = nIdentifier + 1 and @@ -827,8 +425,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getGenericArgList() and partialPredicateCall = "GenericArgList()" or index = nGenericArgList and @@ -859,47 +455,26 @@ private module Impl { } private Element getImmediateChildOfRename(Rename e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nName | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nName | + n = 0 and nName = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getName() and partialPredicateCall = "Name()" ) ) } - private Element getImmediateChildOfResolvable(Resolvable e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfRetTypeRepr( RetTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nTypeRepr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) @@ -908,30 +483,17 @@ private module Impl { private Element getImmediateChildOfReturnTypeSyntax( ReturnTypeSyntax e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfSourceFile(SourceFile e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nItem | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nItem | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nItem = nAttr + 1 + max(int i | i = -1 or exists(e.getItem(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -941,32 +503,15 @@ private module Impl { ) } - private Element getImmediateChildOfStmt(Stmt e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfStmtList(StmtList e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nStatement, int nTailExpr | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nStatement, int nTailExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nStatement = nAttr + 1 + max(int i | i = -1 or exists(e.getStatement(i)) | i) and nTailExpr = nStatement + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -981,18 +526,14 @@ private module Impl { private Element getImmediateChildOfStructExprField( StructExprField e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAttr, int nExpr, int nIdentifier | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nExpr, int nIdentifier | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and nIdentifier = nExpr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1006,18 +547,14 @@ private module Impl { private Element getImmediateChildOfStructExprFieldList( StructExprFieldList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAttr, int nField, int nSpread | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nField, int nSpread | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and nSpread = nField + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1032,12 +569,8 @@ private module Impl { private Element getImmediateChildOfStructField( StructField e, int index, string partialPredicateCall ) { - exists( - int b, int bAstNode, int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility - | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nDefault, int nName, int nTypeRepr, int nVisibility | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nDefault = nAttr + 1 and nName = nDefault + 1 and @@ -1046,8 +579,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1065,18 +596,14 @@ private module Impl { private Element getImmediateChildOfStructPatField( StructPatField e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nAttr, int nIdentifier, int nPat | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nIdentifier, int nPat | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nIdentifier = nAttr + 1 and nPat = nIdentifier + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1090,17 +617,13 @@ private module Impl { private Element getImmediateChildOfStructPatFieldList( StructPatFieldList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nField, int nRestPat | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nField, int nRestPat | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and nRestPat = nField + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" or @@ -1109,45 +632,19 @@ private module Impl { ) } - private Element getImmediateChildOfToken(Token e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfTokenTree(TokenTree e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfTupleField(TupleField e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nAttr, int nTypeRepr, int nVisibility | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nAttr, int nTypeRepr, int nVisibility | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nTypeRepr = nAttr + 1 and nVisibility = nTypeRepr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1159,18 +656,14 @@ private module Impl { } private Element getImmediateChildOfTypeBound(TypeBound e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nLifetime, int nTypeRepr, int nUseBoundGenericArgs | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nLifetime, int nTypeRepr, int nUseBoundGenericArgs | + n = 0 and nLifetime = n + 1 and nTypeRepr = nLifetime + 1 and nUseBoundGenericArgs = nTypeRepr + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" or index = nLifetime and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" @@ -1185,63 +678,27 @@ private module Impl { private Element getImmediateChildOfTypeBoundList( TypeBoundList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nBound | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nBound | + n = 0 and nBound = n + 1 + max(int i | i = -1 or exists(e.getBound(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getBound(index - n) and partialPredicateCall = "Bound(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfTypeRepr(TypeRepr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfUseBoundGenericArg( - UseBoundGenericArg e, int index, string partialPredicateCall - ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfUseBoundGenericArgs( UseBoundGenericArgs e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nUseBoundGenericArg | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nUseBoundGenericArg | + n = 0 and nUseBoundGenericArg = n + 1 + max(int i | i = -1 or exists(e.getUseBoundGenericArg(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getUseBoundGenericArg(index - n) and partialPredicateCall = "UseBoundGenericArg(" + (index - n).toString() + ")" ) @@ -1249,18 +706,14 @@ private module Impl { } private Element getImmediateChildOfUseTree(UseTree e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nPath, int nRename, int nUseTreeList | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nPath, int nRename, int nUseTreeList | + n = 0 and nPath = n + 1 and nRename = nPath + 1 and nUseTreeList = nRename + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getPath() and partialPredicateCall = "Path()" or index = nPath and result = e.getRename() and partialPredicateCall = "Rename()" @@ -1273,16 +726,12 @@ private module Impl { private Element getImmediateChildOfUseTreeList( UseTreeList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nUseTree | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nUseTree | + n = 0 and nUseTree = n + 1 + max(int i | i = -1 or exists(e.getUseTree(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getUseTree(index - n) and partialPredicateCall = "UseTree(" + (index - n).toString() + ")" ) @@ -1292,16 +741,12 @@ private module Impl { private Element getImmediateChildOfVariantList( VariantList e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nVariant | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nVariant | + n = 0 and nVariant = n + 1 + max(int i | i = -1 or exists(e.getVariant(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getVariant(index - n) and partialPredicateCall = "Variant(" + (index - n).toString() + ")" ) @@ -1309,16 +754,12 @@ private module Impl { } private Element getImmediateChildOfVisibility(Visibility e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nPath | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nPath | + n = 0 and nPath = n + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getPath() and partialPredicateCall = "Path()" ) ) @@ -1327,16 +768,12 @@ private module Impl { private Element getImmediateChildOfWhereClause( WhereClause e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nPredicate | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nPredicate | + n = 0 and nPredicate = n + 1 + max(int i | i = -1 or exists(e.getPredicate(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getPredicate(index - n) and partialPredicateCall = "Predicate(" + (index - n).toString() + ")" ) @@ -1344,13 +781,8 @@ private module Impl { } private Element getImmediateChildOfWherePred(WherePred e, int index, string partialPredicateCall) { - exists( - int b, int bAstNode, int n, int nGenericParamList, int nLifetime, int nTypeRepr, - int nTypeBoundList - | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nGenericParamList, int nLifetime, int nTypeRepr, int nTypeBoundList | + n = 0 and nGenericParamList = n + 1 and nLifetime = nGenericParamList + 1 and nTypeRepr = nLifetime + 1 and @@ -1358,8 +790,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" @@ -1377,41 +807,16 @@ private module Impl { ) } - private Element getImmediateChildOfArrayExpr(ArrayExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nExpr, int nAttr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and - nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = e.getExpr(index - n) and - partialPredicateCall = "Expr(" + (index - n).toString() + ")" - or - result = e.getAttr(index - nExpr) and - partialPredicateCall = "Attr(" + (index - nExpr).toString() + ")" - ) - ) - } - private Element getImmediateChildOfArrayExprInternal( ArrayExprInternal e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1424,17 +829,13 @@ private module Impl { private Element getImmediateChildOfArrayTypeRepr( ArrayTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nConstArg, int nElementTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nConstArg, int nElementTypeRepr | + n = 0 and nConstArg = n + 1 and nElementTypeRepr = nConstArg + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getConstArg() and partialPredicateCall = "ConstArg()" or index = nConstArg and @@ -1447,48 +848,30 @@ private module Impl { private Element getImmediateChildOfAsmClobberAbi( AsmClobberAbi e, int index, string partialPredicateCall ) { - exists(int b, int bAsmPiece, int n | - b = 0 and - bAsmPiece = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmPiece(e, i, _)) | i) and - n = bAsmPiece and - ( - none() - or - result = getImmediateChildOfAsmPiece(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAsmConst(AsmConst e, int index, string partialPredicateCall) { - exists(int b, int bAsmOperand, int n, int nExpr | - b = 0 and - bAsmOperand = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmOperand(e, i, _)) | i) and - n = bAsmOperand and + exists(int n, int nExpr | + n = 0 and nExpr = n + 1 and ( none() or - result = getImmediateChildOfAsmOperand(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" ) ) } private Element getImmediateChildOfAsmExpr(AsmExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAsmPiece, int nAttr, int nTemplate | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAsmPiece, int nAttr, int nTemplate | + n = 0 and nAsmPiece = n + 1 + max(int i | i = -1 or exists(e.getAsmPiece(i)) | i) and nAttr = nAsmPiece + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nTemplate = nAttr + 1 + max(int i | i = -1 or exists(e.getTemplate(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAsmPiece(index - n) and partialPredicateCall = "AsmPiece(" + (index - n).toString() + ")" or @@ -1502,17 +885,12 @@ private module Impl { } private Element getImmediateChildOfAsmLabel(AsmLabel e, int index, string partialPredicateCall) { - exists(int b, int bAsmOperand, int n, int nBlockExpr | - b = 0 and - bAsmOperand = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmOperand(e, i, _)) | i) and - n = bAsmOperand and + exists(int n, int nBlockExpr | + n = 0 and nBlockExpr = n + 1 and ( none() or - result = getImmediateChildOfAsmOperand(e, index - b, partialPredicateCall) - or index = n and result = e.getBlockExpr() and partialPredicateCall = "BlockExpr()" ) ) @@ -1521,17 +899,13 @@ private module Impl { private Element getImmediateChildOfAsmOperandNamed( AsmOperandNamed e, int index, string partialPredicateCall ) { - exists(int b, int bAsmPiece, int n, int nAsmOperand, int nName | - b = 0 and - bAsmPiece = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmPiece(e, i, _)) | i) and - n = bAsmPiece and + exists(int n, int nAsmOperand, int nName | + n = 0 and nAsmOperand = n + 1 and nName = nAsmOperand + 1 and ( none() or - result = getImmediateChildOfAsmPiece(e, index - b, partialPredicateCall) - or index = n and result = e.getAsmOperand() and partialPredicateCall = "AsmOperand()" or index = nAsmOperand and result = e.getName() and partialPredicateCall = "Name()" @@ -1542,16 +916,12 @@ private module Impl { private Element getImmediateChildOfAsmOptionsList( AsmOptionsList e, int index, string partialPredicateCall ) { - exists(int b, int bAsmPiece, int n, int nAsmOption | - b = 0 and - bAsmPiece = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmPiece(e, i, _)) | i) and - n = bAsmPiece and + exists(int n, int nAsmOption | + n = 0 and nAsmOption = n + 1 + max(int i | i = -1 or exists(e.getAsmOption(i)) | i) and ( none() or - result = getImmediateChildOfAsmPiece(e, index - b, partialPredicateCall) - or result = e.getAsmOption(index - n) and partialPredicateCall = "AsmOption(" + (index - n).toString() + ")" ) @@ -1561,19 +931,14 @@ private module Impl { private Element getImmediateChildOfAsmRegOperand( AsmRegOperand e, int index, string partialPredicateCall ) { - exists(int b, int bAsmOperand, int n, int nAsmDirSpec, int nAsmOperandExpr, int nAsmRegSpec | - b = 0 and - bAsmOperand = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmOperand(e, i, _)) | i) and - n = bAsmOperand and + exists(int n, int nAsmDirSpec, int nAsmOperandExpr, int nAsmRegSpec | + n = 0 and nAsmDirSpec = n + 1 and nAsmOperandExpr = nAsmDirSpec + 1 and nAsmRegSpec = nAsmOperandExpr + 1 and ( none() or - result = getImmediateChildOfAsmOperand(e, index - b, partialPredicateCall) - or index = n and result = e.getAsmDirSpec() and partialPredicateCall = "AsmDirSpec()" or index = nAsmDirSpec and @@ -1588,17 +953,12 @@ private module Impl { } private Element getImmediateChildOfAsmSym(AsmSym e, int index, string partialPredicateCall) { - exists(int b, int bAsmOperand, int n, int nPath | - b = 0 and - bAsmOperand = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAsmOperand(e, i, _)) | i) and - n = bAsmOperand and + exists(int n, int nPath | + n = 0 and nPath = n + 1 and ( none() or - result = getImmediateChildOfAsmOperand(e, index - b, partialPredicateCall) - or index = n and result = e.getPath() and partialPredicateCall = "Path()" ) ) @@ -1608,13 +968,10 @@ private module Impl { AssocTypeArg e, int index, string partialPredicateCall ) { exists( - int b, int bGenericArg, int n, int nConstArg, int nGenericArgList, int nIdentifier, - int nParamList, int nRetType, int nReturnTypeSyntax, int nTypeRepr, int nTypeBoundList + int n, int nConstArg, int nGenericArgList, int nIdentifier, int nParamList, int nRetType, + int nReturnTypeSyntax, int nTypeRepr, int nTypeBoundList | - b = 0 and - bGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericArg(e, i, _)) | i) and - n = bGenericArg and + n = 0 and nConstArg = n + 1 and nGenericArgList = nConstArg + 1 and nIdentifier = nGenericArgList + 1 and @@ -1626,8 +983,6 @@ private module Impl { ( none() or - result = getImmediateChildOfGenericArg(e, index - b, partialPredicateCall) - or index = n and result = e.getConstArg() and partialPredicateCall = "ConstArg()" or index = nConstArg and @@ -1658,17 +1013,13 @@ private module Impl { } private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1678,17 +1029,13 @@ private module Impl { } private Element getImmediateChildOfBecomeExpr(BecomeExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1698,18 +1045,14 @@ private module Impl { } private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nLhs, int nRhs | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nLhs, int nRhs | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nLhs = nAttr + 1 and nRhs = nLhs + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1721,34 +1064,26 @@ private module Impl { } private Element getImmediateChildOfBoxPat(BoxPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getPat() and partialPredicateCall = "Pat()" ) ) } private Element getImmediateChildOfBreakExpr(BreakExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr, int nLifetime | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr, int nLifetime | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and nLifetime = nExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1759,41 +1094,15 @@ private module Impl { ) } - private Element getImmediateChildOfCallExprBase( - CallExprBase e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nArgList, int nAttr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nArgList = n + 1 and - nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getArgList() and partialPredicateCall = "ArgList()" - or - result = e.getAttr(index - nArgList) and - partialPredicateCall = "Attr(" + (index - nArgList).toString() + ")" - ) - ) - } - private Element getImmediateChildOfCastExpr(CastExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr, int nTypeRepr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr, int nTypeRepr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and nTypeRepr = nExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1807,23 +1116,22 @@ private module Impl { private Element getImmediateChildOfClosureExpr( ClosureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bCallable, int n, int nBody, int nClosureBinder, int nRetType | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bCallable = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallable(e, i, _)) | i) and - n = bCallable and - nBody = n + 1 and + exists(int n, int nParamList, int nAttr, int nBody, int nClosureBinder, int nRetType | + n = 0 and + nParamList = n + 1 and + nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nBody = nAttr + 1 and nClosureBinder = nBody + 1 and nRetType = nClosureBinder + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) + index = n and result = e.getParamList() and partialPredicateCall = "ParamList()" or - result = getImmediateChildOfCallable(e, index - bExpr, partialPredicateCall) + result = e.getAttr(index - nParamList) and + partialPredicateCall = "Attr(" + (index - nParamList).toString() + ")" or - index = n and result = e.getBody() and partialPredicateCall = "Body()" + index = nAttr and result = e.getBody() and partialPredicateCall = "Body()" or index = nBody and result = e.getClosureBinder() and partialPredicateCall = "ClosureBinder()" or @@ -1833,30 +1141,16 @@ private module Impl { } private Element getImmediateChildOfComment(Comment e, int index, string partialPredicateCall) { - exists(int b, int bToken, int n | - b = 0 and - bToken = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfToken(e, i, _)) | i) and - n = bToken and - ( - none() - or - result = getImmediateChildOfToken(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfConstArg(ConstArg e, int index, string partialPredicateCall) { - exists(int b, int bGenericArg, int n, int nExpr | - b = 0 and - bGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericArg(e, i, _)) | i) and - n = bGenericArg and + exists(int n, int nExpr | + n = 0 and nExpr = n + 1 and ( none() or - result = getImmediateChildOfGenericArg(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" ) ) @@ -1865,27 +1159,20 @@ private module Impl { private Element getImmediateChildOfConstBlockPat( ConstBlockPat e, int index, string partialPredicateCall ) { - exists(int b, int bPat, int n, int nBlockExpr | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nBlockExpr | + n = 0 and nBlockExpr = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getBlockExpr() and partialPredicateCall = "BlockExpr()" ) ) } private Element getImmediateChildOfConstParam(ConstParam e, int index, string partialPredicateCall) { - exists(int b, int bGenericParam, int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr | - b = 0 and - bGenericParam = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericParam(e, i, _)) | i) and - n = bGenericParam and + exists(int n, int nAttr, int nDefaultVal, int nName, int nTypeRepr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nDefaultVal = nAttr + 1 and nName = nDefaultVal + 1 and @@ -1893,8 +1180,6 @@ private module Impl { ( none() or - result = getImmediateChildOfGenericParam(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1910,17 +1195,13 @@ private module Impl { private Element getImmediateChildOfContinueExpr( ContinueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr, int nLifetime | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nLifetime | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nLifetime = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1932,50 +1213,38 @@ private module Impl { private Element getImmediateChildOfDynTraitTypeRepr( DynTraitTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeBoundList | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeBoundList | + n = 0 and nTypeBoundList = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" ) ) } private Element getImmediateChildOfExprStmt(ExprStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nExpr | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nExpr | + n = 0 and nExpr = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getExpr() and partialPredicateCall = "Expr()" ) ) } private Element getImmediateChildOfFieldExpr(FieldExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nContainer, int nIdentifier | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nContainer, int nIdentifier | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nContainer = nAttr + 1 and nIdentifier = nContainer + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -1989,18 +1258,14 @@ private module Impl { private Element getImmediateChildOfFnPtrTypeRepr( FnPtrTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nAbi, int nParamList, int nRetType | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nAbi, int nParamList, int nRetType | + n = 0 and nAbi = n + 1 and nParamList = nAbi + 1 and nRetType = nParamList + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getAbi() and partialPredicateCall = "Abi()" or index = nAbi and result = e.getParamList() and partialPredicateCall = "ParamList()" @@ -2013,17 +1278,13 @@ private module Impl { private Element getImmediateChildOfForTypeRepr( ForTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nGenericParamList, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nGenericParamList, int nTypeRepr | + n = 0 and nGenericParamList = n + 1 and nTypeRepr = nGenericParamList + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getGenericParamList() and partialPredicateCall = "GenericParamList()" @@ -2038,10 +1299,8 @@ private module Impl { private Element getImmediateChildOfFormatArgsExpr( FormatArgsExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nArg, int nAttr, int nTemplate, int nFormat | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nArg, int nAttr, int nTemplate, int nFormat | + n = 0 and nArg = n + 1 + max(int i | i = -1 or exists(e.getArg(i)) | i) and nAttr = nArg + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nTemplate = nAttr + 1 and @@ -2049,8 +1308,6 @@ private module Impl { ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getArg(index - n) and partialPredicateCall = "Arg(" + (index - n).toString() + ")" or @@ -2066,18 +1323,14 @@ private module Impl { } private Element getImmediateChildOfIdentPat(IdentPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nAttr, int nName, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nAttr, int nName, int nPat | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nName = nAttr + 1 and nPat = nName + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2089,10 +1342,8 @@ private module Impl { } private Element getImmediateChildOfIfExpr(IfExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nCondition, int nElse, int nThen | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nCondition, int nElse, int nThen | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nCondition = nAttr + 1 and nElse = nCondition + 1 and @@ -2100,8 +1351,6 @@ private module Impl { ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2117,34 +1366,26 @@ private module Impl { private Element getImmediateChildOfImplTraitTypeRepr( ImplTraitTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeBoundList | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeBoundList | + n = 0 and nTypeBoundList = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeBoundList() and partialPredicateCall = "TypeBoundList()" ) ) } private Element getImmediateChildOfIndexExpr(IndexExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nBase, int nIndex | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nBase, int nIndex | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nBase = nAttr + 1 and nIndex = nBase + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2158,71 +1399,18 @@ private module Impl { private Element getImmediateChildOfInferTypeRepr( InferTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and - ( - none() - or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfItem(Item e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int bAddressable, int n, int nAttributeMacroExpansion | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - bAddressable = - bStmt + 1 + max(int i | i = -1 or exists(getImmediateChildOfAddressable(e, i, _)) | i) and - n = bAddressable and - nAttributeMacroExpansion = n + 1 and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfAddressable(e, index - bStmt, partialPredicateCall) - or - index = n and - result = e.getAttributeMacroExpansion() and - partialPredicateCall = "AttributeMacroExpansion()" - ) - ) - } - - private Element getImmediateChildOfLabelableExpr( - LabelableExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nLabel | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nLabel = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getLabel() and partialPredicateCall = "Label()" - ) - ) + none() } private Element getImmediateChildOfLetExpr(LetExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nScrutinee, int nPat | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nScrutinee, int nPat | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nScrutinee = nAttr + 1 and nPat = nScrutinee + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2234,12 +1422,8 @@ private module Impl { } private Element getImmediateChildOfLetStmt(LetStmt e, int index, string partialPredicateCall) { - exists( - int b, int bStmt, int n, int nAttr, int nInitializer, int nLetElse, int nPat, int nTypeRepr - | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nAttr, int nInitializer, int nLetElse, int nPat, int nTypeRepr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nInitializer = nAttr + 1 and nLetElse = nInitializer + 1 and @@ -2248,8 +1432,6 @@ private module Impl { ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2265,33 +1447,18 @@ private module Impl { } private Element getImmediateChildOfLifetime(Lifetime e, int index, string partialPredicateCall) { - exists(int b, int bUseBoundGenericArg, int n | - b = 0 and - bUseBoundGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUseBoundGenericArg(e, i, _)) | i) and - n = bUseBoundGenericArg and - ( - none() - or - result = getImmediateChildOfUseBoundGenericArg(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfLifetimeArg( LifetimeArg e, int index, string partialPredicateCall ) { - exists(int b, int bGenericArg, int n, int nLifetime | - b = 0 and - bGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericArg(e, i, _)) | i) and - n = bGenericArg and + exists(int n, int nLifetime | + n = 0 and nLifetime = n + 1 and ( none() or - result = getImmediateChildOfGenericArg(e, index - b, partialPredicateCall) - or index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" ) ) @@ -2300,19 +1467,14 @@ private module Impl { private Element getImmediateChildOfLifetimeParam( LifetimeParam e, int index, string partialPredicateCall ) { - exists(int b, int bGenericParam, int n, int nAttr, int nLifetime, int nTypeBoundList | - b = 0 and - bGenericParam = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericParam(e, i, _)) | i) and - n = bGenericParam and + exists(int n, int nAttr, int nLifetime, int nTypeBoundList | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nLifetime = nAttr + 1 and nTypeBoundList = nLifetime + 1 and ( none() or - result = getImmediateChildOfGenericParam(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2328,16 +1490,12 @@ private module Impl { private Element getImmediateChildOfLiteralExpr( LiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" ) @@ -2345,16 +1503,12 @@ private module Impl { } private Element getImmediateChildOfLiteralPat(LiteralPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nLiteral | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nLiteral | + n = 0 and nLiteral = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getLiteral() and partialPredicateCall = "Literal()" ) ) @@ -2363,17 +1517,13 @@ private module Impl { private Element getImmediateChildOfMacroBlockExpr( MacroBlockExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nTailExpr, int nStatement | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nTailExpr, int nStatement | + n = 0 and nTailExpr = n + 1 and nStatement = nTailExpr + 1 + max(int i | i = -1 or exists(e.getStatement(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getTailExpr() and partialPredicateCall = "TailExpr()" or result = e.getStatement(index - nTailExpr) and @@ -2383,32 +1533,24 @@ private module Impl { } private Element getImmediateChildOfMacroExpr(MacroExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nMacroCall | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nMacroCall | + n = 0 and nMacroCall = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getMacroCall() and partialPredicateCall = "MacroCall()" ) ) } private Element getImmediateChildOfMacroPat(MacroPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nMacroCall | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nMacroCall | + n = 0 and nMacroCall = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getMacroCall() and partialPredicateCall = "MacroCall()" ) ) @@ -2417,34 +1559,26 @@ private module Impl { private Element getImmediateChildOfMacroTypeRepr( MacroTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nMacroCall | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nMacroCall | + n = 0 and nMacroCall = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getMacroCall() and partialPredicateCall = "MacroCall()" ) ) } private Element getImmediateChildOfMatchExpr(MatchExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nScrutinee, int nMatchArmList | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nScrutinee, int nMatchArmList | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nScrutinee = nAttr + 1 and nMatchArmList = nScrutinee + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2458,49 +1592,26 @@ private module Impl { } private Element getImmediateChildOfNameRef(NameRef e, int index, string partialPredicateCall) { - exists(int b, int bUseBoundGenericArg, int n | - b = 0 and - bUseBoundGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUseBoundGenericArg(e, i, _)) | i) and - n = bUseBoundGenericArg and - ( - none() - or - result = getImmediateChildOfUseBoundGenericArg(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfNeverTypeRepr( NeverTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and - ( - none() - or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOffsetOfExpr( OffsetOfExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr, int nField, int nTypeRepr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nField, int nTypeRepr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and nTypeRepr = nField + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2513,16 +1624,12 @@ private module Impl { } private Element getImmediateChildOfOrPat(OrPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 + max(int i | i = -1 or exists(e.getPat(i)) | i) and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getPat(index - n) and partialPredicateCall = "Pat(" + (index - n).toString() + ")" ) @@ -2530,33 +1637,32 @@ private module Impl { } private Element getImmediateChildOfParam(Param e, int index, string partialPredicateCall) { - exists(int b, int bParamBase, int n, int nPat | - b = 0 and - bParamBase = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfParamBase(e, i, _)) | i) and - n = bParamBase and - nPat = n + 1 and + exists(int n, int nAttr, int nTypeRepr, int nPat | + n = 0 and + nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nTypeRepr = nAttr + 1 and + nPat = nTypeRepr + 1 and ( none() or - result = getImmediateChildOfParamBase(e, index - b, partialPredicateCall) + result = e.getAttr(index - n) and + partialPredicateCall = "Attr(" + (index - n).toString() + ")" or - index = n and result = e.getPat() and partialPredicateCall = "Pat()" + index = nAttr and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" + or + index = nTypeRepr and result = e.getPat() and partialPredicateCall = "Pat()" ) ) } private Element getImmediateChildOfParenExpr(ParenExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2566,16 +1672,12 @@ private module Impl { } private Element getImmediateChildOfParenPat(ParenPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getPat() and partialPredicateCall = "Pat()" ) ) @@ -2584,85 +1686,39 @@ private module Impl { private Element getImmediateChildOfParenTypeRepr( ParenTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) } - private Element getImmediateChildOfPathAstNode( - PathAstNode e, int index, string partialPredicateCall - ) { - exists(int b, int bResolvable, int n, int nPath | - b = 0 and - bResolvable = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfResolvable(e, i, _)) | i) and - n = bResolvable and - nPath = n + 1 and - ( - none() - or - result = getImmediateChildOfResolvable(e, index - b, partialPredicateCall) - or - index = n and result = e.getPath() and partialPredicateCall = "Path()" - ) - ) - } - - private Element getImmediateChildOfPathExprBase( - PathExprBase e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfPathTypeRepr( PathTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nPath | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nPath | + n = 0 and nPath = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getPath() and partialPredicateCall = "Path()" ) ) } private Element getImmediateChildOfPrefixExpr(PrefixExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2674,34 +1730,26 @@ private module Impl { private Element getImmediateChildOfPtrTypeRepr( PtrTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) } private Element getImmediateChildOfRangeExpr(RangeExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nEnd, int nStart | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nEnd, int nStart | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nEnd = nAttr + 1 and nStart = nEnd + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2713,17 +1761,13 @@ private module Impl { } private Element getImmediateChildOfRangePat(RangePat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nEnd, int nStart | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nEnd, int nStart | + n = 0 and nEnd = n + 1 and nStart = nEnd + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getEnd() and partialPredicateCall = "End()" or index = nEnd and result = e.getStart() and partialPredicateCall = "Start()" @@ -2732,17 +1776,13 @@ private module Impl { } private Element getImmediateChildOfRefExpr(RefExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2752,16 +1792,12 @@ private module Impl { } private Element getImmediateChildOfRefPat(RefPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or index = n and result = e.getPat() and partialPredicateCall = "Pat()" ) ) @@ -2770,17 +1806,13 @@ private module Impl { private Element getImmediateChildOfRefTypeRepr( RefTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nLifetime, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nLifetime, int nTypeRepr | + n = 0 and nLifetime = n + 1 and nTypeRepr = nLifetime + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" or index = nLifetime and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" @@ -2789,16 +1821,12 @@ private module Impl { } private Element getImmediateChildOfRestPat(RestPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nAttr | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nAttr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" ) @@ -2806,17 +1834,13 @@ private module Impl { } private Element getImmediateChildOfReturnExpr(ReturnExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2826,18 +1850,21 @@ private module Impl { } private Element getImmediateChildOfSelfParam(SelfParam e, int index, string partialPredicateCall) { - exists(int b, int bParamBase, int n, int nLifetime, int nName | - b = 0 and - bParamBase = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfParamBase(e, i, _)) | i) and - n = bParamBase and - nLifetime = n + 1 and + exists(int n, int nAttr, int nTypeRepr, int nLifetime, int nName | + n = 0 and + nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nTypeRepr = nAttr + 1 and + nLifetime = nTypeRepr + 1 and nName = nLifetime + 1 and ( none() or - result = getImmediateChildOfParamBase(e, index - b, partialPredicateCall) + result = e.getAttr(index - n) and + partialPredicateCall = "Attr(" + (index - n).toString() + ")" or - index = n and result = e.getLifetime() and partialPredicateCall = "Lifetime()" + index = nAttr and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" + or + index = nTypeRepr and result = e.getLifetime() and partialPredicateCall = "Lifetime()" or index = nLifetime and result = e.getName() and partialPredicateCall = "Name()" ) @@ -2845,16 +1872,12 @@ private module Impl { } private Element getImmediateChildOfSlicePat(SlicePat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nPat | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nPat | + n = 0 and nPat = n + 1 + max(int i | i = -1 or exists(e.getPat(i)) | i) and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getPat(index - n) and partialPredicateCall = "Pat(" + (index - n).toString() + ")" ) @@ -2864,16 +1887,12 @@ private module Impl { private Element getImmediateChildOfSliceTypeRepr( SliceTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nTypeRepr | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) @@ -2882,16 +1901,12 @@ private module Impl { private Element getImmediateChildOfStructFieldList( StructFieldList e, int index, string partialPredicateCall ) { - exists(int b, int bFieldList, int n, int nField | - b = 0 and - bFieldList = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFieldList(e, i, _)) | i) and - n = bFieldList and + exists(int n, int nField | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfFieldList(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" ) @@ -2899,17 +1914,13 @@ private module Impl { } private Element getImmediateChildOfTryExpr(TryExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2919,17 +1930,13 @@ private module Impl { } private Element getImmediateChildOfTupleExpr(TupleExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nField | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nField | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nField = nAttr + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -2942,16 +1949,12 @@ private module Impl { private Element getImmediateChildOfTupleFieldList( TupleFieldList e, int index, string partialPredicateCall ) { - exists(int b, int bFieldList, int n, int nField | - b = 0 and - bFieldList = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFieldList(e, i, _)) | i) and - n = bFieldList and + exists(int n, int nField | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfFieldList(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" ) @@ -2959,16 +1962,12 @@ private module Impl { } private Element getImmediateChildOfTuplePat(TuplePat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int n, int nField | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and + exists(int n, int nField | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" ) @@ -2978,16 +1977,12 @@ private module Impl { private Element getImmediateChildOfTupleTypeRepr( TupleTypeRepr e, int index, string partialPredicateCall ) { - exists(int b, int bTypeRepr, int n, int nField | - b = 0 and - bTypeRepr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeRepr(e, i, _)) | i) and - n = bTypeRepr and + exists(int n, int nField | + n = 0 and nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfTypeRepr(e, index - b, partialPredicateCall) - or result = e.getField(index - n) and partialPredicateCall = "Field(" + (index - n).toString() + ")" ) @@ -2995,30 +1990,20 @@ private module Impl { } private Element getImmediateChildOfTypeArg(TypeArg e, int index, string partialPredicateCall) { - exists(int b, int bGenericArg, int n, int nTypeRepr | - b = 0 and - bGenericArg = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericArg(e, i, _)) | i) and - n = bGenericArg and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfGenericArg(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) } private Element getImmediateChildOfTypeParam(TypeParam e, int index, string partialPredicateCall) { - exists( - int b, int bGenericParam, int n, int nAttr, int nDefaultType, int nName, int nTypeBoundList - | - b = 0 and - bGenericParam = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericParam(e, i, _)) | i) and - n = bGenericParam and + exists(int n, int nAttr, int nDefaultType, int nName, int nTypeBoundList | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nDefaultType = nAttr + 1 and nName = nDefaultType + 1 and @@ -3026,8 +2011,6 @@ private module Impl { ( none() or - result = getImmediateChildOfGenericParam(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -3043,16 +2026,12 @@ private module Impl { private Element getImmediateChildOfUnderscoreExpr( UnderscoreExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nAttr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" ) @@ -3060,14 +2039,8 @@ private module Impl { } private Element getImmediateChildOfVariant(Variant e, int index, string partialPredicateCall) { - exists( - int b, int bAddressable, int n, int nAttr, int nDiscriminant, int nFieldList, int nName, - int nVisibility - | - b = 0 and - bAddressable = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAddressable(e, i, _)) | i) and - n = bAddressable and + exists(int n, int nAttr, int nDiscriminant, int nFieldList, int nName, int nVisibility | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nDiscriminant = nAttr + 1 and nFieldList = nDiscriminant + 1 and @@ -3076,8 +2049,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAddressable(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -3095,30 +2066,17 @@ private module Impl { private Element getImmediateChildOfWildcardPat( WildcardPat e, int index, string partialPredicateCall ) { - exists(int b, int bPat, int n | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - n = bPat and - ( - none() - or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfYeetExpr(YeetExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -3128,17 +2086,13 @@ private module Impl { } private Element getImmediateChildOfYieldExpr(YieldExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nAttr, int nExpr | + n = 0 and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -3147,35 +2101,21 @@ private module Impl { ) } - private Element getImmediateChildOfAdt(Adt e, int index, string partialPredicateCall) { - exists(int b, int bItem, int n, int nDeriveMacroExpansion | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nDeriveMacroExpansion = - n + 1 + max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and - ( - none() - or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) - or - result = e.getDeriveMacroExpansion(index - n) and - partialPredicateCall = "DeriveMacroExpansion(" + (index - n).toString() + ")" - ) - ) - } - private Element getImmediateChildOfArrayListExpr( ArrayListExpr e, int index, string partialPredicateCall ) { - exists(int b, int bArrayExpr, int n | - b = 0 and - bArrayExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArrayExpr(e, i, _)) | i) and - n = bArrayExpr and + exists(int n, int nExpr, int nAttr | + n = 0 and + nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and + nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfArrayExpr(e, index - b, partialPredicateCall) + result = e.getExpr(index - n) and + partialPredicateCall = "Expr(" + (index - n).toString() + ")" + or + result = e.getAttr(index - nExpr) and + partialPredicateCall = "Attr(" + (index - nExpr).toString() + ")" ) ) } @@ -3183,18 +2123,22 @@ private module Impl { private Element getImmediateChildOfArrayRepeatExpr( ArrayRepeatExpr e, int index, string partialPredicateCall ) { - exists(int b, int bArrayExpr, int n, int nRepeatOperand, int nRepeatLength | - b = 0 and - bArrayExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArrayExpr(e, i, _)) | i) and - n = bArrayExpr and - nRepeatOperand = n + 1 and + exists(int n, int nExpr, int nAttr, int nRepeatOperand, int nRepeatLength | + n = 0 and + nExpr = n + 1 + max(int i | i = -1 or exists(e.getExpr(i)) | i) and + nAttr = nExpr + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nRepeatOperand = nAttr + 1 and nRepeatLength = nRepeatOperand + 1 and ( none() or - result = getImmediateChildOfArrayExpr(e, index - b, partialPredicateCall) + result = e.getExpr(index - n) and + partialPredicateCall = "Expr(" + (index - n).toString() + ")" + or + result = e.getAttr(index - nExpr) and + partialPredicateCall = "Attr(" + (index - nExpr).toString() + ")" or - index = n and result = e.getRepeatOperand() and partialPredicateCall = "RepeatOperand()" + index = nAttr and result = e.getRepeatOperand() and partialPredicateCall = "RepeatOperand()" or index = nRepeatOperand and result = e.getRepeatLength() and @@ -3204,20 +2148,18 @@ private module Impl { } private Element getImmediateChildOfBlockExpr(BlockExpr e, int index, string partialPredicateCall) { - exists(int b, int bLabelableExpr, int n, int nAttr, int nStmtList | - b = 0 and - bLabelableExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabelableExpr(e, i, _)) | i) and - n = bLabelableExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists(int n, int nLabel, int nAttr, int nStmtList | + n = 0 and + nLabel = n + 1 and + nAttr = nLabel + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nStmtList = nAttr + 1 and ( none() or - result = getImmediateChildOfLabelableExpr(e, index - b, partialPredicateCall) + index = n and result = e.getLabel() and partialPredicateCall = "Label()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nLabel) and + partialPredicateCall = "Attr(" + (index - nLabel).toString() + ")" or index = nAttr and result = e.getStmtList() and partialPredicateCall = "StmtList()" ) @@ -3225,32 +2167,32 @@ private module Impl { } private Element getImmediateChildOfCallExpr(CallExpr e, int index, string partialPredicateCall) { - exists(int b, int bCallExprBase, int n, int nFunction | - b = 0 and - bCallExprBase = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallExprBase(e, i, _)) | i) and - n = bCallExprBase and - nFunction = n + 1 and + exists(int n, int nArgList, int nAttr, int nFunction | + n = 0 and + nArgList = n + 1 and + nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nFunction = nAttr + 1 and ( none() or - result = getImmediateChildOfCallExprBase(e, index - b, partialPredicateCall) + index = n and result = e.getArgList() and partialPredicateCall = "ArgList()" + or + result = e.getAttr(index - nArgList) and + partialPredicateCall = "Attr(" + (index - nArgList).toString() + ")" or - index = n and result = e.getFunction() and partialPredicateCall = "Function()" + index = nAttr and result = e.getFunction() and partialPredicateCall = "Function()" ) ) } private Element getImmediateChildOfConst(Const e, int index, string partialPredicateCall) { exists( - int b, int bAssocItem, int bItem, int n, int nAttr, int nBody, int nGenericParamList, - int nName, int nTypeRepr, int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nAttr, int nBody, int nGenericParamList, int nName, + int nTypeRepr, int nVisibility, int nWhereClause | - b = 0 and - bAssocItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAssocItem(e, i, _)) | i) and - bItem = bAssocItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nBody = nAttr + 1 and nGenericParamList = nBody + 1 and nName = nGenericParamList + 1 and @@ -3260,12 +2202,12 @@ private module Impl { ( none() or - result = getImmediateChildOfAssocItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfItem(e, index - bAssocItem, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getBody() and partialPredicateCall = "Body()" or @@ -3289,19 +2231,20 @@ private module Impl { private Element getImmediateChildOfExternBlock( ExternBlock e, int index, string partialPredicateCall ) { - exists(int b, int bItem, int n, int nAbi, int nAttr, int nExternItemList | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAbi = n + 1 and + exists(int n, int nAttributeMacroExpansion, int nAbi, int nAttr, int nExternItemList | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAbi = nAttributeMacroExpansion + 1 and nAttr = nAbi + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExternItemList = nAttr + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - index = n and result = e.getAbi() and partialPredicateCall = "Abi()" + index = nAttributeMacroExpansion and result = e.getAbi() and partialPredicateCall = "Abi()" or result = e.getAttr(index - nAbi) and partialPredicateCall = "Attr(" + (index - nAbi).toString() + ")" @@ -3316,21 +2259,24 @@ private module Impl { private Element getImmediateChildOfExternCrate( ExternCrate e, int index, string partialPredicateCall ) { - exists(int b, int bItem, int n, int nAttr, int nIdentifier, int nRename, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nIdentifier, int nRename, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nIdentifier = nAttr + 1 and nRename = nIdentifier + 1 and nVisibility = nRename + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getIdentifier() and partialPredicateCall = "Identifier()" or @@ -3344,33 +2290,19 @@ private module Impl { private Element getImmediateChildOfFormatTemplateVariableAccess( FormatTemplateVariableAccess e, int index, string partialPredicateCall ) { - exists(int b, int bPathExprBase, int n | - b = 0 and - bPathExprBase = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathExprBase(e, i, _)) | i) and - n = bPathExprBase and - ( - none() - or - result = getImmediateChildOfPathExprBase(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfFunction(Function e, int index, string partialPredicateCall) { exists( - int b, int bAssocItem, int bExternItem, int bItem, int bCallable, int n, int nAbi, int nBody, + int n, int nAttributeMacroExpansion, int nParamList, int nAttr, int nAbi, int nBody, int nGenericParamList, int nName, int nRetType, int nVisibility, int nWhereClause | - b = 0 and - bAssocItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAssocItem(e, i, _)) | i) and - bExternItem = - bAssocItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfExternItem(e, i, _)) | i) and - bItem = bExternItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - bCallable = - bItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallable(e, i, _)) | i) and - n = bCallable and - nAbi = n + 1 and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nParamList = nAttributeMacroExpansion + 1 and + nAttr = nParamList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nAbi = nAttr + 1 and nBody = nAbi + 1 and nGenericParamList = nBody + 1 and nName = nGenericParamList + 1 and @@ -3380,15 +2312,18 @@ private module Impl { ( none() or - result = getImmediateChildOfAssocItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfExternItem(e, index - bAssocItem, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = getImmediateChildOfItem(e, index - bExternItem, partialPredicateCall) + index = nAttributeMacroExpansion and + result = e.getParamList() and + partialPredicateCall = "ParamList()" or - result = getImmediateChildOfCallable(e, index - bItem, partialPredicateCall) + result = e.getAttr(index - nParamList) and + partialPredicateCall = "Attr(" + (index - nParamList).toString() + ")" or - index = n and result = e.getAbi() and partialPredicateCall = "Abi()" + index = nAttr and result = e.getAbi() and partialPredicateCall = "Abi()" or index = nAbi and result = e.getBody() and partialPredicateCall = "Body()" or @@ -3411,13 +2346,12 @@ private module Impl { private Element getImmediateChildOfImpl(Impl e, int index, string partialPredicateCall) { exists( - int b, int bItem, int n, int nAssocItemList, int nAttr, int nGenericParamList, int nSelfTy, - int nTrait, int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, + int nSelfTy, int nTrait, int nVisibility, int nWhereClause | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAssocItemList = n + 1 and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAssocItemList = nAttributeMacroExpansion + 1 and nAttr = nAssocItemList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nSelfTy = nGenericParamList + 1 and @@ -3427,9 +2361,13 @@ private module Impl { ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - index = n and result = e.getAssocItemList() and partialPredicateCall = "AssocItemList()" + index = nAttributeMacroExpansion and + result = e.getAssocItemList() and + partialPredicateCall = "AssocItemList()" or result = e.getAttr(index - nAssocItemList) and partialPredicateCall = "Attr(" + (index - nAssocItemList).toString() + ")" @@ -3451,51 +2389,26 @@ private module Impl { ) } - private Element getImmediateChildOfLoopingExpr( - LoopingExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bLabelableExpr, int n, int nLoopBody | - b = 0 and - bLabelableExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabelableExpr(e, i, _)) | i) and - n = bLabelableExpr and - nLoopBody = n + 1 and - ( - none() - or - result = getImmediateChildOfLabelableExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" - ) - ) - } - private Element getImmediateChildOfMacroCall(MacroCall e, int index, string partialPredicateCall) { exists( - int b, int bAssocItem, int bExternItem, int bItem, int n, int nAttr, int nPath, - int nTokenTree, int nMacroCallExpansion + int n, int nAttributeMacroExpansion, int nAttr, int nPath, int nTokenTree, + int nMacroCallExpansion | - b = 0 and - bAssocItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAssocItem(e, i, _)) | i) and - bExternItem = - bAssocItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfExternItem(e, i, _)) | i) and - bItem = bExternItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nPath = nAttr + 1 and nTokenTree = nPath + 1 and nMacroCallExpansion = nTokenTree + 1 and ( none() or - result = getImmediateChildOfAssocItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfExternItem(e, index - bAssocItem, partialPredicateCall) - or - result = getImmediateChildOfItem(e, index - bExternItem, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getPath() and partialPredicateCall = "Path()" or @@ -3509,11 +2422,13 @@ private module Impl { } private Element getImmediateChildOfMacroDef(MacroDef e, int index, string partialPredicateCall) { - exists(int b, int bItem, int n, int nArgs, int nAttr, int nBody, int nName, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nArgs = n + 1 and + exists( + int n, int nAttributeMacroExpansion, int nArgs, int nAttr, int nBody, int nName, + int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nArgs = nAttributeMacroExpansion + 1 and nAttr = nArgs + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nBody = nAttr + 1 and nName = nBody + 1 and @@ -3521,9 +2436,13 @@ private module Impl { ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - index = n and result = e.getArgs() and partialPredicateCall = "Args()" + index = nAttributeMacroExpansion and + result = e.getArgs() and + partialPredicateCall = "Args()" or result = e.getAttr(index - nArgs) and partialPredicateCall = "Attr(" + (index - nArgs).toString() + ")" @@ -3538,21 +2457,24 @@ private module Impl { } private Element getImmediateChildOfMacroRules(MacroRules e, int index, string partialPredicateCall) { - exists(int b, int bItem, int n, int nAttr, int nName, int nTokenTree, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nName, int nTokenTree, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nName = nAttr + 1 and nTokenTree = nName + 1 and nVisibility = nTokenTree + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getName() and partialPredicateCall = "Name()" or @@ -3566,28 +2488,24 @@ private module Impl { private Element getImmediateChildOfMethodCallExpr( MethodCallExpr e, int index, string partialPredicateCall ) { - exists( - int b, int bCallExprBase, int bResolvable, int n, int nGenericArgList, int nIdentifier, - int nReceiver - | - b = 0 and - bCallExprBase = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallExprBase(e, i, _)) | i) and - bResolvable = - bCallExprBase + 1 + - max(int i | i = -1 or exists(getImmediateChildOfResolvable(e, i, _)) | i) and - n = bResolvable and - nGenericArgList = n + 1 and + exists(int n, int nArgList, int nAttr, int nGenericArgList, int nIdentifier, int nReceiver | + n = 0 and + nArgList = n + 1 and + nAttr = nArgList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nGenericArgList = nAttr + 1 and nIdentifier = nGenericArgList + 1 and nReceiver = nIdentifier + 1 and ( none() or - result = getImmediateChildOfCallExprBase(e, index - b, partialPredicateCall) + index = n and result = e.getArgList() and partialPredicateCall = "ArgList()" or - result = getImmediateChildOfResolvable(e, index - bCallExprBase, partialPredicateCall) + result = e.getAttr(index - nArgList) and + partialPredicateCall = "Attr(" + (index - nArgList).toString() + ")" or - index = n and result = e.getGenericArgList() and partialPredicateCall = "GenericArgList()" + index = nAttr and + result = e.getGenericArgList() and + partialPredicateCall = "GenericArgList()" or index = nGenericArgList and result = e.getIdentifier() and @@ -3599,21 +2517,24 @@ private module Impl { } private Element getImmediateChildOfModule(Module e, int index, string partialPredicateCall) { - exists(int b, int bItem, int n, int nAttr, int nItemList, int nName, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists( + int n, int nAttributeMacroExpansion, int nAttr, int nItemList, int nName, int nVisibility + | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nItemList = nAttr + 1 and nName = nItemList + 1 and nVisibility = nName + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getItemList() and partialPredicateCall = "ItemList()" or @@ -3625,56 +2546,41 @@ private module Impl { } private Element getImmediateChildOfPathExpr(PathExpr e, int index, string partialPredicateCall) { - exists(int b, int bPathExprBase, int bPathAstNode, int n, int nAttr | - b = 0 and - bPathExprBase = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathExprBase(e, i, _)) | i) and - bPathAstNode = - bPathExprBase + 1 + - max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists(int n, int nPath, int nAttr | + n = 0 and + nPath = n + 1 and + nAttr = nPath + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfPathExprBase(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfPathAstNode(e, index - bPathExprBase, partialPredicateCall) + index = n and result = e.getPath() and partialPredicateCall = "Path()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nPath) and + partialPredicateCall = "Attr(" + (index - nPath).toString() + ")" ) ) } private Element getImmediateChildOfPathPat(PathPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int bPathAstNode, int n | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - bPathAstNode = - bPat + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and + exists(int n, int nPath | + n = 0 and + nPath = n + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfPathAstNode(e, index - bPat, partialPredicateCall) + index = n and result = e.getPath() and partialPredicateCall = "Path()" ) ) } private Element getImmediateChildOfStatic(Static e, int index, string partialPredicateCall) { exists( - int b, int bExternItem, int bItem, int n, int nAttr, int nBody, int nName, int nTypeRepr, + int n, int nAttributeMacroExpansion, int nAttr, int nBody, int nName, int nTypeRepr, int nVisibility | - b = 0 and - bExternItem = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExternItem(e, i, _)) | i) and - bItem = bExternItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nBody = nAttr + 1 and nName = nBody + 1 and nTypeRepr = nName + 1 and @@ -3682,12 +2588,12 @@ private module Impl { ( none() or - result = getImmediateChildOfExternItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfItem(e, index - bExternItem, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getBody() and partialPredicateCall = "Body()" or @@ -3701,21 +2607,16 @@ private module Impl { } private Element getImmediateChildOfStructExpr(StructExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int bPathAstNode, int n, int nStructExprFieldList | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bPathAstNode = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and - nStructExprFieldList = n + 1 and + exists(int n, int nPath, int nStructExprFieldList | + n = 0 and + nPath = n + 1 and + nStructExprFieldList = nPath + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfPathAstNode(e, index - bExpr, partialPredicateCall) + index = n and result = e.getPath() and partialPredicateCall = "Path()" or - index = n and + index = nPath and result = e.getStructExprFieldList() and partialPredicateCall = "StructExprFieldList()" ) @@ -3723,21 +2624,16 @@ private module Impl { } private Element getImmediateChildOfStructPat(StructPat e, int index, string partialPredicateCall) { - exists(int b, int bPat, int bPathAstNode, int n, int nStructPatFieldList | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - bPathAstNode = - bPat + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and - nStructPatFieldList = n + 1 and + exists(int n, int nPath, int nStructPatFieldList | + n = 0 and + nPath = n + 1 and + nStructPatFieldList = nPath + 1 and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfPathAstNode(e, index - bPat, partialPredicateCall) + index = n and result = e.getPath() and partialPredicateCall = "Path()" or - index = n and + index = nPath and result = e.getStructPatFieldList() and partialPredicateCall = "StructPatFieldList()" ) @@ -3746,13 +2642,12 @@ private module Impl { private Element getImmediateChildOfTrait(Trait e, int index, string partialPredicateCall) { exists( - int b, int bItem, int n, int nAssocItemList, int nAttr, int nGenericParamList, int nName, - int nTypeBoundList, int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nAssocItemList, int nAttr, int nGenericParamList, + int nName, int nTypeBoundList, int nVisibility, int nWhereClause | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAssocItemList = n + 1 and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAssocItemList = nAttributeMacroExpansion + 1 and nAttr = nAssocItemList + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and @@ -3762,9 +2657,13 @@ private module Impl { ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - index = n and result = e.getAssocItemList() and partialPredicateCall = "AssocItemList()" + index = nAttributeMacroExpansion and + result = e.getAssocItemList() and + partialPredicateCall = "AssocItemList()" or result = e.getAttr(index - nAssocItemList) and partialPredicateCall = "Attr(" + (index - nAssocItemList).toString() + ")" @@ -3790,13 +2689,12 @@ private module Impl { private Element getImmediateChildOfTraitAlias(TraitAlias e, int index, string partialPredicateCall) { exists( - int b, int bItem, int n, int nAttr, int nGenericParamList, int nName, int nTypeBoundList, - int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, + int nTypeBoundList, int nVisibility, int nWhereClause | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nTypeBoundList = nName + 1 and @@ -3805,10 +2703,12 @@ private module Impl { ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getGenericParamList() and @@ -3832,38 +2732,29 @@ private module Impl { private Element getImmediateChildOfTupleStructPat( TupleStructPat e, int index, string partialPredicateCall ) { - exists(int b, int bPat, int bPathAstNode, int n, int nField | - b = 0 and - bPat = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPat(e, i, _)) | i) and - bPathAstNode = - bPat + 1 + max(int i | i = -1 or exists(getImmediateChildOfPathAstNode(e, i, _)) | i) and - n = bPathAstNode and - nField = n + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and + exists(int n, int nPath, int nField | + n = 0 and + nPath = n + 1 and + nField = nPath + 1 + max(int i | i = -1 or exists(e.getField(i)) | i) and ( none() or - result = getImmediateChildOfPat(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfPathAstNode(e, index - bPat, partialPredicateCall) + index = n and result = e.getPath() and partialPredicateCall = "Path()" or - result = e.getField(index - n) and - partialPredicateCall = "Field(" + (index - n).toString() + ")" + result = e.getField(index - nPath) and + partialPredicateCall = "Field(" + (index - nPath).toString() + ")" ) ) } private Element getImmediateChildOfTypeAlias(TypeAlias e, int index, string partialPredicateCall) { exists( - int b, int bAssocItem, int bExternItem, int bItem, int n, int nAttr, int nGenericParamList, - int nName, int nTypeRepr, int nTypeBoundList, int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nAttr, int nGenericParamList, int nName, + int nTypeRepr, int nTypeBoundList, int nVisibility, int nWhereClause | - b = 0 and - bAssocItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAssocItem(e, i, _)) | i) and - bExternItem = - bAssocItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfExternItem(e, i, _)) | i) and - bItem = bExternItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nTypeRepr = nName + 1 and @@ -3873,14 +2764,12 @@ private module Impl { ( none() or - result = getImmediateChildOfAssocItem(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfExternItem(e, index - bAssocItem, partialPredicateCall) - or - result = getImmediateChildOfItem(e, index - bExternItem, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getGenericParamList() and @@ -3906,20 +2795,21 @@ private module Impl { } private Element getImmediateChildOfUse(Use e, int index, string partialPredicateCall) { - exists(int b, int bItem, int n, int nAttr, int nUseTree, int nVisibility | - b = 0 and - bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists(int n, int nAttributeMacroExpansion, int nAttr, int nUseTree, int nVisibility | + n = 0 and + nAttributeMacroExpansion = n + 1 and + nAttr = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nUseTree = nAttr + 1 and nVisibility = nUseTree + 1 and ( none() or - result = getImmediateChildOfItem(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nAttributeMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nAttributeMacroExpansion).toString() + ")" or index = nAttr and result = e.getUseTree() and partialPredicateCall = "UseTree()" or @@ -3930,13 +2820,15 @@ private module Impl { private Element getImmediateChildOfEnum(Enum e, int index, string partialPredicateCall) { exists( - int b, int bAdt, int n, int nAttr, int nGenericParamList, int nName, int nVariantList, - int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, + int nGenericParamList, int nName, int nVariantList, int nVisibility, int nWhereClause | - b = 0 and - bAdt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAdt(e, i, _)) | i) and - n = bAdt and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = + nAttributeMacroExpansion + 1 + + max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and + nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nVariantList = nName + 1 and @@ -3945,10 +2837,16 @@ private module Impl { ( none() or - result = getImmediateChildOfAdt(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" + or + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) and + partialPredicateCall = + "DeriveMacroExpansion(" + (index - nAttributeMacroExpansion).toString() + ")" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getAttr(index - nDeriveMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nDeriveMacroExpansion).toString() + ")" or index = nAttr and result = e.getGenericParamList() and @@ -3970,21 +2868,22 @@ private module Impl { } private Element getImmediateChildOfForExpr(ForExpr e, int index, string partialPredicateCall) { - exists(int b, int bLoopingExpr, int n, int nAttr, int nIterable, int nPat | - b = 0 and - bLoopingExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLoopingExpr(e, i, _)) | i) and - n = bLoopingExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists(int n, int nLabel, int nLoopBody, int nAttr, int nIterable, int nPat | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nIterable = nAttr + 1 and nPat = nIterable + 1 and ( none() or - result = getImmediateChildOfLoopingExpr(e, index - b, partialPredicateCall) + index = n and result = e.getLabel() and partialPredicateCall = "Label()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + index = nLabel and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" + or + result = e.getAttr(index - nLoopBody) and + partialPredicateCall = "Attr(" + (index - nLoopBody).toString() + ")" or index = nAttr and result = e.getIterable() and partialPredicateCall = "Iterable()" or @@ -3994,32 +2893,35 @@ private module Impl { } private Element getImmediateChildOfLoopExpr(LoopExpr e, int index, string partialPredicateCall) { - exists(int b, int bLoopingExpr, int n, int nAttr | - b = 0 and - bLoopingExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLoopingExpr(e, i, _)) | i) and - n = bLoopingExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists(int n, int nLabel, int nLoopBody, int nAttr | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and ( none() or - result = getImmediateChildOfLoopingExpr(e, index - b, partialPredicateCall) + index = n and result = e.getLabel() and partialPredicateCall = "Label()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + index = nLabel and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" + or + result = e.getAttr(index - nLoopBody) and + partialPredicateCall = "Attr(" + (index - nLoopBody).toString() + ")" ) ) } private Element getImmediateChildOfStruct(Struct e, int index, string partialPredicateCall) { exists( - int b, int bAdt, int n, int nAttr, int nFieldList, int nGenericParamList, int nName, - int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, int nFieldList, + int nGenericParamList, int nName, int nVisibility, int nWhereClause | - b = 0 and - bAdt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAdt(e, i, _)) | i) and - n = bAdt and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = + nAttributeMacroExpansion + 1 + + max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and + nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nFieldList = nAttr + 1 and nGenericParamList = nFieldList + 1 and nName = nGenericParamList + 1 and @@ -4028,10 +2930,16 @@ private module Impl { ( none() or - result = getImmediateChildOfAdt(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) and + partialPredicateCall = + "DeriveMacroExpansion(" + (index - nAttributeMacroExpansion).toString() + ")" + or + result = e.getAttr(index - nDeriveMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nDeriveMacroExpansion).toString() + ")" or index = nAttr and result = e.getFieldList() and partialPredicateCall = "FieldList()" or @@ -4052,13 +2960,15 @@ private module Impl { private Element getImmediateChildOfUnion(Union e, int index, string partialPredicateCall) { exists( - int b, int bAdt, int n, int nAttr, int nGenericParamList, int nName, int nStructFieldList, - int nVisibility, int nWhereClause + int n, int nAttributeMacroExpansion, int nDeriveMacroExpansion, int nAttr, + int nGenericParamList, int nName, int nStructFieldList, int nVisibility, int nWhereClause | - b = 0 and - bAdt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAdt(e, i, _)) | i) and - n = bAdt and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + n = 0 and + nAttributeMacroExpansion = n + 1 and + nDeriveMacroExpansion = + nAttributeMacroExpansion + 1 + + max(int i | i = -1 or exists(e.getDeriveMacroExpansion(i)) | i) and + nAttr = nDeriveMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and nStructFieldList = nName + 1 and @@ -4067,10 +2977,16 @@ private module Impl { ( none() or - result = getImmediateChildOfAdt(e, index - b, partialPredicateCall) + index = n and + result = e.getAttributeMacroExpansion() and + partialPredicateCall = "AttributeMacroExpansion()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + result = e.getDeriveMacroExpansion(index - nAttributeMacroExpansion) and + partialPredicateCall = + "DeriveMacroExpansion(" + (index - nAttributeMacroExpansion).toString() + ")" + or + result = e.getAttr(index - nDeriveMacroExpansion) and + partialPredicateCall = "Attr(" + (index - nDeriveMacroExpansion).toString() + ")" or index = nAttr and result = e.getGenericParamList() and @@ -4094,20 +3010,21 @@ private module Impl { } private Element getImmediateChildOfWhileExpr(WhileExpr e, int index, string partialPredicateCall) { - exists(int b, int bLoopingExpr, int n, int nAttr, int nCondition | - b = 0 and - bLoopingExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLoopingExpr(e, i, _)) | i) and - n = bLoopingExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + exists(int n, int nLabel, int nLoopBody, int nAttr, int nCondition | + n = 0 and + nLabel = n + 1 and + nLoopBody = nLabel + 1 and + nAttr = nLoopBody + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nCondition = nAttr + 1 and ( none() or - result = getImmediateChildOfLoopingExpr(e, index - b, partialPredicateCall) + index = n and result = e.getLabel() and partialPredicateCall = "Label()" or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" + index = nLabel and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" + or + result = e.getAttr(index - nLoopBody) and + partialPredicateCall = "Attr(" + (index - nLoopBody).toString() + ")" or index = nAttr and result = e.getCondition() and partialPredicateCall = "Condition()" ) diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.expected b/rust/ql/test/extractor-tests/generated/Function/Function.expected index 4c5e331252dc..db434cf918d6 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function.expected @@ -1,12 +1,6 @@ instances | gen_function.rs:3:1:4:38 | fn foo | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasImplementation: | yes | | gen_function.rs:7:5:7:13 | fn bar | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasImplementation: | no | -getParamList -| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:7:4:14 | ParamList | -| gen_function.rs:7:5:7:13 | fn bar | gen_function.rs:7:11:7:12 | ParamList | -getAttr -getParam -| gen_function.rs:3:1:4:38 | fn foo | 0 | gen_function.rs:4:8:4:13 | ...: u32 | getExtendedCanonicalPath | gen_function.rs:3:1:4:38 | fn foo | crate::gen_function::foo | | gen_function.rs:7:5:7:13 | fn bar | crate::gen_function::Trait::bar | @@ -14,6 +8,12 @@ getCrateOrigin | gen_function.rs:3:1:4:38 | fn foo | repo::test | | gen_function.rs:7:5:7:13 | fn bar | repo::test | getAttributeMacroExpansion +getParamList +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:7:4:14 | ParamList | +| gen_function.rs:7:5:7:13 | fn bar | gen_function.rs:7:11:7:12 | ParamList | +getAttr +getParam +| gen_function.rs:3:1:4:38 | fn foo | 0 | gen_function.rs:4:8:4:13 | ...: u32 | getAbi getBody | gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:23:4:38 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.ql b/rust/ql/test/extractor-tests/generated/Function/Function.ql index 81f578573b04..4f76623cb20c 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.ql +++ b/rust/ql/test/extractor-tests/generated/Function/Function.ql @@ -23,18 +23,6 @@ query predicate instances( if x.hasImplementation() then hasImplementation = "yes" else hasImplementation = "no" } -query predicate getParamList(Function x, ParamList getParamList) { - toBeTested(x) and not x.isUnknown() and getParamList = x.getParamList() -} - -query predicate getAttr(Function x, int index, Attr getAttr) { - toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) -} - -query predicate getParam(Function x, int index, Param getParam) { - toBeTested(x) and not x.isUnknown() and getParam = x.getParam(index) -} - query predicate getExtendedCanonicalPath(Function x, string getExtendedCanonicalPath) { toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath() } @@ -49,6 +37,18 @@ query predicate getAttributeMacroExpansion(Function x, MacroItems getAttributeMa getAttributeMacroExpansion = x.getAttributeMacroExpansion() } +query predicate getParamList(Function x, ParamList getParamList) { + toBeTested(x) and not x.isUnknown() and getParamList = x.getParamList() +} + +query predicate getAttr(Function x, int index, Attr getAttr) { + toBeTested(x) and not x.isUnknown() and getAttr = x.getAttr(index) +} + +query predicate getParam(Function x, int index, Param getParam) { + toBeTested(x) and not x.isUnknown() and getParam = x.getParam(index) +} + query predicate getAbi(Function x, Abi getAbi) { toBeTested(x) and not x.isUnknown() and getAbi = x.getAbi() } diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index f8da120e0d4e..261705596d28 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -733,7 +733,7 @@ lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fd lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018 lib/codeql/swift/generated/OtherAvailabilitySpec.qll d9feaa2a71acff3184ca389045b0a49d09156210df0e034923d715b432ad594b 046737621a8bcf69bf805afb0cff476bd15259f12f0d77fce3206dd01b31518f -lib/codeql/swift/generated/ParentChild.qll d66e5c28e93a3085fbae0ada238a96577ad21fd64a37ce967032bf5df8bdfb1d 2d440ad9c0304f658d54c6c53a8b1db1d3e032ee5522b51c46116413d0cf5dbb +lib/codeql/swift/generated/ParentChild.qll 86a6c9ba4c79d72bf7a0786274f6fba49e6f37cf82de0451a6dad0d319224ebd f7b99ceb052a23d7c25d1615d1453d421b5ddddcec60b7d8d6f956d0d3fd7a2d lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll dc17b49a90a18a8f7607adf2433bc8f0c194fa3e803aa3822f809d4d4fbd6793 be48ea9f8ae17354c8508aaed24337a9e57ce01f288fece3dcecd99776cabcec lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 lib/codeql/swift/generated/Raw.qll 96d5f8778f25cd396b5cc56c38dce597c5a9a5c2b1e9ed8b9a4d2eca89e49323 d65072b5c508dad1dd813e19f7431087d8bfc0e5d85aa3d19beffbcbbec585ec @@ -1039,7 +1039,7 @@ test/extractor-tests/generated/File/File.ql a1385ef2080e04e8757f61b8e1d0129df9f9 test/extractor-tests/generated/KeyPathComponent/KeyPathComponent.ql 3fa617f8ed1b308d0c56f429ee8abe6d33ef60bf57d87f6dc89fdc8fe969a102 c2fa3153077dbe9e0fc608524dc03c82ff4ed460364d341ee6a817b0d75291c3 test/extractor-tests/generated/OtherAvailabilitySpec/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/PlatformVersionAvailabilitySpec/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d -test/extractor-tests/generated/decl/Accessor/Accessor.ql 74d288273f26d2551ed661f0c729ae561c76c21976c3f539d4ba135d92d3aba5 e237e6ca8db21afea6c96558aae873ede63feaa81b0e6038234ab7856a0d95d4 +test/extractor-tests/generated/decl/Accessor/Accessor.ql 7e50dd3c4119162bbfa3e2461300d876c60321d4b6473ddd35e0cb992108570e eb81ed8db92bff46974079e0f1100cf94bd639191a36db45ee9e65467abb6e38 test/extractor-tests/generated/decl/AssociatedTypeDecl/AssociatedTypeDecl.ql 55a78a6b96a17532178a39bd39aa4df23295f98019bb00de041ba15dfd4f84d9 51dbcd86203d5d031d748f77943a81c2c50de4ff559af20a4a1a682a19978d4f test/extractor-tests/generated/decl/CapturedDecl/CapturedDecl.ql fd62be6c38d39f371c20e8c2f233e37a9da5aa234588920634f5db67e8beb3bd d51d35d4fd6a21cd596e064e0221d0c86e36312412a9bd4e64f431c123f3019a test/extractor-tests/generated/decl/ClassDecl/ClassDecl.ql d5fa7f68307e2e3e7ad060a125bda148e4a28f6acbef08a1a975bbf9ba947641 46d1e4f801414f1c869601dc706e41393e5fcd399e51da593c1e58737f6ff427 @@ -1048,7 +1048,7 @@ test/extractor-tests/generated/decl/Deinitializer/MISSING_SOURCE.txt 35fb32ea539 test/extractor-tests/generated/decl/EnumDecl/EnumCaseDecl.ql 7436bb7dfaa471f5a21ea2e3faba97d61bf53f930720999abdcc6745a65f0a1a 0241b2bb07c17136f6099185f65ea1266cd912296dfe481dce30eb9e3d1dd23f test/extractor-tests/generated/decl/EnumDecl/EnumDecl.ql 47f20279f49388a4850df4f5ee61634e30beed58567eff891688c09942862ec2 8e11af1ceb07cab9738ffb25ac877ced712d1883a6514de5e8895cd1809a7bd8 test/extractor-tests/generated/decl/EnumDecl/EnumElementDecl.ql 16caf5b014dea42a36b23eee6932c0818d94b1416e151ce46ba06a1fd2fb73ba cac704575b50613c8f8f297ce37c6d09ef943c94df4289643a4496103ac8388e -test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql 7293da617df8d12dae74a8c7a97230d6b34b64d0afc8629988eac09dde8bcbc6 56f1e7edf6424f14ade4b99b6e1e93fbdf678e300367c07200230b640bf8d358 +test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql 04529ad447b7b0c529a54b0e0d009183c00cb1dcd7eb16378a7c4c7bc86bca4d 86379270a15fa014dc127607b720bb4d39b24b70d1c0f72ef8563c4144423ced test/extractor-tests/generated/decl/GenericTypeParamDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d test/extractor-tests/generated/decl/IfConfigDecl/IfConfigDecl.ql b33916c742a97ea687a46aa337738666a4cf4854b394e3296582be0e8f0b7fb3 d1b4caf8bf04af0f11685f6381e52ca62dffbb6a50256be78dd686bf0a53df1d test/extractor-tests/generated/decl/ImportDecl/ImportDecl.ql d5d5475363155fad37fd3f60a8eb22c324b8af52a91c065ee5fffe0f855a3b03 ac642144ecd2c5fbdfe628a88394646e5047d0db284d83b6a449654545456286 @@ -1057,7 +1057,7 @@ test/extractor-tests/generated/decl/Initializer/MISSING_SOURCE.txt 35fb32ea53931 test/extractor-tests/generated/decl/MacroDecl/MacroDecl.ql 61f092d4ed5972283b3eb0eeec81c8f299496dc548a98dca56a1aadaf8248d1d b9cd637cb0f6f34d8d0a4473f2c212a0534d49891d55593758bb03f8d225f32a test/extractor-tests/generated/decl/MacroDecl/MacroRole.ql 7ab0dc211663c1b09a54ccbee7d6be94ffa45f420b383d2e2f22b7ccfb8d7a48 92296b89fccf6aebe877e67796885bedd809ebb470f23f48f98b27c2922c4ba2 test/extractor-tests/generated/decl/ModuleDecl/ModuleDecl.ql 63a41a3b393b29d19752379fe29f26fe649dad2927836e24832e07c503d092a6 927fa4056a5d7c65803f7baa1216e6bef9b3b6a223c4a2bb50f2a6a31580db6a -test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql f3d080cc8ed9c0f1753f20a21d700e0f95549510d8246971dc52a6ddcf2ee385 95cf0a0789df14593348b40ccfbce27b728eff368ffebb8137efc59065cd543d +test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql c6be4c1314ffed2a8a91af2e08ea14ce721195ec993d18ebd4d7b90f4a60dac3 767fc36b64291ab7ecccd63bf74856983830267c992d1347236da314fca73d57 test/extractor-tests/generated/decl/OpaqueTypeDecl/OpaqueTypeDecl.ql 85b041e1f791b40ff3d3c58c79e017cebf9ef535ea3d576984b7c093f25aa95b 9fcf314b02ac95fbd2c0e5fc95dc48c16522c74def57f5647dd5ad7e80f7c2c1 test/extractor-tests/generated/decl/ParamDecl/ParamDecl.ql cc9d89731f7a5ecc2267923268e2d8046aa3f0eb9556c6a12e53b541347f45a4 6d06279172ff2c04be0f39293a2e9a9de5e41ff1efffd41a67d5a921e1afe9ea test/extractor-tests/generated/decl/PatternBindingDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index 49ffc37a473c..4185644abe17 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -10,235 +10,60 @@ import codeql.swift.elements.expr.internal.InitializerRefCallExpr import codeql.swift.elements.expr.internal.SelfApplyExpr private module Impl { - private Element getImmediateChildOfElement(Element e, int index, string partialPredicateCall) { - none() - } - - private Element getImmediateChildOfFile(File e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLocatable(Locatable e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLocation(Location e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAstNode(AstNode e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfComment(Comment e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDbFile(DbFile e, int index, string partialPredicateCall) { - exists(int b, int bFile, int n | - b = 0 and - bFile = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFile(e, i, _)) | i) and - n = bFile and - ( - none() - or - result = getImmediateChildOfFile(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDbLocation(DbLocation e, int index, string partialPredicateCall) { - exists(int b, int bLocation, int n | - b = 0 and - bLocation = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocation(e, i, _)) | i) and - n = bLocation and - ( - none() - or - result = getImmediateChildOfLocation(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDiagnostics( Diagnostics e, int index, string partialPredicateCall ) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfErrorElement( - ErrorElement e, int index, string partialPredicateCall - ) { - exists(int b, int bLocatable, int n | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and - ( - none() - or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnknownFile( UnknownFile e, int index, string partialPredicateCall ) { - exists(int b, int bFile, int n | - b = 0 and - bFile = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFile(e, i, _)) | i) and - n = bFile and - ( - none() - or - result = getImmediateChildOfFile(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnknownLocation( UnknownLocation e, int index, string partialPredicateCall ) { - exists(int b, int bLocation, int n | - b = 0 and - bLocation = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocation(e, i, _)) | i) and - n = bLocation and - ( - none() - or - result = getImmediateChildOfLocation(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAvailabilityInfo( AvailabilityInfo e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nSpec | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nSpec | + n = 0 and nSpec = n + 1 + max(int i | i = -1 or exists(e.getSpec(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getSpec(index - n) and partialPredicateCall = "Spec(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfAvailabilitySpec( - AvailabilitySpec e, int index, string partialPredicateCall - ) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfCallable(Callable e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nSelfParam, int nParam, int nBody, int nCapture | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - nSelfParam = n + 1 and - nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and - nBody = nParam + 1 and - nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or - index = n and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" - or - result = e.getParam(index - nSelfParam) and - partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" - or - index = nParam and result = e.getBody() and partialPredicateCall = "Body()" - or - result = e.getCapture(index - nBody) and - partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" - ) - ) - } - private Element getImmediateChildOfKeyPathComponent( KeyPathComponent e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nSubscriptArgument | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nSubscriptArgument | + n = 0 and nSubscriptArgument = n + 1 + max(int i | i = -1 or exists(e.getSubscriptArgument(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getSubscriptArgument(index - n) and partialPredicateCall = "SubscriptArgument(" + (index - n).toString() + ")" ) @@ -246,32 +71,18 @@ private module Impl { } private Element getImmediateChildOfMacroRole(MacroRole e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnspecifiedElement( UnspecifiedElement e, int index, string partialPredicateCall ) { - exists(int b, int bErrorElement, int n, int nChild | - b = 0 and - bErrorElement = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nChild | + n = 0 and nChild = n + 1 + max(int i | i = -1 or exists(e.getImmediateChild(i)) | i) and ( none() or - result = getImmediateChildOfErrorElement(e, index - b, partialPredicateCall) - or result = e.getImmediateChild(index - n) and partialPredicateCall = "Child(" + (index - n).toString() + ")" ) @@ -281,82 +92,26 @@ private module Impl { private Element getImmediateChildOfOtherAvailabilitySpec( OtherAvailabilitySpec e, int index, string partialPredicateCall ) { - exists(int b, int bAvailabilitySpec, int n | - b = 0 and - bAvailabilitySpec = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAvailabilitySpec(e, i, _)) | i) and - n = bAvailabilitySpec and - ( - none() - or - result = getImmediateChildOfAvailabilitySpec(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPlatformVersionAvailabilitySpec( PlatformVersionAvailabilitySpec e, int index, string partialPredicateCall ) { - exists(int b, int bAvailabilitySpec, int n | - b = 0 and - bAvailabilitySpec = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAvailabilitySpec(e, i, _)) | i) and - n = bAvailabilitySpec and - ( - none() - or - result = getImmediateChildOfAvailabilitySpec(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfDecl(Decl e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nMember | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or - result = e.getMember(index - n) and - partialPredicateCall = "Member(" + (index - n).toString() + ")" - ) - ) - } - - private Element getImmediateChildOfGenericContext( - GenericContext e, int index, string partialPredicateCall - ) { - exists(int b, int bElement, int n, int nGenericTypeParam | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and - ( - none() - or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) - or - result = e.getGenericTypeParam(index - n) and - partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" - ) - ) + none() } private Element getImmediateChildOfCapturedDecl( CapturedDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -364,14 +119,14 @@ private module Impl { private Element getImmediateChildOfEnumCaseDecl( EnumCaseDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -379,19 +134,18 @@ private module Impl { private Element getImmediateChildOfExtensionDecl( ExtensionDecl e, int index, string partialPredicateCall ) { - exists(int b, int bGenericContext, int bDecl, int n | - b = 0 and - bGenericContext = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - bDecl = - bGenericContext + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfGenericContext(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" or - result = getImmediateChildOfDecl(e, index - bGenericContext, partialPredicateCall) + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } @@ -399,27 +153,27 @@ private module Impl { private Element getImmediateChildOfIfConfigDecl( IfConfigDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } private Element getImmediateChildOfImportDecl(ImportDecl e, int index, string partialPredicateCall) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -427,29 +181,14 @@ private module Impl { private Element getImmediateChildOfMissingMemberDecl( MissingMemberDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - ( - none() - or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfOperatorDecl( - OperatorDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -457,19 +196,19 @@ private module Impl { private Element getImmediateChildOfPatternBindingDecl( PatternBindingDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n, int nInit, int nPattern | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - nInit = n + 1 + max(int i | i = -1 or exists(e.getImmediateInit(i)) | i) and + exists(int n, int nMember, int nInit, int nPattern | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nInit = nMember + 1 + max(int i | i = -1 or exists(e.getImmediateInit(i)) | i) and nPattern = nInit + 1 + max(int i | i = -1 or exists(e.getImmediatePattern(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - result = e.getImmediateInit(index - n) and - partialPredicateCall = "Init(" + (index - n).toString() + ")" + result = e.getImmediateInit(index - nMember) and + partialPredicateCall = "Init(" + (index - nMember).toString() + ")" or result = e.getImmediatePattern(index - nInit) and partialPredicateCall = "Pattern(" + (index - nInit).toString() + ")" @@ -480,17 +219,17 @@ private module Impl { private Element getImmediateChildOfPoundDiagnosticDecl( PoundDiagnosticDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n, int nMessage | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - nMessage = n + 1 and + exists(int n, int nMember, int nMessage | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nMessage = nMember + 1 and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - index = n and result = e.getImmediateMessage() and partialPredicateCall = "Message()" + index = nMember and result = e.getImmediateMessage() and partialPredicateCall = "Message()" ) ) } @@ -498,14 +237,14 @@ private module Impl { private Element getImmediateChildOfPrecedenceGroupDecl( PrecedenceGroupDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -513,49 +252,17 @@ private module Impl { private Element getImmediateChildOfTopLevelCodeDecl( TopLevelCodeDecl e, int index, string partialPredicateCall ) { - exists(int b, int bDecl, int n, int nBody | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - nBody = n + 1 and - ( - none() - or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) - or - index = n and result = e.getBody() and partialPredicateCall = "Body()" - ) - ) - } - - private Element getImmediateChildOfValueDecl(ValueDecl e, int index, string partialPredicateCall) { - exists(int b, int bDecl, int n | - b = 0 and - bDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDecl(e, i, _)) | i) and - n = bDecl and - ( - none() - or - result = getImmediateChildOfDecl(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAbstractStorageDecl( - AbstractStorageDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bValueDecl, int n, int nAccessor | - b = 0 and - bValueDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - n = bValueDecl and - nAccessor = n + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + exists(int n, int nMember, int nBody | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nBody = nMember + 1 and ( none() or - result = getImmediateChildOfValueDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - result = e.getAccessor(index - n) and - partialPredicateCall = "Accessor(" + (index - n).toString() + ")" + index = nMember and result = e.getBody() and partialPredicateCall = "Body()" ) ) } @@ -563,41 +270,18 @@ private module Impl { private Element getImmediateChildOfEnumElementDecl( EnumElementDecl e, int index, string partialPredicateCall ) { - exists(int b, int bValueDecl, int n, int nParam | - b = 0 and - bValueDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - n = bValueDecl and - nParam = n + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and - ( - none() - or - result = getImmediateChildOfValueDecl(e, index - b, partialPredicateCall) - or - result = e.getParam(index - n) and - partialPredicateCall = "Param(" + (index - n).toString() + ")" - ) - ) - } - - private Element getImmediateChildOfFunction(Function e, int index, string partialPredicateCall) { - exists(int b, int bGenericContext, int bValueDecl, int bCallable, int n | - b = 0 and - bGenericContext = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - bValueDecl = - bGenericContext + 1 + - max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - bCallable = - bValueDecl + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallable(e, i, _)) | i) and - n = bCallable and + exists(int n, int nMember, int nParam | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nParam = nMember + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and ( none() or - result = getImmediateChildOfGenericContext(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfValueDecl(e, index - bGenericContext, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - result = getImmediateChildOfCallable(e, index - bValueDecl, partialPredicateCall) + result = e.getParam(index - nMember) and + partialPredicateCall = "Param(" + (index - nMember).toString() + ")" ) ) } @@ -605,34 +289,31 @@ private module Impl { private Element getImmediateChildOfInfixOperatorDecl( InfixOperatorDecl e, int index, string partialPredicateCall ) { - exists(int b, int bOperatorDecl, int n | - b = 0 and - bOperatorDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfOperatorDecl(e, i, _)) | i) and - n = bOperatorDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfOperatorDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } private Element getImmediateChildOfMacroDecl(MacroDecl e, int index, string partialPredicateCall) { - exists(int b, int bGenericContext, int bValueDecl, int n | - b = 0 and - bGenericContext = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - bValueDecl = - bGenericContext + 1 + - max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - n = bValueDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfGenericContext(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" or - result = getImmediateChildOfValueDecl(e, index - bGenericContext, partialPredicateCall) + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } @@ -640,15 +321,14 @@ private module Impl { private Element getImmediateChildOfPostfixOperatorDecl( PostfixOperatorDecl e, int index, string partialPredicateCall ) { - exists(int b, int bOperatorDecl, int n | - b = 0 and - bOperatorDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfOperatorDecl(e, i, _)) | i) and - n = bOperatorDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfOperatorDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -656,172 +336,202 @@ private module Impl { private Element getImmediateChildOfPrefixOperatorDecl( PrefixOperatorDecl e, int index, string partialPredicateCall ) { - exists(int b, int bOperatorDecl, int n | - b = 0 and - bOperatorDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfOperatorDecl(e, i, _)) | i) and - n = bOperatorDecl and - ( - none() - or - result = getImmediateChildOfOperatorDecl(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfTypeDecl(TypeDecl e, int index, string partialPredicateCall) { - exists(int b, int bValueDecl, int n | - b = 0 and - bValueDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfValueDecl(e, i, _)) | i) and - n = bValueDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfValueDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfAbstractTypeParamDecl( - AbstractTypeParamDecl e, int index, string partialPredicateCall + private Element getImmediateChildOfDeinitializer( + Deinitializer e, int index, string partialPredicateCall ) { - exists(int b, int bTypeDecl, int n | - b = 0 and - bTypeDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeDecl(e, i, _)) | i) and - n = bTypeDecl and + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nSelfParam = nMember + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" + or + index = nMember and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } - private Element getImmediateChildOfAccessorOrNamedFunction( - AccessorOrNamedFunction e, int index, string partialPredicateCall - ) { - exists(int b, int bFunction, int n | - b = 0 and - bFunction = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFunction(e, i, _)) | i) and - n = bFunction and + private Element getImmediateChildOfInitializer( + Initializer e, int index, string partialPredicateCall + ) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nSelfParam = nMember + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfFunction(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" + or + index = nMember and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } - private Element getImmediateChildOfDeinitializer( - Deinitializer e, int index, string partialPredicateCall - ) { - exists(int b, int bFunction, int n | - b = 0 and - bFunction = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFunction(e, i, _)) | i) and - n = bFunction and + private Element getImmediateChildOfModuleDecl(ModuleDecl e, int index, string partialPredicateCall) { + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfFunction(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfGenericTypeDecl( - GenericTypeDecl e, int index, string partialPredicateCall + private Element getImmediateChildOfSubscriptDecl( + SubscriptDecl e, int index, string partialPredicateCall ) { - exists(int b, int bGenericContext, int bTypeDecl, int n | - b = 0 and - bGenericContext = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - bTypeDecl = - bGenericContext + 1 + - max(int i | i = -1 or exists(getImmediateChildOfTypeDecl(e, i, _)) | i) and - n = bTypeDecl and + exists(int n, int nMember, int nAccessor, int nGenericTypeParam, int nParam | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nGenericTypeParam = + nAccessor + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nParam = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and ( none() or - result = getImmediateChildOfGenericContext(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" + or + result = e.getAccessor(index - nMember) and + partialPredicateCall = "Accessor(" + (index - nMember).toString() + ")" or - result = getImmediateChildOfTypeDecl(e, index - bGenericContext, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfInitializer( - Initializer e, int index, string partialPredicateCall - ) { - exists(int b, int bFunction, int n | - b = 0 and - bFunction = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfFunction(e, i, _)) | i) and - n = bFunction and - ( - none() + result = e.getGenericTypeParam(index - nAccessor) and + partialPredicateCall = "GenericTypeParam(" + (index - nAccessor).toString() + ")" or - result = getImmediateChildOfFunction(e, index - b, partialPredicateCall) + result = e.getParam(index - nGenericTypeParam) and + partialPredicateCall = "Param(" + (index - nGenericTypeParam).toString() + ")" ) ) } - private Element getImmediateChildOfModuleDecl(ModuleDecl e, int index, string partialPredicateCall) { - exists(int b, int bTypeDecl, int n | - b = 0 and - bTypeDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfTypeDecl(e, i, _)) | i) and - n = bTypeDecl and + private Element getImmediateChildOfAccessor(Accessor e, int index, string partialPredicateCall) { + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nSelfParam = nMember + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" + or + index = nMember and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } - private Element getImmediateChildOfSubscriptDecl( - SubscriptDecl e, int index, string partialPredicateCall + private Element getImmediateChildOfAssociatedTypeDecl( + AssociatedTypeDecl e, int index, string partialPredicateCall ) { - exists(int b, int bAbstractStorageDecl, int bGenericContext, int n, int nParam | - b = 0 and - bAbstractStorageDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAbstractStorageDecl(e, i, _)) | i) and - bGenericContext = - bAbstractStorageDecl + 1 + - max(int i | i = -1 or exists(getImmediateChildOfGenericContext(e, i, _)) | i) and - n = bGenericContext and - nParam = n + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfAbstractStorageDecl(e, index - b, partialPredicateCall) - or - result = - getImmediateChildOfGenericContext(e, index - bAbstractStorageDecl, partialPredicateCall) - or - result = e.getParam(index - n) and - partialPredicateCall = "Param(" + (index - n).toString() + ")" + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } - private Element getImmediateChildOfVarDecl(VarDecl e, int index, string partialPredicateCall) { + private Element getImmediateChildOfConcreteVarDecl( + ConcreteVarDecl e, int index, string partialPredicateCall + ) { exists( - int b, int bAbstractStorageDecl, int n, int nPropertyWrapperBackingVarBinding, + int n, int nMember, int nAccessor, int nPropertyWrapperBackingVarBinding, int nPropertyWrapperBackingVar, int nPropertyWrapperProjectionVarBinding, int nPropertyWrapperProjectionVar | - b = 0 and - bAbstractStorageDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAbstractStorageDecl(e, i, _)) | i) and - n = bAbstractStorageDecl and - nPropertyWrapperBackingVarBinding = n + 1 and + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nPropertyWrapperBackingVarBinding = nAccessor + 1 and nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and nPropertyWrapperProjectionVar = nPropertyWrapperProjectionVarBinding + 1 and ( none() or - result = getImmediateChildOfAbstractStorageDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - index = n and + result = e.getAccessor(index - nMember) and + partialPredicateCall = "Accessor(" + (index - nMember).toString() + ")" + or + index = nAccessor and result = e.getPropertyWrapperBackingVarBinding() and partialPredicateCall = "PropertyWrapperBackingVarBinding()" or @@ -840,64 +550,17 @@ private module Impl { ) } - private Element getImmediateChildOfAccessor(Accessor e, int index, string partialPredicateCall) { - exists(int b, int bAccessorOrNamedFunction, int n | - b = 0 and - bAccessorOrNamedFunction = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfAccessorOrNamedFunction(e, i, _)) | i) and - n = bAccessorOrNamedFunction and - ( - none() - or - result = getImmediateChildOfAccessorOrNamedFunction(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAssociatedTypeDecl( - AssociatedTypeDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bAbstractTypeParamDecl, int n | - b = 0 and - bAbstractTypeParamDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAbstractTypeParamDecl(e, i, _)) | i) and - n = bAbstractTypeParamDecl and - ( - none() - or - result = getImmediateChildOfAbstractTypeParamDecl(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfConcreteVarDecl( - ConcreteVarDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bVarDecl, int n | - b = 0 and - bVarDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfVarDecl(e, i, _)) | i) and - n = bVarDecl and - ( - none() - or - result = getImmediateChildOfVarDecl(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfGenericTypeParamDecl( GenericTypeParamDecl e, int index, string partialPredicateCall ) { - exists(int b, int bAbstractTypeParamDecl, int n | - b = 0 and - bAbstractTypeParamDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAbstractTypeParamDecl(e, i, _)) | i) and - n = bAbstractTypeParamDecl and + exists(int n, int nMember | + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfAbstractTypeParamDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" ) ) } @@ -905,32 +568,34 @@ private module Impl { private Element getImmediateChildOfNamedFunction( NamedFunction e, int index, string partialPredicateCall ) { - exists(int b, int bAccessorOrNamedFunction, int n | - b = 0 and - bAccessorOrNamedFunction = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfAccessorOrNamedFunction(e, i, _)) | i) and - n = bAccessorOrNamedFunction and + exists( + int n, int nGenericTypeParam, int nMember, int nSelfParam, int nParam, int nBody, int nCapture + | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nSelfParam = nMember + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfAccessorOrNamedFunction(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfNominalTypeDecl( - NominalTypeDecl e, int index, string partialPredicateCall - ) { - exists(int b, int bGenericTypeDecl, int n | - b = 0 and - bGenericTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericTypeDecl(e, i, _)) | i) and - n = bGenericTypeDecl and - ( - none() + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" + or + index = nMember and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" or - result = getImmediateChildOfGenericTypeDecl(e, index - b, partialPredicateCall) + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } @@ -938,35 +603,64 @@ private module Impl { private Element getImmediateChildOfOpaqueTypeDecl( OpaqueTypeDecl e, int index, string partialPredicateCall ) { - exists(int b, int bGenericTypeDecl, int n | - b = 0 and - bGenericTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericTypeDecl(e, i, _)) | i) and - n = bGenericTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfGenericTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfParamDecl(ParamDecl e, int index, string partialPredicateCall) { exists( - int b, int bVarDecl, int n, int nPropertyWrapperLocalWrappedVarBinding, + int n, int nMember, int nAccessor, int nPropertyWrapperBackingVarBinding, + int nPropertyWrapperBackingVar, int nPropertyWrapperProjectionVarBinding, + int nPropertyWrapperProjectionVar, int nPropertyWrapperLocalWrappedVarBinding, int nPropertyWrapperLocalWrappedVar | - b = 0 and - bVarDecl = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfVarDecl(e, i, _)) | i) and - n = bVarDecl and - nPropertyWrapperLocalWrappedVarBinding = n + 1 and + n = 0 and + nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and + nAccessor = nMember + 1 + max(int i | i = -1 or exists(e.getAccessor(i)) | i) and + nPropertyWrapperBackingVarBinding = nAccessor + 1 and + nPropertyWrapperBackingVar = nPropertyWrapperBackingVarBinding + 1 and + nPropertyWrapperProjectionVarBinding = nPropertyWrapperBackingVar + 1 and + nPropertyWrapperProjectionVar = nPropertyWrapperProjectionVarBinding + 1 and + nPropertyWrapperLocalWrappedVarBinding = nPropertyWrapperProjectionVar + 1 and nPropertyWrapperLocalWrappedVar = nPropertyWrapperLocalWrappedVarBinding + 1 and ( none() or - result = getImmediateChildOfVarDecl(e, index - b, partialPredicateCall) + result = e.getMember(index - n) and + partialPredicateCall = "Member(" + (index - n).toString() + ")" or - index = n and + result = e.getAccessor(index - nMember) and + partialPredicateCall = "Accessor(" + (index - nMember).toString() + ")" + or + index = nAccessor and + result = e.getPropertyWrapperBackingVarBinding() and + partialPredicateCall = "PropertyWrapperBackingVarBinding()" + or + index = nPropertyWrapperBackingVarBinding and + result = e.getPropertyWrapperBackingVar() and + partialPredicateCall = "PropertyWrapperBackingVar()" + or + index = nPropertyWrapperBackingVar and + result = e.getPropertyWrapperProjectionVarBinding() and + partialPredicateCall = "PropertyWrapperProjectionVarBinding()" + or + index = nPropertyWrapperProjectionVarBinding and + result = e.getPropertyWrapperProjectionVar() and + partialPredicateCall = "PropertyWrapperProjectionVar()" + or + index = nPropertyWrapperProjectionVar and result = e.getPropertyWrapperLocalWrappedVarBinding() and partialPredicateCall = "PropertyWrapperLocalWrappedVarBinding()" or @@ -980,43 +674,52 @@ private module Impl { private Element getImmediateChildOfTypeAliasDecl( TypeAliasDecl e, int index, string partialPredicateCall ) { - exists(int b, int bGenericTypeDecl, int n | - b = 0 and - bGenericTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfGenericTypeDecl(e, i, _)) | i) and - n = bGenericTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfGenericTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfClassDecl(ClassDecl e, int index, string partialPredicateCall) { - exists(int b, int bNominalTypeDecl, int n | - b = 0 and - bNominalTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalTypeDecl(e, i, _)) | i) and - n = bNominalTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfNominalTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfEnumDecl(EnumDecl e, int index, string partialPredicateCall) { - exists(int b, int bNominalTypeDecl, int n | - b = 0 and - bNominalTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalTypeDecl(e, i, _)) | i) and - n = bNominalTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfNominalTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } @@ -1024,128 +727,73 @@ private module Impl { private Element getImmediateChildOfProtocolDecl( ProtocolDecl e, int index, string partialPredicateCall ) { - exists(int b, int bNominalTypeDecl, int n | - b = 0 and - bNominalTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalTypeDecl(e, i, _)) | i) and - n = bNominalTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfNominalTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfStructDecl(StructDecl e, int index, string partialPredicateCall) { - exists(int b, int bNominalTypeDecl, int n | - b = 0 and - bNominalTypeDecl = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalTypeDecl(e, i, _)) | i) and - n = bNominalTypeDecl and + exists(int n, int nGenericTypeParam, int nMember | + n = 0 and + nGenericTypeParam = n + 1 + max(int i | i = -1 or exists(e.getGenericTypeParam(i)) | i) and + nMember = nGenericTypeParam + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and ( none() or - result = getImmediateChildOfNominalTypeDecl(e, index - b, partialPredicateCall) + result = e.getGenericTypeParam(index - n) and + partialPredicateCall = "GenericTypeParam(" + (index - n).toString() + ")" + or + result = e.getMember(index - nGenericTypeParam) and + partialPredicateCall = "Member(" + (index - nGenericTypeParam).toString() + ")" ) ) } private Element getImmediateChildOfArgument(Argument e, int index, string partialPredicateCall) { - exists(int b, int bLocatable, int n, int nExpr | - b = 0 and - bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and - n = bLocatable and + exists(int n, int nExpr | + n = 0 and nExpr = n + 1 and ( none() or - result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateExpr() and partialPredicateCall = "Expr()" ) ) } - private Element getImmediateChildOfExpr(Expr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyTryExpr(AnyTryExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nSubExpr = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" - ) - ) - } - private Element getImmediateChildOfAppliedPropertyWrapperExpr( AppliedPropertyWrapperExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nValue | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nValue | + n = 0 and nValue = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateValue() and partialPredicateCall = "Value()" ) ) } - private Element getImmediateChildOfApplyExpr(ApplyExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nFunction, int nArgument | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nFunction = n + 1 and - nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" - or - result = e.getArgument(index - nFunction) and - partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" - ) - ) - } - private Element getImmediateChildOfAssignExpr(AssignExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nDest, int nSource | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nDest, int nSource | + n = 0 and nDest = n + 1 and nSource = nDest + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateDest() and partialPredicateCall = "Dest()" or index = nDest and result = e.getImmediateSource() and partialPredicateCall = "Source()" @@ -1156,16 +804,12 @@ private module Impl { private Element getImmediateChildOfBindOptionalExpr( BindOptionalExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1174,18 +818,14 @@ private module Impl { private Element getImmediateChildOfCaptureListExpr( CaptureListExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nBindingDecl, int nVariable, int nClosureBody | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nBindingDecl, int nVariable, int nClosureBody | + n = 0 and nBindingDecl = n + 1 + max(int i | i = -1 or exists(e.getBindingDecl(i)) | i) and nVariable = nBindingDecl + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and nClosureBody = nVariable + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getBindingDecl(index - n) and partialPredicateCall = "BindingDecl(" + (index - n).toString() + ")" or @@ -1199,69 +839,27 @@ private module Impl { ) } - private Element getImmediateChildOfClosureExpr( - ClosureExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int bCallable, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bCallable = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfCallable(e, i, _)) | i) and - n = bCallable and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfCallable(e, index - bExpr, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfCollectionExpr( - CollectionExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfConsumeExpr( ConsumeExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfCopyExpr(CopyExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1270,77 +868,37 @@ private module Impl { private Element getImmediateChildOfCurrentContextIsolationExpr( CurrentContextIsolationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDeclRefExpr( DeclRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDefaultArgumentExpr( DefaultArgumentExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDiscardAssignmentExpr( DiscardAssignmentExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDotSyntaxBaseIgnoredExpr( DotSyntaxBaseIgnoredExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nQualifier, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nQualifier, int nSubExpr | + n = 0 and nQualifier = n + 1 and nSubExpr = nQualifier + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateQualifier() and partialPredicateCall = "Qualifier()" or index = nQualifier and @@ -1353,16 +911,12 @@ private module Impl { private Element getImmediateChildOfDynamicTypeExpr( DynamicTypeExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nBase | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nBase | + n = 0 and nBase = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) @@ -1371,69 +925,30 @@ private module Impl { private Element getImmediateChildOfEnumIsCaseExpr( EnumIsCaseExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfErrorExpr(ErrorExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int bErrorElement, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfExplicitCastExpr( - ExplicitCastExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nSubExpr = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" - ) - ) + none() } private Element getImmediateChildOfExtractFunctionIsolationExpr( ExtractFunctionIsolationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nFunctionExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nFunctionExpr | + n = 0 and nFunctionExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateFunctionExpr() and partialPredicateCall = "FunctionExpr()" @@ -1444,52 +959,26 @@ private module Impl { private Element getImmediateChildOfForceValueExpr( ForceValueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nSubExpr = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" - ) - ) - } - - private Element getImmediateChildOfIdentityExpr( - IdentityExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfIfExpr(IfExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nCondition, int nThenExpr, int nElseExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nCondition, int nThenExpr, int nElseExpr | + n = 0 and nCondition = n + 1 and nThenExpr = nCondition + 1 and nElseExpr = nThenExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateCondition() and partialPredicateCall = "Condition()" or index = nCondition and @@ -1503,35 +992,13 @@ private module Impl { ) } - private Element getImmediateChildOfImplicitConversionExpr( - ImplicitConversionExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nSubExpr = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" - ) - ) - } - private Element getImmediateChildOfInOutExpr(InOutExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1540,17 +1007,13 @@ private module Impl { private Element getImmediateChildOfKeyPathApplicationExpr( KeyPathApplicationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nBase, int nKeyPath | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nBase, int nKeyPath | + n = 0 and nBase = n + 1 and nKeyPath = nBase + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" or index = nBase and result = e.getImmediateKeyPath() and partialPredicateCall = "KeyPath()" @@ -1561,32 +1024,19 @@ private module Impl { private Element getImmediateChildOfKeyPathDotExpr( KeyPathDotExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfKeyPathExpr( KeyPathExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nRoot, int nComponent | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nRoot, int nComponent | + n = 0 and nRoot = n + 1 and nComponent = nRoot + 1 + max(int i | i = -1 or exists(e.getComponent(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getRoot() and partialPredicateCall = "Root()" or result = e.getComponent(index - nRoot) and @@ -1598,67 +1048,28 @@ private module Impl { private Element getImmediateChildOfLazyInitializationExpr( LazyInitializationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } - private Element getImmediateChildOfLiteralExpr( - LiteralExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLookupExpr(LookupExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nBase | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nBase = n + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" - ) - ) - } - private Element getImmediateChildOfMakeTemporarilyEscapableExpr( MakeTemporarilyEscapableExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nEscapingClosure, int nNonescapingClosure, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nEscapingClosure, int nNonescapingClosure, int nSubExpr | + n = 0 and nEscapingClosure = n + 1 and nNonescapingClosure = nEscapingClosure + 1 and nSubExpr = nNonescapingClosure + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateEscapingClosure() and partialPredicateCall = "EscapingClosure()" @@ -1677,16 +1088,12 @@ private module Impl { private Element getImmediateChildOfMaterializePackExpr( MaterializePackExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1695,32 +1102,24 @@ private module Impl { private Element getImmediateChildOfObjCSelectorExpr( ObjCSelectorExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfOneWayExpr(OneWayExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1729,32 +1128,19 @@ private module Impl { private Element getImmediateChildOfOpaqueValueExpr( OpaqueValueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOpenExistentialExpr( OpenExistentialExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr, int nExistential | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr, int nExistential | + n = 0 and nSubExpr = n + 1 and nExistential = nSubExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" or index = nSubExpr and @@ -1767,16 +1153,12 @@ private module Impl { private Element getImmediateChildOfOptionalEvaluationExpr( OptionalEvaluationExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1785,50 +1167,24 @@ private module Impl { private Element getImmediateChildOfOtherInitializerRefExpr( OtherInitializerRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOverloadedDeclRefExpr( OverloadedDeclRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackElementExpr( PackElementExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1837,16 +1193,12 @@ private module Impl { private Element getImmediateChildOfPackExpansionExpr( PackExpansionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nPatternExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nPatternExpr | + n = 0 and nPatternExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediatePatternExpr() and partialPredicateCall = "PatternExpr()" @@ -1857,31 +1209,18 @@ private module Impl { private Element getImmediateChildOfPropertyWrapperValuePlaceholderExpr( PropertyWrapperValuePlaceholderExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfRebindSelfInInitializerExpr( RebindSelfInInitializerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -1890,16 +1229,12 @@ private module Impl { private Element getImmediateChildOfSequenceExpr( SequenceExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nElement | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -1909,16 +1244,12 @@ private module Impl { private Element getImmediateChildOfSingleValueStmtExpr( SingleValueStmtExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nStmt | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nStmt | + n = 0 and nStmt = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getStmt() and partialPredicateCall = "Stmt()" ) ) @@ -1927,30 +1258,17 @@ private module Impl { private Element getImmediateChildOfSuperRefExpr( SuperRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfTapExpr(TapExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nSubExpr, int nBody | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr, int nBody | + n = 0 and nSubExpr = n + 1 and nBody = nSubExpr + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" or index = nSubExpr and result = e.getBody() and partialPredicateCall = "Body()" @@ -1961,32 +1279,24 @@ private module Impl { private Element getImmediateChildOfTupleElementExpr( TupleElementExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfTupleExpr(TupleExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nElement | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -1994,16 +1304,12 @@ private module Impl { } private Element getImmediateChildOfTypeExpr(TypeExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nTypeRepr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) @@ -2012,16 +1318,12 @@ private module Impl { private Element getImmediateChildOfTypeValueExpr( TypeValueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nTypeRepr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nTypeRepr | + n = 0 and nTypeRepr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" ) ) @@ -2030,39 +1332,18 @@ private module Impl { private Element getImmediateChildOfUnresolvedDeclRefExpr( UnresolvedDeclRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnresolvedDotExpr( UnresolvedDotExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n, int nBase | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nBase | + n = 0 and nBase = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - or index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) @@ -2071,39 +1352,18 @@ private module Impl { private Element getImmediateChildOfUnresolvedMemberExpr( UnresolvedMemberExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnresolvedPatternExpr( UnresolvedPatternExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n, int nSubPattern | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -2112,20 +1372,12 @@ private module Impl { private Element getImmediateChildOfUnresolvedSpecializeExpr( UnresolvedSpecializeExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int bErrorElement, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - bErrorElement = - bExpr + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bExpr, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -2134,16 +1386,12 @@ private module Impl { private Element getImmediateChildOfVarargExpansionExpr( VarargExpansionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bExpr, int n, int nSubExpr | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) @@ -2152,16 +1400,13 @@ private module Impl { private Element getImmediateChildOfAbiSafeConversionExpr( AbiSafeConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2169,16 +1414,13 @@ private module Impl { private Element getImmediateChildOfActorIsolationErasureExpr( ActorIsolationErasureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2186,16 +1428,13 @@ private module Impl { private Element getImmediateChildOfAnyHashableErasureExpr( AnyHashableErasureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2203,32 +1442,24 @@ private module Impl { private Element getImmediateChildOfArchetypeToSuperExpr( ArchetypeToSuperExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfArrayExpr(ArrayExpr e, int index, string partialPredicateCall) { - exists(int b, int bCollectionExpr, int n, int nElement | - b = 0 and - bCollectionExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCollectionExpr(e, i, _)) | i) and - n = bCollectionExpr and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfCollectionExpr(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -2238,16 +1469,13 @@ private module Impl { private Element getImmediateChildOfArrayToPointerExpr( ArrayToPointerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2255,56 +1483,64 @@ private module Impl { private Element getImmediateChildOfAutoClosureExpr( AutoClosureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bClosureExpr, int n | - b = 0 and - bClosureExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfClosureExpr(e, i, _)) | i) and - n = bClosureExpr and + exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | + n = 0 and + nSelfParam = n + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfClosureExpr(e, index - b, partialPredicateCall) + index = n and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } private Element getImmediateChildOfAwaitExpr(AwaitExpr e, int index, string partialPredicateCall) { - exists(int b, int bIdentityExpr, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - n = bIdentityExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfBinaryExpr(BinaryExpr e, int index, string partialPredicateCall) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } private Element getImmediateChildOfBorrowExpr(BorrowExpr e, int index, string partialPredicateCall) { - exists(int b, int bIdentityExpr, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - n = bIdentityExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2312,16 +1548,13 @@ private module Impl { private Element getImmediateChildOfBridgeFromObjCExpr( BridgeFromObjCExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2329,61 +1562,29 @@ private module Impl { private Element getImmediateChildOfBridgeToObjCExpr( BridgeToObjCExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and - ( - none() - or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfBuiltinLiteralExpr( - BuiltinLiteralExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bLiteralExpr, int n | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfCallExpr(CallExpr e, int index, string partialPredicateCall) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfCheckedCastExpr( - CheckedCastExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bExplicitCastExpr, int n | - b = 0 and - bExplicitCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExplicitCastExpr(e, i, _)) | i) and - n = bExplicitCastExpr and - ( - none() + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" or - result = getImmediateChildOfExplicitCastExpr(e, index - b, partialPredicateCall) + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } @@ -2391,30 +1592,25 @@ private module Impl { private Element getImmediateChildOfClassMetatypeToObjectExpr( ClassMetatypeToObjectExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfCoerceExpr(CoerceExpr e, int index, string partialPredicateCall) { - exists(int b, int bExplicitCastExpr, int n | - b = 0 and - bExplicitCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExplicitCastExpr(e, i, _)) | i) and - n = bExplicitCastExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfExplicitCastExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2422,16 +1618,13 @@ private module Impl { private Element getImmediateChildOfCollectionUpcastConversionExpr( CollectionUpcastConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2439,16 +1632,13 @@ private module Impl { private Element getImmediateChildOfConditionalBridgeFromObjCExpr( ConditionalBridgeFromObjCExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2456,16 +1646,13 @@ private module Impl { private Element getImmediateChildOfCovariantFunctionConversionExpr( CovariantFunctionConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2473,16 +1660,13 @@ private module Impl { private Element getImmediateChildOfCovariantReturnConversionExpr( CovariantReturnConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2490,16 +1674,13 @@ private module Impl { private Element getImmediateChildOfDerivedToBaseExpr( DerivedToBaseExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2507,16 +1688,13 @@ private module Impl { private Element getImmediateChildOfDestructureTupleExpr( DestructureTupleExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2524,17 +1702,12 @@ private module Impl { private Element getImmediateChildOfDictionaryExpr( DictionaryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bCollectionExpr, int n, int nElement | - b = 0 and - bCollectionExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCollectionExpr(e, i, _)) | i) and - n = bCollectionExpr and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfCollectionExpr(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -2544,16 +1717,13 @@ private module Impl { private Element getImmediateChildOfDifferentiableFunctionExpr( DifferentiableFunctionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2561,16 +1731,13 @@ private module Impl { private Element getImmediateChildOfDifferentiableFunctionExtractOriginalExpr( DifferentiableFunctionExtractOriginalExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2578,31 +1745,13 @@ private module Impl { private Element getImmediateChildOfDotSelfExpr( DotSelfExpr e, int index, string partialPredicateCall ) { - exists(int b, int bIdentityExpr, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - n = bIdentityExpr and - ( - none() - or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfDynamicLookupExpr( - DynamicLookupExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bLookupExpr, int n | - b = 0 and - bLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLookupExpr(e, i, _)) | i) and - n = bLookupExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2610,16 +1759,13 @@ private module Impl { private Element getImmediateChildOfErasureExpr( ErasureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2627,16 +1773,13 @@ private module Impl { private Element getImmediateChildOfExistentialMetatypeToObjectExpr( ExistentialMetatypeToObjectExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2644,15 +1787,24 @@ private module Impl { private Element getImmediateChildOfExplicitClosureExpr( ExplicitClosureExpr e, int index, string partialPredicateCall ) { - exists(int b, int bClosureExpr, int n | - b = 0 and - bClosureExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfClosureExpr(e, i, _)) | i) and - n = bClosureExpr and + exists(int n, int nSelfParam, int nParam, int nBody, int nCapture | + n = 0 and + nSelfParam = n + 1 and + nParam = nSelfParam + 1 + max(int i | i = -1 or exists(e.getParam(i)) | i) and + nBody = nParam + 1 and + nCapture = nBody + 1 + max(int i | i = -1 or exists(e.getCapture(i)) | i) and ( none() or - result = getImmediateChildOfClosureExpr(e, index - b, partialPredicateCall) + index = n and result = e.getSelfParam() and partialPredicateCall = "SelfParam()" + or + result = e.getParam(index - nSelfParam) and + partialPredicateCall = "Param(" + (index - nSelfParam).toString() + ")" + or + index = nParam and result = e.getBody() and partialPredicateCall = "Body()" + or + result = e.getCapture(index - nBody) and + partialPredicateCall = "Capture(" + (index - nBody).toString() + ")" ) ) } @@ -2660,15 +1812,13 @@ private module Impl { private Element getImmediateChildOfForceTryExpr( ForceTryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bAnyTryExpr, int n | - b = 0 and - bAnyTryExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyTryExpr(e, i, _)) | i) and - n = bAnyTryExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfAnyTryExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2676,16 +1826,13 @@ private module Impl { private Element getImmediateChildOfForeignObjectConversionExpr( ForeignObjectConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2693,16 +1840,13 @@ private module Impl { private Element getImmediateChildOfFunctionConversionExpr( FunctionConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2710,16 +1854,13 @@ private module Impl { private Element getImmediateChildOfInOutToPointerExpr( InOutToPointerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2727,16 +1868,13 @@ private module Impl { private Element getImmediateChildOfInjectIntoOptionalExpr( InjectIntoOptionalExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2744,17 +1882,12 @@ private module Impl { private Element getImmediateChildOfInterpolatedStringLiteralExpr( InterpolatedStringLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLiteralExpr, int n, int nAppendingExpr | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and + exists(int n, int nAppendingExpr | + n = 0 and nAppendingExpr = n + 1 and ( none() or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateAppendingExpr() and partialPredicateCall = "AppendingExpr()" @@ -2765,16 +1898,13 @@ private module Impl { private Element getImmediateChildOfLinearFunctionExpr( LinearFunctionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2782,16 +1912,13 @@ private module Impl { private Element getImmediateChildOfLinearFunctionExtractOriginalExpr( LinearFunctionExtractOriginalExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2799,31 +1926,25 @@ private module Impl { private Element getImmediateChildOfLinearToDifferentiableFunctionExpr( LinearToDifferentiableFunctionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfLoadExpr(LoadExpr e, int index, string partialPredicateCall) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2831,15 +1952,13 @@ private module Impl { private Element getImmediateChildOfMemberRefExpr( MemberRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLookupExpr, int n | - b = 0 and - bLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLookupExpr(e, i, _)) | i) and - n = bLookupExpr and + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and ( none() or - result = getImmediateChildOfLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) } @@ -2847,16 +1966,13 @@ private module Impl { private Element getImmediateChildOfMetatypeConversionExpr( MetatypeConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2864,18 +1980,18 @@ private module Impl { private Element getImmediateChildOfMethodLookupExpr( MethodLookupExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLookupExpr, int n, int nMethodRef | - b = 0 and - bLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLookupExpr(e, i, _)) | i) and - n = bLookupExpr and - nMethodRef = n + 1 and + exists(int n, int nBase, int nMethodRef | + n = 0 and + nBase = n + 1 and + nMethodRef = nBase + 1 and ( none() or - result = getImmediateChildOfLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" or - index = n and result = e.getImmediateMethodRef() and partialPredicateCall = "MethodRef()" + index = nBase and + result = e.getImmediateMethodRef() and + partialPredicateCall = "MethodRef()" ) ) } @@ -2883,33 +1999,18 @@ private module Impl { private Element getImmediateChildOfNilLiteralExpr( NilLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLiteralExpr, int n | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and - ( - none() - or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfObjectLiteralExpr( ObjectLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLiteralExpr, int n, int nArgument | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and + exists(int n, int nArgument | + n = 0 and nArgument = n + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) - or result = e.getArgument(index - n) and partialPredicateCall = "Argument(" + (index - n).toString() + ")" ) @@ -2919,29 +2020,25 @@ private module Impl { private Element getImmediateChildOfOptionalTryExpr( OptionalTryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bAnyTryExpr, int n | - b = 0 and - bAnyTryExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyTryExpr(e, i, _)) | i) and - n = bAnyTryExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfAnyTryExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfParenExpr(ParenExpr e, int index, string partialPredicateCall) { - exists(int b, int bIdentityExpr, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - n = bIdentityExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2949,16 +2046,13 @@ private module Impl { private Element getImmediateChildOfPointerToPointerExpr( PointerToPointerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -2966,14 +2060,17 @@ private module Impl { private Element getImmediateChildOfPostfixUnaryExpr( PostfixUnaryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } @@ -2981,14 +2078,17 @@ private module Impl { private Element getImmediateChildOfPrefixUnaryExpr( PrefixUnaryExpr e, int index, string partialPredicateCall ) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } @@ -2996,16 +2096,13 @@ private module Impl { private Element getImmediateChildOfProtocolMetatypeToObjectExpr( ProtocolMetatypeToObjectExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3013,47 +2110,19 @@ private module Impl { private Element getImmediateChildOfRegexLiteralExpr( RegexLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLiteralExpr, int n | - b = 0 and - bLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLiteralExpr(e, i, _)) | i) and - n = bLiteralExpr and - ( - none() - or - result = getImmediateChildOfLiteralExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfSelfApplyExpr( - SelfApplyExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bApplyExpr, int n | - b = 0 and - bApplyExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfApplyExpr(e, i, _)) | i) and - n = bApplyExpr and - ( - none() - or - result = getImmediateChildOfApplyExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfStringToPointerExpr( StringToPointerExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3061,33 +2130,29 @@ private module Impl { private Element getImmediateChildOfSubscriptExpr( SubscriptExpr e, int index, string partialPredicateCall ) { - exists(int b, int bLookupExpr, int n, int nArgument | - b = 0 and - bLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLookupExpr(e, i, _)) | i) and - n = bLookupExpr and - nArgument = n + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and + exists(int n, int nBase, int nArgument | + n = 0 and + nBase = n + 1 and + nArgument = nBase + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" or - result = e.getArgument(index - n) and - partialPredicateCall = "Argument(" + (index - n).toString() + ")" + result = e.getArgument(index - nBase) and + partialPredicateCall = "Argument(" + (index - nBase).toString() + ")" ) ) } private Element getImmediateChildOfTryExpr(TryExpr e, int index, string partialPredicateCall) { - exists(int b, int bAnyTryExpr, int n | - b = 0 and - bAnyTryExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyTryExpr(e, i, _)) | i) and - n = bAnyTryExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfAnyTryExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3095,16 +2160,13 @@ private module Impl { private Element getImmediateChildOfUnderlyingToOpaqueExpr( UnderlyingToOpaqueExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3112,16 +2174,13 @@ private module Impl { private Element getImmediateChildOfUnevaluatedInstanceExpr( UnevaluatedInstanceExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3129,16 +2188,13 @@ private module Impl { private Element getImmediateChildOfUnreachableExpr( UnreachableExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3146,20 +2202,13 @@ private module Impl { private Element getImmediateChildOfUnresolvedMemberChainResultExpr( UnresolvedMemberChainResultExpr e, int index, string partialPredicateCall ) { - exists(int b, int bIdentityExpr, int bErrorElement, int n | - b = 0 and - bIdentityExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfIdentityExpr(e, i, _)) | i) and - bErrorElement = - bIdentityExpr + 1 + - max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfIdentityExpr(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bIdentityExpr, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3167,22 +2216,13 @@ private module Impl { private Element getImmediateChildOfUnresolvedTypeConversionExpr( UnresolvedTypeConversionExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int bErrorElement, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - bErrorElement = - bImplicitConversionExpr + 1 + - max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) - or - result = - getImmediateChildOfErrorElement(e, index - bImplicitConversionExpr, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3190,16 +2230,13 @@ private module Impl { private Element getImmediateChildOfUnsafeCastExpr( UnsafeCastExpr e, int index, string partialPredicateCall ) { - exists(int b, int bImplicitConversionExpr, int n | - b = 0 and - bImplicitConversionExpr = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfImplicitConversionExpr(e, i, _)) | i) and - n = bImplicitConversionExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfImplicitConversionExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3207,31 +2244,19 @@ private module Impl { private Element getImmediateChildOfBooleanLiteralExpr( BooleanLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinLiteralExpr, int n | - b = 0 and - bBuiltinLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinLiteralExpr(e, i, _)) | i) and - n = bBuiltinLiteralExpr and - ( - none() - or - result = getImmediateChildOfBuiltinLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfConditionalCheckedCastExpr( ConditionalCheckedCastExpr e, int index, string partialPredicateCall ) { - exists(int b, int bCheckedCastExpr, int n | - b = 0 and - bCheckedCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCheckedCastExpr(e, i, _)) | i) and - n = bCheckedCastExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfCheckedCastExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3239,15 +2264,17 @@ private module Impl { private Element getImmediateChildOfDotSyntaxCallExpr( DotSyntaxCallExpr e, int index, string partialPredicateCall ) { - exists(int b, int bSelfApplyExpr, int n | - b = 0 and - bSelfApplyExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSelfApplyExpr(e, i, _)) | i) and - n = bSelfApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfSelfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } @@ -3255,15 +2282,13 @@ private module Impl { private Element getImmediateChildOfDynamicMemberRefExpr( DynamicMemberRefExpr e, int index, string partialPredicateCall ) { - exists(int b, int bDynamicLookupExpr, int n | - b = 0 and - bDynamicLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDynamicLookupExpr(e, i, _)) | i) and - n = bDynamicLookupExpr and + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and ( none() or - result = getImmediateChildOfDynamicLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) } @@ -3271,15 +2296,13 @@ private module Impl { private Element getImmediateChildOfDynamicSubscriptExpr( DynamicSubscriptExpr e, int index, string partialPredicateCall ) { - exists(int b, int bDynamicLookupExpr, int n | - b = 0 and - bDynamicLookupExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfDynamicLookupExpr(e, i, _)) | i) and - n = bDynamicLookupExpr and + exists(int n, int nBase | + n = 0 and + nBase = n + 1 and ( none() or - result = getImmediateChildOfDynamicLookupExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateBase() and partialPredicateCall = "Base()" ) ) } @@ -3287,15 +2310,13 @@ private module Impl { private Element getImmediateChildOfForcedCheckedCastExpr( ForcedCheckedCastExpr e, int index, string partialPredicateCall ) { - exists(int b, int bCheckedCastExpr, int n | - b = 0 and - bCheckedCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCheckedCastExpr(e, i, _)) | i) and - n = bCheckedCastExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfCheckedCastExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3303,29 +2324,29 @@ private module Impl { private Element getImmediateChildOfInitializerRefCallExpr( InitializerRefCallExpr e, int index, string partialPredicateCall ) { - exists(int b, int bSelfApplyExpr, int n | - b = 0 and - bSelfApplyExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSelfApplyExpr(e, i, _)) | i) and - n = bSelfApplyExpr and + exists(int n, int nFunction, int nArgument | + n = 0 and + nFunction = n + 1 and + nArgument = nFunction + 1 + max(int i | i = -1 or exists(e.getArgument(i)) | i) and ( none() or - result = getImmediateChildOfSelfApplyExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateFunction() and partialPredicateCall = "Function()" + or + result = e.getArgument(index - nFunction) and + partialPredicateCall = "Argument(" + (index - nFunction).toString() + ")" ) ) } private Element getImmediateChildOfIsExpr(IsExpr e, int index, string partialPredicateCall) { - exists(int b, int bCheckedCastExpr, int n | - b = 0 and - bCheckedCastExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfCheckedCastExpr(e, i, _)) | i) and - n = bCheckedCastExpr and + exists(int n, int nSubExpr | + n = 0 and + nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfCheckedCastExpr(e, index - b, partialPredicateCall) + index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } @@ -3333,122 +2354,40 @@ private module Impl { private Element getImmediateChildOfMagicIdentifierLiteralExpr( MagicIdentifierLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinLiteralExpr, int n | - b = 0 and - bBuiltinLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinLiteralExpr(e, i, _)) | i) and - n = bBuiltinLiteralExpr and - ( - none() - or - result = getImmediateChildOfBuiltinLiteralExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfNumberLiteralExpr( - NumberLiteralExpr e, int index, string partialPredicateCall - ) { - exists(int b, int bBuiltinLiteralExpr, int n | - b = 0 and - bBuiltinLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinLiteralExpr(e, i, _)) | i) and - n = bBuiltinLiteralExpr and - ( - none() - or - result = getImmediateChildOfBuiltinLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfStringLiteralExpr( StringLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinLiteralExpr, int n | - b = 0 and - bBuiltinLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinLiteralExpr(e, i, _)) | i) and - n = bBuiltinLiteralExpr and - ( - none() - or - result = getImmediateChildOfBuiltinLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfFloatLiteralExpr( FloatLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bNumberLiteralExpr, int n | - b = 0 and - bNumberLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNumberLiteralExpr(e, i, _)) | i) and - n = bNumberLiteralExpr and - ( - none() - or - result = getImmediateChildOfNumberLiteralExpr(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfIntegerLiteralExpr( IntegerLiteralExpr e, int index, string partialPredicateCall ) { - exists(int b, int bNumberLiteralExpr, int n | - b = 0 and - bNumberLiteralExpr = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNumberLiteralExpr(e, i, _)) | i) and - n = bNumberLiteralExpr and - ( - none() - or - result = getImmediateChildOfNumberLiteralExpr(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfPattern(Pattern e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfAnyPattern(AnyPattern e, int index, string partialPredicateCall) { - exists(int b, int bPattern, int n | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and - ( - none() - or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBindingPattern( BindingPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -3457,31 +2396,18 @@ private module Impl { private Element getImmediateChildOfBoolPattern( BoolPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and - ( - none() - or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfEnumElementPattern( EnumElementPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -3490,33 +2416,25 @@ private module Impl { private Element getImmediateChildOfExprPattern( ExprPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubExpr | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfIsPattern(IsPattern e, int index, string partialPredicateCall) { - exists(int b, int bPattern, int n, int nCastTypeRepr, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nCastTypeRepr, int nSubPattern | + n = 0 and nCastTypeRepr = n + 1 and nSubPattern = nCastTypeRepr + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getCastTypeRepr() and partialPredicateCall = "CastTypeRepr()" or index = nCastTypeRepr and @@ -3529,31 +2447,18 @@ private module Impl { private Element getImmediateChildOfNamedPattern( NamedPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and - ( - none() - or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOptionalSomePattern( OptionalSomePattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -3562,16 +2467,12 @@ private module Impl { private Element getImmediateChildOfParenPattern( ParenPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern | + n = 0 and nSubPattern = n + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" ) ) @@ -3580,16 +2481,12 @@ private module Impl { private Element getImmediateChildOfTuplePattern( TuplePattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nElement | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or result = e.getImmediateElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -3599,17 +2496,13 @@ private module Impl { private Element getImmediateChildOfTypedPattern( TypedPattern e, int index, string partialPredicateCall ) { - exists(int b, int bPattern, int n, int nSubPattern, int nTypeRepr | - b = 0 and - bPattern = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfPattern(e, i, _)) | i) and - n = bPattern and + exists(int n, int nSubPattern, int nTypeRepr | + n = 0 and nSubPattern = n + 1 and nTypeRepr = nSubPattern + 1 and ( none() or - result = getImmediateChildOfPattern(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubPattern() and partialPredicateCall = "SubPattern()" or index = nSubPattern and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()" @@ -3620,17 +2513,13 @@ private module Impl { private Element getImmediateChildOfCaseLabelItem( CaseLabelItem e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nPattern, int nGuard | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nPattern, int nGuard | + n = 0 and nPattern = n + 1 and nGuard = nPattern + 1 and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediatePattern() and partialPredicateCall = "Pattern()" or index = nPattern and result = e.getImmediateGuard() and partialPredicateCall = "Guard()" @@ -3641,12 +2530,8 @@ private module Impl { private Element getImmediateChildOfConditionElement( ConditionElement e, int index, string partialPredicateCall ) { - exists( - int b, int bAstNode, int n, int nBoolean, int nPattern, int nInitializer, int nAvailability - | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nBoolean, int nPattern, int nInitializer, int nAvailability | + n = 0 and nBoolean = n + 1 and nPattern = nBoolean + 1 and nInitializer = nPattern + 1 and @@ -3654,8 +2539,6 @@ private module Impl { ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateBoolean() and partialPredicateCall = "Boolean()" or index = nBoolean and result = e.getImmediatePattern() and partialPredicateCall = "Pattern()" @@ -3671,32 +2554,15 @@ private module Impl { ) } - private Element getImmediateChildOfStmt(Stmt e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - private Element getImmediateChildOfStmtCondition( StmtCondition e, int index, string partialPredicateCall ) { - exists(int b, int bAstNode, int n, int nElement | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and + exists(int n, int nElement | + n = 0 and nElement = n + 1 + max(int i | i = -1 or exists(e.getElement(i)) | i) and ( none() or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - or result = e.getElement(index - n) and partialPredicateCall = "Element(" + (index - n).toString() + ")" ) @@ -3704,17 +2570,13 @@ private module Impl { } private Element getImmediateChildOfBraceStmt(BraceStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nVariable, int nElement | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nVariable, int nElement | + n = 0 and nVariable = n + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and nElement = nVariable + 1 + max(int i | i = -1 or exists(e.getImmediateElement(i)) | i) and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or result = e.getVariable(index - n) and partialPredicateCall = "Variable(" + (index - n).toString() + ")" or @@ -3725,31 +2587,18 @@ private module Impl { } private Element getImmediateChildOfBreakStmt(BreakStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfCaseStmt(CaseStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nLabel, int nVariable, int nBody | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nLabel, int nVariable, int nBody | + n = 0 and nLabel = n + 1 + max(int i | i = -1 or exists(e.getLabel(i)) | i) and nVariable = nLabel + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and nBody = nVariable + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or result = e.getLabel(index - n) and partialPredicateCall = "Label(" + (index - n).toString() + ")" or @@ -3764,29 +2613,16 @@ private module Impl { private Element getImmediateChildOfContinueStmt( ContinueStmt e, int index, string partialPredicateCall ) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDeferStmt(DeferStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nBody | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nBody | + n = 0 and nBody = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getBody() and partialPredicateCall = "Body()" ) ) @@ -3795,138 +2631,76 @@ private module Impl { private Element getImmediateChildOfDiscardStmt( DiscardStmt e, int index, string partialPredicateCall ) { - exists(int b, int bStmt, int n, int nSubExpr | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfFailStmt(FailStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfFallthroughStmt( FallthroughStmt e, int index, string partialPredicateCall ) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLabeledStmt( - LabeledStmt e, int index, string partialPredicateCall - ) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPoundAssertStmt( PoundAssertStmt e, int index, string partialPredicateCall ) { - exists(int b, int bStmt, int n | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and - ( - none() - or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfReturnStmt(ReturnStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nResult | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nResult | + n = 0 and nResult = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateResult() and partialPredicateCall = "Result()" ) ) } private Element getImmediateChildOfThenStmt(ThenStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nResult | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nResult | + n = 0 and nResult = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateResult() and partialPredicateCall = "Result()" ) ) } private Element getImmediateChildOfThrowStmt(ThrowStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nSubExpr | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nSubExpr | + n = 0 and nSubExpr = n + 1 and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateSubExpr() and partialPredicateCall = "SubExpr()" ) ) } private Element getImmediateChildOfYieldStmt(YieldStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n, int nResult | - b = 0 and - bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and - n = bStmt and + exists(int n, int nResult | + n = 0 and nResult = n + 1 + max(int i | i = -1 or exists(e.getImmediateResult(i)) | i) and ( none() or - result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) - or result = e.getImmediateResult(index - n) and partialPredicateCall = "Result(" + (index - n).toString() + ")" ) @@ -3936,18 +2710,13 @@ private module Impl { private Element getImmediateChildOfDoCatchStmt( DoCatchStmt e, int index, string partialPredicateCall ) { - exists(int b, int bLabeledStmt, int n, int nBody, int nCatch | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + exists(int n, int nBody, int nCatch | + n = 0 and nBody = n + 1 and nCatch = nBody + 1 + max(int i | i = -1 or exists(e.getCatch(i)) | i) and ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getBody() and partialPredicateCall = "Body()" or result = e.getCatch(index - nBody) and @@ -3957,17 +2726,12 @@ private module Impl { } private Element getImmediateChildOfDoStmt(DoStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledStmt, int n, int nBody | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + exists(int n, int nBody | + n = 0 and nBody = n + 1 and ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getBody() and partialPredicateCall = "Body()" ) ) @@ -3977,13 +2741,9 @@ private module Impl { ForEachStmt e, int index, string partialPredicateCall ) { exists( - int b, int bLabeledStmt, int n, int nVariable, int nPattern, int nWhere, int nIteratorVar, - int nNextCall, int nBody + int n, int nVariable, int nPattern, int nWhere, int nIteratorVar, int nNextCall, int nBody | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + n = 0 and nVariable = n + 1 + max(int i | i = -1 or exists(e.getVariable(i)) | i) and nPattern = nVariable + 1 and nWhere = nPattern + 1 and @@ -3993,8 +2753,6 @@ private module Impl { ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or result = e.getVariable(index - n) and partialPredicateCall = "Variable(" + (index - n).toString() + ")" or @@ -4015,40 +2773,16 @@ private module Impl { ) } - private Element getImmediateChildOfLabeledConditionalStmt( - LabeledConditionalStmt e, int index, string partialPredicateCall - ) { - exists(int b, int bLabeledStmt, int n, int nCondition | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and - nCondition = n + 1 and - ( - none() - or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or - index = n and result = e.getCondition() and partialPredicateCall = "Condition()" - ) - ) - } - private Element getImmediateChildOfRepeatWhileStmt( RepeatWhileStmt e, int index, string partialPredicateCall ) { - exists(int b, int bLabeledStmt, int n, int nCondition, int nBody | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + exists(int n, int nCondition, int nBody | + n = 0 and nCondition = n + 1 and nBody = nCondition + 1 and ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateCondition() and partialPredicateCall = "Condition()" or index = nCondition and result = e.getBody() and partialPredicateCall = "Body()" @@ -4057,18 +2791,13 @@ private module Impl { } private Element getImmediateChildOfSwitchStmt(SwitchStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledStmt, int n, int nExpr, int nCase | - b = 0 and - bLabeledStmt = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabeledStmt(e, i, _)) | i) and - n = bLabeledStmt and + exists(int n, int nExpr, int nCase | + n = 0 and nExpr = n + 1 and nCase = nExpr + 1 + max(int i | i = -1 or exists(e.getCase(i)) | i) and ( none() or - result = getImmediateChildOfLabeledStmt(e, index - b, partialPredicateCall) - or index = n and result = e.getImmediateExpr() and partialPredicateCall = "Expr()" or result = e.getCase(index - nExpr) and @@ -4078,38 +2807,32 @@ private module Impl { } private Element getImmediateChildOfGuardStmt(GuardStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledConditionalStmt, int n, int nBody | - b = 0 and - bLabeledConditionalStmt = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfLabeledConditionalStmt(e, i, _)) | i) and - n = bLabeledConditionalStmt and - nBody = n + 1 and - ( + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and + ( none() or - result = getImmediateChildOfLabeledConditionalStmt(e, index - b, partialPredicateCall) + index = n and result = e.getCondition() and partialPredicateCall = "Condition()" or - index = n and result = e.getBody() and partialPredicateCall = "Body()" + index = nCondition and result = e.getBody() and partialPredicateCall = "Body()" ) ) } private Element getImmediateChildOfIfStmt(IfStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledConditionalStmt, int n, int nThen, int nElse | - b = 0 and - bLabeledConditionalStmt = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfLabeledConditionalStmt(e, i, _)) | i) and - n = bLabeledConditionalStmt and - nThen = n + 1 and + exists(int n, int nCondition, int nThen, int nElse | + n = 0 and + nCondition = n + 1 and + nThen = nCondition + 1 and nElse = nThen + 1 and ( none() or - result = getImmediateChildOfLabeledConditionalStmt(e, index - b, partialPredicateCall) + index = n and result = e.getCondition() and partialPredicateCall = "Condition()" or - index = n and result = e.getThen() and partialPredicateCall = "Then()" + index = nCondition and result = e.getThen() and partialPredicateCall = "Then()" or index = nThen and result = e.getElse() and partialPredicateCall = "Else()" ) @@ -4117,1140 +2840,332 @@ private module Impl { } private Element getImmediateChildOfWhileStmt(WhileStmt e, int index, string partialPredicateCall) { - exists(int b, int bLabeledConditionalStmt, int n, int nBody | - b = 0 and - bLabeledConditionalStmt = - b + 1 + - max(int i | i = -1 or exists(getImmediateChildOfLabeledConditionalStmt(e, i, _)) | i) and - n = bLabeledConditionalStmt and - nBody = n + 1 and + exists(int n, int nCondition, int nBody | + n = 0 and + nCondition = n + 1 and + nBody = nCondition + 1 and ( none() or - result = getImmediateChildOfLabeledConditionalStmt(e, index - b, partialPredicateCall) - or - index = n and result = e.getBody() and partialPredicateCall = "Body()" - ) - ) - } - - private Element getImmediateChildOfType(Type e, int index, string partialPredicateCall) { - exists(int b, int bElement, int n | - b = 0 and - bElement = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfElement(e, i, _)) | i) and - n = bElement and - ( - none() + index = n and result = e.getCondition() and partialPredicateCall = "Condition()" or - result = getImmediateChildOfElement(e, index - b, partialPredicateCall) + index = nCondition and result = e.getBody() and partialPredicateCall = "Body()" ) ) } private Element getImmediateChildOfTypeRepr(TypeRepr e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n | - b = 0 and - bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and - n = bAstNode and - ( - none() - or - result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyFunctionType( - AnyFunctionType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyGenericType( - AnyGenericType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyMetatypeType( - AnyMetatypeType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfBuiltinType( - BuiltinType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDependentMemberType( DependentMemberType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDynamicSelfType( DynamicSelfType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfErrorType(ErrorType e, int index, string partialPredicateCall) { - exists(int b, int bType, int bErrorElement, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - bErrorElement = - bType + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bType, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfExistentialType( ExistentialType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfInOutType(InOutType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfIntegerType( IntegerType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfLValueType(LValueType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfModuleType(ModuleType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackElementType( PackElementType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackExpansionType( PackExpansionType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackType(PackType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfParameterizedProtocolType( ParameterizedProtocolType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfProtocolCompositionType( ProtocolCompositionType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfReferenceStorageType( - ReferenceStorageType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfSubstitutableType( - SubstitutableType e, int index, string partialPredicateCall - ) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfSugarType(SugarType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfTupleType(TupleType e, int index, string partialPredicateCall) { - exists(int b, int bType, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - n = bType and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnresolvedType( UnresolvedType e, int index, string partialPredicateCall ) { - exists(int b, int bType, int bErrorElement, int n | - b = 0 and - bType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfType(e, i, _)) | i) and - bErrorElement = - bType + 1 + max(int i | i = -1 or exists(getImmediateChildOfErrorElement(e, i, _)) | i) and - n = bErrorElement and - ( - none() - or - result = getImmediateChildOfType(e, index - b, partialPredicateCall) - or - result = getImmediateChildOfErrorElement(e, index - bType, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfAnyBuiltinIntegerType( - AnyBuiltinIntegerType e, int index, string partialPredicateCall - ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfArchetypeType( - ArchetypeType e, int index, string partialPredicateCall - ) { - exists(int b, int bSubstitutableType, int n | - b = 0 and - bSubstitutableType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSubstitutableType(e, i, _)) | i) and - n = bSubstitutableType and - ( - none() - or - result = getImmediateChildOfSubstitutableType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinBridgeObjectType( BuiltinBridgeObjectType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinDefaultActorStorageType( BuiltinDefaultActorStorageType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinExecutorType( BuiltinExecutorType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinFixedArrayType( BuiltinFixedArrayType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinFloatType( BuiltinFloatType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinJobType( BuiltinJobType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinNativeObjectType( BuiltinNativeObjectType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinRawPointerType( BuiltinRawPointerType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinRawUnsafeContinuationType( BuiltinRawUnsafeContinuationType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinUnsafeValueBufferType( BuiltinUnsafeValueBufferType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinVectorType( BuiltinVectorType e, int index, string partialPredicateCall ) { - exists(int b, int bBuiltinType, int n | - b = 0 and - bBuiltinType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBuiltinType(e, i, _)) | i) and - n = bBuiltinType and - ( - none() - or - result = getImmediateChildOfBuiltinType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfExistentialMetatypeType( ExistentialMetatypeType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyMetatypeType, int n | - b = 0 and - bAnyMetatypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyMetatypeType(e, i, _)) | i) and - n = bAnyMetatypeType and - ( - none() - or - result = getImmediateChildOfAnyMetatypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfFunctionType( FunctionType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyFunctionType, int n | - b = 0 and - bAnyFunctionType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyFunctionType(e, i, _)) | i) and - n = bAnyFunctionType and - ( - none() - or - result = getImmediateChildOfAnyFunctionType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfGenericFunctionType( GenericFunctionType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyFunctionType, int n | - b = 0 and - bAnyFunctionType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyFunctionType(e, i, _)) | i) and - n = bAnyFunctionType and - ( - none() - or - result = getImmediateChildOfAnyFunctionType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfGenericTypeParamType( GenericTypeParamType e, int index, string partialPredicateCall ) { - exists(int b, int bSubstitutableType, int n | - b = 0 and - bSubstitutableType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSubstitutableType(e, i, _)) | i) and - n = bSubstitutableType and - ( - none() - or - result = getImmediateChildOfSubstitutableType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfMetatypeType( MetatypeType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyMetatypeType, int n | - b = 0 and - bAnyMetatypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyMetatypeType(e, i, _)) | i) and - n = bAnyMetatypeType and - ( - none() - or - result = getImmediateChildOfAnyMetatypeType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfNominalOrBoundGenericNominalType( - NominalOrBoundGenericNominalType e, int index, string partialPredicateCall - ) { - exists(int b, int bAnyGenericType, int n | - b = 0 and - bAnyGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyGenericType(e, i, _)) | i) and - n = bAnyGenericType and - ( - none() - or - result = getImmediateChildOfAnyGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfParenType(ParenType e, int index, string partialPredicateCall) { - exists(int b, int bSugarType, int n | - b = 0 and - bSugarType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSugarType(e, i, _)) | i) and - n = bSugarType and - ( - none() - or - result = getImmediateChildOfSugarType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfSyntaxSugarType( - SyntaxSugarType e, int index, string partialPredicateCall - ) { - exists(int b, int bSugarType, int n | - b = 0 and - bSugarType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSugarType(e, i, _)) | i) and - n = bSugarType and - ( - none() - or - result = getImmediateChildOfSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfTypeAliasType( TypeAliasType e, int index, string partialPredicateCall ) { - exists(int b, int bSugarType, int n | - b = 0 and - bSugarType = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSugarType(e, i, _)) | i) and - n = bSugarType and - ( - none() - or - result = getImmediateChildOfSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnboundGenericType( UnboundGenericType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyGenericType, int n | - b = 0 and - bAnyGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyGenericType(e, i, _)) | i) and - n = bAnyGenericType and - ( - none() - or - result = getImmediateChildOfAnyGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnmanagedStorageType( UnmanagedStorageType e, int index, string partialPredicateCall ) { - exists(int b, int bReferenceStorageType, int n | - b = 0 and - bReferenceStorageType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfReferenceStorageType(e, i, _)) | i) and - n = bReferenceStorageType and - ( - none() - or - result = getImmediateChildOfReferenceStorageType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfUnownedStorageType( UnownedStorageType e, int index, string partialPredicateCall ) { - exists(int b, int bReferenceStorageType, int n | - b = 0 and - bReferenceStorageType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfReferenceStorageType(e, i, _)) | i) and - n = bReferenceStorageType and - ( - none() - or - result = getImmediateChildOfReferenceStorageType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfWeakStorageType( WeakStorageType e, int index, string partialPredicateCall ) { - exists(int b, int bReferenceStorageType, int n | - b = 0 and - bReferenceStorageType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfReferenceStorageType(e, i, _)) | i) and - n = bReferenceStorageType and - ( - none() - or - result = getImmediateChildOfReferenceStorageType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfBoundGenericType( - BoundGenericType e, int index, string partialPredicateCall - ) { - exists(int b, int bNominalOrBoundGenericNominalType, int n | - b = 0 and - bNominalOrBoundGenericNominalType = - b + 1 + - max(int i | - i = -1 or exists(getImmediateChildOfNominalOrBoundGenericNominalType(e, i, _)) - | - i - ) and - n = bNominalOrBoundGenericNominalType and - ( - none() - or - result = - getImmediateChildOfNominalOrBoundGenericNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinIntegerLiteralType( BuiltinIntegerLiteralType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyBuiltinIntegerType, int n | - b = 0 and - bAnyBuiltinIntegerType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyBuiltinIntegerType(e, i, _)) | i) and - n = bAnyBuiltinIntegerType and - ( - none() - or - result = getImmediateChildOfAnyBuiltinIntegerType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBuiltinIntegerType( BuiltinIntegerType e, int index, string partialPredicateCall ) { - exists(int b, int bAnyBuiltinIntegerType, int n | - b = 0 and - bAnyBuiltinIntegerType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAnyBuiltinIntegerType(e, i, _)) | i) and - n = bAnyBuiltinIntegerType and - ( - none() - or - result = getImmediateChildOfAnyBuiltinIntegerType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfDictionaryType( DictionaryType e, int index, string partialPredicateCall ) { - exists(int b, int bSyntaxSugarType, int n | - b = 0 and - bSyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSyntaxSugarType(e, i, _)) | i) and - n = bSyntaxSugarType and - ( - none() - or - result = getImmediateChildOfSyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfLocalArchetypeType( - LocalArchetypeType e, int index, string partialPredicateCall - ) { - exists(int b, int bArchetypeType, int n | - b = 0 and - bArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArchetypeType(e, i, _)) | i) and - n = bArchetypeType and - ( - none() - or - result = getImmediateChildOfArchetypeType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfNominalType( - NominalType e, int index, string partialPredicateCall - ) { - exists(int b, int bNominalOrBoundGenericNominalType, int n | - b = 0 and - bNominalOrBoundGenericNominalType = - b + 1 + - max(int i | - i = -1 or exists(getImmediateChildOfNominalOrBoundGenericNominalType(e, i, _)) - | - i - ) and - n = bNominalOrBoundGenericNominalType and - ( - none() - or - result = - getImmediateChildOfNominalOrBoundGenericNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOpaqueTypeArchetypeType( OpaqueTypeArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bArchetypeType, int n | - b = 0 and - bArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArchetypeType(e, i, _)) | i) and - n = bArchetypeType and - ( - none() - or - result = getImmediateChildOfArchetypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPackArchetypeType( PackArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bArchetypeType, int n | - b = 0 and - bArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArchetypeType(e, i, _)) | i) and - n = bArchetypeType and - ( - none() - or - result = getImmediateChildOfArchetypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfPrimaryArchetypeType( PrimaryArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bArchetypeType, int n | - b = 0 and - bArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfArchetypeType(e, i, _)) | i) and - n = bArchetypeType and - ( - none() - or - result = getImmediateChildOfArchetypeType(e, index - b, partialPredicateCall) - ) - ) - } - - private Element getImmediateChildOfUnarySyntaxSugarType( - UnarySyntaxSugarType e, int index, string partialPredicateCall - ) { - exists(int b, int bSyntaxSugarType, int n | - b = 0 and - bSyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfSyntaxSugarType(e, i, _)) | i) and - n = bSyntaxSugarType and - ( - none() - or - result = getImmediateChildOfSyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfArraySliceType( ArraySliceType e, int index, string partialPredicateCall ) { - exists(int b, int bUnarySyntaxSugarType, int n | - b = 0 and - bUnarySyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnarySyntaxSugarType(e, i, _)) | i) and - n = bUnarySyntaxSugarType and - ( - none() - or - result = getImmediateChildOfUnarySyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBoundGenericClassType( BoundGenericClassType e, int index, string partialPredicateCall ) { - exists(int b, int bBoundGenericType, int n | - b = 0 and - bBoundGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBoundGenericType(e, i, _)) | i) and - n = bBoundGenericType and - ( - none() - or - result = getImmediateChildOfBoundGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBoundGenericEnumType( BoundGenericEnumType e, int index, string partialPredicateCall ) { - exists(int b, int bBoundGenericType, int n | - b = 0 and - bBoundGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBoundGenericType(e, i, _)) | i) and - n = bBoundGenericType and - ( - none() - or - result = getImmediateChildOfBoundGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfBoundGenericStructType( BoundGenericStructType e, int index, string partialPredicateCall ) { - exists(int b, int bBoundGenericType, int n | - b = 0 and - bBoundGenericType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBoundGenericType(e, i, _)) | i) and - n = bBoundGenericType and - ( - none() - or - result = getImmediateChildOfBoundGenericType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfClassType(ClassType e, int index, string partialPredicateCall) { - exists(int b, int bNominalType, int n | - b = 0 and - bNominalType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalType(e, i, _)) | i) and - n = bNominalType and - ( - none() - or - result = getImmediateChildOfNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfElementArchetypeType( ElementArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bLocalArchetypeType, int n | - b = 0 and - bLocalArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocalArchetypeType(e, i, _)) | i) and - n = bLocalArchetypeType and - ( - none() - or - result = getImmediateChildOfLocalArchetypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfEnumType(EnumType e, int index, string partialPredicateCall) { - exists(int b, int bNominalType, int n | - b = 0 and - bNominalType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalType(e, i, _)) | i) and - n = bNominalType and - ( - none() - or - result = getImmediateChildOfNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOpenedArchetypeType( OpenedArchetypeType e, int index, string partialPredicateCall ) { - exists(int b, int bLocalArchetypeType, int n | - b = 0 and - bLocalArchetypeType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocalArchetypeType(e, i, _)) | i) and - n = bLocalArchetypeType and - ( - none() - or - result = getImmediateChildOfLocalArchetypeType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfOptionalType( OptionalType e, int index, string partialPredicateCall ) { - exists(int b, int bUnarySyntaxSugarType, int n | - b = 0 and - bUnarySyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnarySyntaxSugarType(e, i, _)) | i) and - n = bUnarySyntaxSugarType and - ( - none() - or - result = getImmediateChildOfUnarySyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfProtocolType( ProtocolType e, int index, string partialPredicateCall ) { - exists(int b, int bNominalType, int n | - b = 0 and - bNominalType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalType(e, i, _)) | i) and - n = bNominalType and - ( - none() - or - result = getImmediateChildOfNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfStructType(StructType e, int index, string partialPredicateCall) { - exists(int b, int bNominalType, int n | - b = 0 and - bNominalType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfNominalType(e, i, _)) | i) and - n = bNominalType and - ( - none() - or - result = getImmediateChildOfNominalType(e, index - b, partialPredicateCall) - ) - ) + none() } private Element getImmediateChildOfVariadicSequenceType( VariadicSequenceType e, int index, string partialPredicateCall ) { - exists(int b, int bUnarySyntaxSugarType, int n | - b = 0 and - bUnarySyntaxSugarType = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfUnarySyntaxSugarType(e, i, _)) | i) and - n = bUnarySyntaxSugarType and - ( - none() - or - result = getImmediateChildOfUnarySyntaxSugarType(e, index - b, partialPredicateCall) - ) - ) + none() } cached diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected index ade626085696..7512cce37122 100644 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected +++ b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.expected @@ -35,6 +35,8 @@ instances | accessors.swift:38:9:38:9 | set | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> (Int) -> () | isGetter: | no | isSetter: | yes | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | no | | accessors.swift:39:9:41:9 | unsafeAddress | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (Foo) -> () -> UnsafePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | yes | isUnsafeMutableAddress: | no | | accessors.swift:42:9:44:9 | unsafeMutableAddress | getModule: | file://:0:0:0:0 | accessors | getInterfaceType: | (inout Foo) -> () -> UnsafeMutablePointer | isGetter: | no | isSetter: | no | isWillSet: | no | isDidSet: | no | isRead: | no | isModify: | no | isUnsafeAddress: | no | isUnsafeMutableAddress: | yes | +getGenericTypeParam +getMember getName | accessors.swift:2:9:2:9 | _modify | (unnamed function decl) | | accessors.swift:2:9:2:9 | get | (unnamed function decl) | @@ -161,5 +163,3 @@ getBody | accessors.swift:39:9:41:9 | unsafeAddress | accessors.swift:39:23:41:9 | { ... } | | accessors.swift:42:9:44:9 | unsafeMutableAddress | accessors.swift:42:30:44:9 | { ... } | getCapture -getGenericTypeParam -getMember diff --git a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql index 8fd5bfbcd9ec..f05c5d94bba8 100644 --- a/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql +++ b/swift/ql/test/extractor-tests/generated/decl/Accessor/Accessor.ql @@ -36,6 +36,14 @@ query predicate instances( else isUnsafeMutableAddress = "no" } +query predicate getGenericTypeParam(Accessor x, int index, GenericTypeParamDecl getGenericTypeParam) { + toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) +} + +query predicate getMember(Accessor x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + query predicate getName(Accessor x, string getName) { toBeTested(x) and not x.isUnknown() and getName = x.getName() } @@ -55,11 +63,3 @@ query predicate getBody(Accessor x, BraceStmt getBody) { query predicate getCapture(Accessor x, int index, CapturedDecl getCapture) { toBeTested(x) and not x.isUnknown() and getCapture = x.getCapture(index) } - -query predicate getGenericTypeParam(Accessor x, int index, GenericTypeParamDecl getGenericTypeParam) { - toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) -} - -query predicate getMember(Accessor x, int index, Decl getMember) { - toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) -} diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.expected b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.expected index 581c5d53fc84..1dd2c0c4695c 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.expected +++ b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.expected @@ -3,6 +3,7 @@ instances | extensions.swift:11:1:15:1 | extension of C | getModule: | file://:0:0:0:0 | extensions | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | | extensions.swift:21:1:23:1 | extension of S | getModule: | file://:0:0:0:0 | extensions | getExtendedTypeDecl: | extensions.swift:1:1:1:11 | S | | extensions.swift:27:1:29:1 | extension of C | getModule: | file://:0:0:0:0 | extensions | getExtendedTypeDecl: | extensions.swift:3:1:3:10 | C | +getGenericTypeParam getMember | extensions.swift:5:1:9:1 | extension of S | 0 | extensions.swift:6:5:6:37 | var ... = ... | | extensions.swift:5:1:9:1 | extension of S | 1 | extensions.swift:6:9:6:9 | x | @@ -12,7 +13,6 @@ getMember | extensions.swift:11:1:15:1 | extension of C | 2 | extensions.swift:14:5:14:17 | bar() | | extensions.swift:21:1:23:1 | extension of S | 0 | extensions.swift:22:5:22:17 | baz() | | extensions.swift:27:1:29:1 | extension of C | 0 | extensions.swift:28:5:28:17 | baz() | -getGenericTypeParam getProtocol | extensions.swift:21:1:23:1 | extension of S | 0 | extensions.swift:17:1:19:1 | P1 | | extensions.swift:27:1:29:1 | extension of C | 0 | extensions.swift:17:1:19:1 | P1 | diff --git a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql index f5900f76e5f3..3e4f6ddaddc8 100644 --- a/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql +++ b/swift/ql/test/extractor-tests/generated/decl/ExtensionDecl/ExtensionDecl.ql @@ -14,16 +14,16 @@ query predicate instances( getExtendedTypeDecl = x.getExtendedTypeDecl() } -query predicate getMember(ExtensionDecl x, int index, Decl getMember) { - toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) -} - query predicate getGenericTypeParam( ExtensionDecl x, int index, GenericTypeParamDecl getGenericTypeParam ) { toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) } +query predicate getMember(ExtensionDecl x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + query predicate getProtocol(ExtensionDecl x, int index, ProtocolDecl getProtocol) { toBeTested(x) and not x.isUnknown() and getProtocol = x.getProtocol(index) } diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.expected b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.expected index df6bc9c97614..41cad53c61cd 100644 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.expected +++ b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.expected @@ -4,6 +4,10 @@ instances | functions.swift:10:5:10:28 | noBody(x:) | getModule: | file://:0:0:0:0 | functions | getInterfaceType: | (Self) -> (Int) -> Int | | functions.swift:13:1:15:1 | variadic(_:) | getModule: | file://:0:0:0:0 | functions | getInterfaceType: | (Int...) -> () | | functions.swift:17:1:19:1 | generic(x:y:) | getModule: | file://:0:0:0:0 | functions | getInterfaceType: | (X, Y) -> () | +getGenericTypeParam +| functions.swift:17:1:19:1 | generic(x:y:) | 0 | functions.swift:17:14:17:14 | X | +| functions.swift:17:1:19:1 | generic(x:y:) | 1 | functions.swift:17:17:17:17 | Y | +getMember getName | functions.swift:1:1:3:1 | foo() | foo() | | functions.swift:5:1:7:1 | bar(_:d:) | bar(_:d:) | @@ -25,7 +29,3 @@ getBody | functions.swift:13:1:15:1 | variadic(_:) | functions.swift:13:31:15:1 | { ... } | | functions.swift:17:1:19:1 | generic(x:y:) | functions.swift:17:32:19:1 | { ... } | getCapture -getGenericTypeParam -| functions.swift:17:1:19:1 | generic(x:y:) | 0 | functions.swift:17:14:17:14 | X | -| functions.swift:17:1:19:1 | generic(x:y:) | 1 | functions.swift:17:17:17:17 | Y | -getMember diff --git a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql index ef59d8da5d6a..5ecf5d80417c 100644 --- a/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql +++ b/swift/ql/test/extractor-tests/generated/decl/NamedFunction/NamedFunction.ql @@ -14,6 +14,16 @@ query predicate instances( getInterfaceType = x.getInterfaceType() } +query predicate getGenericTypeParam( + NamedFunction x, int index, GenericTypeParamDecl getGenericTypeParam +) { + toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) +} + +query predicate getMember(NamedFunction x, int index, Decl getMember) { + toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) +} + query predicate getName(NamedFunction x, string getName) { toBeTested(x) and not x.isUnknown() and getName = x.getName() } @@ -33,13 +43,3 @@ query predicate getBody(NamedFunction x, BraceStmt getBody) { query predicate getCapture(NamedFunction x, int index, CapturedDecl getCapture) { toBeTested(x) and not x.isUnknown() and getCapture = x.getCapture(index) } - -query predicate getGenericTypeParam( - NamedFunction x, int index, GenericTypeParamDecl getGenericTypeParam -) { - toBeTested(x) and not x.isUnknown() and getGenericTypeParam = x.getGenericTypeParam(index) -} - -query predicate getMember(NamedFunction x, int index, Decl getMember) { - toBeTested(x) and not x.isUnknown() and getMember = x.getMember(index) -}