@@ -3669,6 +3669,14 @@ object Types {
3669
3669
private var myDependencyStatus : DependencyStatus = Unknown
3670
3670
private var myParamDependencyStatus : DependencyStatus = Unknown
3671
3671
3672
+ private def refersToParam (tree : Tree )(using Context ): Boolean =
3673
+ tree.existsSubTree {
3674
+ case id : Ident => id.tpe match
3675
+ case TermParamRef (`thisLambdaType`, _) => true
3676
+ case _ => false
3677
+ case _ => false
3678
+ }
3679
+
3672
3680
private def depStatus (initial : DependencyStatus , tp : Type )(using Context ): DependencyStatus =
3673
3681
class DepAcc extends TypeAccumulator [DependencyStatus ]:
3674
3682
def apply (status : DependencyStatus , tp : Type ) = compute(status, tp, this )
@@ -3700,6 +3708,8 @@ object Types {
3700
3708
case tp : TermParamRef if tp.binder eq thisLambdaType => combine(s, CaptureDeps )
3701
3709
case _ => s
3702
3710
}
3711
+ case AnnotatedType (parent, ConcreteAnnotation (ann)) =>
3712
+ if refersToParam(ann) then TrueDeps else compute(status, parent, theAcc)
3703
3713
case _ : ThisType | _ : BoundType | NoPrefix => status
3704
3714
case _ =>
3705
3715
(if theAcc != null then theAcc else DepAcc ()).foldOver(status, tp)
@@ -3758,8 +3768,10 @@ object Types {
3758
3768
if isResultDependent then
3759
3769
val dropDependencies = new ApproximatingTypeMap {
3760
3770
def apply (tp : Type ) = tp match {
3761
- case tp @ TermParamRef (thisLambdaType, _) =>
3771
+ case tp @ TermParamRef (` thisLambdaType` , _) =>
3762
3772
range(defn.NothingType , atVariance(1 )(apply(tp.underlying)))
3773
+ case AnnotatedType (parent, ConcreteAnnotation (ann)) if refersToParam(ann) =>
3774
+ mapOver(parent)
3763
3775
case _ => mapOver(tp)
3764
3776
}
3765
3777
}
0 commit comments