mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 22:02:55 +01:00
Ensure types stay in sync (check that the API is implemented)
This commit is contained in:
parent
6a5f2c1d98
commit
3b7054deed
4 changed files with 25 additions and 28 deletions
|
|
@ -208,11 +208,11 @@ const javascriptDefaults = new LanguageServiceDefaultsImpl(
|
||||||
{ allowNonTsExtensions: true, allowJs: true, target: ScriptTarget.Latest },
|
{ allowNonTsExtensions: true, allowJs: true, target: ScriptTarget.Latest },
|
||||||
{ noSemanticValidation: true, noSyntaxValidation: false });
|
{ noSemanticValidation: true, noSyntaxValidation: false });
|
||||||
|
|
||||||
function getTypeScriptWorker(): Promise<any> {
|
function getTypeScriptWorker(): Promise<(...uris: monaco.Uri[]) => Promise<monaco.languages.typescript.TypeScriptWorker>> {
|
||||||
return getMode().then(mode => mode.getTypeScriptWorker());
|
return getMode().then(mode => mode.getTypeScriptWorker());
|
||||||
}
|
}
|
||||||
|
|
||||||
function getJavaScriptWorker(): Promise<any> {
|
function getJavaScriptWorker(): Promise<(...uris: monaco.Uri[]) => Promise<monaco.languages.typescript.TypeScriptWorker>> {
|
||||||
return getMode().then(mode => mode.getJavaScriptWorker());
|
return getMode().then(mode => mode.getJavaScriptWorker());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
10
src/monaco.d.ts
vendored
10
src/monaco.d.ts
vendored
|
|
@ -377,11 +377,11 @@ declare module monaco.languages.typescript {
|
||||||
getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: number[], formatOptions: any): Promise<ReadonlyArray<any>>;
|
getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: number[], formatOptions: any): Promise<ReadonlyArray<any>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export var typescriptVersion: string;
|
export const typescriptVersion: string;
|
||||||
|
|
||||||
export var typescriptDefaults: LanguageServiceDefaults;
|
export const typescriptDefaults: LanguageServiceDefaults;
|
||||||
export var javascriptDefaults: LanguageServiceDefaults;
|
export const javascriptDefaults: LanguageServiceDefaults;
|
||||||
|
|
||||||
export var getTypeScriptWorker: () => Promise<(first: Uri, ...more: Uri[]) => Promise<TypeScriptWorker>>;
|
export const getTypeScriptWorker: () => Promise<(...uris: Uri[]) => Promise<TypeScriptWorker>>;
|
||||||
export var getJavaScriptWorker: () => Promise<(first: Uri, ...more: Uri[]) => Promise<TypeScriptWorker>>;
|
export const getJavaScriptWorker: () => Promise<(...uris: Uri[]) => Promise<TypeScriptWorker>>;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ import * as languageFeatures from './languageFeatures';
|
||||||
|
|
||||||
import Uri = monaco.Uri;
|
import Uri = monaco.Uri;
|
||||||
|
|
||||||
let javaScriptWorker: (first: Uri, ...more: Uri[]) => Promise<TypeScriptWorker>;
|
let javaScriptWorker: (...uris: Uri[]) => Promise<TypeScriptWorker>;
|
||||||
let typeScriptWorker: (first: Uri, ...more: Uri[]) => Promise<TypeScriptWorker>;
|
let typeScriptWorker: (...uris: Uri[]) => Promise<TypeScriptWorker>;
|
||||||
|
|
||||||
export function setupTypeScript(defaults: LanguageServiceDefaultsImpl): void {
|
export function setupTypeScript(defaults: LanguageServiceDefaultsImpl): void {
|
||||||
typeScriptWorker = setupMode(
|
typeScriptWorker = setupMode(
|
||||||
|
|
@ -28,7 +28,7 @@ export function setupJavaScript(defaults: LanguageServiceDefaultsImpl): void {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getJavaScriptWorker(): Promise<(first: Uri, ...more: Uri[]) => Promise<TypeScriptWorker>> {
|
export function getJavaScriptWorker(): Promise<(...uris: Uri[]) => Promise<TypeScriptWorker>> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (!javaScriptWorker) {
|
if (!javaScriptWorker) {
|
||||||
return reject("JavaScript not registered!");
|
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<TypeScriptWorker>> {
|
export function getTypeScriptWorker(): Promise<(...uris: Uri[]) => Promise<TypeScriptWorker>> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (!typeScriptWorker) {
|
if (!typeScriptWorker) {
|
||||||
return reject("TypeScript not registered!");
|
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<TypeScriptWorker> {
|
function setupMode(defaults: LanguageServiceDefaultsImpl, modeId: string): (...uris: Uri[]) => Promise<TypeScriptWorker> {
|
||||||
|
|
||||||
const client = new WorkerManager(modeId, defaults);
|
const client = new WorkerManager(modeId, defaults);
|
||||||
const worker = (first: Uri, ...more: Uri[]): Promise<TypeScriptWorker> => {
|
const worker = (...uris: Uri[]): Promise<TypeScriptWorker> => {
|
||||||
return client.getLanguageServiceWorker(...[first].concat(more));
|
return client.getLanguageServiceWorker(...uris);
|
||||||
};
|
};
|
||||||
|
|
||||||
monaco.languages.registerCompletionItemProvider(modeId, new languageFeatures.SuggestAdapter(worker));
|
monaco.languages.registerCompletionItemProvider(modeId, new languageFeatures.SuggestAdapter(worker));
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ const ES6_LIB = {
|
||||||
CONTENTS: lib_es6_dts
|
CONTENTS: lib_es6_dts
|
||||||
};
|
};
|
||||||
|
|
||||||
export class TypeScriptWorker implements ts.LanguageServiceHost {
|
export class TypeScriptWorker implements ts.LanguageServiceHost, monaco.languages.typescript.TypeScriptWorker {
|
||||||
|
|
||||||
// --- model sync -----------------------
|
// --- model sync -----------------------
|
||||||
|
|
||||||
|
|
@ -123,7 +123,7 @@ export class TypeScriptWorker implements ts.LanguageServiceHost {
|
||||||
|
|
||||||
// --- language features
|
// --- 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
|
// Clear the `file` field, which cannot be JSON'yfied because it
|
||||||
// contains cyclic data structures.
|
// contains cyclic data structures.
|
||||||
diagnostics.forEach(diag => {
|
diagnostics.forEach(diag => {
|
||||||
|
|
@ -133,30 +133,27 @@ export class TypeScriptWorker implements ts.LanguageServiceHost {
|
||||||
related.forEach(diag2 => diag2.file = undefined);
|
related.forEach(diag2 => diag2.file = undefined);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
return <monaco.languages.typescript.Diagnostic[]>diagnostics;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSyntacticDiagnostics(fileName: string): Promise<ts.Diagnostic[]> {
|
getSyntacticDiagnostics(fileName: string): Promise<monaco.languages.typescript.Diagnostic[]> {
|
||||||
const diagnostics = this._languageService.getSyntacticDiagnostics(fileName);
|
const diagnostics = this._languageService.getSyntacticDiagnostics(fileName);
|
||||||
TypeScriptWorker.clearFiles(diagnostics);
|
return Promise.resolve(TypeScriptWorker.clearFiles(diagnostics));
|
||||||
return Promise.resolve(diagnostics);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getSemanticDiagnostics(fileName: string): Promise<ts.Diagnostic[]> {
|
getSemanticDiagnostics(fileName: string): Promise<monaco.languages.typescript.Diagnostic[]> {
|
||||||
const diagnostics = this._languageService.getSemanticDiagnostics(fileName);
|
const diagnostics = this._languageService.getSemanticDiagnostics(fileName);
|
||||||
TypeScriptWorker.clearFiles(diagnostics);
|
return Promise.resolve(TypeScriptWorker.clearFiles(diagnostics));
|
||||||
return Promise.resolve(diagnostics);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuggestionDiagnostics(fileName: string): Promise<ts.DiagnosticWithLocation[]> {
|
getSuggestionDiagnostics(fileName: string): Promise<monaco.languages.typescript.Diagnostic[]> {
|
||||||
const diagnostics = this._languageService.getSuggestionDiagnostics(fileName);
|
const diagnostics = this._languageService.getSuggestionDiagnostics(fileName);
|
||||||
TypeScriptWorker.clearFiles(diagnostics);
|
return Promise.resolve(TypeScriptWorker.clearFiles(diagnostics));
|
||||||
return Promise.resolve(diagnostics);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getCompilerOptionsDiagnostics(fileName: string): Promise<ts.Diagnostic[]> {
|
getCompilerOptionsDiagnostics(fileName: string): Promise<monaco.languages.typescript.Diagnostic[]> {
|
||||||
const diagnostics = this._languageService.getCompilerOptionsDiagnostics();
|
const diagnostics = this._languageService.getCompilerOptionsDiagnostics();
|
||||||
TypeScriptWorker.clearFiles(diagnostics);
|
return Promise.resolve(TypeScriptWorker.clearFiles(diagnostics));
|
||||||
return Promise.resolve(diagnostics);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getCompletionsAtPosition(fileName: string, position: number): Promise<ts.CompletionInfo | undefined> {
|
getCompletionsAtPosition(fileName: string, position: number): Promise<ts.CompletionInfo | undefined> {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue