@@ -277,14 +277,18 @@ private static void BuildFunctionPointerTypeId(this IFunctionPointerTypeSymbol f
277277 public static IEnumerable < IFieldSymbol ? > GetTupleElementsMaybeNull ( this INamedTypeSymbol type ) =>
278278 type . TupleElements ;
279279
280- private static string GetExtensionTypeName ( this INamedTypeSymbol named , Context cx )
280+ private static void BuildExtensionTypeId ( this INamedTypeSymbol named , Context cx , EscapingTextWriter trapFile )
281281 {
282- var type = named . ExtensionParameter ? . Type . Name ;
283- if ( type is null )
282+ trapFile . Write ( "extension(" ) ;
283+ if ( named . ExtensionMarkerName is not null )
284284 {
285- cx . ModelError ( named , "Failed to get extension method type." ) ;
285+ trapFile . Write ( named . ExtensionMarkerName ) ;
286286 }
287- return $ "extension({ type ?? "unknown" } )";
287+ else
288+ {
289+ trapFile . Write ( "unknown" ) ;
290+ }
291+ trapFile . Write ( ")" ) ;
288292 }
289293
290294 private static void BuildQualifierAndName ( INamedTypeSymbol named , Context cx , EscapingTextWriter trapFile , ISymbol symbolBeingDefined )
@@ -307,8 +311,7 @@ private static void BuildQualifierAndName(INamedTypeSymbol named, Context cx, Es
307311 }
308312 else if ( named . IsExtension )
309313 {
310- var name = GetExtensionTypeName ( named , cx ) ;
311- trapFile . Write ( name ) ;
314+ named . BuildExtensionTypeId ( cx , trapFile ) ;
312315 }
313316 else
314317 {
@@ -489,6 +492,20 @@ public static void BuildFunctionPointerSignature(IFunctionPointerTypeSymbol funp
489492 private static void BuildFunctionPointerTypeDisplayName ( this IFunctionPointerTypeSymbol funptr , Context cx , TextWriter trapFile ) =>
490493 BuildFunctionPointerSignature ( funptr , trapFile , s => s . BuildDisplayName ( cx , trapFile ) ) ;
491494
495+ private static void BuildExtensionTypeDisplayName ( this INamedTypeSymbol named , Context cx , TextWriter trapFile )
496+ {
497+ trapFile . Write ( "extension(" ) ;
498+ if ( named . ExtensionParameter ? . Type is ITypeSymbol type )
499+ {
500+ type . BuildDisplayName ( cx , trapFile ) ;
501+ }
502+ else
503+ {
504+ trapFile . Write ( "unknown" ) ;
505+ }
506+ trapFile . Write ( ")" ) ;
507+ }
508+
492509 private static void BuildNamedTypeDisplayName ( this INamedTypeSymbol namedType , Context cx , TextWriter trapFile , bool constructUnderlyingTupleType )
493510 {
494511 if ( ! constructUnderlyingTupleType && namedType . IsTupleType )
@@ -510,8 +527,7 @@ private static void BuildNamedTypeDisplayName(this INamedTypeSymbol namedType, C
510527
511528 if ( namedType . IsExtension )
512529 {
513- var name = GetExtensionTypeName ( namedType , cx ) ;
514- trapFile . Write ( name ) ;
530+ namedType . BuildExtensionTypeDisplayName ( cx , trapFile ) ;
515531 return ;
516532 }
517533
0 commit comments