Index: third_party/WebKit/Source/devtools/front_end/components/ExecutionContextSelector.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/components/ExecutionContextSelector.js b/third_party/WebKit/Source/devtools/front_end/components/ExecutionContextSelector.js |
index 0573f25821a0397dcc42abb781b457ca9949d3bc..d1aa1b60bb4188cdab39592fe51860fe69bb172f 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/components/ExecutionContextSelector.js |
+++ b/third_party/WebKit/Source/devtools/front_end/components/ExecutionContextSelector.js |
@@ -204,13 +204,24 @@ WebInspector.ExecutionContextSelector.completionsForTextPromptInCurrentContext = |
} |
// Pass less stop characters to rangeOfWord so the range will be a more complete expression. |
- var expressionRange = wordRange.startContainer.rangeOfWord(wordRange.startOffset, " =:({;,!+-*/&|^<>", proxyElement, "backward"); |
+ var expressionRange = wordRange.startContainer.rangeOfWord(wordRange.startOffset, " =:({;,!+-*/&|^<>`", proxyElement, "backward"); |
var expressionString = expressionRange.toString(); |
- // The "[" is also a stop character, except when it's the last character of the expression. |
- var pos = expressionString.lastIndexOf("[", expressionString.length - 2); |
- if (pos !== -1) |
- expressionString = expressionString.substr(pos + 1); |
+ var bracketCount = 0; |
+ var index = expressionString.length - 1; |
+ while (index >= 0) { |
+ var character = expressionString.charAt(index); |
+ if (character === "]") |
+ bracketCount++; |
+ // Allow an open bracket at the end for property completion. |
+ if (character === "[" && index < expressionString.length - 1) { |
+ bracketCount--; |
+ if (bracketCount < 0) |
+ break; |
+ } |
+ index--; |
+ } |
+ expressionString = expressionString.substring(index + 1); |
var prefix = wordRange.toString(); |
executionContext.completionsForExpression(expressionString, text, cursorOffset, prefix, force, completionsReadyCallback); |