@@ -78,10 +78,6 @@ interface IReconnectionTaskData {
7878 group ?: string ;
7979}
8080
81- interface IReconnectedTerminal extends ITerminalInstance {
82- reconnectionData : IReconnectionTaskData ;
83- }
84-
8581const ReconnectionType = 'Task' ;
8682
8783class VariableResolver {
@@ -202,7 +198,7 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem {
202198 private _terminalCreationQueue : Promise < ITerminalInstance | void > = Promise . resolve ( ) ;
203199 private _hasReconnected : boolean = false ;
204200 private readonly _onDidStateChange : Emitter < ITaskEvent > ;
205- private _reconnectedTerminals : IReconnectedTerminal [ ] | undefined ;
201+ private _reconnectedTerminals : ITerminalInstance [ ] | undefined ;
206202
207203 taskShellIntegrationStartSequence ( cwd : string | URI | undefined ) : string {
208204 return (
@@ -1281,7 +1277,8 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem {
12811277 }
12821278 for ( let i = 0 ; i < this . _reconnectedTerminals . length ; i ++ ) {
12831279 const terminal = this . _reconnectedTerminals [ i ] ;
1284- if ( terminal . reconnectionData . lastTask === task . getCommonTaskId ( ) ) {
1280+ const data = terminal . shellLaunchConfig ?. attachPersistentProcess ?. reconnectionProperties ?. data as IReconnectionTaskData | undefined ;
1281+ if ( data ?. lastTask === task . getCommonTaskId ( ) ) {
12851282 this . _reconnectedTerminals . splice ( i , 1 ) ;
12861283 return terminal ;
12871284 }
@@ -1327,21 +1324,17 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem {
13271324 return ;
13281325 }
13291326 this . _reconnectedTerminals = [ ] ;
1330- for ( const terminal of this . _terminalService . getReconnectedTerminals ( ReconnectionType ) ?. filter ( t => ! t . isDisposed ) || [ ] ) {
1331- const reconnectionData = terminal . shellLaunchConfig . attachPersistentProcess ?. reconnectionProperties ?. data as IReconnectionTaskData ;
1332- if ( reconnectionData ) {
1333- this . _reconnectedTerminals . push ( { ...terminal , reconnectionData } ) ;
1334- } else {
1335- this . _logService . trace ( `Terminal was owned by tasks but has no reconnection data` , terminal . instanceId , terminal . shellLaunchConfig ) ;
1336- }
1337- }
1327+ this . _reconnectedTerminals = this . _terminalService . getReconnectedTerminals ( ReconnectionType ) ?. filter ( t => ! t . isDisposed && t . shellLaunchConfig . attachPersistentProcess ?. reconnectionProperties ?. data ) || [ ] ;
13381328 this . _logService . trace ( `Attempting reconnection of ${ this . _reconnectedTerminals ?. length } terminals` ) ;
13391329 if ( ! this . _reconnectedTerminals ?. length ) {
13401330 this . _logService . trace ( `No terminals to reconnect to so returning` ) ;
13411331 } else {
13421332 for ( const terminal of this . _reconnectedTerminals ) {
1343- const terminalData = { lastTask : terminal . reconnectionData . lastTask , group : terminal . reconnectionData . group , terminal } ;
1344- this . _terminals [ terminal . instanceId ] = terminalData ;
1333+ const data = terminal . shellLaunchConfig ?. attachPersistentProcess ?. reconnectionProperties ?. data as IReconnectionTaskData | undefined ;
1334+ if ( data ) {
1335+ const terminalData = { lastTask : data . lastTask , group : data . group , terminal } ;
1336+ this . _terminals [ terminal . instanceId ] = terminalData ;
1337+ }
13451338 }
13461339 }
13471340 this . _hasReconnected = true ;
0 commit comments