@@ -316,7 +316,7 @@ object RefChecks {
316
316
/* Check that all conditions for overriding `other` by `member`
317
317
* of class `clazz` are met.
318
318
*/
319
- def checkOverride (member : Symbol , other : Symbol ): Unit = {
319
+ def checkOverride (member : Symbol , other : Symbol ): Unit =
320
320
def memberTp (self : Type ) =
321
321
if (member.isClass) TypeAlias (member.typeRef.EtaExpand (member.typeParams))
322
322
else self.memberInfo(member)
@@ -373,6 +373,11 @@ object RefChecks {
373
373
if trueMatch && noErrorType then
374
374
emitOverrideError(overrideErrorMsg(msg, compareTypes))
375
375
376
+ def overrideDeprecation (what : String , member : Symbol , other : Symbol , fix : String ): Unit =
377
+ report.deprecationWarning(
378
+ s " overriding $what${infoStringWithLocation(other)} is deprecated; \n ${infoString(member)} should be $fix. " ,
379
+ if member.owner == clazz then member.srcPos else clazz.srcPos)
380
+
376
381
def autoOverride (sym : Symbol ) =
377
382
sym.is(Synthetic ) && (
378
383
desugar.isDesugaredCaseClassMethodName(member.name) || // such names are added automatically, can't have an override preset.
@@ -423,6 +428,7 @@ object RefChecks {
423
428
def otherIsJavaProtected = other.isAllOf(JavaProtected ) // or o is Java defined and protected (see #3946)
424
429
memberIsPublic || protectedOK && (accessBoundaryOK || otherIsJavaProtected)
425
430
end isOverrideAccessOK
431
+
426
432
if ! member.hasTargetName(other.targetName) then
427
433
overrideTargetNameError()
428
434
else if ! isOverrideAccessOK then
@@ -509,22 +515,10 @@ object RefChecks {
509
515
overrideError(" cannot have a @targetName annotation since external names would be different" )
510
516
else if ! other.isExperimental && member.hasAnnotation(defn.ExperimentalAnnot ) then // (1.12)
511
517
overrideError(" may not override non-experimental member" )
512
- else
513
- checkOverrideDeprecated()
514
- }
518
+ else if other.hasAnnotation(defn.DeprecatedOverridingAnnot ) then
519
+ overrideDeprecation(" " , member, other, " removed or renamed" )
515
520
end checkOverride
516
521
517
- /* TODO enable; right now the annotation is scala-private, so cannot be seen
518
- * here.
519
- */
520
- def checkOverrideDeprecated () = { /*
521
- if (other.hasDeprecatedOverridingAnnotation) {
522
- val suffix = other.deprecatedOverridingMessage map (": " + _) getOrElse ""
523
- val msg = s"overriding ${other.fullLocationString} is deprecated$suffix"
524
- unit.deprecationWarning(member.pos, msg)
525
- }*/
526
- }
527
-
528
522
OverridingPairsChecker (clazz, self).checkAll(checkOverride)
529
523
printMixinOverrideErrors()
530
524
0 commit comments