@@ -306,10 +306,8 @@ namespace ts {
306
306
description : Diagnostics . Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_ES2019_ES2020_ES2021_or_ESNEXT ,
307
307
} ;
308
308
309
- /* @internal */
310
- export const optionDeclarations : CommandLineOption [ ] = [
309
+ const commandOptionsWithoutBuild : CommandLineOption [ ] = [
311
310
// CommandLine only options
312
- ...commonOptionsWithBuild ,
313
311
{
314
312
name : "all" ,
315
313
type : "boolean" ,
@@ -1106,6 +1104,12 @@ namespace ts {
1106
1104
} ,
1107
1105
] ;
1108
1106
1107
+ /* @internal */
1108
+ export const optionDeclarations : CommandLineOption [ ] = [
1109
+ ...commonOptionsWithBuild ,
1110
+ ...commandOptionsWithoutBuild ,
1111
+ ] ;
1112
+
1109
1113
/* @internal */
1110
1114
export const semanticDiagnosticsOptionDeclarations : readonly CommandLineOption [ ] =
1111
1115
optionDeclarations . filter ( option => ! ! option . affectsSemanticDiagnostics ) ;
@@ -1126,9 +1130,7 @@ namespace ts {
1126
1130
export const transpileOptionValueCompilerOptions : readonly CommandLineOption [ ] = optionDeclarations . filter ( option =>
1127
1131
hasProperty ( option , "transpileOptionValue" ) ) ;
1128
1132
1129
- /* @internal */
1130
- export const buildOpts : CommandLineOption [ ] = [
1131
- ...commonOptionsWithBuild ,
1133
+ const commandOptionsOnlyBuild : CommandLineOption [ ] = [
1132
1134
{
1133
1135
name : "verbose" ,
1134
1136
shortName : "v" ,
@@ -1158,6 +1160,12 @@ namespace ts {
1158
1160
}
1159
1161
] ;
1160
1162
1163
+ /* @internal */
1164
+ export const buildOpts : CommandLineOption [ ] = [
1165
+ ...commonOptionsWithBuild ,
1166
+ ...commandOptionsOnlyBuild ,
1167
+ ] ;
1168
+
1161
1169
/* @internal */
1162
1170
export const typeAcquisitionDeclarations : CommandLineOption [ ] = [
1163
1171
{
@@ -1217,9 +1225,14 @@ namespace ts {
1217
1225
1218
1226
/* @internal */
1219
1227
export function getOptionsNameMap ( ) : OptionsNameMap {
1220
- return optionsNameMapCache || ( optionsNameMapCache = createOptionNameMap ( optionDeclarations ) ) ;
1228
+ return optionsNameMapCache ||= createOptionNameMap ( optionDeclarations ) ;
1221
1229
}
1222
1230
1231
+ const compilerOptionsAlternateMode : AlternateModeDiagnostics = {
1232
+ diagnostic : Diagnostics . Compiler_option_0_may_only_be_used_with_build ,
1233
+ getOptionsNameMap : getBuildOptionsNameMap
1234
+ } ;
1235
+
1223
1236
/* @internal */
1224
1237
export const defaultInitCompilerOptions : CompilerOptions = {
1225
1238
module : ModuleKind . CommonJS ,
@@ -1299,6 +1312,10 @@ namespace ts {
1299
1312
createDiagnostics : ( message : DiagnosticMessage , arg0 : string , arg1 ?: string ) => Diagnostic ,
1300
1313
unknownOptionErrorText ?: string
1301
1314
) {
1315
+ if ( diagnostics . alternateMode ?. getOptionsNameMap ( ) . optionsNameMap . has ( unknownOption . toLowerCase ( ) ) ) {
1316
+ return createDiagnostics ( diagnostics . alternateMode . diagnostic , unknownOption ) ;
1317
+ }
1318
+
1302
1319
const possibleOption = getSpellingSuggestion ( unknownOption , diagnostics . optionDeclarations , getOptionName ) ;
1303
1320
return possibleOption ?
1304
1321
createDiagnostics ( diagnostics . unknownDidYouMeanDiagnostic , unknownOptionErrorText || unknownOption , possibleOption . name ) :
@@ -1464,6 +1481,7 @@ namespace ts {
1464
1481
1465
1482
/*@internal */
1466
1483
export const compilerOptionsDidYouMeanDiagnostics : ParseCommandLineWorkerDiagnostics = {
1484
+ alternateMode : compilerOptionsAlternateMode ,
1467
1485
getOptionsNameMap,
1468
1486
optionDeclarations,
1469
1487
unknownOptionDiagnostic : Diagnostics . Unknown_compiler_option_0 ,
@@ -1505,7 +1523,13 @@ namespace ts {
1505
1523
return buildOptionsNameMapCache || ( buildOptionsNameMapCache = createOptionNameMap ( buildOpts ) ) ;
1506
1524
}
1507
1525
1526
+ const buildOptionsAlternateMode : AlternateModeDiagnostics = {
1527
+ diagnostic : Diagnostics . Compiler_option_0_may_not_be_used_with_build ,
1528
+ getOptionsNameMap
1529
+ } ;
1530
+
1508
1531
const buildOptionsDidYouMeanDiagnostics : ParseCommandLineWorkerDiagnostics = {
1532
+ alternateMode : buildOptionsAlternateMode ,
1509
1533
getOptionsNameMap : getBuildOptionsNameMap ,
1510
1534
optionDeclarations : buildOpts ,
1511
1535
unknownOptionDiagnostic : Diagnostics . Unknown_build_option_0 ,
0 commit comments