@@ -1270,25 +1270,29 @@ object desugar {
12701270 else tree
12711271 }
12721272
1273- def checkPackageName (mdef : ModuleDef | PackageDef )(using Context ): Unit =
1274-
1275- def check (name : Name , errSpan : Span ): Unit = name match
1276- case name : SimpleName if ! errSpan.isSynthetic && name.exists(Chars .willBeEncoded) =>
1277- report.warning(em " The package name ` $name` will be encoded on the classpath, and can lead to undefined behaviour. " , mdef.source.atSpan(errSpan))
1278- case _ =>
1279-
1280- def loop (part : RefTree ): Unit = part match
1281- case part @ Ident (name) => check(name, part.span)
1282- case part @ Select (qual : RefTree , name) =>
1283- check(name, part.nameSpan)
1284- loop(qual)
1273+ def checkSimplePackageName (name : Name , errSpan : Span , source : SourceFile , isPackageObject : Boolean )(using Context ) =
1274+ if ! ctx.isAfterTyper then
1275+ name match
1276+ case name : SimpleName if (isPackageObject || ! errSpan.isSynthetic) && name.exists(Chars .willBeEncoded) =>
1277+ report.warning(
1278+ em " The package name ` $name` will be encoded on the classpath, and can lead to undefined behaviour. " ,
1279+ source.atSpan(errSpan))
12851280 case _ =>
12861281
1282+ def checkPackageName (mdef : ModuleDef | PackageDef )(using Context ): Unit =
1283+ def check (name : Name , errSpan : Span ) = checkSimplePackageName(name, errSpan, mdef.source, isPackageObject = false )
12871284 mdef match
1288- case pdef : PackageDef => loop(pdef.pid)
1289- case mdef : ModuleDef if mdef.mods.is(Package ) => check(mdef.name, mdef.nameSpan)
1290- case _ =>
1291- end checkPackageName
1285+ case pdef : PackageDef =>
1286+ def loop (part : RefTree ): Unit = part match
1287+ case part @ Ident (name) => check(name, part.span)
1288+ case part @ Select (qual : RefTree , name) =>
1289+ check(name, part.nameSpan)
1290+ loop(qual)
1291+ case _ =>
1292+ loop(pdef.pid)
1293+ case mdef : ModuleDef if mdef.mods.is(Package ) =>
1294+ check(mdef.name, mdef.nameSpan)
1295+ case _ =>
12921296
12931297 /** The normalized name of `mdef`. This means
12941298 * 1. Check that the name does not redefine a Scala core class.
@@ -1859,7 +1863,7 @@ object desugar {
18591863 /** Assuming `src` contains top-level definition, returns the name that should
18601864 * be using for the package object that will wrap them.
18611865 */
1862- def packageObjectName (src : SourceFile ): TermName =
1866+ def packageObjectName (src : SourceFile , srcPos : SrcPos )( using Context ): TermName =
18631867 val fileName = src.file.name
18641868 val sourceName = fileName.take(fileName.lastIndexOf('.' ))
18651869 (sourceName ++ str.TOPLEVEL_SUFFIX ).toTermName
@@ -1890,7 +1894,7 @@ object desugar {
18901894 val (nestedStats, topStats) = pdef.stats.partition(inPackageObject)
18911895 if (nestedStats.isEmpty) pdef
18921896 else {
1893- val name = packageObjectName(ctx.source)
1897+ val name = packageObjectName(ctx.source, pdef.srcPos )
18941898 val grouped =
18951899 ModuleDef (name, Template (emptyConstructor, Nil , Nil , EmptyValDef , nestedStats))
18961900 .withMods(Modifiers (Synthetic ))
0 commit comments