Skip to content

Commit 7dd18ff

Browse files
committed
Swift: add @ql.hideable to schema loading
1 parent a319fc0 commit 7dd18ff

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

misc/codegen/lib/schema.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ class Class:
9191
"""^^^ filled with `True` for non-final classes with only synthesized final descendants """
9292
doc: List[str] = field(default_factory=list)
9393
default_doc_name: Optional[str] = None
94+
hideable_root: bool = False
95+
hideable: bool = False
9496

9597
@property
9698
def final(self):

misc/codegen/lib/schemadefs.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ def f(cls: type) -> type:
145145
_Pragma("qltest_uncollapse_hierarchy")
146146

147147
ql.default_doc_name = lambda doc: _annotate(doc_name=doc)
148+
ql.hideable = _annotate(hideable=True)
148149
_Pragma("ql_internal")
149150

150151
_Pragma("cpp_skip")

misc/codegen/loaders/schemaloader.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ def _get_class(cls: type) -> schema.Class:
3737
derived={d.__name__ for d in cls.__subclasses__()},
3838
# getattr to inherit from bases
3939
group=getattr(cls, "_group", ""),
40+
hideable=getattr(cls, "_hideable", False),
4041
# in the following we don't use `getattr` to avoid inheriting
42+
hideable_root=cls.__dict__.get("_hideable", False),
4143
pragmas=cls.__dict__.get("_pragmas", []),
4244
ipa=cls.__dict__.get("_ipa", None),
4345
properties=[

misc/codegen/test/test_schemaloader.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,5 +688,22 @@ class ROTFLNode(Root):
688688
pass
689689

690690

691+
def test_hideable():
692+
@load
693+
class data:
694+
class Root:
695+
pass
696+
697+
@defs.ql.hideable
698+
class A(Root):
699+
pass
700+
701+
class B(A):
702+
pass
703+
704+
assert data.classes["A"] == schema.Class("A", bases=["Root"], derived={"B"}, hideable_root=True, hideable=True)
705+
assert data.classes["B"] == schema.Class("B", bases=["A"], hideable=True)
706+
707+
691708
if __name__ == '__main__':
692709
sys.exit(pytest.main([__file__] + sys.argv[1:]))

0 commit comments

Comments
 (0)