Skip to content

Commit 5f8792c

Browse files
live1206Copilot
andcommitted
Fix hybrid reference map public roots
Preserve public custom partial declarations as public roots during pre-write accessibility and prune model factory methods for removed models. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent aacaf10 commit 5f8792c

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/PostProcessing/PostProcessor.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,14 @@ public async Task<Project> RemoveAsync(Project project)
345345
nodesToRemove.AddRange(definitions.DeclaredNodesCache[symbol]);
346346
}
347347

348+
var modelNamesToRemove = nodesToRemove
349+
.Select(static item => item.Identifier.Text)
350+
.ToHashSet(StringComparer.Ordinal);
351+
if (modelNamesToRemove.Count > 0)
352+
{
353+
project = await RemoveMethodsFromModelFactoryAsync(project, definitions, modelNamesToRemove);
354+
}
355+
348356
// remove them one by one
349357
var referencedTypeNames = referencedSet
350358
.Select(static symbol => symbol.GetFullyQualifiedName())

packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/PostProcessing/ProviderReferenceMapAnalyzer.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ public static void Analyze(IReadOnlyList<TypeProvider> providers, Project projec
132132
var publicizeReachable = GetReachableTypes(publicizeRoots, internalizeReferences, publicApiTraversalNodes);
133133
var internalizeCandidates = internalizeDeclaredNodes
134134
.Except(publicizeReachable, StringComparer.Ordinal)
135-
.Union(internalizeDeclaredNodes.Intersect(customInternalBoundaryNodes, StringComparer.Ordinal), StringComparer.Ordinal)
135+
.Union(internalizeDeclaredNodes
136+
.Intersect(customInternalBoundaryNodes, StringComparer.Ordinal)
137+
.Except(publicizeRoots, StringComparer.Ordinal), StringComparer.Ordinal)
136138
.OrderBy(static name => name, StringComparer.Ordinal)
137139
.ToArray();
138140
var publicizeCandidates = publicizeDeclaredNodes
@@ -229,7 +231,9 @@ private static (HashSet<string> InternalizeCandidates, HashSet<string> Publicize
229231
var publicizeReachable = GetReachableTypes(publicizeRoots, internalizeReferences, publicApiTraversalNodes);
230232
var internalizeCandidates = internalizeDeclaredNodes
231233
.Except(publicizeReachable, StringComparer.Ordinal)
232-
.Union(internalizeDeclaredNodes.Intersect(customInternalBoundaryNodes, StringComparer.Ordinal), StringComparer.Ordinal)
234+
.Union(internalizeDeclaredNodes
235+
.Intersect(customInternalBoundaryNodes, StringComparer.Ordinal)
236+
.Except(publicizeRoots, StringComparer.Ordinal), StringComparer.Ordinal)
233237
.ToHashSet(StringComparer.Ordinal);
234238
var publicizeCandidates = publicizeDeclaredNodes
235239
.Except(customInternalDeclarations, StringComparer.Ordinal)
@@ -403,6 +407,8 @@ private static HashSet<string> GetCustomCodePublicGeneratedTypeRootsFromSyntax(P
403407
continue;
404408
}
405409

410+
AddMatchingName(roots, typeDeclaration.Identifier.ValueText, generatedTypeNames);
411+
406412
if (typeDeclaration.BaseList != null)
407413
{
408414
AddSyntaxTypeReferences(roots, typeDeclaration.BaseList, generatedTypeNames);

0 commit comments

Comments
 (0)