summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Bessai <Jan.Bessai@tu-dortmund.de>2015-01-07 10:52:10 +0100
committerJan Bessai <Jan.Bessai@tu-dortmund.de>2015-01-07 10:52:10 +0100
commita622302e2bdf9932648954bf3fb1463b2442209f (patch)
tree9034ae78030c0f6512c6b20ccf1dad6d7c03a0a9
parent3fafbc204fe2ce94e64c6893e74e3855dc875ae8 (diff)
downloadscala-a622302e2bdf9932648954bf3fb1463b2442209f.tar.gz
scala-a622302e2bdf9932648954bf3fb1463b2442209f.tar.bz2
scala-a622302e2bdf9932648954bf3fb1463b2442209f.zip
SI-9057 - fix `showCode` to put backticks around names including dots
Missing backticks cause the parser to treat names as paths, which is obviously invalid. A unit test is included.
-rw-r--r--src/reflect/scala/reflect/internal/Printers.scala3
-rw-r--r--test/junit/scala/reflect/internal/PrintersTest.scala2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Printers.scala b/src/reflect/scala/reflect/internal/Printers.scala
index c4953b2c1f..98b2c48379 100644
--- a/src/reflect/scala/reflect/internal/Printers.scala
+++ b/src/reflect/scala/reflect/internal/Printers.scala
@@ -546,10 +546,11 @@ trait Printers extends api.Printers { self: SymbolTable =>
import Chars._
val decName = name.decoded
val bslash = '\\'
+ val isDot = (x: Char) => x == '.'
val brackets = List('[',']','(',')','{','}')
def addBackquotes(s: String) =
- if (decoded && (decName.exists(ch => brackets.contains(ch) || isWhitespace(ch)) ||
+ if (decoded && (decName.exists(ch => brackets.contains(ch) || isWhitespace(ch) || isDot(ch)) ||
(name.isOperatorName && decName.exists(isOperatorPart) && decName.exists(isScalaLetter) && !decName.contains(bslash))))
s"`$s`" else s
diff --git a/test/junit/scala/reflect/internal/PrintersTest.scala b/test/junit/scala/reflect/internal/PrintersTest.scala
index 7043c26d5e..9bfe6eecb8 100644
--- a/test/junit/scala/reflect/internal/PrintersTest.scala
+++ b/test/junit/scala/reflect/internal/PrintersTest.scala
@@ -125,6 +125,8 @@ trait BasePrintTests {
@Test def testName19 = assertPrintedCode("""class `class`""")
@Test def testName20 = assertPrintedCode("""class `test name`""")
+
+ @Test def testName21 = assertPrintedCode("""class `test.name`""")
@Test def testIfExpr1 = assertResultCode(code = sm"""
|val a = 1