diff --git a/src/monaco.contribution.ts b/src/monaco.contribution.ts index 0e9fcfb7..c038d4b5 100644 --- a/src/monaco.contribution.ts +++ b/src/monaco.contribution.ts @@ -208,11 +208,11 @@ const javascriptDefaults = new LanguageServiceDefaultsImpl( { allowNonTsExtensions: true, allowJs: true, target: ScriptTarget.Latest }, { noSemanticValidation: true, noSyntaxValidation: false }); -function getTypeScriptWorker(): Promise { +function getTypeScriptWorker(): Promise<(...uris: monaco.Uri[]) => Promise> { return getMode().then(mode => mode.getTypeScriptWorker()); } -function getJavaScriptWorker(): Promise { +function getJavaScriptWorker(): Promise<(...uris: monaco.Uri[]) => Promise> { return getMode().then(mode => mode.getJavaScriptWorker()); } diff --git a/src/monaco.d.ts b/src/monaco.d.ts index 853bbaf4..d17315d7 100644 --- a/src/monaco.d.ts +++ b/src/monaco.d.ts @@ -377,11 +377,11 @@ declare module monaco.languages.typescript { getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: number[], formatOptions: any): Promise>; } - export var typescriptVersion: string; + export const typescriptVersion: string; - export var typescriptDefaults: LanguageServiceDefaults; - export var javascriptDefaults: LanguageServiceDefaults; + export const typescriptDefaults: LanguageServiceDefaults; + export const javascriptDefaults: LanguageServiceDefaults; - export var getTypeScriptWorker: () => Promise<(first: Uri, ...more: Uri[]) => Promise>; - export var getJavaScriptWorker: () => Promise<(first: Uri, ...more: Uri[]) => Promise>; + export const getTypeScriptWorker: () => Promise<(...uris: Uri[]) => Promise>; + export const getJavaScriptWorker: () => Promise<(...uris: Uri[]) => Promise>; } diff --git a/src/tsMode.ts b/src/tsMode.ts index 8842fd63..efc95412 100644 --- a/src/tsMode.ts +++ b/src/tsMode.ts @@ -11,8 +11,8 @@ import * as languageFeatures from './languageFeatures'; import Uri = monaco.Uri; -let javaScriptWorker: (first: Uri, ...more: Uri[]) => Promise; -let typeScriptWorker: (first: Uri, ...more: Uri[]) => Promise; +let javaScriptWorker: (...uris: Uri[]) => Promise; +let typeScriptWorker: (...uris: Uri[]) => Promise; export function setupTypeScript(defaults: LanguageServiceDefaultsImpl): void { typeScriptWorker = setupMode( @@ -28,7 +28,7 @@ export function setupJavaScript(defaults: LanguageServiceDefaultsImpl): void { ); } -export function getJavaScriptWorker(): Promise<(first: Uri, ...more: Uri[]) => Promise> { +export function getJavaScriptWorker(): Promise<(...uris: Uri[]) => Promise> { return new Promise((resolve, reject) => { if (!javaScriptWorker) { return reject("JavaScript not registered!"); @@ -38,7 +38,7 @@ export function getJavaScriptWorker(): Promise<(first: Uri, ...more: Uri[]) => P }); } -export function getTypeScriptWorker(): Promise<(first: Uri, ...more: Uri[]) => Promise> { +export function getTypeScriptWorker(): Promise<(...uris: Uri[]) => Promise> { return new Promise((resolve, reject) => { if (!typeScriptWorker) { return reject("TypeScript not registered!"); @@ -48,11 +48,11 @@ export function getTypeScriptWorker(): Promise<(first: Uri, ...more: Uri[]) => P }); } -function setupMode(defaults: LanguageServiceDefaultsImpl, modeId: string): (first: Uri, ...more: Uri[]) => Promise { +function setupMode(defaults: LanguageServiceDefaultsImpl, modeId: string): (...uris: Uri[]) => Promise { const client = new WorkerManager(modeId, defaults); - const worker = (first: Uri, ...more: Uri[]): Promise => { - return client.getLanguageServiceWorker(...[first].concat(more)); + const worker = (...uris: Uri[]): Promise => { + return client.getLanguageServiceWorker(...uris); }; monaco.languages.registerCompletionItemProvider(modeId, new languageFeatures.SuggestAdapter(worker)); diff --git a/src/tsWorker.ts b/src/tsWorker.ts index b3cee653..32b9a6bb 100644 --- a/src/tsWorker.ts +++ b/src/tsWorker.ts @@ -20,7 +20,7 @@ const ES6_LIB = { CONTENTS: lib_es6_dts }; -export class TypeScriptWorker implements ts.LanguageServiceHost { +export class TypeScriptWorker implements ts.LanguageServiceHost, monaco.languages.typescript.TypeScriptWorker { // --- model sync ----------------------- @@ -123,7 +123,7 @@ export class TypeScriptWorker implements ts.LanguageServiceHost { // --- language features - private static clearFiles(diagnostics: ts.Diagnostic[]) { + private static clearFiles(diagnostics: ts.Diagnostic[]): monaco.languages.typescript.Diagnostic[] { // Clear the `file` field, which cannot be JSON'yfied because it // contains cyclic data structures. diagnostics.forEach(diag => { @@ -133,30 +133,27 @@ export class TypeScriptWorker implements ts.LanguageServiceHost { related.forEach(diag2 => diag2.file = undefined); } }); + return diagnostics; } - getSyntacticDiagnostics(fileName: string): Promise { + getSyntacticDiagnostics(fileName: string): Promise { const diagnostics = this._languageService.getSyntacticDiagnostics(fileName); - TypeScriptWorker.clearFiles(diagnostics); - return Promise.resolve(diagnostics); + return Promise.resolve(TypeScriptWorker.clearFiles(diagnostics)); } - getSemanticDiagnostics(fileName: string): Promise { + getSemanticDiagnostics(fileName: string): Promise { const diagnostics = this._languageService.getSemanticDiagnostics(fileName); - TypeScriptWorker.clearFiles(diagnostics); - return Promise.resolve(diagnostics); + return Promise.resolve(TypeScriptWorker.clearFiles(diagnostics)); } - getSuggestionDiagnostics(fileName: string): Promise { + getSuggestionDiagnostics(fileName: string): Promise { const diagnostics = this._languageService.getSuggestionDiagnostics(fileName); - TypeScriptWorker.clearFiles(diagnostics); - return Promise.resolve(diagnostics); + return Promise.resolve(TypeScriptWorker.clearFiles(diagnostics)); } - getCompilerOptionsDiagnostics(fileName: string): Promise { + getCompilerOptionsDiagnostics(fileName: string): Promise { const diagnostics = this._languageService.getCompilerOptionsDiagnostics(); - TypeScriptWorker.clearFiles(diagnostics); - return Promise.resolve(diagnostics); + return Promise.resolve(TypeScriptWorker.clearFiles(diagnostics)); } getCompletionsAtPosition(fileName: string, position: number): Promise {