diff --git a/compiler/src/dotty/tools/dotc/core/SymDenotations.scala b/compiler/src/dotty/tools/dotc/core/SymDenotations.scala index 0b8a4297edd0..0c5aca3c2244 100644 --- a/compiler/src/dotty/tools/dotc/core/SymDenotations.scala +++ b/compiler/src/dotty/tools/dotc/core/SymDenotations.scala @@ -93,10 +93,11 @@ object SymDenotations { if (myFlags.is(Trait)) NoInitsInterface & bodyFlags // no parents are initialized from a trait else NoInits & bodyFlags & parentFlags) - private def isCurrent(fs: FlagSet) = - fs <= ( - if (myInfo.isInstanceOf[SymbolLoader]) FromStartFlags - else AfterLoadFlags) + def isCurrent(fs: FlagSet)(using Context): Boolean = + def knownFlags(info: Type): FlagSet = info match + case _: SymbolLoader | _: ModuleCompleter => FromStartFlags + case _ => AfterLoadFlags + !myInfo.isInstanceOf[LazyType] || fs <= knownFlags(myInfo) final def relevantFlagsFor(fs: FlagSet)(using Context) = if (isCurrent(fs)) myFlags else flags diff --git a/compiler/test/dotty/tools/repl/JavaDefinedTests.scala b/compiler/test/dotty/tools/repl/JavaDefinedTests.scala new file mode 100644 index 000000000000..d3c86364fc60 --- /dev/null +++ b/compiler/test/dotty/tools/repl/JavaDefinedTests.scala @@ -0,0 +1,16 @@ +package dotty.tools.repl + +import org.junit.Assert._ +import org.junit.Test + +class JavaDefinedTests extends ReplTest { + @Test def typeOfJavaDefinedString = fromInitialState { implicit s => + run("String") + assertTrue(storedOutput().contains("Java defined class String is not a value")) + } + + @Test def typeOfJavaDefinedClass = fromInitialState { implicit s => + run("Class") + assertTrue(storedOutput().contains("Java defined class Class is not a value")) + } +} diff --git a/tests/neg/i13701.scala b/tests/neg/i13701.scala new file mode 100644 index 000000000000..0e038359856a --- /dev/null +++ b/tests/neg/i13701.scala @@ -0,0 +1,2 @@ +@main def Test() = String // error +