File tree 2 files changed +59
-4
lines changed
org.scala-ide.sdt.core/src/org/scalaide/extensions/saveactions
org.scala-ide.sdt.core.tests/src/org/scalaide/extensions/saveactions 2 files changed +59
-4
lines changed Original file line number Diff line number Diff line change @@ -126,4 +126,51 @@ class AddMissingOverrideTest {
126
126
abstract override def f = super.f+0
127
127
}
128
128
""" after SaveEvent
129
+
130
+ @ Test
131
+ def add_override_modifier_to_constructor_param () = """ ^
132
+ trait T {
133
+ def meth: Int
134
+ }
135
+ case class C(val meth: Int) extends T
136
+ class D(val meth: Int) extends T
137
+ """ becomes """ ^
138
+ trait T {
139
+ def meth: Int
140
+ }
141
+ case class C(override val meth: Int) extends T
142
+ class D(override val meth: Int) extends T
143
+ """ after SaveEvent
144
+
145
+ @ Test
146
+ def add_val_keyword_when_override_modifier_is_added_to_constructor_param () = """ ^
147
+ trait T {
148
+ def meth: Int
149
+ }
150
+ case class C(meth: Int) extends T
151
+ class D(meth: Int) extends T
152
+ """ becomes """ ^
153
+ trait T {
154
+ def meth: Int
155
+ }
156
+ case class C(override val meth: Int) extends T
157
+ class D(override val meth: Int) extends T
158
+ """ after SaveEvent
159
+
160
+ @ Test
161
+ def no_change_to_constructor_param_when_nothing_is_overriden () = """ ^
162
+ trait T {
163
+ def meth: Int
164
+ }
165
+ case class B(meth: Int)
166
+ class C(meth: Int)
167
+ class D(meth: Int, func: Int) extends T
168
+ """ becomes """ ^
169
+ trait T {
170
+ def meth: Int
171
+ }
172
+ case class B(meth: Int)
173
+ class C(meth: Int)
174
+ class D(override val meth: Int, func: Int) extends T
175
+ """ after SaveEvent
129
176
}
Original file line number Diff line number Diff line change 1
1
package org .scalaide .extensions
2
2
package saveactions
3
3
4
+ import scala .tools .nsc .ast .parser .Tokens
5
+
4
6
object AddMissingOverrideSetting extends SaveActionSetting (
5
7
id = ExtensionSetting .fullyQualifiedName[AddMissingOverride ],
6
8
name = " Add missing override keyword" ,
@@ -29,7 +31,7 @@ trait AddMissingOverride extends SaveAction with CompilerSupport {
29
31
val symbolWithoutOverride = filter {
30
32
case d : ValDef =>
31
33
val getter = d.symbol.getterIn(d.symbol.owner)
32
- canOverride(getter)
34
+ canOverride(if ( getter != NoSymbol ) getter else d.symbol )
33
35
34
36
case d @ (_ : DefDef | _ : TypeDef ) =>
35
37
canOverride(d.symbol)
@@ -39,9 +41,15 @@ trait AddMissingOverride extends SaveAction with CompilerSupport {
39
41
case d : MemberDef =>
40
42
val mods = d.mods.withFlag(Flag .OVERRIDE )
41
43
d match {
42
- case d : DefDef => d.copy(mods = mods) replaces d
43
- case d : ValDef => d.copy(mods = mods) replaces d
44
- case d : TypeDef => d.copy(mods = mods) replaces d
44
+ case d : DefDef =>
45
+ d.copy(mods = mods) replaces d
46
+
47
+ case d : ValDef =>
48
+ val valMods = if (mods.positions.contains(Tokens .VAL )) mods else mods.withFlag(Tokens .VAL )
49
+ d.copy(mods = valMods) replaces d
50
+
51
+ case d : TypeDef =>
52
+ d.copy(mods = mods) replaces d
45
53
}
46
54
}
47
55
You can’t perform that action at this time.
0 commit comments