File tree Expand file tree Collapse file tree 3 files changed +9
-1
lines changed Expand file tree Collapse file tree 3 files changed +9
-1
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,13 @@ object desugar {
21
21
/** Info of a variable in a pattern: The named tree and its type */
22
22
private type VarInfo = (NameTree , Tree )
23
23
24
+ /** Names of methods that are added unconditionally to case classes */
25
+ def isDesugaredCaseClassMethodName (name : Name )(implicit ctx : Context ) =
26
+ name == nme.isDefined ||
27
+ name == nme.copy ||
28
+ name == nme.productArity ||
29
+ name.isSelectorName
30
+
24
31
// ----- DerivedTypeTrees -----------------------------------
25
32
26
33
class SetterParamTree extends DerivedTypeTree {
Original file line number Diff line number Diff line change @@ -81,6 +81,7 @@ object NameOps {
81
81
def isScala2LocalSuffix = name.endsWith(" " )
82
82
def isModuleVarName (name : Name ): Boolean =
83
83
name.stripAnonNumberSuffix endsWith MODULE_VAR_SUFFIX
84
+ def isSelectorName = name.startsWith(" " ) && name.tail.forall(_.isDigit)
84
85
85
86
/** Is name a variable name? */
86
87
def isVariableName : Boolean = name.length > 0 && {
Original file line number Diff line number Diff line change @@ -288,7 +288,7 @@ object RefChecks {
288
288
! member.isAnyOverride) {
289
289
// (*) Exclusion for default getters, fixes SI-5178. We cannot assign the Override flag to
290
290
// the default getter: one default getter might sometimes override, sometimes not. Example in comment on ticket.
291
- if (member.name == nme.isDefined && member.is( Synthetic )) // isDefined methods are added automatially , can't have an override preset.
291
+ if (member.is( Synthetic ) && desugar.isDesugaredCaseClassMethodName(member.name )) // such names are added automatically , can't have an override preset.
292
292
member.setFlag(Override )
293
293
else if (member.owner != clazz && other.owner != clazz && ! (other.owner derivesFrom member.owner))
294
294
emitOverrideError(
You can’t perform that action at this time.
0 commit comments