diff --git a/src/tsconfig.strictNullChecks.json b/src/tsconfig.strictNullChecks.json index 8f094f3baa0..753f6e7411e 100644 --- a/src/tsconfig.strictNullChecks.json +++ b/src/tsconfig.strictNullChecks.json @@ -79,6 +79,7 @@ "./vs/base/node/ports.ts", "./vs/base/node/processes.ts", "./vs/base/node/proxy.ts", + "./vs/base/node/ps.ts", "./vs/base/node/request.ts", "./vs/base/node/stats.ts", "./vs/base/node/storage.ts", @@ -112,6 +113,7 @@ "./vs/code/electron-browser/issue/issueReporterModel.ts", "./vs/code/electron-browser/issue/issueReporterPage.ts", "./vs/code/electron-browser/issue/issueReporterUtil.ts", + "./vs/code/electron-browser/processExplorer/processExplorerMain.ts", "./vs/code/electron-browser/sharedProcess/contrib/contributions.ts", "./vs/code/electron-browser/sharedProcess/contrib/languagePackCachedDataCleaner.ts", "./vs/code/electron-browser/sharedProcess/contrib/nodeCachedDataCleaner.ts", @@ -494,6 +496,7 @@ "./vs/platform/telemetry/node/commonProperties.ts", "./vs/platform/telemetry/node/telemetryIpc.ts", "./vs/platform/telemetry/node/telemetryNodeUtils.ts", + "./vs/platform/telemetry/node/workbenchCommonProperties.ts", "./vs/platform/theme/common/colorRegistry.ts", "./vs/platform/theme/common/styler.ts", "./vs/platform/theme/common/themeService.ts", @@ -502,6 +505,7 @@ "./vs/platform/update/electron-main/abstractUpdateService.ts", "./vs/platform/update/electron-main/updateService.darwin.ts", "./vs/platform/update/electron-main/updateService.linux.ts", + "./vs/platform/update/electron-main/updateService.snap.ts", "./vs/platform/update/node/update.config.contribution.ts", "./vs/platform/update/node/updateIpc.ts", "./vs/platform/url/common/url.ts", @@ -571,6 +575,7 @@ "./vs/workbench/parts/emmet/test/electron-browser/emmetAction.test.ts", "./vs/workbench/parts/execution/common/execution.ts", "./vs/workbench/parts/execution/electron-browser/terminal.ts", + "./vs/workbench/parts/execution/electron-browser/terminalService.ts", "./vs/workbench/parts/extensions/common/extensionQuery.ts", "./vs/workbench/parts/extensions/common/extensions.ts", "./vs/workbench/parts/extensions/common/extensionsFileTemplate.ts", @@ -591,6 +596,7 @@ "./vs/workbench/parts/output/common/outputLinkProvider.ts", "./vs/workbench/parts/performance/electron-browser/stats.ts", "./vs/workbench/parts/preferences/common/smartSnippetInserter.ts", + "./vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts", "./vs/workbench/parts/scm/common/scm.ts", "./vs/workbench/parts/scm/electron-browser/scmUtil.ts", "./vs/workbench/parts/search/common/constants.ts", @@ -617,6 +623,7 @@ "./vs/workbench/parts/terminal/node/terminalEnvironment.ts", "./vs/workbench/parts/terminal/node/terminalProcess.ts", "./vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts", + "./vs/workbench/parts/terminal/node/windowsShellHelper.ts", "./vs/workbench/parts/url/electron-browser/url.contribution.ts", "./vs/workbench/parts/webview/electron-browser/webviewProtocols.ts", "./vs/workbench/parts/welcome/gettingStarted/electron-browser/gettingStarted.ts", @@ -695,10 +702,7 @@ "./vs/workbench/services/themes/common/workbenchThemeService.ts", "./vs/workbench/services/title/common/titleService.ts", "./vs/workbench/services/workspace/common/workspaceEditing.ts", - "./vs/workbench/test/electron-browser/api/mock.ts", - "./vs/workbench/parts/terminal/node/windowsShellHelper.ts", - "./vs/base/node/ps.ts", - "./vs/code/electron-browser/processExplorer/processExplorerMain.ts" + "./vs/workbench/test/electron-browser/api/mock.ts" ], "exclude": [ "./typings/require-monaco.d.ts" diff --git a/src/vs/base/common/resources.ts b/src/vs/base/common/resources.ts index dd8edeb5fc2..05be7f7037a 100644 --- a/src/vs/base/common/resources.ts +++ b/src/vs/base/common/resources.ts @@ -14,7 +14,7 @@ export function getComparisonKey(resource: URI): string { return hasToIgnoreCase(resource) ? resource.toString().toLowerCase() : resource.toString(); } -export function hasToIgnoreCase(resource: URI): boolean { +export function hasToIgnoreCase(resource: URI | undefined): boolean { // A file scheme resource is in the same platform as code, so ignore case for non linux platforms // Resource can be from another platform. Lowering the case as an hack. Should come from File system provider return resource && resource.scheme === Schemas.file ? !isLinux : true; @@ -45,7 +45,7 @@ function isEqualAuthority(a1: string, a2: string, ignoreCase?: boolean) { return a1 === a2 || ignoreCase && a1 && a2 && equalsIgnoreCase(a1, a2); } -export function isEqual(first: URI, second: URI, ignoreCase = hasToIgnoreCase(first)): boolean { +export function isEqual(first: URI | undefined, second: URI | undefined, ignoreCase = hasToIgnoreCase(first)): boolean { const identityEquals = (first === second); if (identityEquals) { return true; diff --git a/src/vs/code/node/cli.ts b/src/vs/code/node/cli.ts index 5b6bc130ee1..e7b4226e604 100644 --- a/src/vs/code/node/cli.ts +++ b/src/vs/code/node/cli.ts @@ -132,7 +132,7 @@ export async function main(argv: string[]): Promise { child.stdout.on('data', (data: Buffer) => console.log(data.toString('utf8').trim())); child.stderr.on('data', (data: Buffer) => console.log(data.toString('utf8').trim())); - return new TPromise(c => child.once('exit', () => c(null))); + return new TPromise(c => child.once('exit', () => c())); }); } diff --git a/src/vs/platform/telemetry/node/workbenchCommonProperties.ts b/src/vs/platform/telemetry/node/workbenchCommonProperties.ts index e870150ac11..d6d44f3b5e4 100644 --- a/src/vs/platform/telemetry/node/workbenchCommonProperties.ts +++ b/src/vs/platform/telemetry/node/workbenchCommonProperties.ts @@ -22,7 +22,7 @@ export function resolveWorkbenchCommonProperties(storageService: IStorageService // __GDPR__COMMON__ "common.firstSessionDate" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } result['common.firstSessionDate'] = getOrCreateFirstSessionDate(storageService); // __GDPR__COMMON__ "common.lastSessionDate" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } - result['common.lastSessionDate'] = lastSessionDate; + result['common.lastSessionDate'] = lastSessionDate || ''; // __GDPR__COMMON__ "common.isNewSession" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } result['common.isNewSession'] = !lastSessionDate ? '1' : '0'; // __GDPR__COMMON__ "common.instanceId" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } diff --git a/src/vs/platform/update/electron-main/updateService.snap.ts b/src/vs/platform/update/electron-main/updateService.snap.ts index 682926213aa..ca5094a9a39 100644 --- a/src/vs/platform/update/electron-main/updateService.snap.ts +++ b/src/vs/platform/update/electron-main/updateService.snap.ts @@ -146,6 +146,9 @@ export class SnapUpdateService extends AbstractUpdateService2 { ) { super(lifecycleService, environmentService, logService); + if (typeof process.env.SNAP === 'undefined') { + throw new Error(`'SNAP' environment variable not set`); + } const watcher = watch(path.dirname(process.env.SNAP)); const onChange = fromNodeEventEmitter(watcher, 'change', (_, fileName: string) => fileName); const onCurrentChange = filterEvent(onChange, n => n === 'current'); @@ -190,6 +193,10 @@ export class SnapUpdateService extends AbstractUpdateService2 { protected doQuitAndInstall(): void { this.logService.trace('update#quitAndInstall(): running raw#quitAndInstall()'); + if (typeof process.env.SNAP === 'undefined') { + return; + } + // Allow 3 seconds for VS Code to close spawn('bash', ['-c', path.join(process.env.SNAP, `usr/share/${product.applicationName}/snapUpdate.sh`)], { detached: true, diff --git a/src/vs/workbench/parts/execution/electron-browser/terminalService.ts b/src/vs/workbench/parts/execution/electron-browser/terminalService.ts index 60c991d4b75..f5efd5494a2 100644 --- a/src/vs/workbench/parts/execution/electron-browser/terminalService.ts +++ b/src/vs/workbench/parts/execution/electron-browser/terminalService.ts @@ -67,7 +67,7 @@ export class WinTerminalService implements ITerminalService { const cmd = cp.spawn(WinTerminalService.CMD, cmdArgs, options); cmd.on('error', e); - c(null); + c(); }); } @@ -100,7 +100,7 @@ export class WinTerminalService implements ITerminalService { const env = cwd ? { cwd: cwd } : void 0; const child = spawner.spawn(command, cmdArgs, env); child.on('error', e); - child.on('exit', () => c(null)); + child.on('exit', () => c()); }); } @@ -176,7 +176,7 @@ export class MacTerminalService implements ITerminalService { }); osa.on('exit', (code: number) => { if (code === 0) { // OK - c(null); + c(); } else { if (stderr) { const lines = stderr.split('\n', 1); @@ -199,7 +199,7 @@ export class MacTerminalService implements ITerminalService { return new Promise((c, e) => { const child = spawner.spawn('/usr/bin/open', ['-a', terminalApp, cwd]); child.on('error', e); - child.on('exit', () => c(null)); + child.on('exit', () => c()); }); } } @@ -262,7 +262,7 @@ export class LinuxTerminalService implements ITerminalService { }); cmd.on('exit', (code: number) => { if (code === 0) { // OK - c(null); + c(); } else { if (stderr) { const lines = stderr.split('\n', 1); @@ -285,7 +285,7 @@ export class LinuxTerminalService implements ITerminalService { execPromise.then(exec => { const child = spawner.spawn(exec, [], env); child.on('error', e); - child.on('exit', () => c(null)); + child.on('exit', () => c()); }); }); } diff --git a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts index c5e863ef7c5..071c50ff999 100644 --- a/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts +++ b/src/vs/workbench/parts/relauncher/electron-browser/relauncher.contribution.ts @@ -43,7 +43,7 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo private fileWatcherExclude: object; private legacyStorage: boolean; - private firstFolderResource: URI; + private firstFolderResource?: URI; private extensionHostRestarter: RunOnceScheduler; private onDidChangeWorkspaceFoldersUnbind: IDisposable;