File tree 1 file changed +10
-5
lines changed
compiler/src/dotty/tools/dotc/typer
1 file changed +10
-5
lines changed Original file line number Diff line number Diff line change @@ -727,15 +727,20 @@ object Checking {
727
727
* all statements are @experimental definitions.
728
728
*/
729
729
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
734
739
}
735
740
for case imp @ Import (qual, selectors) <- trees do
736
741
languageImport(qual) match
737
742
case Some (nme.experimental)
738
- if ! ctx.owner.isInExperimentalScope && ! onlyExperimentalDefs
743
+ if ! ctx.owner.isInExperimentalScope && ! onlyExperimentalDefs(trees)
739
744
&& selectors.exists(sel => Feature .experimental(sel.name) != Feature .scala2macros) =>
740
745
Feature .checkExperimentalFeature(" features" , imp.srcPos)
741
746
case _ =>
You can’t perform that action at this time.
0 commit comments