@@ -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