File tree 6 files changed +30
-11
lines changed
compiler/src/dotty/tools/dotc
6 files changed +30
-11
lines changed Original file line number Diff line number Diff line change @@ -109,7 +109,7 @@ object NameOps {
109
109
false
110
110
}
111
111
112
- /** is this the name of an object enclosing packagel -level definitions? */
112
+ /** is this the name of an object enclosing package -level definitions? */
113
113
def isPackageObjectName : Boolean = name match {
114
114
case name : TermName => name == nme.PACKAGE || name.endsWith(str.TOPLEVEL_SUFFIX )
115
115
case name : TypeName =>
@@ -119,6 +119,16 @@ object NameOps {
119
119
}
120
120
}
121
121
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
+
122
132
/** Convert this module name to corresponding module class name */
123
133
def moduleClassName : TypeName = name.derived(ModuleClassName ).toTypeName
124
134
Original file line number Diff line number Diff line change @@ -672,6 +672,10 @@ object SymDenotations {
672
672
def isPackageObject (using Context ): Boolean =
673
673
name.isPackageObjectName && owner.is(Package ) && this .is(Module )
674
674
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
+
675
679
/** Is this symbol a toplevel definition in a package object? */
676
680
def isWrappedToplevelDef (using Context ): Boolean =
677
681
! isConstructor && owner.isPackageObject
Original file line number Diff line number Diff line change @@ -1113,13 +1113,18 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
1113
1113
fullNameString(sym)
1114
1114
else if (sym.is(ModuleClass ) && sym.isPackageObject && sym.name.stripModuleClassSuffix == tpnme.PACKAGE )
1115
1115
nameString(sym.owner.name)
1116
+ else if (sym.is(ModuleClass ) && sym.isTopLevelDefinitionsObject)
1117
+ nameString(sym.owner.name)
1116
1118
else if (sym.is(ModuleClass ))
1117
1119
nameString(sym.name.stripModuleClassSuffix) + idString(sym)
1118
1120
else if (hasMeaninglessName(sym))
1119
1121
simpleNameString(sym.owner) + idString(sym)
1120
1122
else
1121
1123
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)) ~~ {
1123
1128
if (sym.isAnonymousClass)
1124
1129
toTextParents(sym.info.parents) ~~ " {...}"
1125
1130
else
Original file line number Diff line number Diff line change 2
2
-- Error: tests/neg-macros/annot-result-owner/Test_2.scala:1:0 ---------------------------------------------------------
3
3
1 |@insertVal // error
4
4
|^^^^^^^^^^
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.
6
6
-- Error: tests/neg-macros/annot-result-owner/Test_2.scala:5:2 ---------------------------------------------------------
7
7
5 | @insertVal // error
8
8
| ^^^^^^^^^^
Original file line number Diff line number Diff line change 1
1
-- [E008] Not Found Error: tests/neg/i12573.scala:23:38 ----------------------------------------------------------------
2
2
23 |val w: Value[8] = DFBits(Value[8](8)).getDFType.width // error
3
3
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
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:
6
6
|
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 9
9
-- [E173] Reference Error: tests/neg/not-accessible.scala:13:23 --------------------------------------------------------
10
10
13 | def test(a: A) = a.x // error
11
11
| ^^^
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 .
13
13
-- [E173] Reference Error: tests/neg/not-accessible.scala:5:21 ---------------------------------------------------------
14
14
5 | def test(a: A) = a.x // error
15
15
| ^^^
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 .
17
17
-- [E173] Reference Error: tests/neg/not-accessible.scala:15:23 --------------------------------------------------------
18
18
15 |def test(a: foo.A) = a.x // error
19
19
| ^^^
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