aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst
diff options
context:
space:
mode:
authorReynold Xin <rxin@databricks.com>2015-07-28 00:52:26 -0700
committerReynold Xin <rxin@databricks.com>2015-07-28 00:52:26 -0700
commit15724fac569258d2a149507d8c767d0de0ae8306 (patch)
tree1afcd76682ae0fae7e9ec156ec048c9d0b89757b /sql/catalyst
parentfc3bd96bc3e4a1a2a1eb9b982b3468abd137e395 (diff)
downloadspark-15724fac569258d2a149507d8c767d0de0ae8306.tar.gz
spark-15724fac569258d2a149507d8c767d0de0ae8306.tar.bz2
spark-15724fac569258d2a149507d8c767d0de0ae8306.zip
[SPARK-9394][SQL] Handle parentheses in CodeFormatter.
Our CodeFormatter currently does not handle parentheses, and as a result in code dump, we see code formatted this way: ``` foo( a, b, c) ``` With this patch, it is formatted this way: ``` foo( a, b, c) ``` Author: Reynold Xin <rxin@databricks.com> Closes #7712 from rxin/codeformat-parentheses and squashes the following commits: c2b1c5f [Reynold Xin] Took square bracket out 3cfb174 [Reynold Xin] Code review feedback. 91f5bb1 [Reynold Xin] [SPARK-9394][SQL] Handle parentheses in CodeFormatter.
Diffstat (limited to 'sql/catalyst')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatter.scala8
-rw-r--r--sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatterSuite.scala30
2 files changed, 34 insertions, 4 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatter.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatter.scala
index 2087cc7f10..c98182c96b 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatter.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatter.scala
@@ -18,8 +18,7 @@
package org.apache.spark.sql.catalyst.expressions.codegen
/**
- * An utility class that indents a block of code based on the curly braces.
- *
+ * An utility class that indents a block of code based on the curly braces and parentheses.
* This is used to prettify generated code when in debug mode (or exceptions).
*
* Written by Matei Zaharia.
@@ -35,11 +34,12 @@ private class CodeFormatter {
private var indentString = ""
private def addLine(line: String): Unit = {
- val indentChange = line.count(_ == '{') - line.count(_ == '}')
+ val indentChange =
+ line.count(c => "({".indexOf(c) >= 0) - line.count(c => ")}".indexOf(c) >= 0)
val newIndentLevel = math.max(0, indentLevel + indentChange)
// Lines starting with '}' should be de-indented even if they contain '{' after;
// in addition, lines ending with ':' are typically labels
- val thisLineIndent = if (line.startsWith("}") || line.endsWith(":")) {
+ val thisLineIndent = if (line.startsWith("}") || line.startsWith(")") || line.endsWith(":")) {
" " * (indentSize * (indentLevel - 1))
} else {
indentString
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatterSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatterSuite.scala
index 478702fea6..46daa3eb8b 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatterSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeFormatterSuite.scala
@@ -73,4 +73,34 @@ class CodeFormatterSuite extends SparkFunSuite {
|}
""".stripMargin
}
+
+ testCase("if else on the same line") {
+ """
+ |class A {
+ | if (c) {duh;} else {boo;}
+ |}
+ """.stripMargin
+ }{
+ """
+ |class A {
+ | if (c) {duh;} else {boo;}
+ |}
+ """.stripMargin
+ }
+
+ testCase("function calls") {
+ """
+ |foo(
+ |a,
+ |b,
+ |c)
+ """.stripMargin
+ }{
+ """
+ |foo(
+ | a,
+ | b,
+ | c)
+ """.stripMargin
+ }
}