@@ -209,6 +209,17 @@ module LocalFlow {
209209 e1 = e2 .( SwitchExpr ) .getACase ( ) .getBody ( ) and
210210 scope = e2 and
211211 isSuccessor = true
212+ or
213+ exists ( WithExpr we |
214+ scope = we and
215+ isSuccessor = true
216+ |
217+ e1 = we .getExpr ( ) and
218+ e2 = we .getInitializer ( )
219+ or
220+ e1 = we .getInitializer ( ) and
221+ e2 = we
222+ )
212223 )
213224 }
214225
@@ -451,10 +462,23 @@ private predicate fieldOrPropertyStore(Expr e, Content c, Expr src, Expr q, bool
451462 postUpdate = true
452463 )
453464 or
465+ // `with` expression initializer, `x with { f = src }`
466+ e =
467+ any ( WithExpr we |
468+ exists ( MemberInitializer mi |
469+ q = we and
470+ mi = we .getInitializer ( ) .getAMemberInitializer ( ) and
471+ f = mi .getInitializedMember ( ) and
472+ src = mi .getRValue ( ) and
473+ postUpdate = false
474+ )
475+ )
476+ or
454477 // Object initializer, `new C() { f = src }`
455478 exists ( MemberInitializer mi |
456479 e = q and
457480 mi = q .( ObjectInitializer ) .getAMemberInitializer ( ) and
481+ q .getParent ( ) instanceof ObjectCreation and
458482 f = mi .getInitializedMember ( ) and
459483 src = mi .getRValue ( ) and
460484 postUpdate = false
@@ -792,6 +816,13 @@ private module Cached {
792816 input = SummaryInput:: parameter ( i ) and
793817 n .( ArgumentNode ) .argumentOf ( call , i )
794818 )
819+ or
820+ exists ( WithExpr we , ObjectInitializer oi , FieldOrProperty f |
821+ oi = we .getInitializer ( ) and
822+ n .asExpr ( ) = oi and
823+ f = oi .getAMemberInitializer ( ) .getInitializedMember ( ) and
824+ c = f .getContent ( )
825+ )
795826 }
796827
797828 /**
@@ -885,6 +916,8 @@ private module Cached {
885916 n instanceof SummaryNodeImpl
886917 or
887918 n instanceof ParamsArgumentNode
919+ or
920+ n .asExpr ( ) = any ( WithExpr we ) .getInitializer ( )
888921 }
889922}
890923
0 commit comments