parent
aac08e0438
commit
a08af77b70
@ -26,51 +26,50 @@ export function create(info: any /* ts.server.PluginCreateInfo */): ts.LanguageS
|
|||||||
const proxy: ts.LanguageService = Object.create(null);
|
const proxy: ts.LanguageService = Object.create(null);
|
||||||
let oldLS: ts.LanguageService = info.languageService;
|
let oldLS: ts.LanguageService = info.languageService;
|
||||||
|
|
||||||
function tryCall<T>(fileName: string | undefined, callback: () => T): T {
|
function tryCall<T>(fileName: string | undefined, callback: () => T): T|undefined {
|
||||||
if (fileName && !oldLS.getProgram() !.getSourceFile(fileName)) {
|
if (fileName && !oldLS.getProgram() !.getSourceFile(fileName)) {
|
||||||
return undefined as any as T;
|
return undefined;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
return callback();
|
return callback();
|
||||||
} catch (e) {
|
} catch {
|
||||||
return undefined as any as T;
|
return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function tryFilenameCall<T>(m: (fileName: string) => T): (fileName: string) => T {
|
function tryFilenameCall<T>(m: (fileName: string) => T): (fileName: string) => T | undefined {
|
||||||
return fileName => tryCall(fileName, () => <T>(m.call(ls, fileName)));
|
return fileName => tryCall(fileName, () => <T>(m.call(ls, fileName)));
|
||||||
}
|
}
|
||||||
|
|
||||||
function tryFilenameOneCall<T, P>(m: (fileName: string, p: P) => T): (filename: string, p: P) =>
|
function tryFilenameOneCall<T, P>(m: (fileName: string, p: P) => T): (filename: string, p: P) =>
|
||||||
T {
|
T | undefined {
|
||||||
return (fileName, p) => tryCall(fileName, () => <T>(m.call(ls, fileName, p)));
|
return (fileName, p) => tryCall(fileName, () => <T>(m.call(ls, fileName, p)));
|
||||||
}
|
}
|
||||||
|
|
||||||
function tryFilenameTwoCall<T, P1, P2>(m: (fileName: string, p1: P1, p2: P2) => T): (
|
function tryFilenameTwoCall<T, P1, P2>(m: (fileName: string, p1: P1, p2: P2) => T): (
|
||||||
filename: string, p1: P1, p2: P2) => T {
|
filename: string, p1: P1, p2: P2) => T | undefined {
|
||||||
return (fileName, p1, p2) => tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2)));
|
return (fileName, p1, p2) => tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
function tryFilenameThreeCall<T, P1, P2, P3>(m: (fileName: string, p1: P1, p2: P2, p3: P3) => T):
|
function tryFilenameThreeCall<T, P1, P2, P3>(m: (fileName: string, p1: P1, p2: P2, p3: P3) => T):
|
||||||
(filename: string, p1: P1, p2: P2, p3: P3) => T {
|
(filename: string, p1: P1, p2: P2, p3: P3) => T | undefined {
|
||||||
return (fileName, p1, p2, p3) => tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3)));
|
return (fileName, p1, p2, p3) => tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3)));
|
||||||
}
|
}
|
||||||
|
|
||||||
function tryFilenameFourCall<T, P1, P2, P3, P4>(
|
function tryFilenameFourCall<T, P1, P2, P3, P4>(
|
||||||
m: (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4) =>
|
m: (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4) =>
|
||||||
T): (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4) => T {
|
T): (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4) => T | undefined {
|
||||||
return (fileName, p1, p2, p3, p4) =>
|
return (fileName, p1, p2, p3, p4) =>
|
||||||
tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3, p4)));
|
tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3, p4)));
|
||||||
}
|
}
|
||||||
|
|
||||||
function tryFilenameFiveCall<T, P1, P2, P3, P4, P5>(
|
function tryFilenameFiveCall<T, P1, P2, P3, P4, P5>(
|
||||||
m: (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) =>
|
m: (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) =>
|
||||||
T): (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => T {
|
T): (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4, p5: P5) => T | undefined {
|
||||||
return (fileName, p1, p2, p3, p4, p5) =>
|
return (fileName, p1, p2, p3, p4, p5) =>
|
||||||
tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3, p4, p5)));
|
tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3, p4, p5)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function typescriptOnly(ls: ts.LanguageService): ts.LanguageService {
|
function typescriptOnly(ls: ts.LanguageService): ts.LanguageService {
|
||||||
const languageService: ts.LanguageService = {
|
const languageService: ts.LanguageService = {
|
||||||
cleanupSemanticCache: () => ls.cleanupSemanticCache(),
|
cleanupSemanticCache: () => ls.cleanupSemanticCache(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user