@@ -2,20 +2,21 @@ package dotty.tools
2
2
package dotc
3
3
package typer
4
4
5
- import dotty .tools .dotc .ast .Trees ._
5
+ import dotty .tools .dotc .ast .Trees .*
6
6
import dotty .tools .dotc .ast .tpd
7
7
import dotty .tools .dotc .ast .untpd
8
8
import dotty .tools .dotc .core .Constants .Constant
9
- import dotty .tools .dotc .core .Contexts ._
9
+ import dotty .tools .dotc .core .Contexts .*
10
10
import dotty .tools .dotc .core .Names .{Name , TermName }
11
- import dotty .tools .dotc .core .StdNames ._
12
- import dotty .tools .dotc .core .Types ._
13
- import dotty .tools .dotc .core .Decorators ._
11
+ import dotty .tools .dotc .core .StdNames .*
12
+ import dotty .tools .dotc .core .Types .*
13
+ import dotty .tools .dotc .core .Decorators .*
14
14
import dotty .tools .dotc .core .TypeErasure
15
- import util .Spans ._
16
- import core .Symbols ._
17
- import ErrorReporting ._
18
- import reporting ._
15
+ import util .Spans .*
16
+ import core .Symbols .*
17
+ import ErrorReporting .*
18
+ import dotty .tools .dotc .transform .ValueClasses
19
+ import reporting .*
19
20
20
21
object Dynamic {
21
22
private def isDynamicMethod (name : Name ): Boolean =
@@ -215,6 +216,10 @@ trait Dynamic {
215
216
errorTree(tree, em " Structural access not allowed on method $name because it $reason" )
216
217
217
218
fun.tpe.widen match {
219
+ case tpe if ValueClasses .isDerivedValueClass(tpe.classSymbol) =>
220
+ val scall = structuralCall(nme.selectDynamic, Nil ).cast(ValueClasses .underlyingOfValueClass(tpe.classSymbol.asClass))
221
+ New (tpe, scall :: Nil ).cast(tpe)
222
+
218
223
case tpe : ValueType =>
219
224
structuralCall(nme.selectDynamic, Nil ).cast(tpe)
220
225
0 commit comments