mirror of
https://github.com/github/codeql.git
synced 2026-05-05 05:35:13 +02:00
Merge pull request #10869 from github/redsun82/swift-no-base-suffix
Swift: replace `Base` suffix with `Generated::` module
This commit is contained in:
@@ -157,10 +157,10 @@ def get_types_used_by(cls: ql.Class) -> typing.Iterable[str]:
|
||||
|
||||
|
||||
def get_classes_used_by(cls: ql.Class) -> typing.List[str]:
|
||||
return sorted(set(t for t in get_types_used_by(cls) if t[0].isupper()))
|
||||
return sorted(set(t for t in get_types_used_by(cls) if t[0].isupper() and t != cls.name))
|
||||
|
||||
|
||||
_generated_stub_re = re.compile(r"\n*private import .*\n+class \w+ extends \w+ \{[ \n]?\}", re.MULTILINE)
|
||||
_generated_stub_re = re.compile(r"\n*private import .*\n+class \w+ extends Generated::\w+ \{[ \n]?\}", re.MULTILINE)
|
||||
|
||||
|
||||
def _is_generated_stub(file: pathlib.Path) -> bool:
|
||||
|
||||
@@ -5,69 +5,71 @@ private import codeql.swift.generated.Raw
|
||||
import {{.}}
|
||||
{{/imports}}
|
||||
|
||||
class {{name}}Base extends Synth::T{{name}}{{#bases}}, {{.}}{{/bases}} {
|
||||
{{#root}}
|
||||
string toString() { none() } // overridden by subclasses
|
||||
module Generated {
|
||||
class {{name}} extends Synth::T{{name}}{{#bases}}, {{.}}{{/bases}} {
|
||||
{{#root}}
|
||||
string toString() { none() } // overridden by subclasses
|
||||
|
||||
string getAPrimaryQlClass() { none() } // overridden by subclasses
|
||||
string getAPrimaryQlClass() { none() } // overridden by subclasses
|
||||
|
||||
final string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") }
|
||||
final string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") }
|
||||
|
||||
{{name}}Base getResolveStep() { none() } // overridden by subclasses
|
||||
{{name}} getResolveStep() { none() } // overridden by subclasses
|
||||
|
||||
final {{name}}Base resolve() {
|
||||
not exists(getResolveStep()) and result = this
|
||||
or
|
||||
result = getResolveStep().resolve()
|
||||
final {{name}} resolve() {
|
||||
not exists(getResolveStep()) and result = this
|
||||
or
|
||||
result = getResolveStep().resolve()
|
||||
}
|
||||
{{/root}}
|
||||
{{#final}}
|
||||
override string getAPrimaryQlClass() { result = "{{name}}" }
|
||||
{{/final}}
|
||||
{{#properties}}
|
||||
|
||||
{{#type_is_class}}
|
||||
{{type}} getImmediate{{singular}}({{#is_repeated}}int index{{/is_repeated}}) {
|
||||
{{^ipa}}
|
||||
result = Synth::convert{{type}}FromRaw(Synth::convert{{name}}ToRaw(this){{^root}}.(Raw::{{name}}){{/root}}.{{getter}}({{#is_repeated}}index{{/is_repeated}}))
|
||||
{{/ipa}}
|
||||
{{#ipa}}
|
||||
none()
|
||||
{{/ipa}}
|
||||
}
|
||||
|
||||
final {{type}} {{getter}}({{#is_repeated}}int index{{/is_repeated}}) {
|
||||
result = getImmediate{{singular}}({{#is_repeated}}index{{/is_repeated}}).resolve()
|
||||
}
|
||||
|
||||
{{/type_is_class}}
|
||||
{{^type_is_class}}
|
||||
{{type}} {{getter}}({{#is_repeated}}int index{{/is_repeated}}) {
|
||||
{{^ipa}}
|
||||
{{^is_predicate}}result = {{/is_predicate}}Synth::convert{{name}}ToRaw(this){{^root}}.(Raw::{{name}}){{/root}}.{{getter}}({{#is_repeated}}index{{/is_repeated}})
|
||||
{{/ipa}}
|
||||
{{#ipa}}
|
||||
none()
|
||||
{{/ipa}}
|
||||
}
|
||||
|
||||
{{/type_is_class}}
|
||||
{{#is_optional}}
|
||||
final predicate has{{singular}}({{#is_repeated}}int index{{/is_repeated}}) {
|
||||
exists({{getter}}({{#is_repeated}}index{{/is_repeated}}))
|
||||
}
|
||||
{{/is_optional}}
|
||||
{{#is_repeated}}
|
||||
|
||||
final {{type}} {{indefinite_getter}}() {
|
||||
result = {{getter}}(_)
|
||||
}
|
||||
{{^is_optional}}
|
||||
|
||||
final int getNumberOf{{plural}}() {
|
||||
result = count({{indefinite_getter}}())
|
||||
}
|
||||
{{/is_optional}}
|
||||
{{/is_repeated}}
|
||||
{{/properties}}
|
||||
}
|
||||
{{/root}}
|
||||
{{#final}}
|
||||
override string getAPrimaryQlClass() { result = "{{name}}" }
|
||||
{{/final}}
|
||||
{{#properties}}
|
||||
|
||||
{{#type_is_class}}
|
||||
{{type}} getImmediate{{singular}}({{#is_repeated}}int index{{/is_repeated}}) {
|
||||
{{^ipa}}
|
||||
result = Synth::convert{{type}}FromRaw(Synth::convert{{name}}ToRaw(this){{^root}}.(Raw::{{name}}){{/root}}.{{getter}}({{#is_repeated}}index{{/is_repeated}}))
|
||||
{{/ipa}}
|
||||
{{#ipa}}
|
||||
none()
|
||||
{{/ipa}}
|
||||
}
|
||||
|
||||
final {{type}} {{getter}}({{#is_repeated}}int index{{/is_repeated}}) {
|
||||
result = getImmediate{{singular}}({{#is_repeated}}index{{/is_repeated}}).resolve()
|
||||
}
|
||||
|
||||
{{/type_is_class}}
|
||||
{{^type_is_class}}
|
||||
{{type}} {{getter}}({{#is_repeated}}int index{{/is_repeated}}) {
|
||||
{{^ipa}}
|
||||
{{^is_predicate}}result = {{/is_predicate}}Synth::convert{{name}}ToRaw(this){{^root}}.(Raw::{{name}}){{/root}}.{{getter}}({{#is_repeated}}index{{/is_repeated}})
|
||||
{{/ipa}}
|
||||
{{#ipa}}
|
||||
none()
|
||||
{{/ipa}}
|
||||
}
|
||||
|
||||
{{/type_is_class}}
|
||||
{{#is_optional}}
|
||||
final predicate has{{singular}}({{#is_repeated}}int index{{/is_repeated}}) {
|
||||
exists({{getter}}({{#is_repeated}}index{{/is_repeated}}))
|
||||
}
|
||||
{{/is_optional}}
|
||||
{{#is_repeated}}
|
||||
|
||||
final {{type}} {{indefinite_getter}}() {
|
||||
result = {{getter}}(_)
|
||||
}
|
||||
{{^is_optional}}
|
||||
|
||||
final int getNumberOf{{plural}}() {
|
||||
result = count({{indefinite_getter}}())
|
||||
}
|
||||
{{/is_optional}}
|
||||
{{/is_repeated}}
|
||||
{{/properties}}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// generated by {{generator}}, remove this comment if you wish to edit this file
|
||||
private import {{base_import}}
|
||||
|
||||
class {{name}} extends {{name}}Base {}
|
||||
class {{name}} extends Generated::{{name}} {}
|
||||
|
||||
@@ -425,7 +425,7 @@ def test_non_empty_cleanup(opts, generate, renderer):
|
||||
test_c = opts.ql_test_output / "B.txt"
|
||||
write(ql_a)
|
||||
write(ql_b)
|
||||
write(stub_a, "// generated\nprivate import bla\n\nclass foo extends bar {\n}\n")
|
||||
write(stub_a, "// generated\nprivate import bla\n\nclass foo extends Generated::bar {\n}\n")
|
||||
write(stub_b, "bar\n")
|
||||
write(test_a)
|
||||
write(test_b)
|
||||
@@ -437,7 +437,7 @@ def test_non_empty_cleanup(opts, generate, renderer):
|
||||
|
||||
def test_modified_stub_still_generated(qlgen_opts, renderer):
|
||||
stub = qlgen_opts.ql_stub_output / "A.qll"
|
||||
write(stub, "// generated\nprivate import bla\n\nclass foo extends bar, baz {\n}\n")
|
||||
write(stub, "// generated\nprivate import bla\n\nclass foo extends Generated::bar, baz {\n}\n")
|
||||
with pytest.raises(qlgen.ModifiedStubMarkedAsGeneratedError):
|
||||
run_generation(qlgen.generate, qlgen_opts, renderer)
|
||||
|
||||
@@ -445,7 +445,8 @@ def test_modified_stub_still_generated(qlgen_opts, renderer):
|
||||
def test_extended_stub_still_generated(qlgen_opts, renderer):
|
||||
stub = qlgen_opts.ql_stub_output / "A.qll"
|
||||
write(stub,
|
||||
"// generated\nprivate import bla\n\nclass foo extends bar {\n}\n\nclass other {\n other() { none() }\n}")
|
||||
"// generated\nprivate import bla\n\nclass foo extends Generated::bar {\n}\n\n"
|
||||
"class other {\n other() { none() }\n}")
|
||||
with pytest.raises(qlgen.ModifiedStubMarkedAsGeneratedError):
|
||||
run_generation(qlgen.generate, qlgen_opts, renderer)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user