summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/js/diagnostics_util.ts41
-rw-r--r--cli/tests/integration_tests.rs6
-rw-r--r--cli/tests/unstable_disabled_ts2551.out10
-rw-r--r--cli/tests/unstable_ts2551.ts1
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);