提交 05fee0cf 编写于 作者: M Matt Bierner

Extract implictProjectConfiguration class

上级 64705a07
...@@ -189,11 +189,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType ...@@ -189,11 +189,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType
this.tracer.updateConfiguration(); this.tracer.updateConfiguration();
if (this.serverState.type === ServerState.Type.Running) { if (this.serverState.type === ServerState.Type.Running) {
if (this._configuration.checkJs !== oldConfiguration.checkJs if (!this._configuration.implictProjectConfiguration.isEqualTo(oldConfiguration.implictProjectConfiguration)) {
|| this._configuration.experimentalDecorators !== oldConfiguration.experimentalDecorators
|| this._configuration.implicitStrictNullChecks !== oldConfiguration.implicitStrictNullChecks
|| this._configuration.implicitStrictFunctionTypes !== oldConfiguration.implicitStrictFunctionTypes
) {
this.setCompilerOptionsForInferredProjects(this._configuration); this.setCompilerOptionsForInferredProjects(this._configuration);
} }
......
...@@ -51,6 +51,44 @@ export const enum SeparateSyntaxServerConfiguration { ...@@ -51,6 +51,44 @@ export const enum SeparateSyntaxServerConfiguration {
Enabled, Enabled,
} }
export class ImplicitProjectConfiguration {
public readonly checkJs: boolean;
public readonly experimentalDecorators: boolean;
public readonly strictNullChecks: boolean;
public readonly strictFunctionTypes: boolean;
constructor(configuration: vscode.WorkspaceConfiguration) {
this.checkJs = ImplicitProjectConfiguration.readCheckJs(configuration);
this.experimentalDecorators = ImplicitProjectConfiguration.readExperimentalDecorators(configuration);
this.strictNullChecks = ImplicitProjectConfiguration.readImplicitStrictNullChecks(configuration);
this.strictFunctionTypes = ImplicitProjectConfiguration.readImplicitStrictFunctionTypes(configuration);
}
public isEqualTo(other: ImplicitProjectConfiguration): boolean {
return this.checkJs === other.checkJs
&& this.experimentalDecorators === other.experimentalDecorators
&& this.strictNullChecks === other.strictNullChecks
&& this.strictFunctionTypes === other.strictFunctionTypes;
}
private static readCheckJs(configuration: vscode.WorkspaceConfiguration): boolean {
return configuration.get<boolean>('javascript.implicitProjectConfig.checkJs', false);
}
private static readExperimentalDecorators(configuration: vscode.WorkspaceConfiguration): boolean {
return configuration.get<boolean>('javascript.implicitProjectConfig.experimentalDecorators', false);
}
private static readImplicitStrictNullChecks(configuration: vscode.WorkspaceConfiguration): boolean {
return configuration.get<boolean>('js/ts.implicitProjectConfig.strictNullChecks', true);
}
private static readImplicitStrictFunctionTypes(configuration: vscode.WorkspaceConfiguration): boolean {
return configuration.get<boolean>('js/ts.implicitProjectConfig.strictFunctionTypes', true);
}
}
export class TypeScriptServiceConfiguration { export class TypeScriptServiceConfiguration {
public readonly locale: string | null; public readonly locale: string | null;
public readonly globalTsdk: string | null; public readonly globalTsdk: string | null;
...@@ -58,12 +96,7 @@ export class TypeScriptServiceConfiguration { ...@@ -58,12 +96,7 @@ export class TypeScriptServiceConfiguration {
public readonly npmLocation: string | null; public readonly npmLocation: string | null;
public readonly tsServerLogLevel: TsServerLogLevel = TsServerLogLevel.Off; public readonly tsServerLogLevel: TsServerLogLevel = TsServerLogLevel.Off;
public readonly tsServerPluginPaths: readonly string[]; public readonly tsServerPluginPaths: readonly string[];
public readonly implictProjectConfiguration: ImplicitProjectConfiguration;
public readonly checkJs: boolean;
public readonly experimentalDecorators: boolean;
public readonly implicitStrictNullChecks: boolean;
public readonly implicitStrictFunctionTypes: boolean;
public readonly disableAutomaticTypeAcquisition: boolean; public readonly disableAutomaticTypeAcquisition: boolean;
public readonly separateSyntaxServer: SeparateSyntaxServerConfiguration; public readonly separateSyntaxServer: SeparateSyntaxServerConfiguration;
public readonly enableProjectDiagnostics: boolean; public readonly enableProjectDiagnostics: boolean;
...@@ -85,10 +118,7 @@ export class TypeScriptServiceConfiguration { ...@@ -85,10 +118,7 @@ export class TypeScriptServiceConfiguration {
this.npmLocation = TypeScriptServiceConfiguration.readNpmLocation(configuration); this.npmLocation = TypeScriptServiceConfiguration.readNpmLocation(configuration);
this.tsServerLogLevel = TypeScriptServiceConfiguration.readTsServerLogLevel(configuration); this.tsServerLogLevel = TypeScriptServiceConfiguration.readTsServerLogLevel(configuration);
this.tsServerPluginPaths = TypeScriptServiceConfiguration.readTsServerPluginPaths(configuration); this.tsServerPluginPaths = TypeScriptServiceConfiguration.readTsServerPluginPaths(configuration);
this.checkJs = TypeScriptServiceConfiguration.readCheckJs(configuration); this.implictProjectConfiguration = new ImplicitProjectConfiguration(configuration);
this.experimentalDecorators = TypeScriptServiceConfiguration.readExperimentalDecorators(configuration);
this.implicitStrictNullChecks = TypeScriptServiceConfiguration.readImplicitStrictNullChecks(configuration);
this.implicitStrictFunctionTypes = TypeScriptServiceConfiguration.readImplicitStrictFunctionTypes(configuration);
this.disableAutomaticTypeAcquisition = TypeScriptServiceConfiguration.readDisableAutomaticTypeAcquisition(configuration); this.disableAutomaticTypeAcquisition = TypeScriptServiceConfiguration.readDisableAutomaticTypeAcquisition(configuration);
this.separateSyntaxServer = TypeScriptServiceConfiguration.readUseSeparateSyntaxServer(configuration); this.separateSyntaxServer = TypeScriptServiceConfiguration.readUseSeparateSyntaxServer(configuration);
this.enableProjectDiagnostics = TypeScriptServiceConfiguration.readEnableProjectDiagnostics(configuration); this.enableProjectDiagnostics = TypeScriptServiceConfiguration.readEnableProjectDiagnostics(configuration);
...@@ -104,10 +134,7 @@ export class TypeScriptServiceConfiguration { ...@@ -104,10 +134,7 @@ export class TypeScriptServiceConfiguration {
&& this.localTsdk === other.localTsdk && this.localTsdk === other.localTsdk
&& this.npmLocation === other.npmLocation && this.npmLocation === other.npmLocation
&& this.tsServerLogLevel === other.tsServerLogLevel && this.tsServerLogLevel === other.tsServerLogLevel
&& this.checkJs === other.checkJs && this.implictProjectConfiguration.isEqualTo(other.implictProjectConfiguration)
&& this.experimentalDecorators === other.experimentalDecorators
&& this.implicitStrictNullChecks === other.implicitStrictNullChecks
&& this.implicitStrictFunctionTypes === other.implicitStrictFunctionTypes
&& this.disableAutomaticTypeAcquisition === other.disableAutomaticTypeAcquisition && this.disableAutomaticTypeAcquisition === other.disableAutomaticTypeAcquisition
&& arrays.equals(this.tsServerPluginPaths, other.tsServerPluginPaths) && arrays.equals(this.tsServerPluginPaths, other.tsServerPluginPaths)
&& this.separateSyntaxServer === other.separateSyntaxServer && this.separateSyntaxServer === other.separateSyntaxServer
...@@ -153,22 +180,6 @@ export class TypeScriptServiceConfiguration { ...@@ -153,22 +180,6 @@ export class TypeScriptServiceConfiguration {
return configuration.get<string[]>('typescript.tsserver.pluginPaths', []); return configuration.get<string[]>('typescript.tsserver.pluginPaths', []);
} }
private static readCheckJs(configuration: vscode.WorkspaceConfiguration): boolean {
return configuration.get<boolean>('javascript.implicitProjectConfig.checkJs', false);
}
private static readExperimentalDecorators(configuration: vscode.WorkspaceConfiguration): boolean {
return configuration.get<boolean>('javascript.implicitProjectConfig.experimentalDecorators', false);
}
private static readImplicitStrictNullChecks(configuration: vscode.WorkspaceConfiguration): boolean {
return configuration.get<boolean>('js/ts.implicitProjectConfig.strictNullChecks', true);
}
private static readImplicitStrictFunctionTypes(configuration: vscode.WorkspaceConfiguration): boolean {
return configuration.get<boolean>('js/ts.implicitProjectConfig.strictFunctionTypes', true);
}
private static readNpmLocation(configuration: vscode.WorkspaceConfiguration): string | null { private static readNpmLocation(configuration: vscode.WorkspaceConfiguration): string | null {
return configuration.get<string | null>('typescript.npm', null); return configuration.get<string | null>('typescript.npm', null);
} }
......
...@@ -32,22 +32,22 @@ export function inferredProjectCompilerOptions( ...@@ -32,22 +32,22 @@ export function inferredProjectCompilerOptions(
jsx: 'preserve' as Proto.JsxEmit, jsx: 'preserve' as Proto.JsxEmit,
}; };
if (serviceConfig.checkJs) { if (serviceConfig.implictProjectConfiguration.checkJs) {
projectConfig.checkJs = true; projectConfig.checkJs = true;
if (projectType === ProjectType.TypeScript) { if (projectType === ProjectType.TypeScript) {
projectConfig.allowJs = true; projectConfig.allowJs = true;
} }
} }
if (serviceConfig.experimentalDecorators) { if (serviceConfig.implictProjectConfiguration.experimentalDecorators) {
projectConfig.experimentalDecorators = true; projectConfig.experimentalDecorators = true;
} }
if (serviceConfig.implicitStrictNullChecks) { if (serviceConfig.implictProjectConfiguration.strictNullChecks) {
projectConfig.strictNullChecks = true; projectConfig.strictNullChecks = true;
} }
if (serviceConfig.implicitStrictFunctionTypes) { if (serviceConfig.implictProjectConfiguration.strictFunctionTypes) {
projectConfig.strictFunctionTypes = true; projectConfig.strictFunctionTypes = true;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册