@@ -701,3 +701,140 @@ public NestedFieldFlow ReverseFields()
701701 return new NestedFieldFlow ( ) { FieldA = x } ;
702702 }
703703}
704+
705+ public class SyntheticFields
706+ {
707+ private string value1 ;
708+ private string value2 ;
709+ private string value3 ;
710+
711+ private string chainBegin ;
712+ private string chainEnd ;
713+
714+ private string brokenChainBegin ;
715+ private string brokenChainEnd ;
716+
717+ // summary=Models;SyntheticFields;false;SyntheticFields;(System.String);;Argument[0];Argument[this];taint;df-generated
718+ // contentbased-summary=Models;SyntheticFields;false;SyntheticFields;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticFields.value1];value;df-generated
719+ public SyntheticFields ( string v1 )
720+ {
721+ value1 = v1 ;
722+ }
723+
724+ // summary=Models;SyntheticFields;false;GetValue1;();;Argument[this];ReturnValue;taint;df-generated
725+ // contentbased-summary=Models;SyntheticFields;false;GetValue1;();;Argument[this].SyntheticField[Models.SyntheticFields.value1];ReturnValue;value;df-generated
726+ public string GetValue1 ( )
727+ {
728+ return value1 ;
729+ }
730+
731+ // summary=Models;SyntheticFields;false;GetValue2;();;Argument[this];ReturnValue;taint;df-generated
732+ // contentbased-summary=Models;SyntheticFields;false;GetValue2;();;Argument[this].SyntheticField[Models.SyntheticFields.value2];ReturnValue;value;df-generated
733+ public string GetValue2 ( )
734+ {
735+ return value2 ;
736+ }
737+
738+ // summary=Models;SyntheticFields;false;SetValue2;(System.String);;Argument[0];Argument[this];taint;df-generated
739+ // contentbased-summary=Models;SyntheticFields;false;SetValue2;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticFields.value2];value;df-generated
740+ public void SetValue2 ( string v2 )
741+ {
742+ value2 = v2 ;
743+ }
744+
745+ // summary=Models;SyntheticFields;false;SetValue3;(System.String);;Argument[0];Argument[this];taint;df-generated
746+ // No content based summary as value3 is a dead synthetic field.
747+ public void SetValue3 ( string v3 )
748+ {
749+ value3 = v3 ;
750+ }
751+
752+ // summary=Models;SyntheticFields;false;SetChainBegin;(System.String);;Argument[0];Argument[this];taint;df-generated
753+ // contentbased-summary=Models;SyntheticFields;false;SetChainBegin;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticFields.chainBegin];value;df-generated
754+ public void SetChainBegin ( string v )
755+ {
756+ chainBegin = v ;
757+ }
758+
759+ // neutral=Models;SyntheticFields;CopyChainValue;();summary;df-generated
760+ // contentbased-summary=Models;SyntheticFields;false;CopyChainValue;();;Argument[this].SyntheticField[Models.SyntheticFields.chainBegin];Argument[this].SyntheticField[Models.SyntheticFields.chainEnd];value;df-generated
761+ public void CopyChainValue ( )
762+ {
763+ chainEnd = chainBegin ;
764+ }
765+
766+ // summary=Models;SyntheticFields;false;GetChainEnd;();;Argument[this];ReturnValue;taint;df-generated
767+ // contentbased-summary=Models;SyntheticFields;false;GetChainEnd;();;Argument[this].SyntheticField[Models.SyntheticFields.chainEnd];ReturnValue;value;df-generated
768+ public string GetChainEnd ( )
769+ {
770+ return chainEnd ;
771+ }
772+
773+ // summary=Models;SyntheticFields;false;SetBrokenChainBegin;(System.String);;Argument[0];Argument[this];taint;df-generated
774+ // No content based summary as brokenChainBegin is a dead synthetic field.
775+ public void SetBrokenChainBegin ( string v )
776+ {
777+ brokenChainBegin = v ;
778+ }
779+
780+ // summary=Models;SyntheticFields;false;GetBrokenChainEnd;();;Argument[this];ReturnValue;taint;df-generated
781+ // No content based summary as brokenChainEnd is a dead synthetic field.
782+ public string GetBrokenChainEnd ( )
783+ {
784+ return brokenChainEnd ;
785+ }
786+
787+ public class InnerSyntheticFields
788+ {
789+ private readonly string value ;
790+
791+ // summary=Models;SyntheticFields+InnerSyntheticFields;false;InnerSyntheticFields;(System.String);;Argument[0];Argument[this];taint;df-generated
792+ // contentbased-summary=Models;SyntheticFields+InnerSyntheticFields;false;InnerSyntheticFields;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticFields+InnerSyntheticFields.value];value;df-generated
793+ public InnerSyntheticFields ( string v )
794+ {
795+ value = v ;
796+ }
797+
798+ // summary=Models;SyntheticFields+InnerSyntheticFields;false;GetValue;();;Argument[this];ReturnValue;taint;df-generated
799+ // contentbased-summary=Models;SyntheticFields+InnerSyntheticFields;false;GetValue;();;Argument[this].SyntheticField[Models.SyntheticFields+InnerSyntheticFields.value];ReturnValue;value;df-generated
800+ public string GetValue ( )
801+ {
802+ return value ;
803+ }
804+ }
805+
806+ // summary=Models;SyntheticFields;false;MakeInner;(System.String);;Argument[0];ReturnValue;taint;df-generated
807+ // contentbased-summary=Models;SyntheticFields;false;MakeInner;(System.String);;Argument[0];ReturnValue.SyntheticField[Models.SyntheticFields+InnerSyntheticFields.value];value;df-generated
808+ public InnerSyntheticFields MakeInner ( string v )
809+ {
810+ return new InnerSyntheticFields ( v ) ;
811+ }
812+ }
813+
814+ public class SyntheticProperties
815+ {
816+ private string Prop1 { get ; set ; }
817+
818+ private string Prop2 { get ; set ; }
819+
820+ // summary=Models;SyntheticProperties;false;SyntheticProperties;(System.String);;Argument[0];Argument[this];taint;df-generated
821+ // contentbased-summary=Models;SyntheticProperties;false;SyntheticProperties;(System.String);;Argument[0];Argument[this].SyntheticField[Models.SyntheticProperties.Prop1];value;df-generated
822+ public SyntheticProperties ( string v1 )
823+ {
824+ Prop1 = v1 ;
825+ }
826+
827+ // summary=Models;SyntheticProperties;false;GetProp1;();;Argument[this];ReturnValue;taint;df-generated
828+ // contentbased-summary=Models;SyntheticProperties;false;GetProp1;();;Argument[this].SyntheticField[Models.SyntheticProperties.Prop1];ReturnValue;value;df-generated
829+ public string GetProp1 ( )
830+ {
831+ return Prop1 ;
832+ }
833+
834+ // summary=Models;SyntheticProperties;false;SetProp2;(System.String);;Argument[0];Argument[this];taint;df-generated
835+ // No content based summary as Prop2 is a dead synthetic field.
836+ public void SetProp2 ( string v )
837+ {
838+ Prop2 = v ;
839+ }
840+ }
0 commit comments