提交 39e7e1f3 编写于 作者: M Matt Bierner

Strict null work on markers panel

上级 bde0b864
......@@ -271,11 +271,14 @@
"./vs/workbench/contrib/logs/common/logs.contribution.ts",
"./vs/workbench/contrib/logs/common/logsActions.ts",
"./vs/workbench/contrib/markers/browser/constants.ts",
"./vs/workbench/contrib/markers/browser/markers.contribution.ts",
"./vs/workbench/contrib/markers/browser/markers.ts",
"./vs/workbench/contrib/markers/browser/markersFileDecorations.ts",
"./vs/workbench/contrib/markers/browser/markersFilterOptions.ts",
"./vs/workbench/contrib/markers/browser/markersModel.ts",
"./vs/workbench/contrib/markers/browser/markersPanel.ts",
"./vs/workbench/contrib/markers/browser/markersPanelActions.ts",
"./vs/workbench/contrib/markers/browser/markersTreeViewer.ts",
"./vs/workbench/contrib/markers/browser/messages.ts",
"./vs/workbench/contrib/markers/test/electron-browser/markersModel.test.ts",
"./vs/workbench/contrib/output/browser/logViewer.ts",
......
......@@ -187,7 +187,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
public openFileAtElement(element: any, preserveFocus: boolean, sideByside: boolean, pinned: boolean): boolean {
const { resource, selection, event, data } = element instanceof Marker ? { resource: element.resource, selection: element.range, event: 'problems.selectDiagnostic', data: this.getTelemetryData(element.marker) } :
element instanceof RelatedInformation ? { resource: element.raw.resource, selection: element.raw, event: 'problems.selectRelatedInformation', data: this.getTelemetryData(element.marker) } : { resource: null, selection: null, event: null, data: null };
if (resource && selection) {
if (resource && selection && event) {
/* __GDPR__
"problems.selectDiagnostic" : {
"source": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" },
......@@ -465,7 +465,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
private onSelected(): void {
let selection = this.tree.getSelection();
if (selection && selection.length > 0) {
this.lastSelectedRelativeTop = this.tree.getRelativeTop(selection[0]);
this.lastSelectedRelativeTop = this.tree.getRelativeTop(selection[0]) || 0;
}
}
......@@ -612,7 +612,8 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
}
private onContextMenu(e: ITreeContextMenuEvent<TreeElement>): void {
if (!e.element) {
const element = e.element;
if (!element) {
return;
}
......@@ -620,8 +621,8 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
e.browserEvent.stopPropagation();
this.contextMenuService.showContextMenu({
getAnchor: () => e.anchor,
getActions: () => this.getMenuActions(e.element),
getAnchor: () => e.anchor!,
getActions: () => this.getMenuActions(element),
getActionItem: (action) => {
const keybinding = this.keybindingService.lookupKeybinding(action.id);
if (keybinding) {
......@@ -665,7 +666,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
return result;
}
public getFocusElement(): TreeElement {
public getFocusElement() {
return this.tree.getFocus()[0];
}
......
......@@ -67,7 +67,7 @@ export class MarkersTreeAccessibilityProvider implements IAccessibilityProvider<
constructor(@ILabelService private readonly labelService: ILabelService) { }
public getAriaLabel(element: TreeElement): string {
public getAriaLabel(element: TreeElement): string | null {
if (element instanceof ResourceMarkers) {
const path = this.labelService.getUriLabel(element.resource, { relative: true }) || element.resource.fsPath;
return Messages.MARKERS_TREE_ARIA_LABEL_RESOURCE(element.markers.length, element.name, paths.dirname(path));
......@@ -262,7 +262,7 @@ class MarkerWidget extends Disposable {
this._register(toDisposable(() => this.disposables = dispose(this.disposables)));
}
render(element: Marker, filterData: MarkerFilterData): void {
render(element: Marker, filterData: MarkerFilterData | undefined): void {
this.actionBar.clear();
this.multilineActionbar.clear();
if (this.disposables.length) {
......@@ -310,7 +310,7 @@ class MarkerWidget extends Disposable {
this.multilineActionbar.push([action], { icon: true, label: false });
}
private renderMessageAndDetails(element: Marker, filterData: MarkerFilterData) {
private renderMessageAndDetails(element: Marker, filterData: MarkerFilterData | undefined) {
const { marker, lines } = element;
const viewState = this.markersViewModel.getViewModel(element);
const multiline = !viewState || viewState.multiline;
......@@ -330,7 +330,7 @@ class MarkerWidget extends Disposable {
this.renderDetails(marker, filterData, multiline ? lastLineElement : this.messageAndDetailsContainer);
}
private renderDetails(marker: IMarker, filterData: MarkerFilterData, parent: HTMLElement): void {
private renderDetails(marker: IMarker, filterData: MarkerFilterData | undefined, parent: HTMLElement): void {
dom.addClass(parent, 'details-container');
const sourceMatches = filterData && filterData.sourceMatches || [];
const codeMatches = filterData && filterData.codeMatches || [];
......@@ -557,7 +557,7 @@ export class MarkerViewModel extends Disposable {
return this.codeActionsPromise;
}
return this.getModel(waitForModel)
.then(model => {
.then<CodeAction[] | null>(model => {
if (model) {
if (!this.codeActionsPromise) {
this.codeActionsPromise = createCancelablePromise(cancellationToken => {
......@@ -629,7 +629,7 @@ export class MarkersViewModel extends Disposable {
private bulkUpdate: boolean = false;
private hoveredMarker: Marker;
private hoveredMarker: Marker | null;
private hoverDelayer: Delayer<void> = new Delayer<void>(300);
constructor(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册