Skip to content

Fix detectModelConflicts false positive for API version enums in multi-service scenarios#3842

Merged
JialinHuang803 merged 5 commits intoAzure:mainfrom
JialinHuang803:fix/detect-model-conflicts-api-version-enum
Mar 13, 2026
Merged

Fix detectModelConflicts false positive for API version enums in multi-service scenarios#3842
JialinHuang803 merged 5 commits intoAzure:mainfrom
JialinHuang803:fix/detect-model-conflicts-api-version-enum

Conversation

@JialinHuang803
Copy link
Copy Markdown
Member

@JialinHuang803 JialinHuang803 commented Mar 12, 2026

Problem

The detectModelConflicts function in packages/typespec-ts/src/utils/namespaceUtils.ts incorrectly reports model name conflicts when multiple services each define their own Versions enum. In multi-service scenarios (e.g., the compute smoke test combining Compute and ComputeDisk services), TCGC returns both Versions enums, and the function flags them as a name conflict.

This is a false positive because API version enums are not generated in multi-service scenarios (already handled in emitModels.ts and crossLanguageDef.ts).

Fix

Skip models with UsageFlags.ApiVersionEnum in the conflict detection loop, consistent with existing patterns in:

  • emitModels.ts (lines 220-223)
  • crossLanguageDef.ts (lines 32-38)

Validation

  • pnpm build passes
  • pnpm format passes
  • ✅ All 547 unit tests pass

Fixes #3841

Skip models with UsageFlags.ApiVersionEnum in detectModelConflicts to avoid
false positive name conflicts in multi-service scenarios where each service
defines its own Versions enum (e.g., compute smoke test with Compute and
ComputeDisk services).

This is consistent with existing patterns in emitModels.ts and
crossLanguageDef.ts that already filter out API version enums.

Fixes Azure#3841

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
JialinHuang803 and others added 3 commits March 12, 2026 15:25
Tests cover:
- No conflicts with distinct model names
- True conflict with duplicate model names across namespaces
- API version enums (Versions) not treated as conflicts in multi-service

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ompute

Add @@clientName decorators in client.tsp to rename conflicting ActionGroup
and ActionGroupsProperties models with namespace prefixes. Regenerated
compute smoke test now has no model conflicts, so enableModelNamespace
is false and models use simpler names (e.g., VirtualMachine instead of
ComputeVirtualMachine).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@JialinHuang803 JialinHuang803 enabled auto-merge (squash) March 13, 2026 02:40
@JialinHuang803 JialinHuang803 merged commit f33b073 into Azure:main Mar 13, 2026
16 checks passed
JialinHuang803 added a commit to JialinHuang803/autorest.typescript that referenced this pull request Apr 9, 2026
…i-service scenarios (Azure#3842)

* Fix detectModelConflicts false positive for API version enums

Skip models with UsageFlags.ApiVersionEnum in detectModelConflicts to avoid
false positive name conflicts in multi-service scenarios where each service
defines its own Versions enum (e.g., compute smoke test with Compute and
ComputeDisk services).

This is consistent with existing patterns in emitModels.ts and
crossLanguageDef.ts that already filter out API version enums.

Fixes Azure#3841

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add unit tests for detectModelConflicts

Tests cover:
- No conflicts with distinct model names
- True conflict with duplicate model names across namespaces
- API version enums (Versions) not treated as conflicts in multi-service

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Remove unit test file per review feedback

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Resolve ActionGroup model conflicts with @clientName and regenerate compute

Add @@clientName decorators in client.tsp to rename conflicting ActionGroup
and ActionGroupsProperties models with namespace prefixes. Regenerated
compute smoke test now has no model conflicts, so enableModelNamespace
is false and models use simpler names (e.g., VirtualMachine instead of
ComputeVirtualMachine).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[migration tsp] detectModelConflicts reports false positive for API version enums in multi-service scenarios

2 participants