Skip to content

Commit 71a622f

Browse files
authored
Add --checkers to control number of checkers per Program (#1985)
1 parent 4705d38 commit 71a622f

File tree

8 files changed

+35
-1
lines changed

8 files changed

+35
-1
lines changed

internal/compiler/program.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,13 @@ func (p *Program) initCheckerPool() {
247247
if p.opts.CreateCheckerPool != nil {
248248
p.checkerPool = p.opts.CreateCheckerPool(p)
249249
} else {
250-
p.checkerPool = newCheckerPool(core.IfElse(p.SingleThreaded(), 1, 4), p)
250+
checkers := 4
251+
if p.SingleThreaded() {
252+
checkers = 1
253+
} else if p.Options().Checkers != nil {
254+
checkers = min(max(*p.Options().Checkers, 1), 256)
255+
}
256+
p.checkerPool = newCheckerPool(checkers, p)
251257
}
252258
}
253259

internal/core/compileroptions.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ type CompilerOptions struct {
148148
PprofDir string `json:"pprofDir,omitzero"`
149149
SingleThreaded Tristate `json:"singleThreaded,omitzero"`
150150
Quiet Tristate `json:"quiet,omitzero"`
151+
Checkers *int `json:"checkers,omitzero"`
151152

152153
sourceFileAffectingCompilerOptionsOnce sync.Once
153154
sourceFileAffectingCompilerOptions SourceFileAffectingCompilerOptions

internal/diagnostics/diagnostics_generated.go

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/diagnostics/extraDiagnosticMessages.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@
1111
"category": "Message",
1212
"code": 100002
1313
},
14+
"Set the number of checkers per project.": {
15+
"category": "Message",
16+
"code": 100003
17+
},
18+
"4, unless --singleThreaded is passed.": {
19+
"category": "Message",
20+
"code": 100004
21+
},
1422
"Non-relative paths are not allowed. Did you forget a leading './'?": {
1523
"category": "Error",
1624
"code": 5090

internal/tsoptions/declscompiler.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,13 @@ var commonOptionsWithBuild = []*CommandLineOption{
233233
Category: diagnostics.Command_line_Options,
234234
Description: diagnostics.Generate_pprof_CPU_Slashmemory_profiles_to_the_given_directory,
235235
},
236+
{
237+
Name: "checkers",
238+
Kind: CommandLineOptionTypeNumber,
239+
Category: diagnostics.Command_line_Options,
240+
Description: diagnostics.Set_the_number_of_checkers_per_project,
241+
DefaultValueDescription: diagnostics.X_4_unless_singleThreaded_is_passed,
242+
},
236243
}
237244

238245
var optionsForCompiler = []*CommandLineOption{

internal/tsoptions/parsinghelpers.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,8 @@ func parseCompilerOptions(key string, value any, allOptions *core.CompilerOption
443443
allOptions.SingleThreaded = ParseTristate(value)
444444
case "quiet":
445445
allOptions.Quiet = ParseTristate(value)
446+
case "checkers":
447+
allOptions.Checkers = parseNumber(value)
446448
default:
447449
// different than any key above
448450
return false

testdata/baselines/reference/tsbuild/commandLine/help.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@ Run in single threaded mode.
126126
--pprofDir
127127
Generate pprof CPU/memory profiles to the given directory.
128128

129+
--checkers
130+
Set the number of checkers per project.
131+
129132
--verbose, -v
130133
Enable verbose logging.
131134

testdata/baselines/reference/tsc/commandLine/help-all.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ Show all compiler options.
1717
--build, -b
1818
Build one or more projects and their dependencies, if out of date
1919

20+
--checkers
21+
Set the number of checkers per project.
22+
2023
--help, -h
2124
Print this message.
2225

0 commit comments

Comments
 (0)