Skip to content

Commit 3fbf6f7

Browse files
committed
Relaxed type symbol check for connections. (#8165)
1 parent 253c43a commit 3fbf6f7

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

src/HotChocolate/Core/src/Types.Analyzers/KnownSymbols.cs

+18-17
Original file line numberDiff line numberDiff line change
@@ -83,28 +83,23 @@ public static bool TryGetGraphQLTypeName(
8383
return false;
8484
}
8585

86-
public static INamedTypeSymbol GetConnectionBaseSymbol(this GeneratorSyntaxContext context)
86+
public static INamedTypeSymbol? GetConnectionBaseSymbol(this GeneratorSyntaxContext context)
8787
=> context.SemanticModel.Compilation.GetConnectionBaseSymbol();
8888

89-
public static INamedTypeSymbol GetConnectionBaseSymbol(this Compilation compilation)
90-
=> compilation.GetTypeByMetadataName("HotChocolate.Types.Pagination.ConnectionBase`3")
91-
?? throw new InvalidOperationException("Could not resolve connection base type.");
89+
public static INamedTypeSymbol? GetConnectionBaseSymbol(this Compilation compilation)
90+
=> compilation.GetTypeByMetadataName("HotChocolate.Types.Pagination.ConnectionBase`3");
9291

93-
public static INamedTypeSymbol GetEdgeInterfaceSymbol(this Compilation compilation)
94-
=> compilation.GetTypeByMetadataName("HotChocolate.Types.Pagination.IEdge`1")
95-
?? throw new InvalidOperationException("Could not resolve edge interface type.");
92+
public static INamedTypeSymbol? GetEdgeInterfaceSymbol(this Compilation compilation)
93+
=> compilation.GetTypeByMetadataName("HotChocolate.Types.Pagination.IEdge`1");
9694

97-
public static INamedTypeSymbol GetTaskSymbol(this Compilation compilation)
98-
=> compilation.GetTypeByMetadataName("System.Threading.Tasks.Task`1")
99-
?? throw new InvalidOperationException("Could not resolve connection base type.");
95+
public static INamedTypeSymbol? GetTaskSymbol(this Compilation compilation)
96+
=> compilation.GetTypeByMetadataName("System.Threading.Tasks.Task`1");
10097

101-
public static INamedTypeSymbol GetValueTaskSymbol(this Compilation compilation)
102-
=> compilation.GetTypeByMetadataName("System.Threading.Tasks.ValueTask`1")
103-
?? throw new InvalidOperationException("Could not resolve connection base type.");
98+
public static INamedTypeSymbol? GetValueTaskSymbol(this Compilation compilation)
99+
=> compilation.GetTypeByMetadataName("System.Threading.Tasks.ValueTask`1");
104100

105-
public static INamedTypeSymbol GetConnectionFlagsSymbol(this Compilation compilation)
106-
=> compilation.GetTypeByMetadataName("HotChocolate.Types.Pagination.ConnectionFlags")
107-
?? throw new InvalidOperationException("Could not resolve connection flags type.");
101+
public static INamedTypeSymbol? GetConnectionFlagsSymbol(this Compilation compilation)
102+
=> compilation.GetTypeByMetadataName("HotChocolate.Types.Pagination.ConnectionFlags");
108103

109104
public static bool IsConnectionType(this GeneratorSyntaxContext context, ITypeSymbol possibleConnectionType)
110105
=> context.SemanticModel.Compilation.IsConnectionType(possibleConnectionType);
@@ -174,8 +169,14 @@ public static bool IsConnectionFlagsType(this Compilation compilation, ITypeSymb
174169
return SymbolEqualityComparer.Default.Equals(namedType, compilation.GetConnectionFlagsSymbol());
175170
}
176171

177-
private static bool IsDerivedFromGenericBase(INamedTypeSymbol typeSymbol, INamedTypeSymbol baseTypeSymbol)
172+
private static bool IsDerivedFromGenericBase(INamedTypeSymbol? typeSymbol, INamedTypeSymbol? baseTypeSymbol)
178173
{
174+
// if we are generating only for GreenDonut some base types might not exist.
175+
if (baseTypeSymbol is null)
176+
{
177+
return false;
178+
}
179+
179180
var current = typeSymbol;
180181

181182
while (current is not null)

0 commit comments

Comments
 (0)