Skip to content

Commit 24f3798

Browse files
committed
Extensions: DocumentationCommentId and
ExtensionGroupingName/ExtensionMarkerName APIs
1 parent 502420d commit 24f3798

File tree

43 files changed

+309
-124
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+309
-124
lines changed

docs/contributing/Compiler Test Plan.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ This document provides guidance for thinking about language interactions and tes
99
- BCL (including mono) and other customer impact
1010
- Determinism
1111
- Loading from metadata (source vs. loaded from metadata)
12-
- Public interface of compiler APIs (including semantic model APIs listed below):
12+
- Public compiler APIs (including semantic model and other APIs listed below):
1313
- GetDeclaredSymbol
1414
- GetEnclosingSymbol
1515
- GetSymbolInfo
@@ -29,6 +29,7 @@ This document provides guidance for thinking about language interactions and tes
2929
- ClassifyConversion
3030
- GetOperation (`IOperation`)
3131
- GetCFG (`ControlFlowGraph`)
32+
- DocumentationCommentId APIs
3233
- VB/F# interop
3334
- C++/CLI interop (particularly for metadata format changes, e.g. DIMs, static abstracts in interfaces, or generic attributes)
3435
- Performance and stress testing

src/Compilers/CSharp/Portable/Binder/Semantics/Operators/UnaryOperatorOverloadResolution.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ public bool Equals(MethodSymbol? x, MethodSymbol? y)
263263

264264
var xExtension = x.OriginalDefinition.ContainingType;
265265
var xGroupingKey = ((SourceNamedTypeSymbol)xExtension).ExtensionGroupingName;
266+
Debug.Assert(xGroupingKey is not null);
266267
var yExtension = y.OriginalDefinition.ContainingType;
267268
var yGroupingKey = ((SourceNamedTypeSymbol)yExtension).ExtensionGroupingName;
268269

@@ -294,6 +295,7 @@ public int GetHashCode(MethodSymbol op)
294295

295296
var extension = op.OriginalDefinition.ContainingType;
296297
var groupingKey = ((SourceNamedTypeSymbol)extension).ExtensionGroupingName;
298+
Debug.Assert(groupingKey is not null);
297299
result = Hash.Combine(result, groupingKey.GetHashCode());
298300

299301
foreach (var parameter in op.OriginalDefinition.AsMember(Normalize(extension)).Parameters)

src/Compilers/CSharp/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -345,9 +345,7 @@ private void AddNameAndTypeArgumentsOrParameters(INamedTypeSymbol symbol)
345345
{
346346
if (Format.CompilerInternalOptions.HasFlag(SymbolDisplayCompilerInternalOptions.UseMetadataMemberNames))
347347
{
348-
// Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, should we output ExtensionMarkerName instead here?
349-
var extensionIdentifier = underlyingTypeSymbol!.ExtensionGroupingName; // Tracked by https://github.com/dotnet/roslyn/issues/78957 : public API, use public API once it's available
350-
Builder.Add(CreatePart(SymbolDisplayPartKind.ClassName, symbol, extensionIdentifier));
348+
Builder.Add(CreatePart(SymbolDisplayPartKind.ClassName, symbol, symbol.ExtensionGroupingName));
351349
}
352350
else
353351
{

src/Compilers/CSharp/Portable/Symbols/AnonymousTypes/PublicSymbols/AnonymousManager.TypeOrDelegatePublicSymbol.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,9 @@ internal sealed override bool MangleName
8282
internal sealed override bool IsFileLocal => false;
8383
internal sealed override FileIdentifier? AssociatedFileIdentifier => null;
8484

85-
internal override string ExtensionGroupingName
86-
=> throw ExceptionUtilities.Unreachable();
85+
internal sealed override string? ExtensionGroupingName => null;
8786

88-
internal override string ExtensionMarkerName
89-
=> throw ExceptionUtilities.Unreachable();
87+
internal sealed override string? ExtensionMarkerName => null;
9088

9189
public sealed override int Arity
9290
{

src/Compilers/CSharp/Portable/Symbols/AnonymousTypes/SynthesizedSymbols/AnonymousType.TypeOrDelegateTemplateSymbol.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,9 @@ public sealed override bool IsRefLikeType
167167
get { return false; }
168168
}
169169

170-
internal override string ExtensionGroupingName
171-
=> throw ExceptionUtilities.Unreachable();
170+
internal sealed override string? ExtensionGroupingName => null;
172171

173-
internal override string ExtensionMarkerName
174-
=> throw ExceptionUtilities.Unreachable();
172+
internal sealed override string? ExtensionMarkerName => null;
175173

176174
public sealed override bool IsReadOnly
177175
{

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,8 @@ public override bool IsValueType
237237
}
238238

239239
internal sealed override ParameterSymbol? ExtensionParameter => null;
240+
internal sealed override string? ExtensionGroupingName => null;
241+
internal sealed override string? ExtensionMarkerName => null;
240242

241243
internal sealed override ManagedKind GetManagedKind(ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) => ManagedKind.Managed;
242244

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ public override bool IsValueType
108108
}
109109

110110
internal sealed override ParameterSymbol? ExtensionParameter => null;
111+
internal sealed override string? ExtensionGroupingName => null;
112+
internal sealed override string? ExtensionMarkerName => null;
111113

112114
internal sealed override ManagedKind GetManagedKind(ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) => ManagedKind.Managed;
113115

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,9 @@ public sealed override bool IsRefLikeType
116116
}
117117
}
118118

119-
internal sealed override string ExtensionGroupingName
120-
=> throw ExceptionUtilities.Unreachable();
119+
internal sealed override string? ExtensionGroupingName => null;
121120

122-
internal sealed override string ExtensionMarkerName
123-
=> throw ExceptionUtilities.Unreachable();
121+
internal sealed override string? ExtensionMarkerName => null;
124122

125123
public sealed override bool IsReadOnly
126124
{

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ private FunctionPointerTypeSymbol(FunctionPointerMethodSymbol signature)
7474
public override bool IsReferenceType => false;
7575
public override bool IsValueType => true;
7676
internal sealed override ParameterSymbol? ExtensionParameter => null;
77+
internal sealed override string? ExtensionGroupingName => null;
78+
internal sealed override string? ExtensionMarkerName => null;
7779
public override TypeKind TypeKind => TypeKind.FunctionPointer;
7880
public override bool IsRefLikeType => false;
7981
public override bool IsReadOnly => false;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ internal void SetExpression(BoundExpression expression)
100100
public override bool IsValueType => false;
101101

102102
internal sealed override ParameterSymbol? ExtensionParameter => null;
103+
internal sealed override string? ExtensionGroupingName => null;
104+
internal sealed override string? ExtensionMarkerName => null;
103105

104106
public override TypeKind TypeKind => TypeKindInternal.FunctionType;
105107

0 commit comments

Comments
 (0)