File tree 4 files changed +26
-2
lines changed
test/dotty/tools/dotc/reporting
4 files changed +26
-2
lines changed Original file line number Diff line number Diff line change @@ -109,7 +109,8 @@ public enum ErrorMessageID {
109
109
OnlyFunctionsCanBeFollowedByUnderscoreID ,
110
110
MissingEmptyArgumentListID ,
111
111
DuplicateNamedTypeParameterID ,
112
- UndefinedNamedTypeParameterID
112
+ UndefinedNamedTypeParameterID ,
113
+ PackageNameAlreadyDefinedID
113
114
;
114
115
115
116
public int errorNumber () {
Original file line number Diff line number Diff line change @@ -1879,4 +1879,12 @@ object messages {
1879
1879
val msg = hl " Type parameter $undefinedName is undefined. Expected one of ${definedNames.map(_.show).mkString(" , " )}. "
1880
1880
val explanation = " "
1881
1881
}
1882
+
1883
+ case class PackageNameAlreadyDefined (pkg : Symbol )(implicit ctx : Context ) extends Message (PackageNameAlreadyDefinedID ) {
1884
+
1885
+ override def msg : String = hl " ${pkg} is already defined, cannot be a package "
1886
+ override def kind : String = " Syntax"
1887
+ override def explanation : String =
1888
+ " An object cannot have the same name as an existing package. Rename ${pkg} or the package with the same name."
1889
+ }
1882
1890
}
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 1
1
package dotty .tools
2
+
2
3
package dotc
3
4
package reporting
4
5
@@ -1132,4 +1133,18 @@ class ErrorMessagesTests extends ErrorMessagesTest {
1132
1133
assertEquals(tpParams, l2.map(_.show))
1133
1134
1134
1135
}
1136
+
1137
+ @ Test def packageNameAlreadyDefined =
1138
+ checkMessagesAfter(" frontend" ) {
1139
+ """
1140
+ |package bar { }
1141
+ |object bar { }
1142
+ |
1143
+ """ .stripMargin
1144
+ }.expect { (ictx, messages) =>
1145
+ implicit val ctx : Context = ictx
1146
+
1147
+ assertMessageCount(1 , messages)
1148
+ assert(messages.head.isInstanceOf [PackageNameAlreadyDefined ])
1149
+ }
1135
1150
}
You can’t perform that action at this time.
0 commit comments