@@ -1010,18 +1010,19 @@ public override ImmutableArray<CSharpAttributeData> GetAttributes()
1010
1010
: IsValidReadOnlyTarget ;
1011
1011
1012
1012
bool checkForRequiredMembers = this . ShouldCheckRequiredMembers ( ) && this . ContainingType . HasAnyRequiredMembers ;
1013
+ bool isInstanceIncrementDecrementOrCompoundAssignmentOperator = SourceMethodSymbol . IsInstanceIncrementDecrementOrCompoundAssignmentOperator ( this ) ;
1013
1014
1014
1015
bool isExtensionMethod = false ;
1015
1016
bool isReadOnly = false ;
1016
- if ( checkForExtension || checkForIsReadOnly || checkForRequiredMembers )
1017
+ if ( checkForExtension || checkForIsReadOnly || checkForRequiredMembers || isInstanceIncrementDecrementOrCompoundAssignmentOperator )
1017
1018
{
1018
1019
attributeData = containingPEModuleSymbol . GetCustomAttributesForToken ( _handle ,
1019
1020
filteredOutAttribute1 : out CustomAttributeHandle extensionAttribute ,
1020
1021
filterOut1 : AttributeDescription . CaseSensitiveExtensionAttribute ,
1021
1022
filteredOutAttribute2 : out CustomAttributeHandle isReadOnlyAttribute ,
1022
1023
filterOut2 : AttributeDescription . IsReadOnlyAttribute ,
1023
1024
filteredOutAttribute3 : out _ ,
1024
- filterOut3 : ( checkForRequiredMembers && DeriveCompilerFeatureRequiredDiagnostic ( ) is null ) ? AttributeDescription . CompilerFeatureRequiredAttribute : default ,
1025
+ filterOut3 : ( ( checkForRequiredMembers || isInstanceIncrementDecrementOrCompoundAssignmentOperator ) && DeriveCompilerFeatureRequiredDiagnostic ( ) is null ) ? AttributeDescription . CompilerFeatureRequiredAttribute : default ,
1025
1026
filteredOutAttribute4 : out _ ,
1026
1027
filterOut4 : ( checkForRequiredMembers && ObsoleteAttributeData is null ) ? AttributeDescription . ObsoleteAttribute : default ,
1027
1028
filteredOutAttribute5 : out _ ,
@@ -1520,7 +1521,14 @@ private DiagnosticInfo DeriveCompilerFeatureRequiredDiagnostic()
1520
1521
{
1521
1522
var containingModule = _containingType . ContainingPEModule ;
1522
1523
var decoder = new MetadataDecoder ( containingModule , this ) ;
1523
- var diag = PEUtilities . DeriveCompilerFeatureRequiredAttributeDiagnostic ( this , containingModule , Handle , allowedFeatures : MethodKind == MethodKind . Constructor ? CompilerFeatureRequiredFeatures . RequiredMembers : CompilerFeatureRequiredFeatures . None , decoder ) ;
1524
+ var diag = PEUtilities . DeriveCompilerFeatureRequiredAttributeDiagnostic (
1525
+ this , containingModule , Handle ,
1526
+ allowedFeatures : MethodKind == MethodKind . Constructor ?
1527
+ CompilerFeatureRequiredFeatures . RequiredMembers :
1528
+ ( SourceMethodSymbol . IsInstanceIncrementDecrementOrCompoundAssignmentOperator ( this ) ?
1529
+ CompilerFeatureRequiredFeatures . UserDefinedCompoundAssignmentOperators :
1530
+ CompilerFeatureRequiredFeatures . None ) ,
1531
+ decoder ) ;
1524
1532
1525
1533
if ( diag != null )
1526
1534
{
0 commit comments