@@ -511,6 +511,7 @@ static string GetSystemTypeBase ()
511511
512512using System.Globalization;
513513using System.Reflection;
514+ using System.Diagnostics.CodeAnalysis;
514515
515516namespace System
516517{
@@ -534,6 +535,8 @@ public class TestSystemTypeBase : Type
534535
535536 public override string Name => throw new NotImplementedException ();
536537
538+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors
539+ | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
537540 public override ConstructorInfo[] GetConstructors (BindingFlags bindingAttr)
538541 {
539542 throw new NotImplementedException ();
@@ -554,61 +557,76 @@ public override Type GetElementType ()
554557 throw new NotImplementedException ();
555558 }
556559
560+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents
561+ | DynamicallyAccessedMemberTypes.NonPublicEvents)]
557562 public override EventInfo GetEvent (string name, BindingFlags bindingAttr)
558563 {
559564 throw new NotImplementedException ();
560565 }
561566
567+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)]
562568 public override EventInfo[] GetEvents (BindingFlags bindingAttr)
563569 {
564570 throw new NotImplementedException ();
565571 }
566572
573+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)]
567574 public override FieldInfo GetField (string name, BindingFlags bindingAttr)
568575 {
569576 throw new NotImplementedException ();
570577 }
571578
579+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields
580+ | DynamicallyAccessedMemberTypes.NonPublicFields)]
572581 public override FieldInfo[] GetFields (BindingFlags bindingAttr)
573582 {
574583 throw new NotImplementedException ();
575584 }
576585
586+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)]
587+ [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)]
577588 public override Type GetInterface (string name, bool ignoreCase)
578589 {
579590 throw new NotImplementedException ();
580591 }
581592
593+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)]
582594 public override Type[] GetInterfaces ()
583595 {
584596 throw new NotImplementedException ();
585597 }
586598
599+ [DynamicallyAccessedMembers((DynamicallyAccessedMemberTypes)0x1FFF)]
587600 public override MemberInfo[] GetMembers (BindingFlags bindingAttr)
588601 {
589602 throw new NotImplementedException ();
590603 }
591604
605+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)]
592606 public override MethodInfo[] GetMethods (BindingFlags bindingAttr)
593607 {
594608 throw new NotImplementedException ();
595609 }
596610
611+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)]
597612 public override Type GetNestedType (string name, BindingFlags bindingAttr)
598613 {
599614 throw new NotImplementedException ();
600615 }
601616
617+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)]
602618 public override Type[] GetNestedTypes (BindingFlags bindingAttr)
603619 {
604620 throw new NotImplementedException ();
605621 }
606622
623+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)]
607624 public override PropertyInfo[] GetProperties (BindingFlags bindingAttr)
608625 {
609626 throw new NotImplementedException ();
610627 }
611628
629+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
612630 public override object InvokeMember (string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters)
613631 {
614632 throw new NotImplementedException ();
@@ -624,16 +642,20 @@ protected override TypeAttributes GetAttributeFlagsImpl ()
624642 throw new NotImplementedException ();
625643 }
626644
645+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors
646+ | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
627647 protected override ConstructorInfo GetConstructorImpl (BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers)
628648 {
629649 throw new NotImplementedException ();
630650 }
631651
652+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)]
632653 protected override MethodInfo GetMethodImpl (string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers)
633654 {
634655 throw new NotImplementedException ();
635656 }
636657
658+ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)]
637659 protected override PropertyInfo GetPropertyImpl (string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
638660 {
639661 throw new NotImplementedException ();
@@ -698,12 +720,12 @@ private static void M2(
698720 }
699721}" ;
700722
701- // (178 ,16): warning IL2082: 'type' argument does not satisfy 'DynamicallyAccessedMemberTypes.PublicMethods' in call to 'System.C.M2(Type)'.
723+ // (200 ,16): warning IL2082: 'type' argument does not satisfy 'DynamicallyAccessedMemberTypes.PublicMethods' in call to 'System.C.M2(Type)'.
702724 // The implicit 'this' argument of method 'System.C.M1()' does not have matching annotations.
703725 // The source value must declare at least the same requirements as those declared on the target location it is assigned to.
704726 return VerifyDynamicallyAccessedMembersAnalyzer ( string . Concat ( GetSystemTypeBase ( ) , TargetParameterWithAnnotations ) ,
705727 VerifyCS . Diagnostic ( DiagnosticId . DynamicallyAccessedMembersMismatchThisParameterTargetsParameter )
706- . WithSpan ( 178 , 13 , 178 , 21 )
728+ . WithSpan ( 200 , 13 , 200 , 21 )
707729 . WithArguments ( "type" , "System.C.M2(Type)" , "System.C.M1()" , "'DynamicallyAccessedMemberTypes.PublicMethods'" ) ) ;
708730 }
709731
@@ -740,7 +762,7 @@ private static void M2(
740762
741763 return VerifyDynamicallyAccessedMembersAnalyzer ( string . Concat ( GetSystemTypeBase ( ) , ConversionOperation ) ,
742764 VerifyCS . Diagnostic ( DiagnosticId . DynamicallyAccessedMembersMismatchMethodReturnTypeTargetsParameter )
743- . WithSpan ( 183 , 13 , 183 , 37 )
765+ . WithSpan ( 205 , 13 , 205 , 37 )
744766 . WithArguments ( "type" , "System.C.M2(Type)" , "System.ConvertsToType.implicit operator Type(ConvertsToType)" , "'DynamicallyAccessedMemberTypes.PublicMethods'" ) ) ;
745767 }
746768
@@ -780,7 +802,7 @@ private static void M2(
780802
781803 return VerifyDynamicallyAccessedMembersAnalyzer ( string . Concat ( GetSystemTypeBase ( ) , AnnotatedConversionOperation ) ,
782804 VerifyCS . Diagnostic ( DiagnosticId . DynamicallyAccessedMembersMismatchMethodReturnTypeTargetsParameter )
783- . WithSpan ( 185 , 13 , 185 , 37 )
805+ . WithSpan ( 207 , 13 , 207 , 37 )
784806 . WithArguments ( "type" , "System.C.M2(Type)" , "System.ConvertsToType.implicit operator Type(ConvertsToType)" , "'DynamicallyAccessedMemberTypes.PublicMethods'" ) ) ;
785807 }
786808
@@ -843,12 +865,12 @@ private Type M()
843865 }
844866}" ;
845867
846- // (180 ,13): warning IL2083: 'System.C.M()' method return value does not satisfy 'DynamicallyAccessedMemberTypes.PublicMethods' requirements.
868+ // (202 ,13): warning IL2083: 'System.C.M()' method return value does not satisfy 'DynamicallyAccessedMemberTypes.PublicMethods' requirements.
847869 // The implicit 'this' argument of method 'System.C.M()' does not have matching annotations.
848870 // The source value must declare at least the same requirements as those declared on the target location it is assigned to.
849871 return VerifyDynamicallyAccessedMembersAnalyzer ( string . Concat ( GetSystemTypeBase ( ) , TargetMethodReturnTypeWithAnnotations ) ,
850872 VerifyCS . Diagnostic ( DiagnosticId . DynamicallyAccessedMembersMismatchThisParameterTargetsMethodReturnType )
851- . WithSpan ( 180 , 20 , 180 , 24 )
873+ . WithSpan ( 202 , 20 , 202 , 24 )
852874 . WithArguments ( "System.C.M()" , "System.C.M()" , "'DynamicallyAccessedMemberTypes.PublicMethods'" ) ) ;
853875 }
854876
@@ -876,12 +898,12 @@ private void M()
876898 }
877899}" ;
878900
879- // (178 ,13): warning IL2084: value stored in field 'System.C.f' does not satisfy 'DynamicallyAccessedMemberTypes.PublicMethods' requirements.
901+ // (200 ,13): warning IL2084: value stored in field 'System.C.f' does not satisfy 'DynamicallyAccessedMemberTypes.PublicMethods' requirements.
880902 // The implicit 'this' argument of method 'System.C.M()' does not have matching annotations.
881903 // The source value must declare at least the same requirements as those declared on the target location it is assigned to.
882904 return VerifyDynamicallyAccessedMembersAnalyzer ( string . Concat ( GetSystemTypeBase ( ) , TargetFieldWithAnnotations ) ,
883905 VerifyCS . Diagnostic ( DiagnosticId . DynamicallyAccessedMembersMismatchThisParameterTargetsField )
884- . WithSpan ( 178 , 13 , 178 , 21 )
906+ . WithSpan ( 200 , 13 , 200 , 21 )
885907 . WithArguments ( "System.C.f" ,
886908 "System.C.M()" ,
887909 "'DynamicallyAccessedMemberTypes.PublicMethods'" ) ) ;
@@ -907,12 +929,12 @@ private void M()
907929 }
908930}" ;
909931
910- // (178 ,13): warning IL2085: 'this' argument does not satisfy 'DynamicallyAccessedMemberTypes.PublicMethods' in call to 'System.Type.GetMethods()'.
932+ // (200 ,13): warning IL2085: 'this' argument does not satisfy 'DynamicallyAccessedMemberTypes.PublicMethods' in call to 'System.Type.GetMethods()'.
911933 // The implicit 'this' argument of method 'System.C.M()' does not have matching annotations.
912934 // The source value must declare at least the same requirements as those declared on the target location it is assigned to.
913935 return VerifyDynamicallyAccessedMembersAnalyzer ( string . Concat ( GetSystemTypeBase ( ) , TargetMethodWithAnnotations ) ,
914936 VerifyCS . Diagnostic ( DiagnosticId . DynamicallyAccessedMembersMismatchThisParameterTargetsThisParameter )
915- . WithSpan ( 178 , 13 , 178 , 30 )
937+ . WithSpan ( 200 , 13 , 200 , 30 )
916938 . WithArguments ( "System.Type.GetMethods()" , "System.C.M()" , "'DynamicallyAccessedMemberTypes.PublicMethods'" ) ) ;
917939 }
918940 #endregion
0 commit comments