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

Commit 620d605

Browse files
committed
Merge pull request #64 from sschaef/add-modifiers-to-lazy-vals
Add modifiers to lazy vals
2 parents ceef505 + 980bf84 commit 620d605

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,9 @@ trait LayoutHelper {
151151
case (p: ValOrDefDef, c: ModifierTree) =>
152152
NoLayout NoLayout
153153

154+
case (p: ValOrDefDef, c) if p.symbol.isLazy =>
155+
NoLayout NoLayout
156+
154157
case (p: ValOrDefDef, c) =>
155158
layout(p.pos.start, p.namePosition.start) NoLayout
156159

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

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.tools.refactoring.tests
22
package sourcegen
33

44
import scala.reflect.internal.util.BatchSourceFile
5+
import scala.tools.nsc.ast.parser.Tokens
56
import scala.tools.refactoring.common.SilentTracing
67
import scala.tools.refactoring.sourcegen.EmptyFragment
78
import scala.tools.refactoring.sourcegen.Fragment
@@ -44,9 +45,11 @@ class ReusingPrinterTest extends TestHelper with SilentTracing {
4445

4546
@Test
4647
def add_return_type_to_def() = """
48+
package add_return_type_to_def
4749
object X {
4850
def value = new java.io.File("")
4951
}""" becomes """
52+
package add_return_type_to_def
5053
object X {
5154
def value: java.io.File = new java.io.File("")
5255
}""" after topdown { matchingChildren { transform {
@@ -57,9 +60,11 @@ class ReusingPrinterTest extends TestHelper with SilentTracing {
5760

5861
@Test
5962
def add_return_type_to_val() = """
63+
package add_return_type_to_val
6064
object X {
6165
val value = new java.io.File("")
6266
}""" becomes """
67+
package add_return_type_to_val
6368
object X {
6469
val value: java.io.File = new java.io.File("")
6570
}
@@ -71,9 +76,11 @@ class ReusingPrinterTest extends TestHelper with SilentTracing {
7176

7277
@Test
7378
def add_return_type_to_var() = """
79+
package add_return_type_to_var
7480
object X {
7581
var variable = new java.io.File("")
7682
}""" becomes """
83+
package add_return_type_to_var
7784
object X {
7885
var variable: java.io.File = new java.io.File("")
7986
}
@@ -85,13 +92,15 @@ class ReusingPrinterTest extends TestHelper with SilentTracing {
8592

8693
@Test
8794
def add_override_flag() = """
95+
package add_override_flag
8896
trait T {
8997
def meth: Int
9098
}
9199
trait TT extends T {
92-
override def meth = 0
100+
def meth = 0
93101
}
94102
""" becomes """
103+
package add_override_flag
95104
trait T {
96105
def meth: Int
97106
}
@@ -109,15 +118,45 @@ class ReusingPrinterTest extends TestHelper with SilentTracing {
109118
}
110119
}}
111120

121+
@Test
122+
def add_override_final_flags_to_lazy_val() = """
123+
package add_override_final_flags_to_lazy_val
124+
trait T {
125+
def meth: Int
126+
}
127+
trait TT extends T {
128+
lazy val meth = 0
129+
}
130+
""" becomes """
131+
package add_override_final_flags_to_lazy_val
132+
trait T {
133+
def meth: Int
134+
}
135+
trait TT extends T {
136+
override final lazy val meth = 0
137+
}
138+
""" after topdown { matchingChildren {
139+
filter {
140+
case d: DefDef =>
141+
d.symbol.isLazy
142+
} &>
143+
transform {
144+
case d: DefDef =>
145+
d.copy(mods = d.mods.withFlag(Flag.OVERRIDE).withFlag(Flag.FINAL).withFlag(Flag.LAZY).withFlag(Tokens.VAL)) replaces d
146+
}
147+
}}
148+
112149
@Test
113150
def add_override_protected_abstract_flag() = """
151+
package add_override_protected_abstract_flag
114152
trait T {
115153
protected def meth: Int = 0
116154
}
117155
trait TT extends T {
118156
def meth = super.meth + 0
119157
}
120158
""" becomes """
159+
package add_override_protected_abstract_flag
121160
trait T {
122161
protected def meth: Int = 0
123162
}
@@ -137,8 +176,10 @@ class ReusingPrinterTest extends TestHelper with SilentTracing {
137176

138177
@Test
139178
def add_final_case_flag() = """
179+
package add_final_case_flag
140180
class C(i: Int)
141181
""" becomes """
182+
package add_final_case_flag
142183
private final case class C(i: Int)
143184
""" after topdown { matchingChildren {
144185
transform {
@@ -149,13 +190,15 @@ class ReusingPrinterTest extends TestHelper with SilentTracing {
149190

150191
@Test
151192
def add_modifier_to_def_without_return_type() = """
193+
package add_modifier_to_def_without_return_type
152194
trait T {
153195
def meth: Int
154196
}
155197
trait TT extends T {
156198
def meth
157199
}
158200
""" becomes """
201+
package add_modifier_to_def_without_return_type
159202
trait T {
160203
def meth: Int
161204
}
@@ -175,13 +218,15 @@ class ReusingPrinterTest extends TestHelper with SilentTracing {
175218

176219
@Test
177220
def add_modifier_to_val_without_return_type() = """
221+
package add_modifier_to_val_without_return_type
178222
trait T {
179223
def meth: Int
180224
}
181225
trait TT extends T {
182226
val meth
183227
}
184228
""" becomes """
229+
package add_modifier_to_val_without_return_type
185230
trait T {
186231
def meth: Int
187232
}

0 commit comments

Comments
 (0)