Skip to content

Commit 8b6c0c5

Browse files
committed
strict null: loadedScriptsView
1 parent 75e4095 commit 8b6c0c5

2 files changed

Lines changed: 34 additions & 30 deletions

File tree

src/tsconfig.strictNullChecks.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@
170170
"./vs/workbench/contrib/debug/browser/debugViewlet.ts",
171171
"./vs/workbench/contrib/debug/browser/exceptionWidget.ts",
172172
"./vs/workbench/contrib/debug/browser/linkDetector.ts",
173+
"./vs/workbench/contrib/debug/browser/loadedScriptsView.ts",
173174
"./vs/workbench/contrib/debug/browser/statusbarColorProvider.ts",
174175
"./vs/workbench/contrib/debug/electron-browser/breakpointWidget.ts",
175176
"./vs/workbench/contrib/debug/electron-browser/debugEditorContribution.ts",

src/vs/workbench/contrib/debug/browser/loadedScriptsView.ts

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class BaseTreeItem {
4545
private _children: { [key: string]: BaseTreeItem; };
4646
private _source: Source;
4747

48-
constructor(private _parent: BaseTreeItem, private _label: string) {
48+
constructor(private _parent: BaseTreeItem | undefined, private _label: string) {
4949
this._children = {};
5050
this._showedMoreThanOne = false;
5151
}
@@ -54,7 +54,7 @@ class BaseTreeItem {
5454
return Object.keys(this._children).length === 0;
5555
}
5656

57-
getSession(): IDebugSession {
57+
getSession(): IDebugSession | undefined {
5858
if (this._parent) {
5959
return this._parent.getSession();
6060
}
@@ -66,10 +66,12 @@ class BaseTreeItem {
6666
this._children = {};
6767
if (source.raw && source.raw.sources) {
6868
for (const src of source.raw.sources) {
69-
const s = new BaseTreeItem(this, src.name);
70-
this._children[src.path] = s;
71-
const ss = session.getSource(src);
72-
s.setSource(session, ss);
69+
if (src.name && src.path) {
70+
const s = new BaseTreeItem(this, src.name);
71+
this._children[src.path] = s;
72+
const ss = session.getSource(src);
73+
s.setSource(session, ss);
74+
}
7375
}
7476
}
7577
}
@@ -111,7 +113,7 @@ class BaseTreeItem {
111113
}
112114

113115
// skips intermediate single-child nodes
114-
getParent(): BaseTreeItem {
116+
getParent(): BaseTreeItem | undefined {
115117
if (this._parent) {
116118
if (this._parent.isSkipped()) {
117119
return this._parent.getParent();
@@ -161,7 +163,7 @@ class BaseTreeItem {
161163
}
162164

163165
// skips intermediate single-child nodes
164-
getHoverLabel(): string {
166+
getHoverLabel(): string | undefined {
165167
if (this._source && this._parent && this._parent._source) {
166168
return this._source.raw.path || this._source.raw.name;
167169
}
@@ -192,7 +194,7 @@ class BaseTreeItem {
192194
return 0;
193195
}
194196

195-
private oneChild(): BaseTreeItem {
197+
private oneChild(): BaseTreeItem | undefined {
196198
if (SMART && !this._source && !this._showedMoreThanOne && !(this instanceof RootFolderTreeItem) && !(this instanceof SessionTreeItem)) {
197199
const keys = Object.keys(this._children);
198200
if (keys.length === 1) {
@@ -251,7 +253,7 @@ class SessionTreeItem extends BaseTreeItem {
251253
return this._session;
252254
}
253255

254-
getHoverLabel(): string {
256+
getHoverLabel(): string | undefined {
255257
return undefined;
256258
}
257259

@@ -300,10 +302,13 @@ class SessionTreeItem extends BaseTreeItem {
300302

301303
addPath(source: Source): void {
302304

303-
let folder: IWorkspaceFolder;
305+
let folder: IWorkspaceFolder | null;
304306
let url: string;
305307

306308
let path = source.raw.path;
309+
if (!path) {
310+
return;
311+
}
307312

308313
const match = SessionTreeItem.URL_REGEXP.exec(path);
309314
if (match && match.length === 3) {
@@ -323,7 +328,7 @@ class SessionTreeItem extends BaseTreeItem {
323328
path = posix.sep + path;
324329
} else {
325330
// don't show root folder
326-
folder = undefined;
331+
folder = null;
327332
}
328333
} else {
329334
// on unix try to tildify absolute paths
@@ -338,7 +343,8 @@ class SessionTreeItem extends BaseTreeItem {
338343
let leaf: BaseTreeItem = this;
339344
path.split(/[\/\\]/).forEach((segment, i) => {
340345
if (i === 0 && folder) {
341-
leaf = leaf.createIfNeeded(folder.name, parent => new RootFolderTreeItem(parent, folder));
346+
const f = folder;
347+
leaf = leaf.createIfNeeded(folder.name, parent => new RootFolderTreeItem(parent, f));
342348
} else if (i === 0 && url) {
343349
leaf = leaf.createIfNeeded(url, parent => new BaseTreeItem(parent, url));
344350
} else {
@@ -347,14 +353,18 @@ class SessionTreeItem extends BaseTreeItem {
347353
});
348354

349355
leaf.setSource(this._session, source);
350-
this._map.set(source.raw.path, leaf);
356+
if (source.raw.path) {
357+
this._map.set(source.raw.path, leaf);
358+
}
351359
}
352360

353361
removePath(source: Source): boolean {
354-
const leaf = this._map.get(source.raw.path);
355-
if (leaf) {
356-
leaf.removeFromParent();
357-
return true;
362+
if (source.raw.path) {
363+
const leaf = this._map.get(source.raw.path);
364+
if (leaf) {
365+
leaf.removeFromParent();
366+
return true;
367+
}
358368
}
359369
return false;
360370
}
@@ -519,10 +529,7 @@ class LoadedScriptsDelegate implements IListVirtualDelegate<LoadedScriptsItem> {
519529
}
520530

521531
getTemplateId(element: LoadedScriptsItem): string {
522-
if (element instanceof BaseTreeItem) {
523-
return LoadedScriptsRenderer.ID;
524-
}
525-
return undefined;
532+
return LoadedScriptsRenderer.ID;
526533
}
527534
}
528535

@@ -611,15 +618,11 @@ class LoadedSciptsAccessibilityProvider implements IAccessibilityProvider<Loaded
611618
return nls.localize('loadedScriptsSessionAriaLabel', "Session {0}, loaded script, debug", element.getLabel());
612619
}
613620

614-
if (element instanceof BaseTreeItem) {
615-
if (element.hasChildren()) {
616-
return nls.localize('loadedScriptsFolderAriaLabel', "Folder {0}, loaded script, debug", element.getLabel());
617-
} else {
618-
return nls.localize('loadedScriptsSourceAriaLabel', "{0}, loaded script, debug", element.getLabel());
619-
}
621+
if (element.hasChildren()) {
622+
return nls.localize('loadedScriptsFolderAriaLabel', "Folder {0}, loaded script, debug", element.getLabel());
623+
} else {
624+
return nls.localize('loadedScriptsSourceAriaLabel', "{0}, loaded script, debug", element.getLabel());
620625
}
621-
622-
return null;
623626
}
624627
}
625628

0 commit comments

Comments
 (0)