Skip to content

Fix system model base provider resolution - #11585

Merged
Wei Hu (live1206) merged 1 commit into
microsoft:mainfrom
live1206:fix/system-object-base-provider
Aug 11, 2026
Merged

Fix system model base provider resolution#11585
Wei Hu (live1206) merged 1 commit into
microsoft:mainfrom
live1206:fix/system-object-base-provider

Conversation

@live1206

@live1206 Wei Hu (live1206) commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Ensure MTG creates and resolves the corresponding input base model provider when a SystemObjectModelProvider wraps a framework type with an existing CLR base type.

SystemObjectModelProvider.BuildBaseType() prefers SystemType.BaseType, so the normal ModelProvider.BuildBaseType() path does not create the declared TypeSpec base model. BuildBaseModelProvider() previously only checked CSharpTypeMap, which could leave the base provider null depending on model creation order.

The fallback now:

  • Creates the declared input base model when no mapped provider exists.
  • Verifies that its generated type matches the resolved base type by name.
  • Registers the resolved CSharpType alias for subsequent lookups.

Added a regression test using ArgumentException and SystemException to cover both automatic system base-provider creation and framework/non-framework CSharpType equivalence.

Contributes to #10787.

Validation

  • SystemObjectModelProviderTests: 27 passed
  • Full npm run test:generator
  • Azure management generator with local MTG project references and its base-provider visitor workaround removed:
    • 269 management generator tests passed
    • Full management test-project regeneration passed, including Mgmt-TypeSpec-MultiService