Context
Consumer half of pulumi/pulumi#16099, under epic pulumi/home#4787. pulumi-dotnet's gen-sdk codegen does not resolve the per-language chooser markup (<span pulumi-lang-*> / <!--Start PulumiCodeChooser -->…<!--End PulumiCodeChooser -->) that bridged-provider schemas carry in description / deprecationMessage:
- Doc comments:
printComment → printCommentWithOptions(escape=true) runs docCommentEscaper (pulumi-language-dotnet/codegen/gen.go, ~lines 480–507), which XML-escapes </> — so the chooser is emitted as <span pulumi-lang-…> in the /// <summary> rather than resolved to the C# token.
- Deprecation:
[Obsolete(@"...DeprecationMessage...")] (gen.go ~896–897, 1192–1193, 1436–1437) emits the raw message (only "→"" escaping), so chooser markup there is emitted literally.
- Comments are filtered via the shared
codegen.FilterExamples(r.Comment, "csharp") (examples-only; does not resolve the chooser).
Note: pulumi/ci-mgmt#2240 measured ".NET 0" because it grepped for the literal <span; the doc-comment XML-escaping hides it from that grep, but the markup is still present and diverges from the bridge's resolved output.
Acceptance criteria
Prior art: pulumi-terraform-bridge/pkg/tfgen/schemafilter.FilterSchemaByLanguage (field-agnostic, handles both markup forms).
Part of pulumi/home#4787.
Context
Consumer half of pulumi/pulumi#16099, under epic pulumi/home#4787. pulumi-dotnet's gen-sdk codegen does not resolve the per-language chooser markup (
<span pulumi-lang-*>/<!--Start PulumiCodeChooser -->…<!--End PulumiCodeChooser -->) that bridged-provider schemas carry indescription/deprecationMessage:printComment→printCommentWithOptions(escape=true)runsdocCommentEscaper(pulumi-language-dotnet/codegen/gen.go, ~lines 480–507), which XML-escapes</>— so the chooser is emitted as<span pulumi-lang-…>in the/// <summary>rather than resolved to the C# token.[Obsolete(@"...DeprecationMessage...")](gen.go ~896–897, 1192–1193, 1436–1437) emits the raw message (only"→""escaping), so chooser markup there is emitted literally.codegen.FilterExamples(r.Comment, "csharp")(examples-only; does not resolve the chooser).Note: pulumi/ci-mgmt#2240 measured ".NET 0" because it grepped for the literal
<span; the doc-comment XML-escaping hides it from that grep, but the markup is still present and diverges from the bridge's resolved output.Acceptance criteria
/// <summary>docs and[Obsolete(...)]deprecation strings resolve the chooser to the C# token (and code-chooser blocks to the C# example), matching the bridge tfgen output — no<span pulumi-lang-…>and no literal<span …>.descriptionanddeprecationMessageat every level (package, resource, function, type, property, enum value).Prior art:
pulumi-terraform-bridge/pkg/tfgen/schemafilter.FilterSchemaByLanguage(field-agnostic, handles both markup forms).Part of pulumi/home#4787.