Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions scala/scala-impl/resources/messages/ScalaBundle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ annotator.error.cannot.apply.constructor=Cannot apply constructor {0}
annotator.error.enum.nonvariant.type.param,in.enum=Cannot determine type argument for enum class parent {0}, type parameter {1} is invariant
annotator.error.enum.case.must.extend.parent=Enum case must extend its enum class {0}
annotator.error.enum.two.type.parameter.clauses=Explicit extends clause required because both enum case and enum class have type parameters
annotator.error.enum.parent.has.required.parameters=Explicit extends clause required because its enum class {0} has required parameters

### org/jetbrains/plugins/scala/annotator/element/ScEnumeratorsAnnotator.scala
semicolon.not.allowed.here=Semicolon not allowed here
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,12 @@ object ScEnumCaseAnnotator extends ElementAnnotator[ScEnumCase] {
ScalaBundle.message("annotator.error.enum.two.type.parameter.clauses")
)
}

if (enumDef.parameters.exists(!_.isDefaultParam) && parents.isEmpty) {
holder.createErrorAnnotation(
cse.nameId,
ScalaBundle.message("annotator.error.enum.parent.has.required.parameters", enumDef.name)
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -216,4 +216,22 @@ class ScEnumCaseAnnotatorTest extends ScalaHighlightingTestBase {
|}
|""".stripMargin
)()

def testParentHasRequiredParameter(): Unit =
doTest(
"""
|enum Color(y: Int) {
| case Green
|}
|""".stripMargin
)(Error("Green", "Explicit extends clause required because its enum class Color has required parameters"))

def testParentHasParameterWithDefault(): Unit =
doTest(
"""
|enum Color(y: Int = 1) {
| case Green
|}
|""".stripMargin
)()
}