Merge from master

This commit is contained in:
Raj Musuku
2019-02-21 17:56:04 -08:00
parent 5a146e34fa
commit 666ae11639
11482 changed files with 119352 additions and 255574 deletions

View File

@@ -2,13 +2,12 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import { isFalsyOrEmpty } from 'vs/base/common/arrays';
import { isFalsyOrEmpty, isNonEmptyArray } from 'vs/base/common/arrays';
import { Schemas } from 'vs/base/common/network';
import { IDisposable } from 'vs/base/common/lifecycle';
import { isEmptyObject } from 'vs/base/common/types';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { Event, Emitter, debounceEvent } from 'vs/base/common/event';
import { IMarkerService, IMarkerData, IResourceMarker, IMarker, MarkerStatistics, MarkerSeverity } from './markers';
@@ -18,7 +17,7 @@ interface MapMap<V> {
namespace MapMap {
export function get<V>(map: MapMap<V>, key1: string, key2: string): V {
export function get<V>(map: MapMap<V>, key1: string, key2: string): V | undefined {
if (map[key1]) {
return map[key1][key2];
}
@@ -51,7 +50,7 @@ class MarkerStats implements MarkerStatistics {
warnings: number = 0;
unknowns: number = 0;
private _data: { [resource: string]: MarkerStatistics } = Object.create(null);
private _data?: { [resource: string]: MarkerStatistics } = Object.create(null);
private _service: IMarkerService;
private _subscription: IDisposable;
@@ -66,6 +65,10 @@ class MarkerStats implements MarkerStatistics {
}
private _update(resources: URI[]): void {
if (!this._data) {
return;
}
for (const resource of resources) {
const key = resource.toString();
const oldStats = this._data[key];
@@ -143,10 +146,8 @@ export class MarkerService implements IMarkerService {
}
remove(owner: string, resources: URI[]): void {
if (!isFalsyOrEmpty(resources)) {
for (const resource of resources) {
this.changeOne(owner, resource, undefined);
}
for (const resource of resources || []) {
this.changeOne(owner, resource, []);
}
}
@@ -178,7 +179,7 @@ export class MarkerService implements IMarkerService {
}
}
private static _toMarker(owner: string, resource: URI, data: IMarkerData): IMarker {
private static _toMarker(owner: string, resource: URI, data: IMarkerData): IMarker | undefined {
let {
code, severity,
message, source,
@@ -192,7 +193,6 @@ export class MarkerService implements IMarkerService {
}
// santize data
code = code || null;
startLineNumber = startLineNumber > 0 ? startLineNumber : 1;
startColumn = startColumn > 0 ? startColumn : 1;
endLineNumber = endLineNumber >= startLineNumber ? endLineNumber : startLineNumber;
@@ -201,7 +201,7 @@ export class MarkerService implements IMarkerService {
return {
resource,
owner,
code,
code: code || undefined,
severity,
message,
source,
@@ -222,18 +222,21 @@ export class MarkerService implements IMarkerService {
if (map) {
delete this._byOwner[owner];
for (const resource in map) {
// remeber what we remove
const [first] = MapMap.get(this._byResource, resource, owner);
if (first) {
changes.push(first.resource);
const entry = MapMap.get(this._byResource, resource, owner);
if (entry) {
// remeber what we remove
const [first] = entry;
if (first) {
changes.push(first.resource);
}
// actual remove
MapMap.remove(this._byResource, resource, owner);
}
// actual remove
MapMap.remove(this._byResource, resource, owner);
}
}
// add new markers
if (!isFalsyOrEmpty(data)) {
if (isNonEmptyArray(data)) {
// group by resource
const groups: { [resource: string]: IMarker[] } = Object.create(null);
@@ -309,9 +312,9 @@ export class MarkerService implements IMarkerService {
} else {
// of one resource OR owner
const map: { [key: string]: IMarker[] } = owner
const map: { [key: string]: IMarker[] } | undefined = owner
? this._byOwner[owner]
: this._byResource[resource.toString()];
: resource ? this._byResource[resource.toString()] : undefined;
if (!map) {
return [];

View File

@@ -2,9 +2,8 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { Event } from 'vs/base/common/event';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { localize } from 'vs/nls';
@@ -38,7 +37,7 @@ export interface IRelatedInformation {
endColumn: number;
}
export enum MarkerTag {
export const enum MarkerTag {
Unnecessary = 1,
}

View File

@@ -2,11 +2,9 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as assert from 'assert';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import * as markerService from 'vs/platform/markers/common/markerService';
import { IMarkerData, MarkerSeverity } from 'vs/platform/markers/common/markers';
@@ -58,16 +56,16 @@ suite('Marker Service', () => {
test('changeOne override', () => {
let service = new markerService.MarkerService();
service.changeOne('far', URI.parse('/path/only.cs'), [randomMarkerData()]);
service.changeOne('far', URI.parse('file:///path/only.cs'), [randomMarkerData()]);
assert.equal(service.read().length, 1);
assert.equal(service.read({ owner: 'far' }).length, 1);
service.changeOne('boo', URI.parse('/path/only.cs'), [randomMarkerData()]);
service.changeOne('boo', URI.parse('file:///path/only.cs'), [randomMarkerData()]);
assert.equal(service.read().length, 2);
assert.equal(service.read({ owner: 'far' }).length, 1);
assert.equal(service.read({ owner: 'boo' }).length, 1);
service.changeOne('far', URI.parse('/path/only.cs'), [randomMarkerData(), randomMarkerData()]);
service.changeOne('far', URI.parse('file:///path/only.cs'), [randomMarkerData(), randomMarkerData()]);
assert.equal(service.read({ owner: 'far' }).length, 2);
assert.equal(service.read({ owner: 'boo' }).length, 1);
@@ -76,13 +74,13 @@ suite('Marker Service', () => {
test('changeOne/All clears', () => {
let service = new markerService.MarkerService();
service.changeOne('far', URI.parse('/path/only.cs'), [randomMarkerData()]);
service.changeOne('boo', URI.parse('/path/only.cs'), [randomMarkerData()]);
service.changeOne('far', URI.parse('file:///path/only.cs'), [randomMarkerData()]);
service.changeOne('boo', URI.parse('file:///path/only.cs'), [randomMarkerData()]);
assert.equal(service.read({ owner: 'far' }).length, 1);
assert.equal(service.read({ owner: 'boo' }).length, 1);
assert.equal(service.read().length, 2);
service.changeOne('far', URI.parse('/path/only.cs'), []);
service.changeOne('far', URI.parse('file:///path/only.cs'), []);
assert.equal(service.read({ owner: 'far' }).length, 0);
assert.equal(service.read({ owner: 'boo' }).length, 1);
assert.equal(service.read().length, 1);