diff --git a/compiler/src/dotty/tools/dotc/transform/init/Objects.scala b/compiler/src/dotty/tools/dotc/transform/init/Objects.scala index dfa685f8aaa9..d605ca550347 100644 --- a/compiler/src/dotty/tools/dotc/transform/init/Objects.scala +++ b/compiler/src/dotty/tools/dotc/transform/init/Objects.scala @@ -1173,7 +1173,7 @@ class Objects(using Context @constructorOnly): case v @ SafeValue(_) => if v.typeSymbol != defn.NullClass then - // selection on Null is sensible on AST level; no warning for it + // selection on Null is sensible on AST level but not in practice report.warning("[Internal error] Unexpected selection on safe value " + v.show + ", field = " + field.show + ". " + Trace.show, Trace.position) end if Bottom diff --git a/compiler/src/dotty/tools/dotc/transform/init/Util.scala b/compiler/src/dotty/tools/dotc/transform/init/Util.scala index 9a1c38bcac36..feb9528735ce 100644 --- a/compiler/src/dotty/tools/dotc/transform/init/Util.scala +++ b/compiler/src/dotty/tools/dotc/transform/init/Util.scala @@ -59,7 +59,7 @@ object Util: case TypeApply(fn, targs) => unapply(fn) - case ref: RefTree if ref.tpe.widenSingleton.isInstanceOf[MethodicType] => + case ref: RefTree if ref.symbol.is(Flags.Method) => Some((ref, Nil)) case _ => None diff --git a/tests/init-global/pos-tasty/test-safe-value.scala b/tests/init-global/pos-tasty/test-safe-value.scala new file mode 100644 index 000000000000..cb5149864216 --- /dev/null +++ b/tests/init-global/pos-tasty/test-safe-value.scala @@ -0,0 +1,7 @@ +package scala.collection.immutable + +object A { // These are a safe values, so no warning should be emitted + Node.HashCodeLength + Node.BitPartitionSize + Node.MaxDepth +} \ No newline at end of file