lib: add Math.sumPrecise type definition (ES2025) - #63429
Open
Su Yiheng (827652549) wants to merge 2 commits into
Open
lib: add Math.sumPrecise type definition (ES2025)#63429Su Yiheng (827652549) wants to merge 2 commits into
Su Yiheng (827652549) wants to merge 2 commits into
Conversation
Su Yiheng (827652549)
force-pushed
the
fix/add-math-sumPrecise-lib-type
branch
from
April 24, 2026 04:41
690af4e to
8c8953c
Compare
Author
|
@microsoft-github-policy-service agree |
Su Yiheng (827652549)
force-pushed
the
fix/add-math-sumPrecise-lib-type
branch
4 times, most recently
from
April 24, 2026 05:10
da8c0cf to
769ae58
Compare
Math.sumPrecise is part of the TC39 proposal-math-sum which reached Stage 4 on 2025-07-28, making it part of ES2026. Already implemented in Firefox 137+, Safari 18.4, and Bun, but not yet in V8/Node.js. Adds src/lib/esnext.math.d.ts with the Math interface extension, and wires it into esnext.d.ts and libs.json. Fixes microsoft#63427
Su Yiheng (827652549)
force-pushed
the
fix/add-math-sumPrecise-lib-type
branch
from
April 24, 2026 05:14
769ae58 to
e38adc3
Compare
3 tasks
This was referenced Jun 26, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a new ESNext-by-feature library (esnext.math) to provide type definitions for Math.sumPrecise, and wires it through the lib registry / CLI parsing so it can be selected via --lib, with conformance + baseline coverage.
Changes:
- Added
src/lib/esnext.math.d.tsto extendinterface MathwithsumPrecise(numbers: Iterable<number>): number. - Registered
esnext.mathin the lib ecosystem (src/lib/libs.json,src/lib/esnext.d.ts, andsrc/compiler/commandLineParser.ts). - Added diagnostics support and test coverage (new conformance test + updated baselines).
Reviewed changes
Copilot reviewed 14 out of 19 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tests/cases/conformance/esnext/mathSumPrecise.ts | New conformance test exercising Math.sumPrecise typing (positive + negative cases). |
| tests/baselines/reference/mathSumPrecise.types | New types baseline validating the inferred types for the conformance test. |
| tests/baselines/reference/mathSumPrecise.symbols | New symbols baseline validating symbol binding to lib.esnext.math.d.ts. |
| tests/baselines/reference/config/convertCompilerOptionsFromJson/Convert trailing-whitespace string option of libs to compiler-options with jsonSourceFile api.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/convertCompilerOptionsFromJson/Convert trailing-whitespace string option of libs to compiler-options with json api.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/convertCompilerOptionsFromJson/Convert incorrect option of libs to compiler-options with jsonSourceFile api.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/convertCompilerOptionsFromJson/Convert incorrect option of libs to compiler-options with json api.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/convertCompilerOptionsFromJson/Convert empty string option of libs to compiler-options with jsonSourceFile api.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/convertCompilerOptionsFromJson/Convert empty string option of libs to compiler-options with json api.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/convertCompilerOptionsFromJson/Convert empty string option of libs array to compiler-options with jsonSourceFile api.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/convertCompilerOptionsFromJson/Convert empty string option of libs array to compiler-options with json api.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/commandLineParsing/parseCommandLine/Parse invalid option of library flags.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/commandLineParsing/parseCommandLine/Parse --lib option with trailing white-space.js | Baseline update reflecting esnext.math in valid --lib values list. |
| tests/baselines/reference/config/commandLineParsing/parseCommandLine/Parse --lib option with extra comma.js | Baseline update reflecting esnext.math in valid --lib values list. |
| src/lib/libs.json | Registers esnext.math as a known lib for --lib parsing and ordering. |
| src/lib/esnext.math.d.ts | New lib fragment defining Math.sumPrecise. |
| src/lib/esnext.d.ts | Includes esnext.math in the aggregate esnext lib. |
| src/compiler/utilities.ts | Adds sumPrecise to ScriptTargetFeatures (used for “Try changing the 'lib' option to … or later” suggestions). |
| src/compiler/commandLineParser.ts | Maps esnext.math to lib.esnext.math.d.ts and adds it to the recognized --lib values list. |
Files not reviewed (3)
- tests/baselines/reference/config/commandLineParsing/parseCommandLine/Parse --lib option with extra comma.js: Generated file
- tests/baselines/reference/config/commandLineParsing/parseCommandLine/Parse --lib option with trailing white-space.js: Generated file
- tests/baselines/reference/config/commandLineParsing/parseCommandLine/Parse invalid option of library flags.js: Generated file
Comment on lines
+18
to
+21
| function* gen(): Iterable<number> { | ||
| yield 0.1; | ||
| yield 0.2; | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds type definition for
Math.sumPrecisewhich is part of the TC39proposal-math-sumthat reached Stage 4 on 2025-07-28, making it part of ES2026.Changes
src/lib/esnext.math.d.ts— extendsinterface MathwithsumPrecisesrc/lib/esnext.d.ts— added/// <reference lib="esnext.math" />src/lib/libs.json— registeredesnext.mathin the libs arraysrc/compiler/commandLineParser.ts— mappedesnext.mathlib name to filesrc/compiler/utilities.ts— addedsumPrecisetoScriptTargetFeaturesfor helpful diagnosticsWhy esnext, not es2025?
The proposal reached Stage 4 on 2025-07-28, one month after ES2025 was finalized (June 2025), so it will be included in ES2026. TypeScript does not have
es2026lib files yet, soesnextis the correct placement for now.Runtime support
References
AI Disclosure
This PR was developed with AI assistance (Claude by Anthropic) for research, code generation, and verification against the TC39 spec, MDN, and runtime implementations.
Fixes #63427