Skip to content

Commit

Permalink
Merge pull request #976 from tue-robotics/fix/weakset_bug
Browse files Browse the repository at this point in the history
Fix weakset bug
  • Loading branch information
ar13pit committed Dec 24, 2019
2 parents 67c8c1c + b6bfd03 commit 81b2297
Showing 1 changed file with 10 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ def add_graphviz_edge(self, graph):
label=gv_safe("{}.resolve".format(self.role)),
color="green")


class DesignatorWrittenInState(DesignatorUsage):
def add_graphviz_edge(self, graph):
writer_name = format_designator(self.designator)
Expand Down Expand Up @@ -87,9 +88,9 @@ def format_designator(desig):
resolve_type_format = desig.resolve_type.__name__

desig_name = "{name}\\n{cls}\\n@{addr}\\n<{resolve_type}>".format(name=desig.name + " " if desig.name else "",
cls=desig.__class__.__name__,
addr=hex(id(desig)),
resolve_type=resolve_type_format)
cls=desig.__class__.__name__,
addr=hex(id(desig)),
resolve_type=resolve_type_format)
return desig_name


Expand Down Expand Up @@ -147,13 +148,17 @@ def analyse_designators(statemachine=None, statemachine_name="", save_dot=False,
state_label = state2label.get(state, state) # Get the label of state but default to ugly __repr__
for designator_role, designator in state.__dict__.iteritems(): # Iterate the self.xxx members of each state
# If the member is also a designator, then process it.
# This check is espcially added to catch sets before checked if they are in the weaksets, which will raise
# a TypeError.
if not isinstance(designator, Designator) and not isinstance(designator, VariableWriter):
continue

if designator in designators:
usages += [DesignatorUsedInState(state_label, designator, designator_role)]

if designator in writers:
usages += [DesignatorWrittenInState(state_label, designator, designator_role)]


for parent_designator in designators:
# Iterate the self.xxx members of each designator
for child_role, child_designator in parent_designator.__dict__.iteritems():
Expand All @@ -163,7 +168,7 @@ def analyse_designators(statemachine=None, statemachine_name="", save_dot=False,

dot = Digraph(comment=statemachine_name + ' Designators', format=fmt)
dot.graph_attr['label'] = statemachine_name
dot.graph_attr['labelloc'] ="t"
dot.graph_attr['labelloc'] = "t"

for usage in usages:
usage.add_graphviz_edge(dot)
Expand Down

0 comments on commit 81b2297

Please sign in to comment.