Skip to content

Enable allowImportingTsExtensions for core/eng typecheck#4883

Open
l0lawrence wants to merge 2 commits into
mainfrom
l0lawrence-emitter-diff-eng-exclude
Open

Enable allowImportingTsExtensions for core/eng typecheck#4883
l0lawrence wants to merge 2 commits into
mainfrom
l0lawrence-emitter-diff-eng-exclude

Conversation

@l0lawrence

@l0lawrence l0lawrence commented Jul 13, 2026

Copy link
Copy Markdown
Member

The core PR microsoft/typespec#11122 adds the eng/emitter-diff tool, whose source uses Node-native .ts-extension imports (it runs under node --experimental-strip-types). This repo's check:eng typechecks ./core/eng (which now includes emitter-diff) and was failing with TS5097 (An import path can only end with a '.ts' extension when 'allowImportingTsExtensions' is enabled).

Fix: enable allowImportingTsExtensions: true in tsconfig.eng.json — mirroring what core's own tsconfig.eng.json does. check:eng already runs with --noEmit, which this flag requires. Nothing is excluded; emitter-diff stays fully typechecked.

Companion to microsoft/typespec#11122.

The emitter-diff scripts use node-native .ts-extension imports (allowImportingTsExtensions), which core's own check:eng enables but this repo's tsconfig.eng.json does not, causing TS5097. Exclude the directory like core/eng/vitest.config.ts already is.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@l0lawrence l0lawrence marked this pull request as draft July 13, 2026 21:58
@azure-sdk-automation

Copy link
Copy Markdown
Contributor

No changes needing a change description found.

Instead of excluding core/eng/emitter-diff, enable allowImportingTsExtensions so its node-native .ts-extension imports typecheck here too — mirroring core's own tsconfig.eng.json. check:eng runs with --noEmit, which the flag requires. Nothing is excluded; emitter-diff stays fully typechecked.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@l0lawrence l0lawrence changed the title fix(eng): exclude core/eng/emitter-diff from eng typecheck Enable allowImportingTsExtensions for core/eng typecheck Jul 13, 2026
@azure-sdk-automation

Copy link
Copy Markdown
Contributor

You can try these changes here

🛝 Playground 🌐 Website

@github-actions

Copy link
Copy Markdown
Contributor

⚡ Benchmark Results

✅ No performance regressions detected.

Full details – comparing 32a273e vs baseline rolling-baseline-a18f78b-4e083cc (rolling baseline (20 main runs))
Metric Baseline Current Change
total 🔴 1.03s 🔴 1.04s +1.2%
loader 🟡 313.0ms 🟡 320.4ms +2.3%
resolver 🟢 40.8ms 🟢 40.9ms +0.4%
checker 🟡 371.5ms 🟡 373.1ms +0.4%
validation 🟢 86.2ms 🟢 86.5ms +0.4%
 ↳ validation/@azure-tools/typespec-azure-core 🟡 12.8ms 🟡 13.2ms +2.6%
 ↳ validation/@typespec/http 🟡 15.8ms 🟡 15.9ms +0.8%
 ↳ validation/@typespec/rest 🟢 1.6ms 🟢 1.6ms -1.2%
 ↳ validation/@typespec/versioning 🔴 51.9ms 🔴 51.7ms -0.2%
 ↳ validation/compiler 🟢 3.9ms 🟢 3.9ms +0.3%
linter 🟡 218.9ms 🟡 221.8ms +1.3%
 ↳ linter/@azure-tools/typespec-azure-core/auth-required 🟢 0.1ms 🟢 0.1ms +3.3%
 ↳ linter/@azure-tools/typespec-azure-core/bad-record-type 🟢 0.6ms 🟢 0.6ms -1.5%
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 8.5ms 🟢 8.5ms +0.4%
 ↳ linter/@azure-tools/typespec-azure-core/casing-style 🟢 1.5ms 🟢 1.4ms -1.9%
 ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance 🟢 0.2ms 🟢 0.2ms -2.3%
 ↳ linter/@azure-tools/typespec-azure-core/documentation-required 🟢 2.0ms 🟢 2.0ms -0.9%
 ↳ linter/@azure-tools/typespec-azure-core/friendly-name 🟢 1.4ms 🟢 1.4ms -0.5%
 ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required 🟢 0.4ms 🟢 0.4ms +0.5%
 ↳ linter/@azure-tools/typespec-azure-core/known-encoding 🟢 0.5ms 🟢 0.5ms +2.2%
 ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required 🟢 0.8ms 🟢 0.8ms -1.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch 🟢 0.7ms 🟢 0.7ms +1.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union 🟢 1.0ms 🟢 1.0ms -2.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-enum 🟢 0.2ms 🟢 0.2ms -0.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes 🟢 0.3ms 🟢 0.3ms +0.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops 🟢 0.2ms 🟢 0.2ms +0.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-format 🟢 0.8ms 🟢 0.8ms +0.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric 🟢 0.9ms 🟢 0.8ms -0.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🔴 27.2ms 🔴 28.2ms +3.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage 🟢 2.1ms 🟢 2.1ms +0.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator 🟢 0.2ms 🟢 0.2ms +3.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-nullable 🟢 0.4ms 🟢 0.4ms +1.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime 🟢 2.0ms 🟢 2.1ms +3.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-openapi 🟢 2.3ms 🟢 2.3ms -1.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-private-usage 🟢 3.2ms 🟢 3.3ms +0.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🔴 28.3ms 🔴 29.1ms +2.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 33.9ms 🔴 34.9ms +2.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces 🟢 0.1ms 🟢 0.1ms +3.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 7.8ms 🟢 8.0ms +2.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params 🟢 0.4ms 🟢 0.4ms -0.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator 🟢 0.1ms 🟢 0.1ms +1.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-unknown 🟢 0.4ms 🟢 0.4ms +0.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union 🟢 0.8ms 🟢 0.8ms -1.5%
 ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version 🟢 0.4ms 🟢 0.4ms -3.7%
 ↳ linter/@azure-tools/typespec-azure-core/request-body-problem 🟢 0.5ms 🟢 0.5ms -0.9%
 ↳ linter/@azure-tools/typespec-azure-core/require-versioned 🟢 0.1ms 🟢 0.1ms +2.2%
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 33.2ms 🔴 33.5ms +1.0%
 ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body 🟢 0.7ms 🟢 0.7ms +1.8%
 ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model 🟢 0.5ms 🟢 0.5ms +0.3%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 7.7ms 🟢 7.9ms +2.9%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations 🟢 0.3ms 🟢 0.3ms -1.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-child-resources 🔴 21.7ms 🔴 22.5ms +3.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-lifecycle-operations 🟢 0.3ms 🟢 0.3ms +0.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version 🟡 12.3ms 🟡 12.6ms +2.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key 🟢 0.2ms 🟢 0.2ms +0.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage 🟢 0.1ms 🟢 0.1ms -0.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes 🟢 5.0ms 🟢 4.6ms -6.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-feature-file-usage-discourage 🟢 0.1ms 🟢 0.1ms -0.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts 🟡 17.3ms 🟡 17.6ms +1.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record 🟢 0.6ms 🟢 0.6ms -2.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes 🟢 1.4ms 🟢 1.4ms +4.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes 🟢 0.2ms 🟢 0.2ms -5.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment 🟢 0.5ms 🟢 0.4ms -4.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property 🟢 0.4ms 🟢 0.4ms -2.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator 🟢 0.1ms 🟢 0.1ms -7.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb 🟢 0.2ms 🟢 0.2ms -5.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property 🟢 0.3ms 🟢 0.3ms -3.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format 🟢 0.2ms 🟢 0.2ms +0.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars 🟢 0.5ms 🟢 0.5ms -0.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern 🟢 0.1ms 🟢 0.1ms +3.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation 🟢 0.6ms 🟢 0.5ms -4.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 9.1ms 🟢 8.7ms -4.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch 🟢 0.8ms 🟢 0.7ms -11.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars 🟢 0.4ms 🟢 0.4ms +0.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state 🟢 0.4ms 🟢 0.4ms -2.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels 🟢 0.2ms 🟢 0.2ms +2.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties 🟢 0.4ms 🟢 0.4ms -1.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation 🟢 0.1ms 🟢 0.1ms +4.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🔴 20.0ms 🔴 20.5ms +2.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint 🟢 0.1ms 🟢 0.1ms -2.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers 🟢 1.0ms 🟢 1.0ms -4.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model 🟢 0.3ms 🟢 0.3ms -5.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-override-props 🟢 0.3ms 🟢 0.3ms -2.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-reserved-resource-property 🟢 0.2ms 🟢 0.2ms -1.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation 🟢 0.5ms 🟢 0.5ms -0.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🔴 30.4ms 🔴 30.8ms +1.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope 🟢 0.4ms 🟢 0.4ms -0.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name 🟢 0.4ms 🟢 0.4ms -3.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop 🟢 5.5ms 🟢 5.3ms -3.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type 🟢 0.7ms 🟢 0.7ms -2.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression 🟢 0.3ms 🟢 0.3ms -2.0%
 ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict 🟢 2.3ms 🟢 2.3ms -1.0%
 ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix 🟢 1.7ms 🟢 1.7ms -0.7%
emit 🔴 6.15s 🔴 6.18s +0.6%
 ↳ emit/@Azure-Tools 🟢 0.0ms 🟢 0.0ms +0.0%
 ↳ emit/@azure-tools/typespec-autorest 🟢 127.2ms 🟢 126.2ms -0.8%
 ↳ emit/@azure-tools/typespec-python 🔴 2.29s 🔴 2.31s +0.9%
 ↳ emit/@typespec 🟢 0.0ms 🟢 0.0ms +0.0%
 ↳ emit/@typespec/http-client-js 🔴 580.7ms 🔴 580.7ms +0.0%
 ↳ emit/@typespec/openapi3 🟢 109.8ms 🟢 111.2ms +1.3%
 ↳ emit/@typespec/openapi3/compute 🟢 95.4ms 🟢 96.6ms +1.2%
 ↳ emit/@typespec/openapi3/write 🟢 14.1ms 🟢 14.3ms +1.8%

Averaged across 3 specs (azure-arm-resource-manager, azure-core-dataplane, azure-full).
Threshold: changes > ±5% are highlighted.
🟢 Fast · 🟡 Moderate (stages >200ms, rules >10ms) · 🔴 Slow (stages >400ms, rules >20ms)

@l0lawrence l0lawrence marked this pull request as ready for review July 13, 2026 22:48
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.

1 participant