Skip to content

Commit 23e29a1

Browse files
committed
Update tsc to 4.5.5
The default version of tsc in vscode is now 4.5.4. This version has changed the type of the variable in the catch block. Previously, it was `any`. Now it is `unknown`. This change updates vscode so that it can build with 4.5.4. Previously, this had been a bit of a pain since sometimes running a compile task in vscode will use the global default version of tsc.
1 parent 90d636a commit 23e29a1

27 files changed

Lines changed: 124 additions & 98 deletions

extensions/ql-vscode/package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

extensions/ql-vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1179,7 +1179,7 @@
11791179
"ts-loader": "^8.1.0",
11801180
"ts-node": "^8.3.0",
11811181
"ts-protoc-gen": "^0.9.0",
1182-
"typescript": "^4.3.2",
1182+
"typescript": "^4.5.5",
11831183
"typescript-formatter": "^7.2.2",
11841184
"vsce": "^1.65.0",
11851185
"vscode-test": "^1.4.0",

extensions/ql-vscode/src/cli-version.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as semver from 'semver';
22
import { runCodeQlCliCommand } from './cli';
33
import { Logger } from './logging';
4+
import { getErrorMessage } from './pure/helpers-pure';
45

56
/**
67
* Get the version of a CodeQL CLI.
@@ -18,7 +19,7 @@ export async function getCodeQlCliVersion(codeQlPath: string, logger: Logger): P
1819
} catch (e) {
1920
// Failed to run the version command. This might happen if the cli version is _really_ old, or it is corrupted.
2021
// Either way, we can't determine compatibility.
21-
void logger.log(`Failed to run 'codeql version'. Reason: ${e.message}`);
22+
void logger.log(`Failed to run 'codeql version'. Reason: ${getErrorMessage(e)}`);
2223
return undefined;
2324
}
2425
}

extensions/ql-vscode/src/cli.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { CancellationToken, Disposable, Uri } from 'vscode';
1313
import { BQRSInfo, DecodedBqrsChunk } from './pure/bqrs-cli-types';
1414
import { CliConfig } from './config';
1515
import { DistributionProvider, FindDistributionResultKind } from './distribution';
16-
import { assertNever } from './pure/helpers-pure';
16+
import { assertNever, getErrorMessage, getErrorStack } from './pure/helpers-pure';
1717
import { QueryMetadata, SortDirection } from './pure/interface-types';
1818
import { Logger, ProgressReporter } from './logging';
1919
import { CompilationMessage } from './pure/messages';
@@ -346,7 +346,7 @@ export class CodeQLCliServer implements Disposable {
346346
stderrBuffers.length == 0
347347
? new Error(`${description} failed: ${err}`)
348348
: new Error(`${description} failed: ${Buffer.concat(stderrBuffers).toString('utf8')}`);
349-
newError.stack += (err.stack || '');
349+
newError.stack += getErrorStack(err);
350350
throw newError;
351351
} finally {
352352
void this.logger.log(Buffer.concat(stderrBuffers).toString('utf8'));
@@ -448,7 +448,7 @@ export class CodeQLCliServer implements Disposable {
448448
try {
449449
yield JSON.parse(event) as EventType;
450450
} catch (err) {
451-
throw new Error(`Parsing output of ${description} failed: ${err.stderr || err}`);
451+
throw new Error(`Parsing output of ${description} failed: ${(err as any).stderr || getErrorMessage(err)}`);
452452
}
453453
}
454454
}
@@ -503,7 +503,7 @@ export class CodeQLCliServer implements Disposable {
503503
try {
504504
return JSON.parse(result) as OutputType;
505505
} catch (err) {
506-
throw new Error(`Parsing output of ${description} failed: ${err.stderr || err}`);
506+
throw new Error(`Parsing output of ${description} failed: ${(err as any).stderr || getErrorMessage(err)}`);
507507
}
508508
}
509509

@@ -751,7 +751,7 @@ export class CodeQLCliServer implements Disposable {
751751
const dot = await this.readDotFiles(interpretedResultsPath);
752752
return dot;
753753
} catch (err) {
754-
throw new Error(`Reading output of interpretation failed: ${err.stderr || err}`);
754+
throw new Error(`Reading output of interpretation failed: ${getErrorMessage(err)}`);
755755
}
756756
}
757757

@@ -1050,7 +1050,7 @@ export async function runCodeQlCliCommand(
10501050
void logger.log('CLI command succeeded.');
10511051
return result.stdout;
10521052
} catch (err) {
1053-
throw new Error(`${description} failed: ${err.stderr || err}`);
1053+
throw new Error(`${description} failed: ${(err as any).stderr || getErrorMessage(err)}`);
10541054
}
10551055
}
10561056

extensions/ql-vscode/src/commandRunner.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
} from 'vscode';
99
import { showAndLogErrorMessage, showAndLogWarningMessage } from './helpers';
1010
import { logger } from './logging';
11+
import { getErrorMessage, getErrorStack } from './pure/helpers-pure';
1112
import { telemetryListener } from './telemetry';
1213

1314
export class UserCancellationException extends Error {
@@ -121,8 +122,9 @@ export function commandRunner(
121122
try {
122123
return await task(...args);
123124
} catch (e) {
124-
error = e;
125-
const errorMessage = `${e.message || e} (${commandId})`;
125+
const errorMessage = `${getErrorMessage(e) || e} (${commandId})`;
126+
error = e instanceof Error ? e : new Error(errorMessage);
127+
const errorStack = getErrorStack(e);
126128
if (e instanceof UserCancellationException) {
127129
// User has cancelled this action manually
128130
if (e.silent) {
@@ -132,8 +134,8 @@ export function commandRunner(
132134
}
133135
} else {
134136
// Include the full stack in the error log only.
135-
const fullMessage = e.stack
136-
? `${errorMessage}\n${e.stack}`
137+
const fullMessage = errorStack
138+
? `${errorMessage}\n${errorStack}`
137139
: errorMessage;
138140
void showAndLogErrorMessage(errorMessage, {
139141
fullMessage
@@ -173,8 +175,9 @@ export function commandRunnerWithProgress<R>(
173175
try {
174176
return await withProgress(progressOptionsWithDefaults, task, ...args);
175177
} catch (e) {
176-
error = e;
177-
const errorMessage = `${e.message || e} (${commandId})`;
178+
const errorMessage = `${getErrorMessage(e) || e} (${commandId})`;
179+
error = e instanceof Error ? e : new Error(errorMessage);
180+
const errorStack = getErrorStack(e);
178181
if (e instanceof UserCancellationException) {
179182
// User has cancelled this action manually
180183
if (e.silent) {
@@ -184,8 +187,8 @@ export function commandRunnerWithProgress<R>(
184187
}
185188
} else {
186189
// Include the full stack in the error log only.
187-
const fullMessage = e.stack
188-
? `${errorMessage}\n${e.stack}`
190+
const fullMessage = errorStack
191+
? `${errorMessage}\n${errorStack}`
189192
: errorMessage;
190193
void showAndLogErrorMessage(errorMessage, {
191194
outputLogger,

extensions/ql-vscode/src/compare/compare-interface.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { getHtmlForWebview, jumpToLocation } from '../interface-utils';
2121
import { transformBqrsResultSet, RawResultSet, BQRSInfo } from '../pure/bqrs-cli-types';
2222
import resultsDiff from './resultsDiff';
2323
import { CompletedLocalQueryInfo } from '../query-results';
24+
import { getErrorMessage } from '../pure/helpers-pure';
2425

2526
interface ComparePair {
2627
from: CompletedLocalQueryInfo;
@@ -70,7 +71,7 @@ export class CompareInterfaceManager extends DisposableObject {
7071
try {
7172
rows = this.compareResults(fromResultSet, toResultSet);
7273
} catch (e) {
73-
message = e.message;
74+
message = getErrorMessage(e);
7475
}
7576

7677
await this.postMessage({

extensions/ql-vscode/src/databaseFetcher.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222
import { logger } from './logging';
2323
import { tmpDir } from './helpers';
2424
import { Credentials } from './authentication';
25-
import { REPO_REGEX } from './pure/helpers-pure';
25+
import { REPO_REGEX, getErrorMessage } from './pure/helpers-pure';
2626

2727
/**
2828
* Prompts a user to fetch a database from a remote location. Database is assumed to be an archive file.
@@ -230,7 +230,7 @@ export async function importArchiveDatabase(
230230
}
231231
return item;
232232
} catch (e) {
233-
if (e.message.includes('unexpected end of file')) {
233+
if (getErrorMessage(e).includes('unexpected end of file')) {
234234
throw new Error('Database is corrupt or too large. Try unzipping outside of VS Code and importing the unzipped folder instead.');
235235
} else {
236236
// delegate
@@ -491,7 +491,7 @@ export async function convertGithubNwoToDatabaseUrl(
491491
return `https://api.github.com/repos/${owner}/${repo}/code-scanning/codeql/databases/${language}`;
492492

493493
} catch (e) {
494-
void logger.log(`Error: ${e.message}`);
494+
void logger.log(`Error: ${getErrorMessage(e)}`);
495495
throw new Error(`Unable to get database for '${githubRepo}'`);
496496
}
497497
}
@@ -596,7 +596,7 @@ export async function convertLgtmUrlToDatabaseUrl(
596596
language,
597597
].join('/')}`;
598598
} catch (e) {
599-
void logger.log(`Error: ${e.message}`);
599+
void logger.log(`Error: ${getErrorMessage(e)}`);
600600
throw new Error(`Invalid LGTM URL: ${lgtmUrl}`);
601601
}
602602
}

extensions/ql-vscode/src/databases-ui.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import {
3838
promptImportLgtmDatabase,
3939
} from './databaseFetcher';
4040
import { CancellationToken } from 'vscode';
41-
import { asyncFilter } from './pure/helpers-pure';
41+
import { asyncFilter, getErrorMessage } from './pure/helpers-pure';
4242
import { Credentials } from './authentication';
4343

4444
type ThemableIconPath = { light: string; dark: string } | string;
@@ -393,7 +393,7 @@ export class DatabaseUI extends DisposableObject {
393393
try {
394394
return await this.chooseAndSetDatabase(true, progress, token);
395395
} catch (e) {
396-
void showAndLogErrorMessage(e.message);
396+
void showAndLogErrorMessage(getErrorMessage(e));
397397
return undefined;
398398
}
399399
};
@@ -461,7 +461,7 @@ export class DatabaseUI extends DisposableObject {
461461
try {
462462
return await this.chooseAndSetDatabase(false, progress, token);
463463
} catch (e) {
464-
void showAndLogErrorMessage(e.message);
464+
void showAndLogErrorMessage(getErrorMessage(e));
465465
return undefined;
466466
}
467467
};
@@ -622,8 +622,7 @@ export class DatabaseUI extends DisposableObject {
622622
} catch (e) {
623623
// rethrow and let this be handled by default error handling.
624624
throw new Error(
625-
`Could not set database to ${path.basename(uri.fsPath)}. Reason: ${e.message
626-
}`
625+
`Could not set database to ${path.basename(uri.fsPath)}. Reason: ${getErrorMessage(e)}`
627626
);
628627
}
629628
};

extensions/ql-vscode/src/databases.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { DisposableObject } from './pure/disposable-object';
1919
import { Logger, logger } from './logging';
2020
import { registerDatabases, Dataset, deregisterDatabases } from './pure/messages';
2121
import { QueryServerClient } from './queryserver-client';
22+
import { getErrorMessage } from './pure/helpers-pure';
2223

2324
/**
2425
* databases.ts
@@ -359,7 +360,7 @@ export class DatabaseItemImpl implements DatabaseItem {
359360
}
360361
catch (e) {
361362
this._contents = undefined;
362-
this._error = e;
363+
this._error = e instanceof Error ? e : new Error(String(e));
363364
throw e;
364365
}
365366
}
@@ -726,7 +727,7 @@ export class DatabaseManager extends DisposableObject {
726727
}
727728
} catch (e) {
728729
// database list had an unexpected type - nothing to be done?
729-
void showAndLogErrorMessage(`Database list loading failed: ${e.message}`);
730+
void showAndLogErrorMessage(`Database list loading failed: ${getErrorMessage(e)}`);
730731
}
731732
});
732733
}
@@ -841,7 +842,7 @@ export class DatabaseManager extends DisposableObject {
841842
void logger.log('Deleting database from filesystem.');
842843
fs.remove(item.databaseUri.fsPath).then(
843844
() => void logger.log(`Deleted '${item.databaseUri.fsPath}'`),
844-
e => void logger.log(`Failed to delete '${item.databaseUri.fsPath}'. Reason: ${e.message}`));
845+
e => void logger.log(`Failed to delete '${item.databaseUri.fsPath}'. Reason: ${getErrorMessage(e)}`));
845846
}
846847

847848
// note that we use undefined as the item in order to reset the entire tree

extensions/ql-vscode/src/extension.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ import {
6565
showInformationMessageWithAction,
6666
tmpDir
6767
} from './helpers';
68-
import { assertNever } from './pure/helpers-pure';
68+
import { asError, assertNever, getErrorMessage } from './pure/helpers-pure';
6969
import { spawnIdeServer } from './ide-server';
7070
import { InterfaceManager } from './interface';
7171
import { WebviewReveal } from './interface-utils';
@@ -489,7 +489,7 @@ async function activateWithInstalledDistribution(
489489
try {
490490
await cmpm.showResults(from, to);
491491
} catch (e) {
492-
void showAndLogErrorMessage(e.message);
492+
void showAndLogErrorMessage(getErrorMessage(e));
493493
}
494494
}
495495

@@ -541,8 +541,9 @@ async function activateWithInstalledDistribution(
541541
// Note we must update the query history view after showing results as the
542542
// display and sorting might depend on the number of results
543543
} catch (e) {
544-
e.message = `Error running query: ${e.message}`;
545-
item.failureReason = e.message;
544+
const err = asError(e);
545+
err.message = `Error running query: ${err.message}`;
546+
item.failureReason = err.message;
546547
throw e;
547548
} finally {
548549
await qhm.refreshTreeView();
@@ -567,11 +568,11 @@ async function activateWithInstalledDistribution(
567568
try {
568569
await cliServer.generateQueryHelp(pathToQhelp, absolutePathToMd);
569570
await commands.executeCommand('markdown.showPreviewToSide', uri);
570-
} catch (err) {
571-
const errorMessage = err.message.includes('Generating qhelp in markdown') ? (
571+
} catch (e) {
572+
const errorMessage = getErrorMessage(e).includes('Generating qhelp in markdown') ? (
572573
`Could not generate markdown from ${pathToQhelp}: Bad formatting in .qhelp file.`
573574
) : `Could not open a preview of the generated file (${absolutePathToMd}).`;
574-
void showAndLogErrorMessage(errorMessage, { fullMessage: `${errorMessage}\n${err}` });
575+
void showAndLogErrorMessage(errorMessage, { fullMessage: `${errorMessage}\n${e}` });
575576
}
576577
}
577578

@@ -694,9 +695,9 @@ async function activateWithInstalledDistribution(
694695
for (const item of quickpick) {
695696
try {
696697
await compileAndRunQuery(false, uri, progress, token, item.databaseItem);
697-
} catch (error) {
698+
} catch (e) {
698699
skippedDatabases.push(item.label);
699-
errors.push(error.message);
700+
errors.push(getErrorMessage(e));
700701
}
701702
}
702703
if (skippedDatabases.length > 0) {

0 commit comments

Comments
 (0)