Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973 (#6381)

* Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973

* disable strict null check
This commit is contained in:
Anthony Dresser
2019-07-15 22:35:46 -07:00
committed by GitHub
parent f720ec642f
commit 0b7e7ddbf9
2406 changed files with 59140 additions and 35464 deletions

View File

@@ -185,7 +185,11 @@ export class Workspace implements IWorkspace {
return null;
}
return this._foldersMap.findSubstr(resource.toString()) || null;
return this._foldersMap.findSubstr(resource.with({
scheme: resource.scheme,
authority: resource.authority,
path: resource.path
}).toString()) || null;
}
private updateFoldersMap(): void {
@@ -228,7 +232,7 @@ export function toWorkspaceFolder(resource: URI): WorkspaceFolder {
export function toWorkspaceFolders(configuredFolders: IStoredWorkspaceFolder[], workspaceConfigFile: URI): WorkspaceFolder[] {
let result: WorkspaceFolder[] = [];
let seen: { [uri: string]: boolean } = Object.create(null);
let seen: Set<string> = new Set();
const relativeTo = resources.dirname(workspaceConfigFile);
for (let configuredFolder of configuredFolders) {
@@ -252,8 +256,8 @@ export function toWorkspaceFolders(configuredFolders: IStoredWorkspaceFolder[],
if (uri) {
// remove duplicates
let comparisonKey = resources.getComparisonKey(uri);
if (!seen[comparisonKey]) {
seen[comparisonKey] = true;
if (!seen.has(comparisonKey)) {
seen.add(comparisonKey);
const name = configuredFolder.name || resources.basenameOrAuthority(uri);
result.push(new WorkspaceFolder({ uri, name, index: result.length }, configuredFolder));

View File

@@ -52,6 +52,15 @@ suite('Workspace', () => {
assert.equal(actual, expected);
});
test('getFolder returns the folder even if the uri has query path', () => {
const expected = new WorkspaceFolder({ uri: testFolderUri, name: '', index: 2 });
let testObject = new Workspace('', [new WorkspaceFolder({ uri: mainFolderUri, name: '', index: 0 }), new WorkspaceFolder({ uri: URI.file('/src/code'), name: '', index: 1 }), expected]);
const actual = testObject.getFolder(URI.file(path.join(fileFolder, 'test/a')).with({ query: 'somequery' }));
assert.equal(actual, expected);
});
test('getFolder returns null if the uri is not sub', () => {
let testObject = new Workspace('', [new WorkspaceFolder({ uri: testFolderUri, name: '', index: 0 }), new WorkspaceFolder({ uri: URI.file('/src/code'), name: '', index: 1 })]);