diff --git a/swift/codegen/lib/render.py b/swift/codegen/lib/render.py index cc26880fbac..8294ecfda2b 100644 --- a/swift/codegen/lib/render.py +++ b/swift/codegen/lib/render.py @@ -171,12 +171,16 @@ class RenderManager(Renderer): return h.hexdigest() def _load_registry(self): - with open(self._registry_path) as reg: - for line in reg: - filename, prehash, posthash = line.split() - self._hashes[pathlib.Path(filename)] = self.Hashes(prehash, posthash) + try: + with open(self._registry_path) as reg: + for line in reg: + filename, prehash, posthash = line.split() + self._hashes[pathlib.Path(filename)] = self.Hashes(prehash, posthash) + except FileNotFoundError: + pass def _dump_registry(self): + self._registry_path.parent.mkdir(parents=True, exist_ok=True) with open(self._registry_path, 'w') as out: for f, hashes in sorted(self._hashes.items()): print(f, hashes.pre, hashes.post, file=out) diff --git a/swift/codegen/test/test_render.py b/swift/codegen/test/test_render.py index 8c48902eea7..cb249046b7b 100644 --- a/swift/codegen/test/test_render.py +++ b/swift/codegen/test/test_render.py @@ -75,6 +75,23 @@ def test_managed_render(pystache_renderer, sut): mock.call.render_name(data.template, data, generator=paths.exe_file.relative_to(paths.swift_dir)), ] +def test_managed_render_with_no_registry(pystache_renderer, sut): + data = mock.Mock(spec=("template",)) + text = "some text" + pystache_renderer.render_name.side_effect = (text,) + output = paths.swift_dir / "some/output.txt" + registry = paths.swift_dir / "a/registry.list" + + with sut.manage(generated=(), stubs=(), registry=registry) as renderer: + renderer.render(data, output) + assert renderer.written == {output} + assert_file(output, text) + + assert_file(registry, f"some/output.txt {hash(text)} {hash(text)}\n") + assert pystache_renderer.mock_calls == [ + mock.call.render_name(data.template, data, generator=paths.exe_file.relative_to(paths.swift_dir)), + ] + def test_managed_render_with_post_processing(pystache_renderer, sut): data = mock.Mock(spec=("template",)) diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index 597e435a0f7..f0475a92903 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -387,7 +387,7 @@ ql/lib/codeql/swift/generated/Synth.qll cc7285c43e6c9f47ab67047916d232ad2078443b ql/lib/codeql/swift/generated/SynthConstructors.qll 0ff9cfcd64e7701003091f366ec903ec1bf82ec8385ee683b6e7b4e189033b11 0ff9cfcd64e7701003091f366ec903ec1bf82ec8385ee683b6e7b4e189033b11 ql/lib/codeql/swift/generated/UnknownFile.qll 0fcf9beb8de79440bcdfff4bb6ab3dd139bd273e6c32754e05e6a632651e85f6 0fcf9beb8de79440bcdfff4bb6ab3dd139bd273e6c32754e05e6a632651e85f6 ql/lib/codeql/swift/generated/UnknownLocation.qll e50efefa02a0ec1ff635a00951b5924602fc8cab57e5756e4a039382c69d3882 e50efefa02a0ec1ff635a00951b5924602fc8cab57e5756e4a039382c69d3882 -ql/lib/codeql/swift/generated/UnspecifiedElement.qll dbc6ca4018012977b26ca184a88044c55b0661e3998cd14d46295b62a8d69625 184c9a0ce18c2ac881943b0fb400613d1401ed1d5564f90716b6c310ba5afe71 +ql/lib/codeql/swift/generated/UnspecifiedElement.qll a3a73f53c492adc6655fb88b40b1bd9b2c9d365fc5c019b3233c01d6110fb3f2 ba77cd5272cffd1d3aad8bea69786b97aec0c93a4b59a070d621fe2d21c2e90c ql/lib/codeql/swift/generated/decl/AbstractFunctionDecl.qll 8255b24dddda83e8a7dee9d69a4cf9883b5a7ae43676d7242b5aab5169f68982 407c7d63681fb03ad6cb4ea3c2b04be7ccb5ddbe655a8aec4219eb3799bc36e8 ql/lib/codeql/swift/generated/decl/AbstractStorageDecl.qll 66147ad36cefce974b4ae0f3e84569bd6742ea2f3e842c3c04e6e5cbd17e7928 ce7c2347e2dfe0b141db103ccb8e56a61d286476c201aebe6a275edd7fca2c0f ql/lib/codeql/swift/generated/decl/AbstractTypeParamDecl.qll 1e268b00d0f2dbbd85aa70ac206c5e4a4612f06ba0091e5253483635f486ccf9 5479e13e99f68f1f347283535f8098964f7fd4a34326ff36ad5711b2de1ab0d0 diff --git a/swift/ql/lib/codeql/swift/generated/UnspecifiedElement.qll b/swift/ql/lib/codeql/swift/generated/UnspecifiedElement.qll index c37d4d35515..2658e63164a 100644 --- a/swift/ql/lib/codeql/swift/generated/UnspecifiedElement.qll +++ b/swift/ql/lib/codeql/swift/generated/UnspecifiedElement.qll @@ -5,6 +5,9 @@ import codeql.swift.elements.Element import codeql.swift.elements.ErrorElement module Generated { + /** + * bla + */ class UnspecifiedElement extends Synth::TUnspecifiedElement, ErrorElement { override string getAPrimaryQlClass() { result = "UnspecifiedElement" } diff --git a/swift/schema.py b/swift/schema.py index 7654f9e2ec8..ffd9e15b58b 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -40,6 +40,7 @@ class ErrorElement(Locatable): @use_for_null class UnspecifiedElement(ErrorElement): + """bla""" parent: optional[Element] property: string index: optional[int]