Skip to content

Commit 803603b

Browse files
committed
Optimize nonExperimentalTopLevelDefs
1 parent df85c6e commit 803603b

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

compiler/src/dotty/tools/dotc/typer/Checking.scala

+9-14
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,7 @@ object Checking {
798798
tree
799799

800800
/** Check that experimental language imports in `trees`
801-
* are done only in experimental scopes. For for top-level
801+
* are done only in experimental scopes. For top-level
802802
* experimental imports, all top-level definitions are transformed
803803
* to @experimental definitions.
804804
*
@@ -809,19 +809,14 @@ object Checking {
809809
!sym.isExperimental
810810
&& sym.source == ctx.compilationUnit.source
811811
&& !sym.isConstructor // not constructor of package object
812-
&& !sym.is(Package) && !sym.isPackageObject && !sym.name.endsWith(str.TOPLEVEL_SUFFIX)
813-
814-
val packageMembers =
815-
pack.info.decls
816-
.toList.iterator
817-
.filter(isNonExperimentalTopLevelDefinition)
818-
val packageObjectMembers =
819-
pack.info.decls
820-
.toList.iterator
821-
.filter(sym => sym.isClass && (sym.is(Package) || sym.isPackageObject))
822-
.flatMap(nonExperimentalTopLevelDefs)
823-
824-
packageMembers ++ packageObjectMembers
812+
&& !sym.is(Package) && !sym.name.isPackageObjectName
813+
814+
pack.info.decls.toList.iterator.flatMap: sym =>
815+
if sym.isClass && (sym.is(Package) || sym.isPackageObject) then
816+
nonExperimentalTopLevelDefs(sym)
817+
else if isNonExperimentalTopLevelDefinition(sym) then
818+
sym :: Nil
819+
else Nil
825820

826821
def unitExperimentalLanguageImports =
827822
def isAllowedImport(sel: untpd.ImportSelector) =

0 commit comments

Comments
 (0)