File tree Expand file tree Collapse file tree 1 file changed +10
-5
lines changed
compiler/src/dotty/tools/dotc/typer Expand file tree Collapse file tree 1 file changed +10
-5
lines changed Original file line number Diff line number Diff line change @@ -727,15 +727,20 @@ object Checking {
727727 * all statements are @experimental definitions.
728728 */
729729 def checkExperimentalImports (trees : List [Tree ])(using Context ): Unit =
730- def onlyExperimentalDefs = trees.forall {
731- case _ : Import | EmptyTree => true
732- case stat : MemberDef => stat.symbol.isExperimental || stat.symbol.is(Synthetic )
733- case _ => false
730+ def onlyExperimentalDefs (trees : List [Tree ]): Boolean = trees.forall {
731+ case _ : Import | EmptyTree =>
732+ true
733+ case tree @ TypeDef (_, impl : Template ) if tree.symbol.isPackageObject =>
734+ onlyExperimentalDefs(impl.body)
735+ case stat : MemberDef =>
736+ stat.symbol.isExperimental || stat.symbol.is(Synthetic )
737+ case _ =>
738+ false
734739 }
735740 for case imp @ Import (qual, selectors) <- trees do
736741 languageImport(qual) match
737742 case Some (nme.experimental)
738- if ! ctx.owner.isInExperimentalScope && ! onlyExperimentalDefs
743+ if ! ctx.owner.isInExperimentalScope && ! onlyExperimentalDefs(trees)
739744 && selectors.exists(sel => Feature .experimental(sel.name) != Feature .scala2macros) =>
740745 Feature .checkExperimentalFeature(" features" , imp.srcPos)
741746 case _ =>
You can’t perform that action at this time.
0 commit comments