@@ -497,18 +497,55 @@ public Type M6(Type t)
497497 }
498498}
499499
500- // No models as higher order methods are excluded
501- // from model generation.
500+ // Methods in this class are "neutral" with respect to the heuristic model generation, but
501+ // the content based model generation is able to produce flow summaries for them .
502502public class HigherOrderParameters
503503{
504+ // neutral=Models;HigherOrderParameters;M1;(System.String,System.Func<System.String,System.String>);summary;df-generated
505+ // contentbased-summary=Models;HigherOrderParameters;false;M1;(System.String,System.Func<System.String,System.String>);;Argument[0];ReturnValue;value;dfc-generated
504506 public string M1 ( string s , Func < string , string > map )
505507 {
506508 return s ;
507509 }
508510
509- public object M2 ( Func < object , object > map , object o )
511+ // neutral=Models;HigherOrderParameters;Map;(System.Func<System.Object,System.Object>,System.Object);summary;df-generated
512+ // contentbased-summary=Models;HigherOrderParameters;false;Map;(System.Func<System.Object,System.Object>,System.Object);;Argument[1];Argument[0].Parameter[0];value;dfc-generated
513+ // contentbased-summary=Models;HigherOrderParameters;false;Map;(System.Func<System.Object,System.Object>,System.Object);;Argument[0].ReturnValue;ReturnValue;value;dfc-generated
514+ public object Map ( Func < object , object > f , object o )
510515 {
511- return map ( o ) ;
516+ return f ( o ) ;
517+ }
518+
519+ // neutral=Models;HigherOrderParameters;Map2;(System.Object,System.Func<System.Object,System.Object,System.Object>);summary;df-generated
520+ // contentbased-summary=Models;HigherOrderParameters;false;Map2;(System.Object,System.Func<System.Object,System.Object,System.Object>);;Argument[0];Argument[1].Parameter[1];value;dfc-generated
521+ // contentbased-summary=Models;HigherOrderParameters;false;Map2;(System.Object,System.Func<System.Object,System.Object,System.Object>);;Argument[1].ReturnValue;ReturnValue;value;dfc-generated
522+ public object Map2 ( object o , Func < object , object , object > f )
523+ {
524+ var x = f ( null , o ) ;
525+ return x ;
526+ }
527+
528+ // neutral=Models;HigherOrderParameters;Apply;(System.Action<System.Object>,System.Object);summary;df-generated
529+ // contentbased-summary=Models;HigherOrderParameters;false;Apply;(System.Action<System.Object>,System.Object);;Argument[1];Argument[0].Parameter[0];value;dfc-generated
530+ public void Apply ( Action < object > a , object o )
531+ {
532+ a ( o ) ;
533+ }
534+ }
535+
536+ public static class HigherOrderExtensionMethods
537+ {
538+ // neutral=Models;HigherOrderExtensionMethods;Select<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);summary;df-generated
539+ // contentbased-summary=Models;HigherOrderExtensionMethods;false;Select<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;dfc-generated
540+ // contentbased-summary=Models;HigherOrderExtensionMethods;false;Select<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[1].ReturnValue;ReturnValue.Element;value;dfc-generated
541+ public static IEnumerable < TResult > Select < TSource , TResult > (
542+ this IEnumerable < TSource > source ,
543+ Func < TSource , TResult > selector )
544+ {
545+ foreach ( var item in source )
546+ {
547+ yield return selector ( item ) ;
548+ }
512549 }
513550}
514551
0 commit comments