Skip to content

Commit 50dc7b5

Browse files
committed
fix: Do not make deferred given implementations final
It should be possible to extend a class that inherits a deferred given, so a generated given implementation should not be final.
1 parent 12d50a2 commit 50dc7b5

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

Diff for: compiler/src/dotty/tools/dotc/typer/Typer.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -3038,7 +3038,7 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
30383038
body
30393039

30403040
/** Implement givens that were declared with a `deferred` rhs.
3041-
* The a given value matching the declared type is searched in a
3041+
* The given value matching the declared type is searched in a
30423042
* context directly enclosing the current class, in which all given
30433043
* parameters of the current class are also defined.
30443044
*/
@@ -3067,7 +3067,7 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
30673067
)(using searchCtx)
30683068

30693069
val impl = dcl.copy(cls,
3070-
flags = dcl.flags &~ (HasDefault | Deferred) | Final | Override,
3070+
flags = dcl.flags &~ (HasDefault | Deferred) | Override,
30713071
info = target,
30723072
coord = rhs.span).entered.asTerm
30733073

Diff for: tests/pos/i21189.scala

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//> using options -source:future -language:experimental.modularity
2+
3+
class MySortedSet[T : Ord] extends SortedSet[T]
4+
5+
trait Ord[T]
6+
7+
trait Sorted[T]:
8+
given Ord[T] as ord = compiletime.deferred
9+
10+
class SortedSet[T : Ord] extends Sorted[T]

0 commit comments

Comments
 (0)