Web Inspector: add round braces to javascript tokenizer
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Feb 2013 17:42:19 +0000 (17:42 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 4 Feb 2013 17:42:19 +0000 (17:42 +0000)
https://bugs.webkit.org/show_bug.cgi?id=108692

Patch by Andrey Lushnikov <lushnikov@chromium.org> on 2013-02-04
Reviewed by Pavel Feldman.

Source/WebCore:

Change SourceJavascriptTokenizer.re2js file to produce "brace-start"
and "brace-end" tokens for round braces.
Regenerate SourceJavascriptTokenizer.js according to new re2js file.

No new tests: no change in behaviour.

* inspector/front-end/SourceJavaScriptTokenizer.js:
(WebInspector.SourceJavaScriptTokenizer.prototype.nextToken):
* inspector/front-end/SourceJavaScriptTokenizer.re2js:

LayoutTests:

Updated test expectations to correspond to new tokens "brace-start"
and "brace-end" in javascript tokenizer.

* inspector/editor/highlighter-basics-expected.txt:
* inspector/editor/text-editor-long-line-expected.txt:
* inspector/syntax-highlight-html-expected.txt:
* inspector/syntax-highlight-javascript-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@141774 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/inspector/editor/highlighter-basics-expected.txt
LayoutTests/inspector/editor/text-editor-long-line-expected.txt
LayoutTests/inspector/syntax-highlight-html-expected.txt
LayoutTests/inspector/syntax-highlight-javascript-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/inspector/front-end/SourceJavaScriptTokenizer.js
Source/WebCore/inspector/front-end/SourceJavaScriptTokenizer.re2js

index de0e4342dd87f059be708f689acb68dbf500de37..bf20c14c23625e2a6e4872cb70919634c1d7ec80 100644 (file)
@@ -1,3 +1,18 @@
+2013-02-04  Andrey Lushnikov  <lushnikov@chromium.org>
+
+        Web Inspector: add round braces to javascript tokenizer
+        https://bugs.webkit.org/show_bug.cgi?id=108692
+
+        Reviewed by Pavel Feldman.
+
+        Updated test expectations to correspond to new tokens "brace-start"
+        and "brace-end" in javascript tokenizer.
+
+        * inspector/editor/highlighter-basics-expected.txt:
+        * inspector/editor/text-editor-long-line-expected.txt:
+        * inspector/syntax-highlight-html-expected.txt:
+        * inspector/syntax-highlight-javascript-expected.txt:
+
 2013-02-04  Sami Kyostila  <skyostil@chromium.org>
 
         Disable -webkit-overflow-scrolling CSS attribute on Chromium
index a6f1489f8b550d18386010e5fba2ed3e1099083a..c19ad63db860774a213c5336ae0c1139ed762ae1 100644 (file)
@@ -91,7 +91,7 @@ After highlighting up to the end
 15 :  * line #6 : javascript-ident[3-7] javascript-number[9-10]
 16 :  * line #7 : javascript-ident[3-7] javascript-number[9-10]
 17 :  * line #8 : javascript-ident[3-7] javascript-number[9-10]
-18 :  * var a = new A(); //*/ : javascript-keyword[3-6] javascript-ident[7-8] javascript-keyword[11-14] javascript-ident[15-16] javascript-comment[20-24]
+18 :  * var a = new A(); //*/ : javascript-keyword[3-6] javascript-ident[7-8] javascript-keyword[11-14] javascript-ident[15-16] brace-start[16-17] brace-end[17-18] javascript-comment[20-24]
 19 : some text : javascript-ident[0-4] javascript-ident[5-9]
 20 :  :
 
@@ -113,7 +113,7 @@ After changing the first line, and updating the highlights for the first 5 lines
 15 :  * line #6 : javascript-ident[3-7] javascript-number[9-10]
 16 :  * line #7 : javascript-ident[3-7] javascript-number[9-10]
 17 :  * line #8 : javascript-ident[3-7] javascript-number[9-10]
-18 :  * var a = new A(); //*/ : javascript-keyword[3-6] javascript-ident[7-8] javascript-keyword[11-14] javascript-ident[15-16] javascript-comment[20-24]
+18 :  * var a = new A(); //*/ : javascript-keyword[3-6] javascript-ident[7-8] javascript-keyword[11-14] javascript-ident[15-16] brace-start[16-17] brace-end[17-18] javascript-comment[20-24]
 19 : some text : javascript-ident[0-4] javascript-ident[5-9]
 20 :  :
 
index 80cae0e2147c80f46e75f9080ba9cca7f17cc758..004085c721634abcfedfe00c9a4c63b92a1dfea6 100644 (file)
@@ -2,5 +2,5 @@ This test checks that text editor doesn't paint highlight for too long lines.
 
 
 <div class="inner-container" tabindex="0">
-<div class="webkit-line-content"><span class="webkit-javascript-comment">/* START */</span> <span class="webkit-javascript-keyword">this</span>.<span class="webkit-javascript-ident">field</span> = <span class="webkit-javascript-string">"foo"</span>; <span class="webkit-javascript-comment">/* comment */</span> <span class="webkit-javascript-keyword">function</span> <span class="webkit-javascript-ident">bar</span>() <span class="webkit-block-start">{</span> <span class="webkit-javascript-keyword">return</span> <span class="webkit-javascript-keyword">null</span>; <span class="webkit-block-end">}</span><span class="webkit-javascript-keyword">this</span>.<span class="webkit-javascript-ident">field</span> = <span class="webkit-javascript-string">"foo"</span>; <span class="webkit-javascript-comment">/* comment */</span> function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }/* FINISH */</div></div>
+<div class="webkit-line-content"><span class="webkit-javascript-comment">/* START */</span> <span class="webkit-javascript-keyword">this</span>.<span class="webkit-javascript-ident">field</span> = <span class="webkit-javascript-string">"foo"</span>; <span class="webkit-javascript-comment">/* comment */</span> <span class="webkit-javascript-keyword">function</span> <span class="webkit-javascript-ident">bar</span><span class="webkit-brace-start">(</span><span class="webkit-brace-end">)</span> <span class="webkit-block-start">{</span> <span class="webkit-javascript-keyword">return</span> <span class="webkit-javascript-keyword">null</span>; <span class="webkit-block-end">}</span><span class="webkit-javascript-keyword">this</span>.<span class="webkit-javascript-ident">field</span> = <span class="webkit-javascript-string">"foo"</span>; <span class="webkit-javascript-comment">/* comment */</span> function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }this.field = "foo"; /* comment */ function bar() { return null; }/* FINISH */</div></div>
 
index a7ef2237c3bb7b6166fb4eccf7f3cf303625b7d9..00a79f5c2f876116751dc8a7a8ef2a69c1735b71 100644 (file)
@@ -7,5 +7,5 @@ Tests that SourceHTMLTokenizer detects the tokens.
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">: webkit-html-doctype,webkit-html-doctype,webkit-html-doctype
 <!--div><div foobar-->: webkit-html-comment
 <script></script><!--div-->: webkit-html-tag,webkit-html-tag,webkit-html-tag,webkit-html-tag,webkit-html-comment
-<script type="text/javascript">document.write('<script type="text/javascript"></' + 'script>');</script>: webkit-html-tag,*,webkit-html-attribute-name,*,webkit-html-attribute-value,webkit-html-tag,webkit-javascript-ident,*,webkit-javascript-ident,*,webkit-javascript-string,*,webkit-javascript-string,*,webkit-html-tag,webkit-html-tag
+<script type="text/javascript">document.write('<script type="text/javascript"></' + 'script>');</script>: webkit-html-tag,*,webkit-html-attribute-name,*,webkit-html-attribute-value,webkit-html-tag,webkit-javascript-ident,*,webkit-javascript-ident,webkit-brace-start,webkit-javascript-string,*,webkit-javascript-string,webkit-brace-end,*,webkit-html-tag,webkit-html-tag
 
index 2f23036673e34875b537fdb0908c2160b7ccd9c8..04b3a82384d7c1f356f3145c4506c7b61f0265fe 100644 (file)
@@ -3,10 +3,10 @@ Tests that JavaScriptSourceSyntaxHighlighter detects the tokens.
 return'foo';: webkit-javascript-keyword,webkit-javascript-string,*
 /\//g: webkit-javascript-regexp
 //ig';: webkit-javascript-comment
-1 / 2 + /a/.test('a');: webkit-javascript-number,*,webkit-javascript-number,*,webkit-javascript-regexp,*,webkit-javascript-ident,*,webkit-javascript-string,*
+1 / 2 + /a/.test('a');: webkit-javascript-number,*,webkit-javascript-number,*,webkit-javascript-regexp,*,webkit-javascript-ident,webkit-brace-start,webkit-javascript-string,webkit-brace-end,*
 "\"/".length / 2: webkit-javascript-string,*,webkit-javascript-ident,*,webkit-javascript-number
 var foo = 1/*/***//2: webkit-javascript-keyword,*,webkit-javascript-ident,*,webkit-javascript-number,webkit-javascript-comment,*,webkit-javascript-number
-/*comment*//.*/.test('a'): webkit-javascript-comment,webkit-javascript-regexp,*,webkit-javascript-ident,*,webkit-javascript-string,*
+/*comment*//.*/.test('a'): webkit-javascript-comment,webkit-javascript-regexp,*,webkit-javascript-ident,webkit-brace-start,webkit-javascript-string,webkit-brace-end
 'f\
 oo';: webkit-javascript-string,,webkit-javascript-string,*
 '\f\b\t';: webkit-javascript-string,*
index 73b5501fbee5fc47457e3754c3f9a152d8416f13..969e2a0bb95f6f3ec09d437d7528b737ba9919e9 100644 (file)
@@ -1,3 +1,20 @@
+2013-02-04  Andrey Lushnikov  <lushnikov@chromium.org>
+
+        Web Inspector: add round braces to javascript tokenizer
+        https://bugs.webkit.org/show_bug.cgi?id=108692
+
+        Reviewed by Pavel Feldman.
+
+        Change SourceJavascriptTokenizer.re2js file to produce "brace-start"
+        and "brace-end" tokens for round braces.
+        Regenerate SourceJavascriptTokenizer.js according to new re2js file.
+
+        No new tests: no change in behaviour.
+
+        * inspector/front-end/SourceJavaScriptTokenizer.js:
+        (WebInspector.SourceJavaScriptTokenizer.prototype.nextToken):
+        * inspector/front-end/SourceJavaScriptTokenizer.re2js:
+
 2013-02-04  Pavel Feldman  <pfeldman@chromium.org>
 
         Web Inspector: take page scale factor into account when updating overlay.
index 1e0e3e8e04e99f43fb38bc5b98eca16bc888c13b..64bcd426374b927b8524c775d30989f4634394fa 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Mon Jul  9 18:23:02 2012 */
+/* Generated by re2c 0.13.5 on Sun Feb  3 00:54:08 2013 */
 /*
  * Copyright (C) 2009 Google Inc. All rights reserved.
  *
@@ -40,7 +40,7 @@ re2c -isc Source/WebCore/inspector/front-end/SourceJavaScriptTokenizer.re2js \
   | sed 's|{ gotoCase = \([^; continue; };]*\)|{ gotoCase = \1; continue; }|' \
   | sed 's|yych <= \(0x[0-9a-fA-F]*\)|yych \<\= String.fromCharCode(\1)|' \
   | sed 's|unsigned\ int|var|' \
-  | sed 's|var\ yych|case 1: case 1: var yych|'
+  | sed 's|var\ yych|case 1: case 1: var yych|' > Source/WebCore/inspector/front-end/SourceJavaScriptTokenizer.js
  */
 
 /**
@@ -250,6 +250,8 @@ case 18:
                         this.tokenType = "block-start";
                     else if (token === "}")
                         this.tokenType = "block-end";
+                    else if (token === "(")
+                        this.tokenType = "brace-start";
                     else this.tokenType = null;
                     return cursor;
                 }
@@ -292,7 +294,7 @@ case 25:
             { gotoCase = 18; continue; };
 case 26:
             ++cursor;
-            { this.tokenType = null; return cursor; }
+            { this.tokenType = "brace-end"; return cursor; }
 case 28:
             yych = this._charAt(++cursor);
             if (yych == '=') { gotoCase = 43; continue; };
@@ -1189,6 +1191,8 @@ case 139:
                         this.tokenType = "block-start";
                     else if (token === "}")
                         this.tokenType = "block-end";
+                    else if (token === "(")
+                        this.tokenType = "brace-start";
                     else this.tokenType = null;
                     return cursor;
                 }
@@ -1233,7 +1237,7 @@ case 146:
 case 147:
             ++cursor;
             this.setLexCondition(this._lexConditions.DIV);
-            { this.tokenType = null; return cursor; }
+            { this.tokenType = "brace-end"; return cursor; }
 case 149:
             yych = this._charAt(++cursor);
             if (yych == '=') { gotoCase = 163; continue; };
index 29345d125d4d48ac58cc6dab0e99b667ac371fb8..94cf3abeb68d90e9227ee5a1d232b14dd8018e02 100644 (file)
@@ -177,7 +177,7 @@ WebInspector.SourceJavaScriptTokenizer.prototype = {
                         this.tokenType = "javascript-ident";
                     return cursor;
                 }
-                <DIV,NODIV> RightParen => DIV { this.tokenType = null; return cursor; }
+                <DIV,NODIV> RightParen => DIV { this.tokenType = "brace-end"; return cursor; }
                 <DIV,NODIV> Punctuation => NODIV
                 {
                     var token = this._line.charAt(cursorOnEnter);
@@ -185,6 +185,8 @@ WebInspector.SourceJavaScriptTokenizer.prototype = {
                         this.tokenType = "block-start";
                     else if (token === "}")
                         this.tokenType = "block-end";
+                    else if (token === "(")
+                        this.tokenType = "brace-start";
                     else this.tokenType = null;
                     return cursor;
                 }