Skip to content

Commit 9cb6ce9

Browse files
mbovelWojciechMazur
authored andcommitted
Strip CC annotations in TypeMap when CC is not enabled
[Cherry-picked 52db678]
1 parent 961d2f8 commit 9cb6ce9

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

compiler/src/dotty/tools/dotc/core/Types.scala

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import Hashable.*
3030
import Uniques.*
3131
import collection.mutable
3232
import config.Config
33+
import config.Feature
3334
import config.Feature.sourceVersion
3435
import config.SourceVersion
3536
import annotation.{tailrec, constructorOnly}
@@ -6465,10 +6466,13 @@ object Types extends TypeUtils {
64656466
mapCapturingType(tp, parent, refs, variance)
64666467

64676468
case tp @ AnnotatedType(underlying, annot) =>
6468-
val underlying1 = this(underlying)
6469-
val annot1 = annot.mapWith(this)
6470-
if annot1 eq EmptyAnnotation then underlying1
6471-
else derivedAnnotatedType(tp, underlying1, annot1)
6469+
if annot.symbol.isRetainsLike && !Feature.ccEnabledSomewhere then
6470+
this(underlying) // strip retains like annotations unless capture checking is enabled
6471+
else
6472+
val underlying1 = this(underlying)
6473+
val annot1 = annot.mapWith(this)
6474+
if annot1 eq EmptyAnnotation then underlying1
6475+
else derivedAnnotatedType(tp, underlying1, annot1)
64726476

64736477
case _: ThisType
64746478
| _: BoundType

0 commit comments

Comments
 (0)