mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-12 12:57:11 -06:00
Merge pull request #21743 from Microsoft/defaultProjectForFile
Fix getDefaultProjectForFile check
This commit is contained in:
commit
bf707ac265
@ -2888,6 +2888,29 @@ namespace ts.projectSystem {
|
||||
});
|
||||
|
||||
describe("tsserverProjectSystem Proper errors", () => {
|
||||
function createErrorLogger() {
|
||||
let hasError = false;
|
||||
const errorLogger: server.Logger = {
|
||||
close: noop,
|
||||
hasLevel: () => true,
|
||||
loggingEnabled: () => true,
|
||||
perftrc: noop,
|
||||
info: noop,
|
||||
msg: (_s, type) => {
|
||||
if (type === server.Msg.Err) {
|
||||
hasError = true;
|
||||
}
|
||||
},
|
||||
startGroup: noop,
|
||||
endGroup: noop,
|
||||
getLogFileName: (): string => undefined
|
||||
};
|
||||
return {
|
||||
errorLogger,
|
||||
hasError: () => hasError
|
||||
};
|
||||
}
|
||||
|
||||
it("document is not contained in project", () => {
|
||||
const file1 = {
|
||||
path: "/a/b/app.ts",
|
||||
@ -2910,23 +2933,8 @@ namespace ts.projectSystem {
|
||||
describe("when opening new file that doesnt exist on disk yet", () => {
|
||||
function verifyNonExistentFile(useProjectRoot: boolean) {
|
||||
const host = createServerHost([libFile]);
|
||||
let hasError = false;
|
||||
const errLogger: server.Logger = {
|
||||
close: noop,
|
||||
hasLevel: () => true,
|
||||
loggingEnabled: () => true,
|
||||
perftrc: noop,
|
||||
info: noop,
|
||||
msg: (_s, type) => {
|
||||
if (type === server.Msg.Err) {
|
||||
hasError = true;
|
||||
}
|
||||
},
|
||||
startGroup: noop,
|
||||
endGroup: noop,
|
||||
getLogFileName: (): string => undefined
|
||||
};
|
||||
const session = createSession(host, { canUseEvents: true, logger: errLogger, useInferredProjectPerProjectRoot: true });
|
||||
const { hasError, errorLogger } = createErrorLogger();
|
||||
const session = createSession(host, { canUseEvents: true, logger: errorLogger, useInferredProjectPerProjectRoot: true });
|
||||
|
||||
const folderPath = "/user/someuser/projects/someFolder";
|
||||
const projectService = session.getProjectService();
|
||||
@ -2967,13 +2975,13 @@ namespace ts.projectSystem {
|
||||
// Run the last one = get error request
|
||||
host.runQueuedTimeoutCallbacks(newTimeoutId);
|
||||
|
||||
assert.isFalse(hasError);
|
||||
assert.isFalse(hasError());
|
||||
host.checkTimeoutQueueLength(2);
|
||||
checkErrorMessage(session, "syntaxDiag", { file: untitledFile, diagnostics: [] });
|
||||
session.clearMessages();
|
||||
|
||||
host.runQueuedImmediateCallbacks();
|
||||
assert.isFalse(hasError);
|
||||
assert.isFalse(hasError());
|
||||
checkErrorMessage(session, "semanticDiag", { file: untitledFile, diagnostics: [] });
|
||||
|
||||
checkCompleteEvent(session, 2, expectedSequenceId);
|
||||
@ -3039,6 +3047,31 @@ namespace ts.projectSystem {
|
||||
session.clearMessages();
|
||||
}
|
||||
});
|
||||
|
||||
it("Getting errors before opening file", () => {
|
||||
const file: FileOrFolder = {
|
||||
path: "/a/b/project/file.ts",
|
||||
content: "let x: number = false;"
|
||||
};
|
||||
const host = createServerHost([file, libFile]);
|
||||
const { hasError, errorLogger } = createErrorLogger();
|
||||
const session = createSession(host, { canUseEvents: true, logger: errorLogger });
|
||||
|
||||
session.clearMessages();
|
||||
const expectedSequenceId = session.getNextSeq();
|
||||
session.executeCommandSeq<protocol.GeterrRequest>({
|
||||
command: server.CommandNames.Geterr,
|
||||
arguments: {
|
||||
delay: 0,
|
||||
files: [file.path]
|
||||
}
|
||||
});
|
||||
|
||||
host.runQueuedImmediateCallbacks();
|
||||
assert.isFalse(hasError());
|
||||
checkCompleteEvent(session, 1, expectedSequenceId);
|
||||
session.clearMessages();
|
||||
});
|
||||
});
|
||||
|
||||
describe("tsserverProjectSystem autoDiscovery", () => {
|
||||
|
||||
@ -668,7 +668,7 @@ namespace ts.server {
|
||||
|
||||
getDefaultProjectForFile(fileName: NormalizedPath, ensureProject: boolean) {
|
||||
let scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
|
||||
if (ensureProject && !scriptInfo || scriptInfo.isOrphan()) {
|
||||
if (ensureProject && (!scriptInfo || scriptInfo.isOrphan())) {
|
||||
this.ensureProjectStructuresUptoDate();
|
||||
scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
|
||||
if (!scriptInfo) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user