@@ -10,6 +10,7 @@ import { promisify } from 'util';
10
10
import * as vscode from 'vscode' ;
11
11
import { createDeferred } from '../utils/async' ;
12
12
import { noop } from '../utils/misc' ;
13
+ import { isFileNotFoundError } from './errors' ;
13
14
import { FileSystemPaths , FileSystemPathUtils } from './fs-paths' ;
14
15
import { TemporaryFileSystem } from './fs-temp' ;
15
16
// prettier-ignore
@@ -47,8 +48,11 @@ async function getFileType(filename: string): Promise<FileType> {
47
48
// This shouldn't matter because the only consumers were
48
49
// internal methods that have been updated appropriately.
49
50
stat = await fs . lstat ( filename ) ;
50
- } catch {
51
- return FileType . Unknown ;
51
+ } catch ( err ) {
52
+ if ( isFileNotFoundError ( err ) ) {
53
+ return FileType . Unknown ;
54
+ }
55
+ throw err ;
52
56
}
53
57
if ( ! stat . isSymbolicLink ( ) ) {
54
58
return convertFileType ( stat ) ;
@@ -58,8 +62,11 @@ async function getFileType(filename: string): Promise<FileType> {
58
62
// See: https://code.visualstudio.com/api/references/vscode-api#FileType
59
63
try {
60
64
stat = await fs . stat ( filename ) ;
61
- } catch {
62
- return FileType . SymbolicLink ;
65
+ } catch ( err ) {
66
+ if ( isFileNotFoundError ( err ) ) {
67
+ return FileType . SymbolicLink ;
68
+ }
69
+ throw err ;
63
70
}
64
71
if ( stat . isFile ( ) ) {
65
72
return FileType . SymbolicLink | FileType . File ;
@@ -389,7 +396,10 @@ export class FileSystem implements IFileSystem {
389
396
// means that any symlinks are getting resolved.
390
397
stat = await this . raw . stat ( filename ) ;
391
398
} catch ( err ) {
392
- return false ;
399
+ if ( isFileNotFoundError ( err ) ) {
400
+ return false ;
401
+ }
402
+ throw err ;
393
403
}
394
404
395
405
if ( fileType === undefined ) {
0 commit comments