From e0ebb7b7402dce90334b6e15938815cf95812172 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 6 Apr 2023 06:59:44 -0700 Subject: [PATCH] Make script blocks respect js/ts.implicitProjectConfig.strictNullChecks (#179333) Fixes #179331 Also fixes experimental decorators for script blocks --- .../html-language-features/client/src/htmlClient.ts | 2 +- .../html-language-features/server/src/htmlServer.ts | 5 +++-- .../server/src/modes/javascriptMode.ts | 10 +++++++++- .../server/src/modes/languageModes.ts | 7 ++++--- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/extensions/html-language-features/client/src/htmlClient.ts b/extensions/html-language-features/client/src/htmlClient.ts index 12c9f26c0e0..7b69c795f90 100644 --- a/extensions/html-language-features/client/src/htmlClient.ts +++ b/extensions/html-language-features/client/src/htmlClient.ts @@ -155,7 +155,7 @@ async function startClientWithParticipants(languageParticipants: LanguagePartici const clientOptions: LanguageClientOptions = { documentSelector, synchronize: { - configurationSection: ['html', 'css', 'javascript'], // the settings to synchronize + configurationSection: ['html', 'css', 'javascript', 'js/ts'], // the settings to synchronize }, initializationOptions: { embeddedLanguages, diff --git a/extensions/html-language-features/server/src/htmlServer.ts b/extensions/html-language-features/server/src/htmlServer.ts index 99e3cb75bcd..29aa041746c 100644 --- a/extensions/html-language-features/server/src/htmlServer.ts +++ b/extensions/html-language-features/server/src/htmlServer.ts @@ -120,8 +120,9 @@ export function startServer(connection: Connection, runtime: RuntimeEnvironment) let promise = documentSettings[textDocument.uri]; if (!promise) { const scopeUri = textDocument.uri; - const configRequestParam: ConfigurationParams = { items: [{ scopeUri, section: 'css' }, { scopeUri, section: 'html' }, { scopeUri, section: 'javascript' }] }; - promise = connection.sendRequest(ConfigurationRequest.type, configRequestParam).then(s => ({ css: s[0], html: s[1], javascript: s[2] })); + const sections = ['css', 'html', 'javascript', 'js/ts']; + const configRequestParam: ConfigurationParams = { items: sections.map(section => ({ scopeUri, section })) }; + promise = connection.sendRequest(ConfigurationRequest.type, configRequestParam).then(s => ({ css: s[0], html: s[1], javascript: s[2], 'js/ts': s[3] })); documentSettings[textDocument.uri] = promise; } return promise; diff --git a/extensions/html-language-features/server/src/modes/javascriptMode.ts b/extensions/html-language-features/server/src/modes/javascriptMode.ts index 0c199571dd7..a540745428c 100644 --- a/extensions/html-language-features/server/src/modes/javascriptMode.ts +++ b/extensions/html-language-features/server/src/modes/javascriptMode.ts @@ -103,12 +103,20 @@ export function getJavaScriptMode(documentRegions: LanguageModelCache { - host.getCompilationSettings()['experimentalDecorators'] = settings && settings.javascript && settings.javascript.implicitProjectConfig.experimentalDecorators; + updateHostSettings(settings); + const jsDocument = jsDocuments.get(document); const languageService = await host.getLanguageService(jsDocument); const syntaxDiagnostics: ts.Diagnostic[] = languageService.getSyntacticDiagnostics(jsDocument.uri); diff --git a/extensions/html-language-features/server/src/modes/languageModes.ts b/extensions/html-language-features/server/src/modes/languageModes.ts index 620b0914b1b..4ab4a4a876e 100644 --- a/extensions/html-language-features/server/src/modes/languageModes.ts +++ b/extensions/html-language-features/server/src/modes/languageModes.ts @@ -37,9 +37,10 @@ export { ClientCapabilities, DocumentContext, LanguageService, HTMLDocument, HTM export { TextDocument } from 'vscode-languageserver-textdocument'; export interface Settings { - css?: any; - html?: any; - javascript?: any; + readonly css?: any; + readonly html?: any; + readonly javascript?: any; + readonly 'js/ts'?: any; } export interface Workspace {