@@ -122,7 +122,40 @@ def explicit_identity(x):
122122SINK (a ) # $ flow="SOURCE, l:-1 -> a"
123123SINK (b ) # $ flow="SOURCE, l:-2 -> b"
124124
125- from foo import MS_Class
125+ from foo import MS_Class , MS_Class_transitive
126+
127+ # Class summaries
128+ class_via_positional = MS_Class (SOURCE )
129+ SINK (class_via_positional .config ) # $ flow="SOURCE, l:-1 -> class_via_positional.config"
130+
131+ class_via_kw = MS_Class (x = SOURCE )
132+ SINK (class_via_kw .config ) # $ flow="SOURCE, l:-1 -> class_via_kw.config"
133+
134+ class C (MS_Class_transitive ):
135+ pass
136+
137+ subclass_via_positional = C (SOURCE )
138+ SINK (subclass_via_positional .config ) # $ flow="SOURCE, l:-1 -> subclass_via_positional.config"
139+
140+ subclass_via_kw = C (x = SOURCE )
141+ SINK (subclass_via_kw .config ) # $ flow="SOURCE, l:-1 -> subclass_via_kw.config"
142+
143+ class D (MS_Class_transitive ):
144+ def __init__ (x , y ):
145+ # special handling of y
146+ super ().__init__ (x )
147+
148+ SINK (D (SOURCE , NONSOURCE ).config ) # $ flow="SOURCE -> D(..).config"
149+ SINK (D (x = SOURCE , y = NONSOURCE ).config ) # $ flow="SOURCE -> D(..).config"
150+
151+ class E (MS_Class_transitive ):
152+ # Notice the swapped order of the arguments
153+ def __init__ (y , x ):
154+ # special handling of y
155+ super ().__init__ (x )
156+
157+ SINK (E (NONSOURCE , SOURCE ).config ) # $ MISSING: flow="SOURCE -> E(..).config"
158+ SINK (E (x = SOURCE , y = NONSOURCE ).config ) # $ flow="SOURCE -> E(..).config"
126159
127160c = MS_Class ()
128161a , b = c .instance_method (SOURCE )
0 commit comments