mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-26 02:51:36 -05:00
Merge from master
This commit is contained in:
@@ -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 [];
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user