File tree 4 files changed +25
-2
lines changed
test/dotty/tools/dotc/reporting
4 files changed +25
-2
lines changed Original file line number Diff line number Diff line change @@ -110,7 +110,8 @@ public enum ErrorMessageID {
110
110
MissingEmptyArgumentListID ,
111
111
DuplicateNamedTypeParameterID ,
112
112
UndefinedNamedTypeParameterID ,
113
- IllegalStartOfStatementID
113
+ IllegalStartOfStatementID ,
114
+ PackageNameAlreadyDefinedID
114
115
;
115
116
116
117
public int errorNumber () {
Original file line number Diff line number Diff line change @@ -1888,4 +1888,12 @@ object messages {
1888
1888
}
1889
1889
val explanation = " A statement is either an import, a definition or an expression."
1890
1890
}
1891
+
1892
+ case class PackageNameAlreadyDefined (pkg : Symbol )(implicit ctx : Context ) extends Message (PackageNameAlreadyDefinedID ) {
1893
+
1894
+ override def msg : String = hl " ${pkg} is already defined, cannot be a package "
1895
+ override def kind : String = " Syntax"
1896
+ override def explanation : String =
1897
+ " An object cannot have the same name as an existing package. Rename ${pkg} or the package with the same name."
1898
+ }
1891
1899
}
Original file line number Diff line number Diff line change @@ -1516,7 +1516,7 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
1516
1516
val packageContext =
1517
1517
if (pkg is Package ) ctx.fresh.setOwner(pkg.moduleClass).setTree(tree)
1518
1518
else {
1519
- ctx.error(em " $ pkg is already defined, cannot be a package " , tree.pos)
1519
+ ctx.error(PackageNameAlreadyDefined ( pkg) , tree.pos)
1520
1520
ctx
1521
1521
}
1522
1522
val stats1 = typedStats(tree.stats, pkg.moduleClass)(packageContext)
Original file line number Diff line number Diff line change @@ -1151,4 +1151,18 @@ class ErrorMessagesTests extends ErrorMessagesTest {
1151
1151
assertEquals(IllegalStartOfStatement (isModifier = false ), err)
1152
1152
assertEquals(IllegalStartOfStatement (isModifier = true ), errWithModifier)
1153
1153
}
1154
+
1155
+ @ Test def packageNameAlreadyDefined =
1156
+ checkMessagesAfter(" frontend" ) {
1157
+ """
1158
+ |package bar { }
1159
+ |object bar { }
1160
+ |
1161
+ """ .stripMargin
1162
+ }.expect { (ictx, messages) =>
1163
+ implicit val ctx : Context = ictx
1164
+
1165
+ assertMessageCount(1 , messages)
1166
+ assert(messages.head.isInstanceOf [PackageNameAlreadyDefined ])
1167
+ }
1154
1168
}
You can’t perform that action at this time.
0 commit comments