Skip to content

Commit 216428b

Browse files
committed
Elide companion defs to a object extending AnyVal
1 parent 3783220 commit 216428b

File tree

4 files changed

+10
-2
lines changed

4 files changed

+10
-2
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ object desugar {
820820
}
821821
else if (companionMembers.nonEmpty || companionDerived.nonEmpty || isEnum)
822822
companionDefs(anyRef, companionMembers)
823-
else if (isValueClass)
823+
else if isValueClass && !isObject then
824824
companionDefs(anyRef, Nil)
825825
else Nil
826826

compiler/src/dotty/tools/dotc/typer/Checking.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -738,7 +738,10 @@ object Checking {
738738
for (p <- params if !p.is(Erased))
739739
report.error("value class can only have one non `erased` parameter", p.srcPos)
740740
case Nil =>
741-
report.error(ValueClassNeedsOneValParam(clazz), clazz.srcPos)
741+
if clazz.is(Module) then
742+
report.error("A module cannot extends AnyVal",clazz.srcPos)
743+
else
744+
report.error(ValueClassNeedsOneValParam(clazz), clazz.srcPos)
742745
}
743746
}
744747
stats.foreach(checkValueClassMember)

tests/neg/i18274.check

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- Error: tests/neg/i18274.scala:1:7 -----------------------------------------------------------------------------------
2+
1 |object Foo extends AnyVal // error
3+
| ^
4+
| A module cannot extends AnyVal

tests/neg/i18274.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
object Foo extends AnyVal // error

0 commit comments

Comments
 (0)