Merge VS Code 1.23.1 (#1520)

This commit is contained in:
Matt Irvine
2018-06-05 11:24:51 -07:00
committed by GitHub
parent e3baf5c443
commit 0c58f09e59
3651 changed files with 74249 additions and 48599 deletions

View File

@@ -9,9 +9,8 @@ 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 Event, { Emitter, debounceEvent } from 'vs/base/common/event';
import Severity from 'vs/base/common/severity';
import { IMarkerService, IMarkerData, IResourceMarker, IMarker, MarkerStatistics } from './markers';
import { Event, Emitter, debounceEvent } from 'vs/base/common/event';
import { IMarkerService, IMarkerData, IResourceMarker, IMarker, MarkerStatistics, MarkerSeverity } from './markers';
interface MapMap<V> {
[key: string]: { [key: string]: V };
@@ -88,11 +87,11 @@ class MarkerStats implements MarkerStatistics {
}
for (const { severity } of this._service.read({ resource })) {
if (severity === Severity.Error) {
if (severity === MarkerSeverity.Error) {
result.errors += 1;
} else if (severity === Severity.Warning) {
} else if (severity === MarkerSeverity.Warning) {
result.warnings += 1;
} else if (severity === Severity.Info) {
} else if (severity === MarkerSeverity.Info) {
result.infos += 1;
} else {
result.unknowns += 1;
@@ -180,7 +179,12 @@ export class MarkerService implements IMarkerService {
}
private static _toMarker(owner: string, resource: URI, data: IMarkerData): IMarker {
let { code, severity, message, source, startLineNumber, startColumn, endLineNumber, endColumn } = data;
let {
code, severity,
message, source,
startLineNumber, startColumn, endLineNumber, endColumn,
relatedInformation
} = data;
if (!message) {
return undefined;
@@ -203,7 +207,8 @@ export class MarkerService implements IMarkerService {
startLineNumber,
startColumn,
endLineNumber,
endColumn
endColumn,
relatedInformation
};
}
@@ -257,9 +262,9 @@ export class MarkerService implements IMarkerService {
}
}
read(filter: { owner?: string; resource?: URI; take?: number; } = Object.create(null)): IMarker[] {
read(filter: { owner?: string; resource?: URI; severities?: number, take?: number; } = Object.create(null)): IMarker[] {
let { owner, resource, take } = filter;
let { owner, resource, severities, take } = filter;
if (!take || take < 0) {
take = -1;
@@ -267,11 +272,20 @@ export class MarkerService implements IMarkerService {
if (owner && resource) {
// exactly one owner AND resource
const result = MapMap.get(this._byResource, resource.toString(), owner);
if (!result) {
const data = MapMap.get(this._byResource, resource.toString(), owner);
if (!data) {
return [];
} else {
return result.slice(0, take > 0 ? take : undefined);
const result: IMarker[] = [];
for (const marker of data) {
if (MarkerService._accept(marker, severities)) {
const newLen = result.push(marker);
if (take > 0 && newLen === take) {
break;
}
}
}
return result;
}
} else if (!owner && !resource) {
@@ -280,10 +294,11 @@ export class MarkerService implements IMarkerService {
for (const key1 in this._byResource) {
for (const key2 in this._byResource[key1]) {
for (const data of this._byResource[key1][key2]) {
const newLen = result.push(data);
if (take > 0 && newLen === take) {
return result;
if (MarkerService._accept(data, severities)) {
const newLen = result.push(data);
if (take > 0 && newLen === take) {
return result;
}
}
}
}
@@ -303,10 +318,11 @@ export class MarkerService implements IMarkerService {
const result: IMarker[] = [];
for (const key in map) {
for (const data of map[key]) {
const newLen = result.push(data);
if (take > 0 && newLen === take) {
return result;
if (MarkerService._accept(data, severities)) {
const newLen = result.push(data);
if (take > 0 && newLen === take) {
return result;
}
}
}
}
@@ -314,6 +330,10 @@ export class MarkerService implements IMarkerService {
}
}
private static _accept(marker: IMarker, severities?: number): boolean {
return severities === void 0 || (severities & marker.severity) === marker.severity;
}
// --- event debounce logic
private static _dedupeMap: { [uri: string]: boolean };

View File

@@ -5,9 +5,10 @@
'use strict';
import URI from 'vs/base/common/uri';
import Severity from 'vs/base/common/severity';
import Event from 'vs/base/common/event';
import { Event } from 'vs/base/common/event';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { localize } from 'vs/nls';
import Severity from 'vs/base/common/severity';
export interface IMarkerService {
_serviceBrand: any;
@@ -20,23 +21,68 @@ export interface IMarkerService {
remove(owner: string, resources: URI[]): void;
read(filter?: { owner?: string; resource?: URI; take?: number; }): IMarker[];
read(filter?: { owner?: string; resource?: URI; severities?: number, take?: number; }): IMarker[];
onMarkerChanged: Event<URI[]>;
}
/**
*
*/
export interface IRelatedInformation {
resource: URI;
message: string;
startLineNumber: number;
startColumn: number;
endLineNumber: number;
endColumn: number;
}
export enum MarkerSeverity {
Hint = 1,
Info = 2,
Warning = 4,
Error = 8,
}
export namespace MarkerSeverity {
export function compare(a: MarkerSeverity, b: MarkerSeverity): number {
return b - a;
}
const _displayStrings: { [value: number]: string; } = Object.create(null);
_displayStrings[MarkerSeverity.Error] = localize('sev.error', "Error");
_displayStrings[MarkerSeverity.Warning] = localize('sev.warning', "Warning");
_displayStrings[MarkerSeverity.Info] = localize('sev.info', "Info");
export function toString(a: MarkerSeverity): string {
return _displayStrings[a] || '';
}
export function fromSeverity(severity: Severity): MarkerSeverity {
switch (severity) {
case Severity.Error: return MarkerSeverity.Error;
case Severity.Warning: return MarkerSeverity.Warning;
case Severity.Info: return MarkerSeverity.Info;
case Severity.Ignore: return MarkerSeverity.Hint;
}
}
}
/**
* A structure defining a problem/warning/etc.
*/
export interface IMarkerData {
code?: string;
severity: Severity;
severity: MarkerSeverity;
message: string;
source?: string;
startLineNumber: number;
startColumn: number;
endLineNumber: number;
endColumn: number;
relatedInformation?: IRelatedInformation[];
}
export interface IResourceMarker {
@@ -47,7 +93,7 @@ export interface IResourceMarker {
export interface IMarker {
owner: string;
resource: URI;
severity: Severity;
severity: MarkerSeverity;
code?: string;
message: string;
source?: string;
@@ -55,6 +101,7 @@ export interface IMarker {
startColumn: number;
endLineNumber: number;
endColumn: number;
relatedInformation?: IRelatedInformation[];
}
export interface MarkerStatistics {
@@ -79,7 +126,7 @@ export namespace IMarkerData {
result.push(emptyString);
}
if (markerData.severity !== void 0 && markerData.severity !== null) {
result.push(Severity.toString(markerData.severity));
result.push(MarkerSeverity.toString(markerData.severity));
} else {
result.push(emptyString);
}

View File

@@ -5,14 +5,14 @@
'use strict';
import assert = require('assert');
import * as assert from 'assert';
import URI from 'vs/base/common/uri';
import markerService = require('vs/platform/markers/common/markerService');
import { IMarkerData } from 'vs/platform/markers/common/markers';
import * as markerService from 'vs/platform/markers/common/markerService';
import { IMarkerData, MarkerSeverity } from 'vs/platform/markers/common/markers';
function randomMarkerData(): IMarkerData {
function randomMarkerData(severity = MarkerSeverity.Error): IMarkerData {
return {
severity: 1,
severity,
message: Math.random().toString(16),
startLineNumber: 1,
startColumn: 1,
@@ -29,7 +29,7 @@ suite('Marker Service', () => {
service.changeAll('far', [{
resource: URI.parse('file:///c/test/file.cs'),
marker: randomMarkerData()
marker: randomMarkerData(MarkerSeverity.Error)
}]);
assert.equal(service.read().length, 1);
@@ -40,12 +40,18 @@ suite('Marker Service', () => {
service.changeAll('boo', [{
resource: URI.parse('file:///c/test/file.cs'),
marker: randomMarkerData()
marker: randomMarkerData(MarkerSeverity.Warning)
}]);
assert.equal(service.read().length, 2);
assert.equal(service.read({ owner: 'far' }).length, 1);
assert.equal(service.read({ owner: 'boo' }).length, 1);
assert.equal(service.read({ severities: MarkerSeverity.Error }).length, 1);
assert.equal(service.read({ severities: MarkerSeverity.Warning }).length, 1);
assert.equal(service.read({ severities: MarkerSeverity.Hint }).length, 0);
assert.equal(service.read({ severities: MarkerSeverity.Error | MarkerSeverity.Warning }).length, 2);
});