Skip to content

Commit 2533f18

Browse files
author
Paolo Tranquilli
committed
Codegen: move ql.hideable to pragmas
1 parent 8d291ab commit 2533f18

File tree

6 files changed

+14
-16
lines changed

6 files changed

+14
-16
lines changed

misc/codegen/generators/qlgen.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def get_ql_property(cls: schema.Class, prop: schema.Property, lookup: typing.Dic
115115
is_unordered=prop.is_unordered,
116116
description=prop.description,
117117
synth=bool(cls.synth) or prop.synth,
118-
type_is_hideable=lookup[prop.type].hideable if prop.type in lookup else False,
118+
type_is_hideable="ql_hideable" in lookup[prop.type].pragmas if prop.type in lookup else False,
119119
internal="ql_internal" in prop.pragmas,
120120
)
121121
if prop.is_single:
@@ -169,7 +169,7 @@ def get_ql_class(cls: schema.Class, lookup: typing.Dict[str, schema.Class]) -> q
169169
properties=properties,
170170
dir=pathlib.Path(cls.group or ""),
171171
doc=cls.doc,
172-
hideable=cls.hideable,
172+
hideable="ql_hideable" in cls.pragmas,
173173
internal="ql_internal" in cls.pragmas,
174174
)
175175

misc/codegen/lib/schema.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ class Class:
9494
group: str = ""
9595
pragmas: List[str] | Dict[str, object] = field(default_factory=dict)
9696
doc: List[str] = field(default_factory=list)
97-
hideable: bool = False
9897

9998
def __post_init__(self):
10099
if not isinstance(self.pragmas, dict):

misc/codegen/lib/schemadefs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ def f(cls: type) -> type:
241241
qltest.add(_ParametrizedClassPragma("test_with", inherited=True, factory=_schema.get_type_name))
242242

243243
ql.add(_ParametrizedClassPragma("default_doc_name", factory=lambda doc: doc))
244-
ql.hideable = _annotate(hideable=True) # inheritable
244+
ql.add(_ClassPragma("hideable", inherited=True))
245245
ql.add(_Pragma("internal"))
246246

247247
cpp.add(_Pragma("skip"))

misc/codegen/loaders/schemaloader.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ def _get_class(cls: type) -> schema.Class:
5252
derived={d.__name__ for d in cls.__subclasses__()},
5353
# getattr to inherit from bases
5454
group=getattr(cls, "_group", ""),
55-
hideable=getattr(cls, "_hideable", False),
5655
pragmas=pragmas,
5756
# in the following we don't use `getattr` to avoid inheriting
5857
properties=[
@@ -110,13 +109,13 @@ def fill_is_synth(name: str):
110109

111110
def _fill_hideable_information(classes: typing.Dict[str, schema.Class]):
112111
""" Update the class map propagating the `hideable` attribute upwards in the hierarchy """
113-
todo = [cls for cls in classes.values() if cls.hideable]
112+
todo = [cls for cls in classes.values() if "ql_hideable" in cls.pragmas]
114113
while todo:
115114
cls = todo.pop()
116115
for base in cls.bases:
117116
supercls = classes[base]
118-
if not supercls.hideable:
119-
supercls.hideable = True
117+
if "ql_hideable" not in supercls.pragmas:
118+
supercls.pragmas["ql_hideable"] = None
120119
todo.append(supercls)
121120

122121

misc/codegen/test/test_qlgen.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -986,15 +986,15 @@ def test_synth_property(generate_classes):
986986

987987
def test_hideable_class(generate_classes):
988988
assert generate_classes([
989-
schema.Class("MyObject", hideable=True),
989+
schema.Class("MyObject", pragmas=["ql_hideable"]),
990990
]) == {
991991
"MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, hideable=True, imports=[stub_import_prefix + "MyObject"])),
992992
}
993993

994994

995995
def test_hideable_property(generate_classes):
996996
assert generate_classes([
997-
schema.Class("MyObject", hideable=True),
997+
schema.Class("MyObject", pragmas=["ql_hideable"]),
998998
schema.Class("Other", properties=[
999999
schema.SingleProperty("x", "MyObject"),
10001000
]),

misc/codegen/test/test_schemaloader.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -726,11 +726,11 @@ class NonHideable(Root):
726726
pass
727727

728728
assert data.classes == {
729-
"Root": schema.Class("Root", derived={"A", "IndirectlyHideable", "NonHideable"}, hideable=True),
730-
"A": schema.Class("A", bases=["Root"], derived={"B"}, hideable=True),
731-
"IndirectlyHideable": schema.Class("IndirectlyHideable", bases=["Root"], derived={"B"}, hideable=True),
732-
"B": schema.Class("B", bases=["A", "IndirectlyHideable"], hideable=True),
733-
"NonHideable": schema.Class("NonHideable", bases=["Root"], hideable=False),
729+
"Root": schema.Class("Root", derived={"A", "IndirectlyHideable", "NonHideable"}, pragmas=["ql_hideable"]),
730+
"A": schema.Class("A", bases=["Root"], derived={"B"}, pragmas=["ql_hideable"]),
731+
"IndirectlyHideable": schema.Class("IndirectlyHideable", bases=["Root"], derived={"B"}, pragmas=["ql_hideable"]),
732+
"B": schema.Class("B", bases=["A", "IndirectlyHideable"], pragmas=["ql_hideable"]),
733+
"NonHideable": schema.Class("NonHideable", bases=["Root"]),
734734
}
735735

736736

@@ -808,7 +808,7 @@ class _:
808808
pass
809809

810810
assert data.classes == {
811-
"Root": schema.Class("Root", hideable=True, pragmas=["qltest_skip", "cpp_skip", "qltest_collapse_hierarchy"]),
811+
"Root": schema.Class("Root", pragmas=["qltest_skip", "cpp_skip", "ql_hideable", "qltest_collapse_hierarchy"]),
812812
}
813813

814814

0 commit comments

Comments
 (0)