mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-13 11:46:08 -05:00
Specified diagnostic for CLI flags mismatched with/out --build (#43199)
* Specified diagnostic for CLI flags missing a required --build * Switched to an alternateMode member * Added --build-incompatible flags too * Small fixups to remove a hardcoding * Switched to ||= factories * Not a function * I think I get it now
This commit is contained in:
@@ -306,10 +306,8 @@ namespace ts {
|
||||
description: Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_ES2019_ES2020_ES2021_or_ESNEXT,
|
||||
};
|
||||
|
||||
/* @internal */
|
||||
export const optionDeclarations: CommandLineOption[] = [
|
||||
const commandOptionsWithoutBuild: CommandLineOption[] = [
|
||||
// CommandLine only options
|
||||
...commonOptionsWithBuild,
|
||||
{
|
||||
name: "all",
|
||||
type: "boolean",
|
||||
@@ -1106,6 +1104,12 @@ namespace ts {
|
||||
},
|
||||
];
|
||||
|
||||
/* @internal */
|
||||
export const optionDeclarations: CommandLineOption[] = [
|
||||
...commonOptionsWithBuild,
|
||||
...commandOptionsWithoutBuild,
|
||||
];
|
||||
|
||||
/* @internal */
|
||||
export const semanticDiagnosticsOptionDeclarations: readonly CommandLineOption[] =
|
||||
optionDeclarations.filter(option => !!option.affectsSemanticDiagnostics);
|
||||
@@ -1126,9 +1130,7 @@ namespace ts {
|
||||
export const transpileOptionValueCompilerOptions: readonly CommandLineOption[] = optionDeclarations.filter(option =>
|
||||
hasProperty(option, "transpileOptionValue"));
|
||||
|
||||
/* @internal */
|
||||
export const buildOpts: CommandLineOption[] = [
|
||||
...commonOptionsWithBuild,
|
||||
const commandOptionsOnlyBuild: CommandLineOption[] = [
|
||||
{
|
||||
name: "verbose",
|
||||
shortName: "v",
|
||||
@@ -1158,6 +1160,12 @@ namespace ts {
|
||||
}
|
||||
];
|
||||
|
||||
/* @internal */
|
||||
export const buildOpts: CommandLineOption[] = [
|
||||
...commonOptionsWithBuild,
|
||||
...commandOptionsOnlyBuild,
|
||||
];
|
||||
|
||||
/* @internal */
|
||||
export const typeAcquisitionDeclarations: CommandLineOption[] = [
|
||||
{
|
||||
@@ -1217,9 +1225,14 @@ namespace ts {
|
||||
|
||||
/* @internal */
|
||||
export function getOptionsNameMap(): OptionsNameMap {
|
||||
return optionsNameMapCache || (optionsNameMapCache = createOptionNameMap(optionDeclarations));
|
||||
return optionsNameMapCache ||= createOptionNameMap(optionDeclarations);
|
||||
}
|
||||
|
||||
const compilerOptionsAlternateMode: AlternateModeDiagnostics = {
|
||||
diagnostic: Diagnostics.Compiler_option_0_may_only_be_used_with_build,
|
||||
getOptionsNameMap: getBuildOptionsNameMap
|
||||
};
|
||||
|
||||
/* @internal */
|
||||
export const defaultInitCompilerOptions: CompilerOptions = {
|
||||
module: ModuleKind.CommonJS,
|
||||
@@ -1299,6 +1312,10 @@ namespace ts {
|
||||
createDiagnostics: (message: DiagnosticMessage, arg0: string, arg1?: string) => Diagnostic,
|
||||
unknownOptionErrorText?: string
|
||||
) {
|
||||
if (diagnostics.alternateMode?.getOptionsNameMap().optionsNameMap.has(unknownOption.toLowerCase())) {
|
||||
return createDiagnostics(diagnostics.alternateMode.diagnostic, unknownOption);
|
||||
}
|
||||
|
||||
const possibleOption = getSpellingSuggestion(unknownOption, diagnostics.optionDeclarations, getOptionName);
|
||||
return possibleOption ?
|
||||
createDiagnostics(diagnostics.unknownDidYouMeanDiagnostic, unknownOptionErrorText || unknownOption, possibleOption.name) :
|
||||
@@ -1464,6 +1481,7 @@ namespace ts {
|
||||
|
||||
/*@internal*/
|
||||
export const compilerOptionsDidYouMeanDiagnostics: ParseCommandLineWorkerDiagnostics = {
|
||||
alternateMode: compilerOptionsAlternateMode,
|
||||
getOptionsNameMap,
|
||||
optionDeclarations,
|
||||
unknownOptionDiagnostic: Diagnostics.Unknown_compiler_option_0,
|
||||
@@ -1505,7 +1523,13 @@ namespace ts {
|
||||
return buildOptionsNameMapCache || (buildOptionsNameMapCache = createOptionNameMap(buildOpts));
|
||||
}
|
||||
|
||||
const buildOptionsAlternateMode: AlternateModeDiagnostics = {
|
||||
diagnostic: Diagnostics.Compiler_option_0_may_not_be_used_with_build,
|
||||
getOptionsNameMap
|
||||
};
|
||||
|
||||
const buildOptionsDidYouMeanDiagnostics: ParseCommandLineWorkerDiagnostics = {
|
||||
alternateMode: buildOptionsAlternateMode,
|
||||
getOptionsNameMap: getBuildOptionsNameMap,
|
||||
optionDeclarations: buildOpts,
|
||||
unknownOptionDiagnostic: Diagnostics.Unknown_build_option_0,
|
||||
|
||||
Reference in New Issue
Block a user