Title: [181205] trunk/Source/WebInspectorUI
Revision
181205
Author
commit-qu...@webkit.org
Date
2015-03-06 22:10:36 -0800 (Fri, 06 Mar 2015)

Log Message

Web Inspector: JS Pretty Printing: "case" or "default" outside of switch causes unbalanced indentation
https://bugs.webkit.org/show_bug.cgi?id=142428

Patch by Joseph Pecoraro <pecor...@apple.com> on 2015-03-06
Reviewed by Timothy Hatcher.

* Tools/PrettyPrinting/CodeMirrorFormatters.js:
* UserInterface/Views/CodeMirrorFormatters.js:
Fix "case" and "default" indentation rules to only happen inside a switch.

* Tools/PrettyPrinting/js-tests/switch-case-default-expected.js:
* Tools/PrettyPrinting/js-tests/switch-case-default.js:
Add tests for "case" and "default" nested inside and outside of switches.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (181204 => 181205)


--- trunk/Source/WebInspectorUI/ChangeLog	2015-03-07 04:19:07 UTC (rev 181204)
+++ trunk/Source/WebInspectorUI/ChangeLog	2015-03-07 06:10:36 UTC (rev 181205)
@@ -1,5 +1,20 @@
 2015-03-06  Joseph Pecoraro  <pecor...@apple.com>
 
+        Web Inspector: JS Pretty Printing: "case" or "default" outside of switch causes unbalanced indentation
+        https://bugs.webkit.org/show_bug.cgi?id=142428
+
+        Reviewed by Timothy Hatcher.
+
+        * Tools/PrettyPrinting/CodeMirrorFormatters.js:
+        * UserInterface/Views/CodeMirrorFormatters.js:
+        Fix "case" and "default" indentation rules to only happen inside a switch.
+
+        * Tools/PrettyPrinting/js-tests/switch-case-default-expected.js:
+        * Tools/PrettyPrinting/js-tests/switch-case-default.js:
+        Add tests for "case" and "default" nested inside and outside of switches.
+
+2015-03-06  Joseph Pecoraro  <pecor...@apple.com>
+
         Web Inspector: ES6: Improved Support for Iterator Objects
         https://bugs.webkit.org/show_bug.cgi?id=142420
 

Modified: trunk/Source/WebInspectorUI/Tools/PrettyPrinting/CodeMirrorFormatters.js (181204 => 181205)


--- trunk/Source/WebInspectorUI/Tools/PrettyPrinting/CodeMirrorFormatters.js	2015-03-07 04:19:07 UTC (rev 181204)
+++ trunk/Source/WebInspectorUI/Tools/PrettyPrinting/CodeMirrorFormatters.js	2015-03-07 06:10:36 UTC (rev 181205)
@@ -137,7 +137,13 @@
 
     indentAfterToken: function(lastToken, lastContent, token, state, content, isComment)
     {
-        return content === "{" || content === "case" || content === "default";
+        if (content === "{")
+            return true;
+
+        if (content === "case" || content === "default")
+            return state.lexical.type === "}" && state.lexical.prev && state.lexical.prev.type === "form"; // Switch case/default.
+
+        return false;
     },
 
     newlineBeforeToken: function(lastToken, lastContent, token, state, content, isComment)

Modified: trunk/Source/WebInspectorUI/Tools/PrettyPrinting/js-tests/switch-case-default-expected.js (181204 => 181205)


--- trunk/Source/WebInspectorUI/Tools/PrettyPrinting/js-tests/switch-case-default-expected.js	2015-03-07 04:19:07 UTC (rev 181204)
+++ trunk/Source/WebInspectorUI/Tools/PrettyPrinting/js-tests/switch-case-default-expected.js	2015-03-07 06:10:36 UTC (rev 181205)
@@ -1,8 +1,17 @@
+function Ctor1() {
+    this.case = 1;
+    this.something = 2;
+}
+function Ctor2() {
+    this.default = 1;
+    this.something = 2;
+}
+
 switch (x) {
 case "abc":
-    return 1;
+    return this.default;
 case "def":
-    return 2;
+    return this.case;
 default:
     return 3;
 }

Modified: trunk/Source/WebInspectorUI/Tools/PrettyPrinting/js-tests/switch-case-default.js (181204 => 181205)


--- trunk/Source/WebInspectorUI/Tools/PrettyPrinting/js-tests/switch-case-default.js	2015-03-07 04:19:07 UTC (rev 181204)
+++ trunk/Source/WebInspectorUI/Tools/PrettyPrinting/js-tests/switch-case-default.js	2015-03-07 06:10:36 UTC (rev 181205)
@@ -1,5 +1,8 @@
-switch(x){case "abc":return 1;case "def":return 2;default:return 3;}
+function Ctor1(){this.case=1;this.something=2;}
+function Ctor2(){this.default=1;this.something=2;}
 
+switch(x){case "abc":return this.default;case "def":return this.case;default:return 3;}
+
 switch(x){
   case "abc":
     return 1;

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CodeMirrorFormatters.js (181204 => 181205)


--- trunk/Source/WebInspectorUI/UserInterface/Views/CodeMirrorFormatters.js	2015-03-07 04:19:07 UTC (rev 181204)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CodeMirrorFormatters.js	2015-03-07 06:10:36 UTC (rev 181205)
@@ -137,7 +137,13 @@
 
     indentAfterToken: function(lastToken, lastContent, token, state, content, isComment)
     {
-        return content === "{" || content === "case" || content === "default";
+        if (content === "{")
+            return true;
+
+        if (content === "case" || content === "default")
+            return state.lexical.type === "}" && state.lexical.prev && state.lexical.prev.type === "form"; // Switch case/default.
+
+        return false;
     },
 
     newlineBeforeToken: function(lastToken, lastContent, token, state, content, isComment)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to