@@ -2,6 +2,7 @@ package scala.tools.refactoring.tests
22package sourcegen
33
44import scala .reflect .internal .util .BatchSourceFile
5+ import scala .tools .nsc .ast .parser .Tokens
56import scala .tools .refactoring .common .SilentTracing
67import scala .tools .refactoring .sourcegen .EmptyFragment
78import 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