Skip to content

Commit 056c897

Browse files
authored
Merge pull request #12144 from dotty-staging/fix-12140
Fix trait setter validity
2 parents 6bafd95 + f3821c1 commit 056c897

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

compiler/src/dotty/tools/dotc/transform/Mixin.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import SymUtils._
1010
import Symbols._
1111
import SymDenotations._
1212
import Types._
13+
import Periods._
1314
import Decorators._
1415
import DenotTransformers._
1516
import StdNames._
@@ -146,6 +147,7 @@ class Mixin extends MiniPhase with SymTransformer { thisPhase =>
146147
// !decl.isClass avoids forcing nested traits, preventing cycles
147148
if !decl.isClass && needsTraitSetter(decl) then
148149
val setter = makeTraitSetter(decl.asTerm)
150+
setter.validFor = thisPhase.validFor // validity of setter = next phase up to next transformer afterwards
149151
decls1.enter(setter)
150152
modified = true
151153
if modified then

tests/pos/i12140/Test.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@main def Test = println(example.Trait.get)

tests/pos/i12140/Trait.scala

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Trait.scala
2+
package example
3+
4+
import quoted._
5+
6+
trait Trait {
7+
implicit val foo: Int = 23
8+
}
9+
10+
object Trait {
11+
inline def get: Trait = ${ getImpl }
12+
13+
def getImpl(using Quotes): Expr[Trait] = '{ new Trait {} }
14+
}

0 commit comments

Comments
 (0)