diff --git a/toolkit/components/console/hudservice/HUDService.jsm b/toolkit/components/console/hudservice/HUDService.jsm index b13fa51dbe00..31969dd8de30 100644 --- a/toolkit/components/console/hudservice/HUDService.jsm +++ b/toolkit/components/console/hudservice/HUDService.jsm @@ -3696,7 +3696,7 @@ function findCompletionBeginning(aStr) } else if (CLOSE_BODY.indexOf(c) != -1) { var last = bodyStack.pop(); - if (OPEN_CLOSE_BODY[last.token] != c) { + if (!last || OPEN_CLOSE_BODY[last.token] != c) { return { err: "syntax error" }; diff --git a/toolkit/components/console/hudservice/tests/browser/Makefile.in b/toolkit/components/console/hudservice/tests/browser/Makefile.in index 84a4de93162a..7f0fedb88ef3 100644 --- a/toolkit/components/console/hudservice/tests/browser/Makefile.in +++ b/toolkit/components/console/hudservice/tests/browser/Makefile.in @@ -99,6 +99,7 @@ _BROWSER_TEST_FILES = \ browser_webconsole_bug_588342_document_focus.js \ browser_webconsole_bug_595934_message_categories.js \ browser_webconsole_bug_601352_scroll.js \ + browser_webconsole_bug_592442_closing_brackets.js \ head.js \ $(NULL) diff --git a/toolkit/components/console/hudservice/tests/browser/browser_webconsole_bug_592442_closing_brackets.js b/toolkit/components/console/hudservice/tests/browser/browser_webconsole_bug_592442_closing_brackets.js new file mode 100644 index 000000000000..74ee2155835c --- /dev/null +++ b/toolkit/components/console/hudservice/tests/browser/browser_webconsole_bug_592442_closing_brackets.js @@ -0,0 +1,43 @@ +/* vim:set ts=2 sw=2 sts=2 et: */ +/* ***** BEGIN LICENSE BLOCK ***** + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + * + * Contributor(s): + * Julian Viereck + * Patrick Walton + * Mihai Șucan + * + * ***** END LICENSE BLOCK ***** */ + +// Tests that, when the user types an extraneous closing bracket, no error +// appears. + +function test() { + addTab("data:text/html,test for bug 592442"); + browser.addEventListener("load", testExtraneousClosingBrackets, true); +} + +function testExtraneousClosingBrackets(aEvent) { + browser.removeEventListener(aEvent.type, arguments.callee, true); + + openConsole(); + let hudId = HUDService.displaysIndex()[0]; + let jsterm = HUDService.hudWeakReferences[hudId].get().jsterm; + + jsterm.setInputValue("document.getElementById)"); + + let error = false; + try { + jsterm.complete(jsterm.COMPLETE_HINT_ONLY); + } + catch (ex) { + error = true; + } + + ok(!error, "no error was thrown when an extraneous bracket was inserted"); + + HUDService.deactivateHUDForContext(tab); + finishTest(); +} +