Skip to content

Commit

Permalink
Fix mixup minimal/complete type id for base type
Browse files Browse the repository at this point in the history
Signed-off-by: Erik Boasson <eb@ilities.com>
  • Loading branch information
eboasson committed Mar 19, 2024
1 parent a60ed71 commit bac3a0c
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion cyclonedds/idl/_xt_builder.py
Expand Up @@ -406,6 +406,19 @@ def gather_types(cls, _type):

graph[my_node_name].add(scan_node_name)

if isclass(_ctype) and issubclass(_ctype, IdlStruct):
# get_extended_type_hints will not inspect the base type, which is a struct
base_type = _ctype.__base__
if base_type is None or base_type == IdlStruct:
pass
else:
scan_node_name = base_type.__idl_typename__.replace('.', '::')
if scan_node_name not in graph:
graph[scan_node_name] = set()
graph_types[scan_node_name] = base_type

graph[my_node_name].add(scan_node_name)

for name, fieldtype in get_extended_type_hints(_ctype).items():
m, deep = cls._deep_gather_type(fieldtype)
plain = cls._impl_xt_is_plain(fieldtype)
Expand Down Expand Up @@ -925,7 +938,7 @@ def _xt_complete_struct_header(cls, entity: Type[IdlStruct]) -> xt.CompleteStruc
)

return xt.CompleteStructHeader(
base_type=cls._xt_type_identifier("_base_", entity.__base__, True),
base_type=cls._xt_type_identifier("_base_", entity.__base__, False),
detail=cls._xt_complete_type_detail(entity)
)

Expand Down

0 comments on commit bac3a0c

Please sign in to comment.