@@ -316,7 +316,7 @@ object RefChecks {
316316 /* Check that all conditions for overriding `other` by `member`
317317 * of class `clazz` are met.
318318 */
319- def checkOverride (member : Symbol , other : Symbol ): Unit = {
319+ def checkOverride (member : Symbol , other : Symbol ): Unit =
320320 def memberTp (self : Type ) =
321321 if (member.isClass) TypeAlias (member.typeRef.EtaExpand (member.typeParams))
322322 else self.memberInfo(member)
@@ -373,6 +373,11 @@ object RefChecks {
373373 if trueMatch && noErrorType then
374374 emitOverrideError(overrideErrorMsg(msg, compareTypes))
375375
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+
376381 def autoOverride (sym : Symbol ) =
377382 sym.is(Synthetic ) && (
378383 desugar.isDesugaredCaseClassMethodName(member.name) || // such names are added automatically, can't have an override preset.
@@ -423,6 +428,7 @@ object RefChecks {
423428 def otherIsJavaProtected = other.isAllOf(JavaProtected ) // or o is Java defined and protected (see #3946)
424429 memberIsPublic || protectedOK && (accessBoundaryOK || otherIsJavaProtected)
425430 end isOverrideAccessOK
431+
426432 if ! member.hasTargetName(other.targetName) then
427433 overrideTargetNameError()
428434 else if ! isOverrideAccessOK then
@@ -509,22 +515,10 @@ object RefChecks {
509515 overrideError(" cannot have a @targetName annotation since external names would be different" )
510516 else if ! other.isExperimental && member.hasAnnotation(defn.ExperimentalAnnot ) then // (1.12)
511517 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" )
515520 end checkOverride
516521
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-
528522 OverridingPairsChecker (clazz, self).checkAll(checkOverride)
529523 printMixinOverrideErrors()
530524
0 commit comments