Skip to content

Commit 8f3fb8d

Browse files
authored
Extensions: adjust SpecialName on implementation methods (#79068)
1 parent 9eec48b commit 8f3fb8d

21 files changed

+129
-18
lines changed

src/Compilers/CSharp/Portable/Symbols/ErrorMethodSymbol.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ internal sealed override ObsoleteAttributeData ObsoleteAttributeData
8383

8484
internal sealed override UnmanagedCallersOnlyAttributeData GetUnmanagedCallersOnlyAttributeData(bool forceComplete) => null;
8585

86+
internal sealed override bool HasSpecialNameAttribute => throw ExceptionUtilities.Unreachable();
87+
8688
public override Accessibility DeclaredAccessibility
8789
{
8890
get { return Accessibility.Public; }

src/Compilers/CSharp/Portable/Symbols/Extensions/RewrittenMethodSymbol.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ internal sealed override int CalculateLocalSyntaxOffset(int localPosition, Synta
7676
internal sealed override UnmanagedCallersOnlyAttributeData? GetUnmanagedCallersOnlyAttributeData(bool forceComplete)
7777
=> _originalMethod.GetUnmanagedCallersOnlyAttributeData(forceComplete);
7878

79+
internal sealed override bool HasSpecialNameAttribute => throw ExceptionUtilities.Unreachable();
80+
7981
public sealed override ImmutableArray<CustomModifier> RefCustomModifiers
8082
{
8183
get { return _typeMap.SubstituteCustomModifiers(_originalMethod.RefCustomModifiers); }

src/Compilers/CSharp/Portable/Symbols/Extensions/SourceExtensionImplementationMethodSymbol.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public SourceExtensionImplementationMethodSymbol(MethodSymbol sourceMethod)
3535
public override MethodKind MethodKind => MethodKind.Ordinary;
3636
public override bool IsImplicitlyDeclared => true;
3737

38-
internal override bool HasSpecialName => false;
38+
internal override bool HasSpecialName => _originalMethod.HasSpecialNameAttribute;
3939

4040
internal override int ParameterCount
4141
{

src/Compilers/CSharp/Portable/Symbols/FunctionPointers/FunctionPointerMethodSymbol.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,7 @@ public override bool IsVararg
848848
internal override bool IsMetadataNewSlot(bool ignoreInterfaceImplementationChanges = false) => false;
849849
internal override bool IsMetadataVirtual(IsMetadataVirtualOption option = IsMetadataVirtualOption.None) => false;
850850
internal sealed override UnmanagedCallersOnlyAttributeData? GetUnmanagedCallersOnlyAttributeData(bool forceComplete) => null;
851+
internal sealed override bool HasSpecialNameAttribute => throw ExceptionUtilities.Unreachable();
851852

852853
internal override bool GenerateDebugInfo => throw ExceptionUtilities.Unreachable();
853854
internal override ObsoleteAttributeData? ObsoleteAttributeData => throw ExceptionUtilities.Unreachable();

src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEMethodSymbol.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1682,6 +1682,8 @@ internal override ObsoleteAttributeData ObsoleteAttributeData
16821682

16831683
return _uncommonFields?._lazyUnmanagedCallersOnlyAttributeData;
16841684
}
1685+
1686+
internal sealed override bool HasSpecialNameAttribute => throw ExceptionUtilities.Unreachable();
16851687
#nullable disable
16861688

16871689
internal override bool GenerateDebugInfo => false;

src/Compilers/CSharp/Portable/Symbols/MethodSymbol.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ public virtual bool IsGenericMethod
9696
/// </summary>
9797
internal virtual bool IsDirectlyExcludedFromCodeCoverage { get => false; }
9898

99+
internal abstract bool HasSpecialNameAttribute { get; }
100+
99101
/// <summary>
100102
/// If a method is annotated with `[MemberNotNull(...)]` attributes, returns the list of members
101103
/// listed in those attributes.

src/Compilers/CSharp/Portable/Symbols/NativeIntegerTypeSymbol.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,8 @@ public override ImmutableArray<ParameterSymbol> Parameters
374374

375375
internal override UnmanagedCallersOnlyAttributeData? GetUnmanagedCallersOnlyAttributeData(bool forceComplete) => UnderlyingMethod.GetUnmanagedCallersOnlyAttributeData(forceComplete);
376376

377+
internal sealed override bool HasSpecialNameAttribute => throw ExceptionUtilities.Unreachable();
378+
377379
public override Symbol? AssociatedSymbol => _associatedSymbol;
378380

379381
internal override int CalculateLocalSyntaxOffset(int localPosition, SyntaxTree localTree)

src/Compilers/CSharp/Portable/Symbols/ReducedExtensionMethodSymbol.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,8 @@ internal sealed override ObsoleteAttributeData ObsoleteAttributeData
444444
internal sealed override UnmanagedCallersOnlyAttributeData GetUnmanagedCallersOnlyAttributeData(bool forceComplete)
445445
=> _reducedFrom.GetUnmanagedCallersOnlyAttributeData(forceComplete);
446446

447+
internal sealed override bool HasSpecialNameAttribute => throw ExceptionUtilities.Unreachable();
448+
447449
public override Accessibility DeclaredAccessibility
448450
{
449451
get { return _reducedFrom.DeclaredAccessibility; }

src/Compilers/CSharp/Portable/Symbols/Retargeting/RetargetingMethodSymbol.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,8 @@ public override ImmutableArray<CSharpAttributeData> GetReturnTypeAttributes()
256256
return _lazyUnmanagedAttributeData;
257257
}
258258

259+
internal sealed override bool HasSpecialNameAttribute => throw ExceptionUtilities.Unreachable();
260+
259261
internal override bool TryGetThisParameter(out ParameterSymbol? thisParameter)
260262
{
261263
if (!_underlyingMethod.TryGetThisParameter(out var underlyingParameter))

src/Compilers/CSharp/Portable/Symbols/SignatureOnlyMethodSymbol.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ internal sealed override bool HasAsyncMethodBuilderAttribute(out TypeSymbol buil
124124

125125
internal sealed override UnmanagedCallersOnlyAttributeData GetUnmanagedCallersOnlyAttributeData(bool forceComplete) => throw ExceptionUtilities.Unreachable();
126126

127+
internal sealed override bool HasSpecialNameAttribute => throw ExceptionUtilities.Unreachable();
128+
127129
internal override ImmutableArray<string> GetAppliedConditionalSymbols() { throw ExceptionUtilities.Unreachable(); }
128130

129131
public override ImmutableArray<TypeWithAnnotations> TypeArgumentsWithAnnotations { get { throw ExceptionUtilities.Unreachable(); } }

0 commit comments

Comments
 (0)