Skip to content
This repository was archived by the owner on Sep 3, 2020. It is now read-only.

Commit 6738690

Browse files
committed
Add space before return type of method that ends with special sign
Fixes #1002267
1 parent 9564379 commit 6738690

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

org.scala-refactoring.library/src/main/scala/scala/tools/refactoring/sourcegen/ReusingPrinter.scala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,8 +1005,13 @@ trait ReusingPrinter extends TreePrintingTraversals with AbstractPrinter {
10051005

10061006
val noEqualNeeded = resultType == EmptyFragment || isAbstract
10071007

1008+
val resultType2 = {
1009+
def addLeadingSpace = name.isOperatorName || name.endsWith('_')
1010+
if (resultType != EmptyFragment && addLeadingSpace) Layout(" ") ++ resultType else resultType
1011+
}
1012+
10081013
if (noEqualNeeded && !hasEqualInSource) {
1009-
l ++ modsAndName ++ typeParameters ++ parameters ++ resultType ++ body ++ r
1014+
l ++ modsAndName ++ typeParameters ++ parameters ++ resultType2 ++ body ++ r
10101015
} else {
10111016
val openingBrace = keepOpeningBrace(tree, tpt, rhs)
10121017
// In case a Unit return type is added to a method like `def f {}`, we
@@ -1018,7 +1023,7 @@ trait ReusingPrinter extends TreePrintingTraversals with AbstractPrinter {
10181023
else
10191024
modsAndName
10201025

1021-
l ++ modsAndName2 ++ typeParameters ++ parameters ++ resultType ++ Requisite.anywhere("=", " = ") ++ openingBrace ++ body ++ r
1026+
l ++ modsAndName2 ++ typeParameters ++ parameters ++ resultType2 ++ Requisite.anywhere("=", " = ") ++ openingBrace ++ body ++ r
10221027
}
10231028
}
10241029

org.scala-refactoring.library/src/test/scala/scala/tools/refactoring/tests/sourcegen/ReusingPrinterTest.scala

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,25 @@ class ReusingPrinterTest extends TestHelper with SilentTracing {
204204
d.copy(tpt = newTpt) replaces d
205205
}}}
206206

207+
@Test
208+
def add_space_before_return_type_of_def_when_it_ends_with_special_sign() = """
209+
package add_space_before_return_type_of_def_when_it_ends_with_special_sign
210+
object X {
211+
def foo_ = 0
212+
def ++ = 0
213+
}
214+
""" becomes """
215+
package add_space_before_return_type_of_def_when_it_ends_with_special_sign
216+
object X {
217+
def foo_ : Int = 0
218+
def ++ : Int = 0
219+
}
220+
""" after topdown { matchingChildren { transform {
221+
case d @ DefDef(_, _, _, _, tpt: TypeTree, _) =>
222+
val newTpt = tpt setOriginal mkReturn(List(tpt.tpe.typeSymbol))
223+
d.copy(tpt = newTpt) replaces d
224+
}}}
225+
207226
@Test
208227
def add_override_flag() = """
209228
package add_override_flag

0 commit comments

Comments
 (0)