Skip to content

Commit 7d7966e

Browse files
committed
Swift: make trap key prefixes readable
This replaces numeric tag-based prefixes with the actual tag name. While this means in general slightly larger trap files, it aids debugging them for a human. In the future we can make this conditional on some kind of trap debug option, but for the moment it does not seem detrimental.
1 parent b491884 commit 7d7966e

File tree

5 files changed

+14
-16
lines changed

5 files changed

+14
-16
lines changed

swift/codegen/generators/trapgen.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,10 @@ def generate(opts, renderer):
8686
renderer.render(cpp.TrapList(entries, opts.dbscheme), out / dir / "TrapEntries")
8787

8888
tags = []
89-
for index, tag in enumerate(toposort_flatten(tag_graph)):
89+
for tag in toposort_flatten(tag_graph):
9090
tags.append(cpp.Tag(
9191
name=get_tag_name(tag),
9292
bases=[get_tag_name(b) for b in sorted(tag_graph[tag])],
93-
index=index,
9493
id=tag,
9594
))
9695
renderer.render(cpp.TagList(tags, opts.dbscheme), out / "TrapTags")

swift/codegen/lib/cpp.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ class TagBase:
8383
class Tag:
8484
name: str
8585
bases: List[TagBase]
86-
index: int
8786
id: str
8887

8988
def __post_init__(self):

swift/codegen/templates/trap_tags_h.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace codeql {
77

88
// {{id}}
99
struct {{name}}Tag {{#has_bases}}: {{#bases}}{{^first}}, {{/first}}{{base}}Tag{{/bases}} {{/has_bases}}{
10-
static constexpr const char* prefix = "{{index}}";
10+
static constexpr const char* prefix = "{{name}}";
1111
};
1212
{{/tags}}
1313
}

swift/codegen/test/test_cpp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def test_trap_has_first_field_marked():
6565
def test_tag_has_first_base_marked():
6666
bases = ["a", "b", "c"]
6767
expected = [cpp.TagBase("a", first=True), cpp.TagBase("b"), cpp.TagBase("c")]
68-
t = cpp.Tag("name", bases, 0, "id")
68+
t = cpp.Tag("name", bases, "id")
6969
assert t.bases == expected
7070

7171

@@ -75,7 +75,7 @@ def test_tag_has_first_base_marked():
7575
(["a", "b"], True)
7676
])
7777
def test_tag_has_bases(bases, expected):
78-
t = cpp.Tag("name", bases, 0, "id")
78+
t = cpp.Tag("name", bases, "id")
7979
assert t.has_bases is expected
8080

8181

swift/codegen/test/test_trapgen.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,10 @@ def test_one_union_tags(generate_tags):
162162
assert generate_tags([
163163
dbscheme.Union(lhs="@left_hand_side", rhs=["@b", "@a", "@c"]),
164164
]) == [
165-
cpp.Tag(name="LeftHandSide", bases=[], index=0, id="@left_hand_side"),
166-
cpp.Tag(name="A", bases=["LeftHandSide"], index=1, id="@a"),
167-
cpp.Tag(name="B", bases=["LeftHandSide"], index=2, id="@b"),
168-
cpp.Tag(name="C", bases=["LeftHandSide"], index=3, id="@c"),
165+
cpp.Tag(name="LeftHandSide", bases=[], id="@left_hand_side"),
166+
cpp.Tag(name="A", bases=["LeftHandSide"], id="@a"),
167+
cpp.Tag(name="B", bases=["LeftHandSide"], id="@b"),
168+
cpp.Tag(name="C", bases=["LeftHandSide"], id="@c"),
169169
]
170170

171171

@@ -175,12 +175,12 @@ def test_multiple_union_tags(generate_tags):
175175
dbscheme.Union(lhs="@a", rhs=["@b", "@c"]),
176176
dbscheme.Union(lhs="@e", rhs=["@c", "@f"]),
177177
]) == [
178-
cpp.Tag(name="D", bases=[], index=0, id="@d"),
179-
cpp.Tag(name="E", bases=[], index=1, id="@e"),
180-
cpp.Tag(name="A", bases=["D"], index=2, id="@a"),
181-
cpp.Tag(name="F", bases=["E"], index=3, id="@f"),
182-
cpp.Tag(name="B", bases=["A"], index=4, id="@b"),
183-
cpp.Tag(name="C", bases=["A", "E"], index=5, id="@c"),
178+
cpp.Tag(name="D", bases=[], id="@d"),
179+
cpp.Tag(name="E", bases=[], id="@e"),
180+
cpp.Tag(name="A", bases=["D"], id="@a"),
181+
cpp.Tag(name="F", bases=["E"], id="@f"),
182+
cpp.Tag(name="B", bases=["A"], id="@b"),
183+
cpp.Tag(name="C", bases=["A", "E"], id="@c"),
184184
]
185185

186186

0 commit comments

Comments
 (0)