File tree Expand file tree Collapse file tree 6 files changed +30
-11
lines changed
compiler/src/dotty/tools/dotc Expand file tree Collapse file tree 6 files changed +30
-11
lines changed Original file line number Diff line number Diff line change @@ -109,7 +109,7 @@ object NameOps {
109109 false
110110 }
111111
112- /** is this the name of an object enclosing packagel -level definitions? */
112+ /** is this the name of an object enclosing package -level definitions? */
113113 def isPackageObjectName : Boolean = name match {
114114 case name : TermName => name == nme.PACKAGE || name.endsWith(str.TOPLEVEL_SUFFIX )
115115 case name : TypeName =>
@@ -119,6 +119,16 @@ object NameOps {
119119 }
120120 }
121121
122+ /** is this the name of an object enclosing top-level definitions? */
123+ def isTopLevelPackageObjectName : Boolean = name match {
124+ case name : TermName => name.endsWith(str.TOPLEVEL_SUFFIX )
125+ case name : TypeName =>
126+ name.toTermName match {
127+ case ModuleClassName (original) => original.isTopLevelPackageObjectName
128+ case _ => false
129+ }
130+ }
131+
122132 /** Convert this module name to corresponding module class name */
123133 def moduleClassName : TypeName = name.derived(ModuleClassName ).toTypeName
124134
Original file line number Diff line number Diff line change @@ -672,6 +672,10 @@ object SymDenotations {
672672 def isPackageObject (using Context ): Boolean =
673673 name.isPackageObjectName && owner.is(Package ) && this .is(Module )
674674
675+ /** Is this symbol a package object containing top-level definitions? */
676+ def isTopLevelDefinitionsObject (using Context ): Boolean =
677+ name.isTopLevelPackageObjectName && owner.is(Package ) && this .is(Module )
678+
675679 /** Is this symbol a toplevel definition in a package object? */
676680 def isWrappedToplevelDef (using Context ): Boolean =
677681 ! isConstructor && owner.isPackageObject
Original file line number Diff line number Diff line change @@ -1113,13 +1113,18 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
11131113 fullNameString(sym)
11141114 else if (sym.is(ModuleClass ) && sym.isPackageObject && sym.name.stripModuleClassSuffix == tpnme.PACKAGE )
11151115 nameString(sym.owner.name)
1116+ else if (sym.is(ModuleClass ) && sym.isTopLevelDefinitionsObject)
1117+ nameString(sym.owner.name)
11161118 else if (sym.is(ModuleClass ))
11171119 nameString(sym.name.stripModuleClassSuffix) + idString(sym)
11181120 else if (hasMeaninglessName(sym))
11191121 simpleNameString(sym.owner) + idString(sym)
11201122 else
11211123 nameString(sym)
1122- (keywordText(kindString(sym)) ~~ {
1124+
1125+ if sym.is(ModuleClass ) && sym.isTopLevelDefinitionsObject then
1126+ " top-level definition in package " + nameString(sym.owner.name)
1127+ else (keywordText(kindString(sym)) ~~ {
11231128 if (sym.isAnonymousClass)
11241129 toTextParents(sym.info.parents) ~~ " {...}"
11251130 else
Original file line number Diff line number Diff line change 22-- Error: tests/neg-macros/annot-result-owner/Test_2.scala:1:0 ---------------------------------------------------------
331 |@insertVal // error
44 |^^^^^^^^^^
5- |macro annotation @insertVal added value definitionWithWrongOwner$macro$1 with an inconsistent owner. Expected it to be owned by package object Test_2$ package but was owned by method foo.
5+ |macro annotation @insertVal added value definitionWithWrongOwner$macro$1 with an inconsistent owner. Expected it to be owned by top-level definition in package <empty> but was owned by method foo.
66-- Error: tests/neg-macros/annot-result-owner/Test_2.scala:5:2 ---------------------------------------------------------
775 | @insertVal // error
88 | ^^^^^^^^^^
Original file line number Diff line number Diff line change 11-- [E008] Not Found Error: tests/neg/i12573.scala:23:38 ----------------------------------------------------------------
2223 |val w: Value[8] = DFBits(Value[8](8)).getDFType.width // error
33 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4- | value getDFType is not a member of DFBits[(8 : Int)].
5- | Extension methods were tried, but the search failed with:
4+ |value getDFType is not a member of DFBits[(8 : Int)].
5+ |Extension methods were tried, but the search failed with:
66 |
7- | method getDFType cannot be accessed as a member of DFType.type from package object i12573$ package.
8- | Access to protected method getDFType not permitted because enclosing package object i12573$ package
9- | is not a subclass of object DFType where target is defined
7+ | method getDFType cannot be accessed as a member of DFType.type from top-level definition in package <empty> .
8+ | Access to protected method getDFType not permitted because enclosing top-level definition in package <empty>
9+ | is not a subclass of object DFType where target is defined
Original file line number Diff line number Diff line change 99-- [E173] Reference Error: tests/neg/not-accessible.scala:13:23 --------------------------------------------------------
101013 | def test(a: A) = a.x // error
1111 | ^^^
12- | value x cannot be accessed as a member of (a : foo.A) from package object not-accessible$ package.
12+ | value x cannot be accessed as a member of (a : foo.A) from top-level definition in package bar .
1313-- [E173] Reference Error: tests/neg/not-accessible.scala:5:21 ---------------------------------------------------------
14145 | def test(a: A) = a.x // error
1515 | ^^^
16- | value x cannot be accessed as a member of (a : foo.A) from package object not-accessible$ package.
16+ | value x cannot be accessed as a member of (a : foo.A) from top-level definition in package foo .
1717-- [E173] Reference Error: tests/neg/not-accessible.scala:15:23 --------------------------------------------------------
181815 |def test(a: foo.A) = a.x // error
1919 | ^^^
20- | value x cannot be accessed as a member of (a : foo.A) from package object not-accessible$ package.
20+ | value x cannot be accessed as a member of (a : foo.A) from top-level definition in package <empty> .
You can’t perform that action at this time.
0 commit comments