File tree Expand file tree Collapse file tree 2 files changed +44
-7
lines changed
Framework/PostSharp.Samples.ResharperAnnotations Expand file tree Collapse file tree 2 files changed +44
-7
lines changed Original file line number Diff line number Diff line change @@ -48,23 +48,37 @@ public IEnumerable<AspectInstance> ProvideAspects(object targetElement)
4848 {
4949 var target = targetElement ;
5050
51- var targetMethod = target as MethodInfo ;
52-
53-
54- if ( targetMethod != null )
51+ if ( target is MethodInfo targetMethod )
5552 {
5653 if ( targetMethod . IsAbstract || targetMethod . DeclaringType . Namespace . StartsWith ( "JetBrains." ) )
54+ {
55+ yield break ;
56+ }
57+ else if ( targetMethod . IsSpecialName && targetMethod . Name . StartsWith ( "set_" ) )
58+ {
59+ target = targetMethod . DeclaringType . GetProperty ( targetMethod . Name . Substring ( 4 ) ,
60+ BindingFlags . Public | BindingFlags . NonPublic | BindingFlags . Instance | BindingFlags . Static ) ;
61+ }
62+ else if ( targetMethod . IsSpecialName && targetMethod . Name . StartsWith ( "get_" ) )
63+ {
5764 yield break ;
65+ }
66+ else
67+ {
68+ target = targetMethod . ReturnParameter ;
5869
59- target = targetMethod . ReturnParameter ;
70+ }
6071 }
61- else
72+ else if ( target is ParameterInfo targetParameter )
6273 {
63- var targetParameter = ( ParameterInfo ) target ;
6474 var targetMember = ( MethodBase ) targetParameter . Member ;
6575 if ( targetMember . IsAbstract || targetMember . DeclaringType . Namespace . StartsWith ( "JetBrains." ) )
6676 yield break ;
6777 }
78+ else if ( ! ( target is PropertyInfo ) )
79+ {
80+ yield break ;
81+ }
6882
6983 yield return new AspectInstance ( target , new ObjectConstruction ( typeof ( PostSharp . Patterns . Contracts . NotNullAttribute ) ) , null ) ;
7084 }
Original file line number Diff line number Diff line change @@ -7,6 +7,9 @@ interface IProgram
77
88 [ JetBrains . Annotations . NotNull ]
99 string Foo ( [ JetBrains . Annotations . NotNull ] string bar ) ;
10+
11+ [ JetBrains . Annotations . NotNull ]
12+ string FooFoo { get ; set ; }
1013 }
1114
1215 class Program : IProgram
@@ -33,12 +36,32 @@ static void Main(string[] args)
3336 {
3437 Console . WriteLine ( e . Message ) ;
3538 }
39+
40+ try
41+ {
42+ p . FooFoo = null ;
43+ }
44+ catch ( Exception e )
45+ {
46+ Console . WriteLine ( e . Message ) ;
47+ }
48+
49+ try
50+ {
51+ p . FooFoo = "" ;
52+ }
53+ catch ( Exception e )
54+ {
55+ Console . WriteLine ( e . Message ) ;
56+ }
3657 }
3758
3859 public string Foo ( string bar )
3960 {
4061 return null ;
4162 }
63+
64+ public string FooFoo { get ; set ; }
4265 }
4366
4467
You can’t perform that action at this time.
0 commit comments