Skip to content

Commit 02e6845

Browse files
kt3kclaude
andcommitted
chore: backfill microsoft/typescript-go digests for 2026-05-01–05-19
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 9914690 commit 02e6845

19 files changed

Lines changed: 586 additions & 0 deletions
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
date: 2026-05-01
3+
repo: microsoft/typescript-go
4+
size: M
5+
title: "Telemetry experiments and watcher scans improved"
6+
excerpt: "The extension now initializes TAS experimentation telemetry, and the file watcher removes redundant directory hashing while slowing its poll loop."
7+
commits: 2
8+
authors: [DanielRosenwasser, andrewbranch]
9+
commit_authors: {"6dff52f": DanielRosenwasser, "0fa4110": andrewbranch}
10+
---
11+
12+
### **Extension wires up TAS experimentation telemetry** (6dff52f)
13+
The VS Code extension now creates an `ExperimentationService` during activation, using `vscode-tas-client` to set shared telemetry properties for treatments/flights. This lays the groundwork for experiment-driven behavior, even though the current code only instantiates the service for telemetry context.
14+
15+
### **Polling watcher drops redundant directory work** (0fa4110)
16+
The file watcher now avoids re-hashing directory contents on every scan and instead tracks explicit paths and wildcard directories more directly. It also raises the default watch interval from 1s to 2s and adds an opt-in `TS_WATCH_DEBUG` log hook, reducing unnecessary polling overhead while preserving debouncing behavior.
17+
18+
### Other misc changes
19+
- Watcher tests and internal refactors around the new scan logic
20+
- Extension cleanup and build metadata updates, including a new TAS client dependency
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
date: 2026-05-02
3+
repo: microsoft/typescript-go
4+
size: M
5+
title: "Better typing for `this.xxx` assignment declarations"
6+
excerpt: "TypeScript-Go now handles self-referential `this` property assignments more precisely, improving inferred property types and avoiding bad widening."
7+
commits: 1
8+
---
9+
10+
### **Improve `this.xxx` assignment declaration typing** (2f6504c)
11+
Type inference for assignment declarations now treats `this`-property assignments more like the JS implementation: self-referential writes are excluded from the declared type, and empty-array cases are widened to `any[]` with an implicit-any diagnostic when needed. This should fix class property inference in common patterns like `this.foo = [this.foo[0] * 2]` and avoid producing `never`/empty unions when no usable initializer type is present.
12+
13+
### Other misc changes
14+
- Added regression coverage for `this` property assignment typing.
15+
- Updated baseline outputs for errors, symbols, and types.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
date: 2026-05-03
3+
repo: microsoft/typescript-go
4+
size: N
5+
title: "No changes"
6+
excerpt: ""
7+
commits: 0
8+
---
9+
10+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
date: 2026-05-04
3+
repo: microsoft/typescript-go
4+
size: M
5+
title: "Fix expando object circularity in index inference"
6+
excerpt: "TypeScript-Go now avoids treating expando object literals as inferable indexable shapes, fixing a circularity bug in property assignment."
7+
commits: 1
8+
---
9+
10+
### **Fix circularity when assigning to expando object properties** (6a6cb09)
11+
The checker now excludes expando object literals from `isObjectTypeWithInferableIndex`, preventing them from being treated like plain object literals during index inference. That breaks the circular relationship seen when assigning properties like `obj.foo` and `obj.buzz = Object.values(obj)`, and the new regression test locks in the corrected behavior.
12+
13+
### Other misc changes
14+
- Added regression baseline coverage for `expandoNoInferredIndex` symbols and types.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
date: 2026-05-05
3+
repo: microsoft/typescript-go
4+
size: L
5+
title: "Inference and declaration emit fixes land"
6+
excerpt: "Several bug fixes improve type inference, isolatedDeclarations, and declaration emit correctness; one printer panic fix rounds out the day."
7+
commits: 7
8+
authors: [jakebailey]
9+
commit_authors: {"3fef754": jakebailey}
10+
---
11+
12+
### **Fix inference from `never` into union targets** (ee4225a)
13+
Type inference now handles union sources and targets more precisely, including cases where the source is `never` or another union. This fixes a misinference bug that could choose the wrong `const` generic branch and produce incorrect results for APIs relying on union matching.
14+
15+
### **Fix isolatedDeclarations for arrow functions with default params** (eca51a3)
16+
The pseudochecker now tracks required parameter positions more accurately when emitting parameter types, especially for defaults and optional/rest combinations. That closes an `isolatedDeclarations` gap where arrow functions with default parameters could be reported incorrectly.
17+
18+
### **Preserve trailing commas in declaration-emitted array binding patterns** (23ec44f)
19+
Declaration emit now keeps trailing commas in array binding patterns when transforming destructuring signatures. This is a small but important correctness fix for `.d.ts` output, avoiding churn and preserving the intended shape of tuple-binding declarations.
20+
21+
### **Fix nested signature scoping in return type serialization** (3fef754)
22+
Return-type serialization now enters a dedicated signature scope before building the output node. That prevents type parameter shadowing/renaming mistakes in nested generic declarations, which showed up in several declaration-emit baselines.
23+
24+
### **Do not treat typed `{}` initializers as expando objects** (fdfe96e)
25+
The binder and AST utility logic now require an empty object literal to be untyped before it is treated as an expando initializer in JS files. This avoids incorrectly attaching expando members to variables or properties that already have an explicit type annotation.
26+
27+
### **Fix multi-byte rune handling in change tracking** (2a41760)
28+
The printer’s trailing-whitespace trim logic now uses `utf8.DecodeLastRuneInString`, so `setLastNonTriviaPosition` no longer miscomputes offsets on multi-byte text. This is a correctness fix for emitted text position tracking.
29+
30+
### **Fix JSX whitespace-only text panic in change tracking** (3b78168)
31+
Whitespace-only JSX text no longer triggers an index-out-of-range panic while emitting tracked changes. The added fourslash test locks in the regression fix for `isolatedDeclarations`/declaration workflows.
32+
33+
### Other misc changes
34+
- No-op test baseline updates for the above fixes
35+
- Minor internal refactorings in declaration emit and printer code
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
date: 2026-05-06
3+
repo: microsoft/typescript-go
4+
size: M
5+
title: "Diagnostics, watchers, and JS docs tightened"
6+
excerpt: "Fixes a JSDoc mismatch diagnostic, removes an LSP hang, speeds scope cloning, and updates JS docs around constructor functions."
7+
commits: 5
8+
authors: [jakebailey, sandersn]
9+
commit_authors: {"1e58c84": jakebailey, "763092d": jakebailey, "20d34b5": sandersn}
10+
---
11+
12+
### **Fix JSDoc `@extends` mismatch diagnostics for property access bases** (18f93b8)
13+
The checker now compares the identifier names extracted from `@extends` and the actual `extends` clause, instead of only handling plain identifiers. This makes the mismatch diagnostic fire correctly for property-access bases like `React.Component` vs `React.PureComponent`.
14+
15+
### **Fix server hang after scheduled diagnostics refresh** (095aa2f)
16+
`RefreshDiagnostics` now sends the workspace diagnostic refresh request fire-and-forget, avoiding a wait on a client response that is expected to be null. The watch/session code also adds per-request timeouts and rollback handling so watch registration stays consistent even if a client call stalls or fails.
17+
18+
### **Optimize type variable scope map cloning with CoW** (1e58c84)
19+
Type parameter bookkeeping in the node builder was converted from ad hoc mutable maps/sets to copy-on-write collections. This trims cloning overhead in scope-heavy paths and simplifies the state management used while generating names and tracking visited symbols.
20+
21+
### Other misc changes
22+
- Fixed a flaky pnpm-style symlink test in auto-import registry coverage (763092d)
23+
- Updated JavaScript documentation and CHANGES.md guidance around constructor functions and removed Closure-era examples (20d34b5)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
date: 2026-05-07
3+
repo: microsoft/typescript-go
4+
size: L
5+
title: "JSDoc, config lookup, and LSP watchdog fixes"
6+
excerpt: "Several notable parser and project-resolution fixes landed, plus LSP now exits when its parent dies."
7+
commits: 11
8+
authors: [DanielRosenwasser, jakebailey, andrewbranch]
9+
commit_authors: {"51a1064": jakebailey, "9e69d83": DanielRosenwasser}
10+
---
11+
12+
### **LSP now shuts down when its parent process exits** (51a1064)
13+
The language server now starts a watchdog tied to the parent PID and cancels the server context if that process disappears. This helps prevent orphaned `tsgo` LSP processes after an editor crash or forced quit.
14+
15+
### **JSDoc fenced code blocks now preserve `@` tags correctly** (3c6134d)
16+
The JSDoc parser now tracks fenced code block state across newlines, so `@`-prefixed text inside triple-backtick blocks is treated as literal content instead of being misread as tags. That fixes hover and parsing behavior for examples and embedded code in JSDoc.
17+
18+
### **`@satisfies` no longer blocks `@param` application on arrow functions** (7f8d024)
19+
The reparser now skips through `satisfies` expressions when looking for function-like hosts, so JSDoc `@param` types can still attach to arrow functions wrapped in a `@satisfies` annotation. This fixes incorrect type checking and diagnostics for a common JSDoc pattern.
20+
21+
### **JSDoc `?` and `!` prefixes now bind with the right precedence** (9e69d83)
22+
The parser changed nullable/non-nullable JSDoc type parsing to use the higher-precedence type-operator path, matching how unions and other operators should combine. This resolves several incorrect parses and error cases around prefix operators mixed with unions, intersections, and `readonly`.
23+
24+
### **`tsconfig` option names are now case-sensitive with suggestions** (2e80702)
25+
Config parsing now rejects incorrectly cased option names more precisely and can offer “Did you mean” suggestions for known top-level config sections. This makes tsconfig/jsconfig errors clearer and helps users recover from casing mistakes faster.
26+
27+
### **JS files now prefer `jsconfig.json` over sibling `tsconfig.json`** (16ff7f0)
28+
Project discovery was adjusted so a JS file in a directory containing both configs is assigned to the `jsconfig.json` project, while TS files still resolve to `tsconfig.json`. That matches editor/server expectations and avoids JS files inheriting the wrong config semantics.
29+
30+
### **CommonJS export transformation is more robust in nested control flow** (b96acbe)
31+
The CommonJS module transformer now handles nested `if`/labeled statements and `var`-hoisting cases without crashing or emitting invalid export syntax. Several baselines were updated to reflect safer fallback output in these edge cases.
32+
33+
### **Type metadata serialization fixed a null/undefined precedence bug** (0d33019)
34+
A parenthesization bug in union/intersection metadata emission was corrected, changing some decorator metadata output for nullable unions. This matters because emitted design types are used by downstream reflection tooling and were previously being produced incorrectly in some strict-null-checks cases.
35+
36+
### Other misc changes
37+
- Process-alive/platform plumbing and LSP shutdown wiring refinements.
38+
- Minor comment fixes.
39+
- `vscode-tas-client` dependency bump.
40+
- Small internal GC/session and type-serializer tweaks.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
date: 2026-05-08
3+
repo: microsoft/typescript-go
4+
size: M
5+
title: "Module resolution, declaration emit, and LS fixes"
6+
excerpt: "A mixed day of several notable bug fixes across module resolution, declaration emit, and language service behavior."
7+
commits: 18
8+
authors: [DanielRosenwasser, andrewbranch, RyanCavanaugh, jakebailey]
9+
commit_authors: {"e1f8f97": andrewbranch, "5c67e17": RyanCavanaugh, "48e2953": jakebailey, "04b3256": DanielRosenwasser, "968d062": DanielRosenwasser}
10+
---
11+
12+
### **Fix package exports fallback and self-name resolution edge cases** (e1f8f97)
13+
The resolver now treats top-level `"exports": null` as allowing fallback resolution instead of blocking it, matching Node’s behavior. It also accepts certain self-name resolution errors when the project root is ambiguous, which clears a batch of related baseline failures.
14+
15+
### **Defer ambient module merging until globals are ready** (b6de67f)
16+
Global ambient module declarations are now merged later in checker initialization, after the global symbol table has been set up. This avoids cases where ambient modules depend on other global symbols/types that were not yet resolved.
17+
18+
### **Tighten declaration emit for expando assignments** (88f5792, c872613, dcc16d9)
19+
Declaration emit now avoids duplicating expando functions and skips emitting expandos that are already represented elsewhere, which reduces duplicate declarations and related errors. A separate fix also preserves the actual computed property name in expando export output, preventing incorrect aliases for element-access assignments.
20+
21+
### **Fix auto-import promotion for type-only JSX imports** (ea005f3)
22+
The import-fix path no longer panics when a JSX tag completion needs to promote one or more `import type` specifiers to value imports. It now handles multiple candidate symbols more safely, including the case where both the JSX namespace and component import are type-only.
23+
24+
### **Fix JSDoc `@param` matching on class fields and similar hosts** (1fb728b)
25+
JSDoc parameter validation now walks to the correct owning declaration for more function-like contexts, including class fields and other attachment points. That makes unmatched `@param` diagnostics appear where users expect instead of being dropped.
26+
27+
### **Fix crash in destructuring with `noUncheckedIndexedAccess` and `noLib`** (04b3256)
28+
A nil check was added before including `undefined` in indexed access types, preventing a crash when destructuring arrays without lib definitions. The compiler now reports the underlying property error instead of failing internally.
29+
30+
### **Fix missing nil check in async return contextual typing** (968d062)
31+
The checker now guards a contextual-type lookup used for return expressions, preventing another crash path in async function analysis. This keeps the checker stable on thenable-return cases that previously tripped a nil dereference.
32+
33+
### **Fix recursive constraint expansion in signature inference** (ed6cf5d)
34+
The checker now avoids over-expanding recursive constraints while computing base signatures. That narrows type inference work and fixes bad behavior on generic function parameter cases.
35+
36+
### **Fix `isInitialized` state restoration after restart** (e070bc6)
37+
The client now restores `isInitialized` correctly after a restart flow. This is a small but important state-machine fix for the extension client.
38+
39+
### **Fix process-alive probing on unsupported platforms** (48e2953)
40+
The LSP now avoids starting process-liveness checks when the platform can’t support them. That removes unnecessary platform-specific work and avoids invalid probe setup.
41+
42+
### **Add a Copilot instruction template** (5c67e17)
43+
Adds a new `.github/copilot-instructions.md` file to guide Copilot usage in the repo.
44+
45+
### Other misc changes
46+
- Moved several baseline results from `submoduleTriaged` to `submoduleAccepted`.
47+
- Added and updated test baselines for module resolution, expando emit, JSDoc param tags, and JS declaration emit cases.
48+
- Minor language-service and checker test additions/adjustments.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
date: 2026-05-09
3+
repo: microsoft/typescript-go
4+
size: M
5+
title: "JSDoc host alignment and crash fix"
6+
excerpt: "Tightened JSDoc attachment and function-like host detection, plus a regression test for shorthand property assignment crashes."
7+
commits: 1
8+
---
9+
10+
### **Align JSDoc host lookup and parser reparsing** (092b34f)
11+
The repo now uses more consistent rules for finding the JSDoc attachment host and the function-like node used during reparse. This reduces mismatches between `@param` diagnostics and parser behavior, especially around variable declarations, expression statements, and `satisfies` expressions.
12+
13+
### **Prevent a shorthand property assignment crash** (092b34f)
14+
The commit also adds a regression test for `shorthandPropertyAssignmentNoCrash`, indicating a real parser/checker crash was fixed. The new baselines show the compiler can now process the case without blowing up, which makes this a meaningful bug fix.
15+
16+
### Other misc changes
17+
- Internal JSDoc and parser refactors to simplify host selection logic
18+
- Test baseline additions for the regression case
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
date: 2026-05-10
3+
repo: microsoft/typescript-go
4+
size: N
5+
title: "No changes"
6+
excerpt: ""
7+
commits: 0
8+
---
9+
10+

0 commit comments

Comments
 (0)