summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-04-15 19:00:29 -0700
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-04-15 19:00:29 -0700
commite337bfca56572b88dbc75a0e5d20f862be5f4ce0 (patch)
treee78dfa660dc4ddfebc0a7e9755fbf77530b067fc /src
parent835fbfb152f8f806639473a96883e002bd8706c4 (diff)
parent660c8fd4c89c4f7121d131138c5f9fceaefa4992 (diff)
downloadscala-e337bfca56572b88dbc75a0e5d20f862be5f4ce0.tar.gz
scala-e337bfca56572b88dbc75a0e5d20f862be5f4ce0.tar.bz2
scala-e337bfca56572b88dbc75a0e5d20f862be5f4ce0.zip
Merge pull request #2336 from retronym/topic/deprecated-inheritance-tweak
SI-7312 @deprecatedInheritance now ignores same-file subclasses
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala6
-rw-r--r--src/library/scala/deprecatedInheritance.scala3
2 files changed, 6 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index a75061c492..a7b68ee6f8 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -1737,14 +1737,16 @@ trait Typers extends Adaptations with Tags {
if (psym.isFinal)
pending += ParentFinalInheritanceError(parent, psym)
- if (psym.hasDeprecatedInheritanceAnnotation) {
+ val sameSourceFile = context.unit.source.file == psym.sourceFile
+
+ if (psym.hasDeprecatedInheritanceAnnotation && !sameSourceFile) {
val suffix = psym.deprecatedInheritanceMessage map (": " + _) getOrElse ""
val msg = s"inheritance from ${psym.fullLocationString} is deprecated$suffix"
unit.deprecationWarning(parent.pos, msg)
}
if (psym.isSealed && !phase.erasedTypes)
- if (context.unit.source.file == psym.sourceFile)
+ if (sameSourceFile)
psym addChild context.owner
else
pending += ParentSealedInheritanceError(parent, psym)
diff --git a/src/library/scala/deprecatedInheritance.scala b/src/library/scala/deprecatedInheritance.scala
index 70065560b1..7d20219d4d 100644
--- a/src/library/scala/deprecatedInheritance.scala
+++ b/src/library/scala/deprecatedInheritance.scala
@@ -11,7 +11,8 @@ package scala
/** An annotation that designates that inheriting from a class is deprecated.
*
* This is usually done to warn about a non-final class being made final in a future version.
- * Sub-classing such a class then generates a warning.
+ * Sub-classing such a class then generates a warning. No warnings are generated if the
+ * subclass is in the same compilation unit.
*
* @param message the message to print during compilation if the class was sub-classed
* @param since a string identifying the first version in which inheritance was deprecated