Skip to content

Commit d4cca52

Browse files
committed
Fix #4948: final implicit class can be overridden
1 parent c0941f3 commit d4cca52

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

compiler/src/dotty/tools/dotc/ast/Desugar.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ object desugar {
293293
val impl @ Template(constr0, parents, self, _) = cdef.rhs
294294
val mods = cdef.mods
295295
val companionMods = mods
296-
.withFlags((mods.flags & AccessFlags).toCommonFlags)
296+
.withFlags((mods.flags & (AccessFlags | Final)).toCommonFlags)
297297
.withMods(Nil)
298298

299299
var defaultGetters: List[Tree] = Nil

tests/neg/overrideFinalImplicit.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Implicits {
2+
final implicit class FooExtender(foo: String)
3+
}
4+
5+
class Test extends Implicits {
6+
override implicit def FooExtender(foo: String) = super.FooExtender(foo) // error
7+
}

0 commit comments

Comments
 (0)