summaryrefslogtreecommitdiff
path: root/devtools/shared/webconsole/test/unit/test_js_property_provider.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/webconsole/test/unit/test_js_property_provider.js')
-rw-r--r--devtools/shared/webconsole/test/unit/test_js_property_provider.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/devtools/shared/webconsole/test/unit/test_js_property_provider.js b/devtools/shared/webconsole/test/unit/test_js_property_provider.js
index c360cf96d9..53fca33081 100644
--- a/devtools/shared/webconsole/test/unit/test_js_property_provider.js
+++ b/devtools/shared/webconsole/test/unit/test_js_property_provider.js
@@ -145,6 +145,38 @@ function runChecks(dbgObject, dbgEnv) {
do_print("Test that suggestions are not given if there is an hyphen in the chain.");
results = JSPropertyProvider(dbgObject, dbgEnv, "testHyphenated['prop-A'].");
do_check_null(results);
+
+ do_print("Test that expression with optional chaining operator are completed");
+ results = JSPropertyProvider(dbgObject, dbgEnv, "testObject?.prop");
+ test_has_result(results, "propA");
+
+ results = JSPropertyProvider(dbgObject, dbgEnv, "testObject?.propA[0]?.propB?.to");
+ test_has_result(results, "toString");
+
+ results = JSPropertyProvider(dbgObject, dbgEnv, "testObject?.propA?.[0]?.propB?.to");
+ test_has_result(results, "toString");
+
+ results = JSPropertyProvider(dbgObject, dbgEnv, "[1,2,3]?.");
+ test_has_result(results, "indexOf");
+
+ results = JSPropertyProvider(dbgObject, dbgEnv, "'foo'?.");
+ test_has_result(results, "charAt");
+
+ // Check this doesn't throw since `propC` is not defined.
+ results = JSPropertyProvider(dbgObject, dbgEnv, "testObject?.propC?.this?.does?.not?.exist?.d");
+
+ // Test more ternary
+ results = JSPropertyProvider(dbgObject, dbgEnv, "true ? t");
+ test_has_result(results, "testObject");
+
+ results = JSPropertyProvider(dbgObject, dbgEnv, "true ?? t");
+ test_has_result(results, "testObject");
+
+ results = JSPropertyProvider(dbgObject, dbgEnv, "true ? /* comment */ t");
+ test_has_result(results, "testObject");
+
+ results = JSPropertyProvider(dbgObject, dbgEnv, "true?<t");
+ test_has_no_results(results);
}
/**