Skip to content

Commit 6dd09c1

Browse files
authored
Merge pull request #9796 from github/redsun82/swift-codegen-skip-cpp-pragma
Swift: allow skipping fields in cppgen
2 parents 3e4a182 + 5773a73 commit 6dd09c1

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

swift/codegen/generators/cppgen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def _get_class(self, name: str) -> cpp.Class:
6565
return cpp.Class(
6666
name=name,
6767
bases=[self._get_class(b) for b in cls.bases],
68-
fields=[_get_field(cls, p) for p in cls.properties],
68+
fields=[_get_field(cls, p) for p in cls.properties if "cpp_skip" not in p.pragmas],
6969
final=not cls.derived,
7070
trap_name=trap_name,
7171
)

swift/codegen/schema.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,18 @@ _directories:
1313
stmt: Stmt$
1414

1515
Element:
16-
is_unknown: predicate
16+
is_unknown:
17+
type: predicate
18+
_pragma: cpp_skip # this is emitted using trap entries directly
1719
_pragma: qltest_skip
1820

1921
File:
2022
name: string
2123

2224
Locatable:
23-
location: Location?
25+
location:
26+
type: Location?
27+
_pragma: cpp_skip # this is emitted using trap entries directly
2428
_pragma: qltest_skip
2529

2630
Location:

swift/codegen/test/test_cppgen.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,5 +165,18 @@ def test_classes_with_dirs(generate_grouped):
165165
}
166166

167167

168+
def test_cpp_skip_pragma(generate):
169+
assert generate([
170+
schema.Class(name="A", properties=[
171+
schema.SingleProperty("x", "foo"),
172+
schema.SingleProperty("y", "bar", pragmas=["x", "cpp_skip", "y"]),
173+
])
174+
]) == [
175+
cpp.Class(name="A", final=True, trap_name="As", fields=[
176+
cpp.Field("x", "foo"),
177+
]),
178+
]
179+
180+
168181
if __name__ == '__main__':
169182
sys.exit(pytest.main([__file__] + sys.argv[1:]))

0 commit comments

Comments
 (0)