Skip to content

Commit 5ddb0bb

Browse files
authored
Merge pull request scala#5257 from szeiger/wip/final-tuples
SI-7301 Make tuple classes final
2 parents 2f75e05 + cd9240e commit 5ddb0bb

32 files changed

+37
-66
lines changed

src/build/genprod.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,7 @@ class Tuple(val i: Int) extends Group("Tuple") with Arity {
315315
* @constructor Create a new tuple with {i} elements.{idiomatic}
316316
{params}
317317
*/
318-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
319-
case class {className}{covariantArgs}({fields})
318+
final case class {className}{covariantArgs}({fields})
320319
extends {Product.className(i)}{invariantArgs}
321320
{{
322321
override def toString() = "(" + {mkToString} + ")"

src/compiler/scala/tools/nsc/typechecker/Checkable.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,9 +241,7 @@ trait Checkable {
241241
private def isSealedOrFinal(sym: Symbol) = sym.isSealed || sym.isFinal
242242
private def isEffectivelyFinal(sym: Symbol): Boolean = (
243243
// initialization important
244-
sym.initialize.isEffectivelyFinalOrNotOverridden || (
245-
settings.future && isTupleSymbol(sym) // SI-7294 step into the future and treat TupleN as final.
246-
)
244+
sym.initialize.isEffectivelyFinalOrNotOverridden
247245
)
248246

249247
def isNeverSubClass(sym1: Symbol, sym2: Symbol) = areIrreconcilableAsParents(sym1, sym2)

src/library/scala/Tuple1.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ package scala
1515
* @constructor Create a new tuple with 1 elements.
1616
* @param _1 Element 1 of this Tuple1
1717
*/
18-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
19-
case class Tuple1[@specialized(Int, Long, Double) +T1](_1: T1)
18+
final case class Tuple1[@specialized(Int, Long, Double) +T1](_1: T1)
2019
extends Product1[T1]
2120
{
2221
override def toString() = "(" + _1 + ")"

src/library/scala/Tuple10.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ package scala
2424
* @param _9 Element 9 of this Tuple10
2525
* @param _10 Element 10 of this Tuple10
2626
*/
27-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
28-
case class Tuple10[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10)
27+
final case class Tuple10[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10)
2928
extends Product10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]
3029
{
3130
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 + "," + _9 + "," + _10 + ")"

src/library/scala/Tuple11.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ package scala
2525
* @param _10 Element 10 of this Tuple11
2626
* @param _11 Element 11 of this Tuple11
2727
*/
28-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
29-
case class Tuple11[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11)
28+
final case class Tuple11[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11)
3029
extends Product11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]
3130
{
3231
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 + "," + _9 + "," + _10 + "," + _11 + ")"

src/library/scala/Tuple12.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ package scala
2626
* @param _11 Element 11 of this Tuple12
2727
* @param _12 Element 12 of this Tuple12
2828
*/
29-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
30-
case class Tuple12[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12)
29+
final case class Tuple12[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12)
3130
extends Product12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]
3231
{
3332
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 +

src/library/scala/Tuple13.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ package scala
2727
* @param _12 Element 12 of this Tuple13
2828
* @param _13 Element 13 of this Tuple13
2929
*/
30-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
31-
case class Tuple13[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13)
30+
final case class Tuple13[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13)
3231
extends Product13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]
3332
{
3433
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 +

src/library/scala/Tuple14.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ package scala
2828
* @param _13 Element 13 of this Tuple14
2929
* @param _14 Element 14 of this Tuple14
3030
*/
31-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
32-
case class Tuple14[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14)
31+
final case class Tuple14[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14)
3332
extends Product14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]
3433
{
3534
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 +

src/library/scala/Tuple15.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ package scala
2929
* @param _14 Element 14 of this Tuple15
3030
* @param _15 Element 15 of this Tuple15
3131
*/
32-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
33-
case class Tuple15[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15)
32+
final case class Tuple15[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15)
3433
extends Product15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]
3534
{
3635
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 +

src/library/scala/Tuple16.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ package scala
3030
* @param _15 Element 15 of this Tuple16
3131
* @param _16 Element 16 of this Tuple16
3232
*/
33-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
34-
case class Tuple16[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16)
33+
final case class Tuple16[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16)
3534
extends Product16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]
3635
{
3736
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 +

src/library/scala/Tuple17.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ package scala
3131
* @param _16 Element 16 of this Tuple17
3232
* @param _17 Element 17 of this Tuple17
3333
*/
34-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
35-
case class Tuple17[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17)
34+
final case class Tuple17[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17)
3635
extends Product17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]
3736
{
3837
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 +

src/library/scala/Tuple18.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ package scala
3232
* @param _17 Element 17 of this Tuple18
3333
* @param _18 Element 18 of this Tuple18
3434
*/
35-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
36-
case class Tuple18[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18)
35+
final case class Tuple18[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18)
3736
extends Product18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]
3837
{
3938
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 + "," + _9 +

src/library/scala/Tuple19.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ package scala
3333
* @param _18 Element 18 of this Tuple19
3434
* @param _19 Element 19 of this Tuple19
3535
*/
36-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
37-
case class Tuple19[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19)
36+
final case class Tuple19[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19)
3837
extends Product19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]
3938
{
4039
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 + "," + _9 +

src/library/scala/Tuple2.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ package scala
1616
* @param _1 Element 1 of this Tuple2
1717
* @param _2 Element 2 of this Tuple2
1818
*/
19-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
20-
case class Tuple2[@specialized(Int, Long, Double, Char, Boolean/*, AnyRef*/) +T1, @specialized(Int, Long, Double, Char, Boolean/*, AnyRef*/) +T2](_1: T1, _2: T2)
19+
final case class Tuple2[@specialized(Int, Long, Double, Char, Boolean/*, AnyRef*/) +T1, @specialized(Int, Long, Double, Char, Boolean/*, AnyRef*/) +T2](_1: T1, _2: T2)
2120
extends Product2[T1, T2]
2221
{
2322
override def toString() = "(" + _1 + "," + _2 + ")"

src/library/scala/Tuple20.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ package scala
3434
* @param _19 Element 19 of this Tuple20
3535
* @param _20 Element 20 of this Tuple20
3636
*/
37-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
38-
case class Tuple20[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20)
37+
final case class Tuple20[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20)
3938
extends Product20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]
4039
{
4140
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 + "," + _9 + "," + _10 +

src/library/scala/Tuple21.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ package scala
3535
* @param _20 Element 20 of this Tuple21
3636
* @param _21 Element 21 of this Tuple21
3737
*/
38-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
39-
case class Tuple21[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21)
38+
final case class Tuple21[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21)
4039
extends Product21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]
4140
{
4241
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 + "," + _9 + "," + _10 +

src/library/scala/Tuple22.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ package scala
3636
* @param _21 Element 21 of this Tuple22
3737
* @param _22 Element 22 of this Tuple22
3838
*/
39-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
40-
case class Tuple22[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21, +T22](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22)
39+
final case class Tuple22[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21, +T22](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22)
4140
extends Product22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]
4241
{
4342
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 + "," + _9 + "," + _10 + "," + _11 +

src/library/scala/Tuple3.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ package scala
1717
* @param _2 Element 2 of this Tuple3
1818
* @param _3 Element 3 of this Tuple3
1919
*/
20-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
21-
case class Tuple3[+T1, +T2, +T3](_1: T1, _2: T2, _3: T3)
20+
final case class Tuple3[+T1, +T2, +T3](_1: T1, _2: T2, _3: T3)
2221
extends Product3[T1, T2, T3]
2322
{
2423
override def toString() = "(" + _1 + "," + _2 + "," + _3 + ")"

src/library/scala/Tuple4.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ package scala
1818
* @param _3 Element 3 of this Tuple4
1919
* @param _4 Element 4 of this Tuple4
2020
*/
21-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
22-
case class Tuple4[+T1, +T2, +T3, +T4](_1: T1, _2: T2, _3: T3, _4: T4)
21+
final case class Tuple4[+T1, +T2, +T3, +T4](_1: T1, _2: T2, _3: T3, _4: T4)
2322
extends Product4[T1, T2, T3, T4]
2423
{
2524
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + ")"

src/library/scala/Tuple5.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ package scala
1919
* @param _4 Element 4 of this Tuple5
2020
* @param _5 Element 5 of this Tuple5
2121
*/
22-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
23-
case class Tuple5[+T1, +T2, +T3, +T4, +T5](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5)
22+
final case class Tuple5[+T1, +T2, +T3, +T4, +T5](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5)
2423
extends Product5[T1, T2, T3, T4, T5]
2524
{
2625
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + ")"

src/library/scala/Tuple6.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ package scala
2020
* @param _5 Element 5 of this Tuple6
2121
* @param _6 Element 6 of this Tuple6
2222
*/
23-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
24-
case class Tuple6[+T1, +T2, +T3, +T4, +T5, +T6](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6)
23+
final case class Tuple6[+T1, +T2, +T3, +T4, +T5, +T6](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6)
2524
extends Product6[T1, T2, T3, T4, T5, T6]
2625
{
2726
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + ")"

src/library/scala/Tuple7.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ package scala
2121
* @param _6 Element 6 of this Tuple7
2222
* @param _7 Element 7 of this Tuple7
2323
*/
24-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
25-
case class Tuple7[+T1, +T2, +T3, +T4, +T5, +T6, +T7](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7)
24+
final case class Tuple7[+T1, +T2, +T3, +T4, +T5, +T6, +T7](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7)
2625
extends Product7[T1, T2, T3, T4, T5, T6, T7]
2726
{
2827
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + ")"

src/library/scala/Tuple8.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ package scala
2222
* @param _7 Element 7 of this Tuple8
2323
* @param _8 Element 8 of this Tuple8
2424
*/
25-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
26-
case class Tuple8[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8)
25+
final case class Tuple8[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8)
2726
extends Product8[T1, T2, T3, T4, T5, T6, T7, T8]
2827
{
2928
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 + ")"

src/library/scala/Tuple9.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ package scala
2323
* @param _8 Element 8 of this Tuple9
2424
* @param _9 Element 9 of this Tuple9
2525
*/
26-
@deprecatedInheritance("Tuples will be made final in a future version.", "2.11.0")
27-
case class Tuple9[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9)
26+
final case class Tuple9[+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9](_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9)
2827
extends Product9[T1, T2, T3, T4, T5, T6, T7, T8, T9]
2928
{
3029
override def toString() = "(" + _1 + "," + _2 + "," + _3 + "," + _4 + "," + _5 + "," + _6 + "," + _7 + "," + _8 + "," + _9 + ")"

test/files/neg/t7294.check

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
t7294.scala:4: warning: fruitless type test: a value of type (Int, Int) cannot also be a Seq[A]
22
(1, 2) match { case Seq() => 0; case _ => 1 }
33
^
4-
error: No warnings can be incurred under -Xfatal-warnings.
4+
t7294.scala:4: error: pattern type is incompatible with expected type;
5+
found : Seq[A]
6+
required: (Int, Int)
7+
(1, 2) match { case Seq() => 0; case _ => 1 }
8+
^
59
one warning found
610
one error found

test/files/neg/t7294.flags

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/files/neg/t7294b.check

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
t7294b.scala:1: warning: inheritance from class Tuple2 in package scala is deprecated (since 2.11.0): Tuples will be made final in a future version.
1+
t7294b.scala:1: error: illegal inheritance from final class Tuple2
22
class C extends Tuple2[Int, Int](0, 0)
33
^
4-
error: No warnings can be incurred under -Xfatal-warnings.
5-
one warning found
64
one error found

test/files/neg/t7294b.flags

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/files/pos/t7294.scala

Lines changed: 0 additions & 6 deletions
This file was deleted.

test/files/pos/tcpoly_bounds1.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
class Foo[t[x]<: Tuple2[Int, x]]
1+
case class T2[+T1, +T2](_1: T1, _2: T2) extends Product2[T1, T2]
2+
3+
class Foo[t[x]<: T2[Int, x]]
24

35
//
4-
class MyPair[z](a: Int, b: z) extends Tuple2[Int, z](a,b)
6+
class MyPair[z](a: Int, b: z) extends T2[Int, z](a,b)
57

68
object foo extends Foo[MyPair]
79

test/files/run/t3888.check

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
warning: there was one deprecation warning (since 2.11.0); re-run with -deprecation for details

test/files/run/t3888.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
case class Tuple2[+T1, +T2](_1: T1, _2: T2) extends Product2[T1, T2]
12

23
// in a match, which notion of equals prevails?
34
// extending Tuple doesn't seem to be at issue here.
@@ -7,13 +8,13 @@ object Test {
78
private[this] val T2 = T1
89

910
def m1 =
10-
(1, 2) match {
11+
Tuple2(1, 2) match {
1112
case T1 => true
1213
case _ => false
1314
}
1415

1516
def m2 =
16-
(1, 2) match {
17+
Tuple2(1, 2) match {
1718
case T2 => true
1819
case _ => false
1920
}

0 commit comments

Comments
 (0)