@@ -27,12 +27,18 @@ def __post_init__(self):
2727@dataclasses .dataclass
2828class ExtendedNode (SomeNode ):
2929 prop = 2
30- cont_fwd : "ExtendedNode " = None
31- cont_ref : ReferenceByName ["ExtendedNode " ] = None
30+ cont_fwd : "ForwardReferencedNode " = None
31+ cont_ref : ReferenceByName ["ForwardReferencedNode " ] = None
3232 multiple2 : List [SomeNode ] = dataclasses .field (default_factory = list )
33+ multiple_fwd : List ["ForwardReferencedNode" ] = dataclasses .field (default_factory = list )
3334 internal2 : Node = internal_field (default = None )
3435
3536
37+ @dataclasses .dataclass
38+ class ForwardReferencedNode (Node ):
39+ pass
40+
41+
3642@dataclasses .dataclass
3743class SomeSymbol (Symbol ):
3844 index : int = dataclasses .field (default = None )
@@ -228,15 +234,15 @@ def frob_node_2(_: Node):
228234 pass
229235
230236 pds = [pd for pd in sorted (ExtendedNode .node_properties , key = lambda x : x .name )]
231- self .assertEqual (12 , len (pds ), f"{ pds } should be 7" )
237+ self .assertEqual (13 , len (pds ), f"{ pds } should be 7" )
232238 self .assertEqual ("bar" , pds [0 ].name )
233239 self .assertFalse (pds [0 ].is_containment )
234240 self .assertEqual ("cont_fwd" , pds [1 ].name )
235241 self .assertTrue (pds [1 ].is_containment )
236- self .assertEqual (ExtendedNode , pds [1 ].type )
242+ self .assertEqual (ForwardReferencedNode , pds [1 ].type )
237243 self .assertEqual ("cont_ref" , pds [2 ].name )
238244 self .assertTrue (pds [2 ].is_reference )
239- self .assertEqual (ExtendedNode , pds [2 ].type )
245+ self .assertEqual (ForwardReferencedNode , pds [2 ].type )
240246 self .assertEqual ("containment" , pds [3 ].name )
241247 self .assertTrue (pds [3 ].is_containment )
242248 self .assertEqual ("foo" , pds [4 ].name )
@@ -246,5 +252,9 @@ def frob_node_2(_: Node):
246252 self .assertEqual ("multiple2" , pds [6 ].name )
247253 self .assertTrue (pds [6 ].is_containment )
248254 self .assertEqual (Multiplicity .MANY , pds [6 ].multiplicity )
255+ self .assertEqual ("multiple_fwd" , pds [7 ].name )
256+ self .assertTrue (pds [7 ].is_containment )
257+ self .assertEqual (ForwardReferencedNode , pds [7 ].type )
258+ self .assertEqual (Multiplicity .MANY , pds [7 ].multiplicity )
249259
250260 self .assertRaises (Exception , lambda : [x for x in InvalidNode .node_properties ])
0 commit comments