diff --git a/compiler/src/dotty/tools/dotc/transform/init/Objects.scala b/compiler/src/dotty/tools/dotc/transform/init/Objects.scala index 793d4b41b174..7b5932fe78a5 100644 --- a/compiler/src/dotty/tools/dotc/transform/init/Objects.scala +++ b/compiler/src/dotty/tools/dotc/transform/init/Objects.scala @@ -812,7 +812,8 @@ class Objects(using Context @constructorOnly): else Bottom else if target.exists then - if target.isOneOf(Flags.Mutable) then + def isNextFieldOfColonColon: Boolean = ref.klass == defn.ConsClass && target.name.toString == "next" + if target.isOneOf(Flags.Mutable) && !isNextFieldOfColonColon then if ref.hasVar(target) then val addr = ref.varAddr(target) if addr.owner == State.currentObject then diff --git a/tests/init-global/pos/list-colon-colon-next.scala b/tests/init-global/pos/list-colon-colon-next.scala new file mode 100644 index 000000000000..5a87cb311bea --- /dev/null +++ b/tests/init-global/pos/list-colon-colon-next.scala @@ -0,0 +1,5 @@ +object A: + val a: List[Int] = List(1, 2, 3) + +object B: + val b = A.a.size