diff options
-rw-r--r-- | cli/js/diagnostics_util.ts | 41 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 6 | ||||
-rw-r--r-- | cli/tests/unstable_disabled_ts2551.out | 10 | ||||
-rw-r--r-- | cli/tests/unstable_ts2551.ts | 1 |
4 files changed, 49 insertions, 9 deletions
diff --git a/cli/js/diagnostics_util.ts b/cli/js/diagnostics_util.ts index 905a4397c..3e0bfde27 100644 --- a/cli/js/diagnostics_util.ts +++ b/cli/js/diagnostics_util.ts @@ -64,20 +64,43 @@ const unstableDenoGlobalProperties = [ "Permissions", "PermissionStatus", "hostname", + "ppid", ]; function transformMessageText(messageText: string, code: number): string { - if (code === 2339) { - const property = messageText - .replace(/^Property '/, "") - .replace(/' does not exist on type 'typeof Deno'\.$/, ""); - if ( - messageText.endsWith("on type 'typeof Deno'.") && - unstableDenoGlobalProperties.includes(property) - ) { - return `${messageText} 'Deno.${property}' is an unstable API. Did you forget to run with the '--unstable' flag?`; + switch (code) { + case 2339: { + const property = messageText + .replace(/^Property '/, "") + .replace(/' does not exist on type 'typeof Deno'\./, ""); + + if ( + messageText.endsWith("on type 'typeof Deno'.") && + unstableDenoGlobalProperties.includes(property) + ) { + return `${messageText} 'Deno.${property}' is an unstable API. Did you forget to run with the '--unstable' flag?`; + } + break; + } + case 2551: { + const suggestionMessagePattern = / Did you mean '(.+)'\?$/; + const property = messageText + .replace(/^Property '/, "") + .replace(/' does not exist on type 'typeof Deno'\./, "") + .replace(suggestionMessagePattern, ""); + const suggestion = messageText.match(suggestionMessagePattern); + const replacedMessageText = messageText.replace( + suggestionMessagePattern, + "" + ); + if (suggestion && unstableDenoGlobalProperties.includes(property)) { + const suggestedProperty = suggestion[1]; + return `${replacedMessageText} 'Deno.${property}' is an unstable API. Did you forget to run with the '--unstable' flag, or did you mean '${suggestedProperty}'?`; + } + break; } } + return messageText; } diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 935454636..ec871d927 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -2073,6 +2073,12 @@ itest!(unstable_enabled_js { output: "unstable_enabled_js.out", }); +itest!(unstable_disabled_ts2551 { + args: "run --reload unstable_ts2551.ts", + exit_code: 1, + output: "unstable_disabled_ts2551.out", +}); + itest!(_053_import_compression { args: "run --quiet --reload --allow-net 053_import_compression/main.ts", output: "053_import_compression.out", diff --git a/cli/tests/unstable_disabled_ts2551.out b/cli/tests/unstable_disabled_ts2551.out new file mode 100644 index 000000000..bf8e6872b --- /dev/null +++ b/cli/tests/unstable_disabled_ts2551.out @@ -0,0 +1,10 @@ +[WILDCARD] +error: TS2551 [ERROR]: Property 'ppid' does not exist on type 'typeof Deno'. 'Deno.ppid' is an unstable API. Did you forget to run with the '--unstable' flag, or did you mean 'pid'? +console.log(Deno.ppid); + ~~~~ + at [WILDCARD]cli/tests/unstable_ts2551.ts:1:18 + + 'pid' is declared here. + export const pid: number; + ~~~ + at asset:///lib.deno.ns.d.ts:[WILDCARD] diff --git a/cli/tests/unstable_ts2551.ts b/cli/tests/unstable_ts2551.ts new file mode 100644 index 000000000..c9016c56c --- /dev/null +++ b/cli/tests/unstable_ts2551.ts @@ -0,0 +1 @@ +console.log(Deno.ppid); |