Skip to content

Commit a341caf

Browse files
author
Dean Wampler
committed
Fixed warnings for changes in 3.0.0-RC2 and a few bugs missed before!
1 parent 71fad1a commit a341caf

File tree

12 files changed

+44
-52
lines changed

12 files changed

+44
-52
lines changed

src/script/scala/progscala3/appdesign/Deprecated.scala

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import scala.annotation.nowarn // This one has to be imported.
77
def obsolete(i: Int) = 2*i
88

99
def warning(i: Int) = obsolete(i)
10-
@nowarn def nowarning(i: Int) = obsolete(i) // No warning for this method
10+
// In Scala 2, @nowarn would suppress a warning for this method's use of obsolete.
11+
// This is not (yet?) implemented in Scala 3.
12+
@nowarn def nowarning(i: Int) = obsolete(i)
1113

1214
def inc(i: Int,
1315
@deprecatedName("y", "V1.2.3") n: Int): Int = i + n

src/script/scala/progscala3/fp/categories/ForTriesSteps.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ def sumCounts(countSteps: Seq[Step]): Try[Int] = // <3>
2020
(sumTry, step) => sumTry.flatMap(i => step(i))
2121
}
2222

23-
assert(sumCounts(successfulSteps) == Success(40))
24-
assert(sumCounts(partiallySuccessfulSteps) == Failure(fail))
23+
assert(sumCounts(successfulSteps).equals(Success(40)))
24+
assert(sumCounts(partiallySuccessfulSteps).equals(Failure(fail)))

src/script/scala/progscala3/fp/categories/Functor.scala

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import progscala3.fp.categories.*
33

44
val fid: Int => Double = i => 1.5 * i
55

6-
assert(SeqF.map(Seq(1,2,3,4))(fid) == Seq(1.5, 3.0, 4.5, 6.0))
7-
assert(SeqF.map(Seq.empty[Int])(fid) == Nil)
6+
assert(SeqF.map(Seq(1,2,3,4))(fid).equals(Seq(1.5, 3.0, 4.5, 6.0)))
7+
assert(SeqF.map(Seq.empty[Int])(fid).equals(Nil))
88

9-
assert(OptionF.map(Some(2))(fid) == Some(3.0))
10-
assert(OptionF.map(Option.empty[Int])(fid) == None)
9+
assert(OptionF.map(Some(2))(fid).equals(Some(3.0)))
10+
assert(OptionF.map(Option.empty[Int])(fid).equals(None))

src/script/scala/progscala3/fp/categories/MapMerge.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ map1i.combine(map2i)
1212
map1s.combine(map2s)
1313
map1s <+> map2s
1414

15-
assert(map1i.combine(map2i) == Map("one" -> 1, "two" -> 4, "three" -> 3))
16-
assert(map1s.combine(map2s) == Map("one" -> "1", "two" -> "22", "three" -> "3"))
17-
assert((map1s <+> map2s) == Map("one" -> "1", "two" -> "22", "three" -> "3"))
15+
assert(map1i.combine(map2i).equals(Map("one" -> 1, "two" -> 4, "three" -> 3)))
16+
assert(map1s.combine(map2s).equals(Map("one" -> "1", "two" -> "22", "three" -> "3")))
17+
assert((map1s <+> map2s).equals(Map("one" -> "1", "two" -> "22", "three" -> "3")))

src/script/scala/progscala3/fp/datastructs/Map.scala

+12-12
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,41 @@ val stateCapitals = Map(
66
"Wyoming" -> "Cheyenne")
77

88
val lengths = stateCapitals.map(kv => (kv._1, kv._2.length))
9-
assert(lengths == Map(
9+
assert(lengths.equals(Map(
1010
"Alabama" -> 10,
1111
"Alaska" -> 6,
12-
"Wyoming" -> 8))
12+
"Wyoming" -> 8)))
1313

1414
val caps = stateCapitals.map { case (k, v) => (k, v.toUpperCase) }
15-
assert(caps == Map(
15+
assert(caps.equals(Map(
1616
"Alabama" -> "MONTGOMERY",
1717
"Alaska" -> "JUNEAU",
18-
"Wyoming" -> "CHEYENNE"))
18+
"Wyoming" -> "CHEYENNE")))
1919

2020
val caps2 = stateCapitals.map((k, v) => (k, v.toUpperCase))
21-
assert(caps == Map(
21+
assert(caps.equals(Map(
2222
"Alabama" -> "MONTGOMERY",
2323
"Alaska" -> "JUNEAU",
24-
"Wyoming" -> "CHEYENNE"))
24+
"Wyoming" -> "CHEYENNE")))
2525

2626
val stateCapitals2a = stateCapitals + ("Virginia" -> "Richmond")
27-
assert(stateCapitals2a == Map(
27+
assert(stateCapitals2a.equals(Map(
2828
"Alabama" -> "Montgomery",
2929
"Alaska" -> "Juneau",
3030
"Wyoming" -> "Cheyenne",
31-
"Virginia" -> "Richmond"))
31+
"Virginia" -> "Richmond")))
3232

3333
val stateCapitals2b = stateCapitals + ("Alabama" -> "MONTGOMERY")
34-
assert(stateCapitals2b == Map(
34+
assert(stateCapitals2b.equals(Map(
3535
"Alabama" -> "MONTGOMERY",
3636
"Alaska" -> "Juneau",
37-
"Wyoming" -> "Cheyenne"))
37+
"Wyoming" -> "Cheyenne")))
3838

3939
val stateCapitals2 = stateCapitals ++ Seq(
4040
"Virginia" -> "Richmond", "Illinois" -> "Springfield")
41-
assert(stateCapitals2 == Map(
41+
assert(stateCapitals2.equals(Map(
4242
"Alabama" -> "Montgomery",
4343
"Alaska" -> "Juneau",
4444
"Wyoming" -> "Cheyenne",
4545
"Virginia" -> "Richmond",
46-
"Illinois" -> "Springfield"))
46+
"Illinois" -> "Springfield")))

src/script/scala/progscala3/objectsystem/equality/InheritanceEquality.scala

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ class Employee(val name: String, val annualSalary: Double)
55
class Manager(name: String, annualSalary: Double, val minions: Seq[Employee])
66
extends Employee(name, annualSalary)
77

8-
val e1 = Employee("Buck Trends", 50000.0)
9-
val e1b = Employee("Buck Trends", 50000.0)
10-
val e2 = Employee("Jane Doe", 50000.0)
11-
val m1 = Manager("Jane Doe", 50000.0, Seq(e1, e2))
8+
val e1 = new Employee("Buck Trends", 50000.0)
9+
val e1b = new Employee("Buck Trends", 50000.0)
10+
val e2 = new Employee("Jane Doe", 50000.0)
11+
val m1 = new Manager("Jane Doe", 50000.0, Seq(e1, e2))
1212
val all = Seq(e1, e1b, e2, m1)
1313
// end::definitions[]
1414

src/script/scala/progscala3/patternmatching/MatchTreeADTFull.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ yield tree match
2727
r @ SBranch(_,_)) => s"1: l=$l, r=$r, ll=$ll, lli=$lli, lr=$lr, lri=$lri"
2828
case _: SBranch[?] => "2: Other SBranch"
2929
case Branch(
30-
l @ Branch,
30+
l @ Branch(_, _),
3131
r @ Branch(rl @ Leaf(rli), rr @ Branch(_,_))) =>
3232
s"3: l=$l, r=$r, rl=$rl, rli=$rli, rr=$rr"
3333
case _:Branch[?] => "4: Other Branch"

src/script/scala/progscala3/typesystem/deptypes/DependentTypesSimple.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ opsInt
6767

6868
// tag::s[]
6969
def tryS =
70-
import scala.compiletime.S
70+
import scala.compiletime.ops.int.S
7171

7272
val s1: S[0] = 1 // <1>
7373
val s2a: S[S[0]] = 2 // <2>

src/script/scala/progscala3/typesystem/matchtypes/MatchTypes2.scala

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// src/script/scala/progscala3/typesystem/matchtypes/MatchTypes2.scala
22
// Not in the book. More experimenting with match types.
3+
import compiletime.asMatchable
4+
35
type Elem[X <: Matchable] = X match
46
case String => Char
57
case Array[t] => t
@@ -35,15 +37,16 @@ lastUnsafe(None)
3537
// Does this parse and provide a safe implementation? No; it has trouble
3638
// confirming that Char =:= Elem[String] for "s.last" and
3739
// Matchable =:= Elem[Matchable] for the default Matchable clause.
38-
def lastOrElse[X <: Matchable](in: X)(default: => Elem[X]): Elem[X] = in match
40+
41+
def lastOrElse[X <: Matchable](in: X)(default: => Elem[X]): Elem[X] = in.asMatchable match
3942
case s: String => if s.isEmpty then default else s.last
4043
case a: Array[Elem[X]] => if a.isEmpty then default else a.last
4144
case i: Iterable[Elem[X]] => if i.isEmpty then default else i.last
4245
case o: Option[Elem[X]] => o.getOrElse(default)
4346
case m: Matchable => m
4447

4548
// What about using options? Same parsing problems...
46-
def lastOption[X <: Matchable](in: X): Option[Elem[X]] = in match
49+
def lastOption[X <: Matchable](in: X): Option[Elem[X]] = in.asMatchable match
4750
case s: String => s.lastOption
4851
case a: Array[Elem[X]] => a.lastOption
4952
case i: Iterable[Elem[X]] => i.lastOption
@@ -53,7 +56,7 @@ def lastOption[X <: Matchable](in: X): Option[Elem[X]] = in match
5356
// Surely this will work, no? No; it seems that any attempt to combine the
5457
// match type Elem[X] with other types, whether "| Null", Option[...], or
5558
// using it as the type of a default argument fails to work.
56-
def lastOrNull[X <: Matchable](in: X): Elem[X] | Null = in match
59+
def lastOrNull[X <: Matchable](in: X): Elem[X] | Null = in.asMatchable match
5760
case s: String => if s.isEmpty then null else s.last
5861
case a: Array[Elem[X]] => if a.isEmpty then null else a.last
5962
case i: Iterable[Elem[X]] => if i.isEmpty then null else i.last
@@ -69,7 +72,7 @@ type RElem[X <: Matchable] = X match
6972
case Option[t] => RElem[t]
7073
case Matchable => X
7174

72-
def rlastUnsafe[X <: Matchable](in: X): RElem[X] = in match
75+
def rlastUnsafe[X <: Matchable](in: X): RElem[X] = in.asMatchable match
7376
case s: String => s.last
7477
case a: Array[t] => rlastUnsafe(a.last)
7578
case i: Iterable[t] => rlastUnsafe(i.last)
@@ -83,21 +86,21 @@ def rlastUnsafe[X <: Matchable](in: X): RElem[X] = in match
8386
// case o: Option[RElem[X]] => rlastOrElse(o.getOrElse(default))
8487
// case a: Any => a
8588

86-
def rlastOrElse[X](in: X, default: RElem[X]): RElem[X] = in match
89+
def rlastOrElse[X](in: X, default: RElem[X]): RElem[X] = in.asMatchable match
8790
case s: String => s.lastOption.getOrElse(default)
8891
case a: Array[RElem[X]] => rlastOrElse(a.lastOption.getOrElse(default))
8992
case i: Iterable[RElem[X]] => rlastOrElse(i.lastOption.getOrElse(default))
9093
case o: Option[RElem[X]] => rlastOrElse(o.getOrElse(default))
9194
case a: Any => a
9295

93-
def rlastOption[X](in: X): Option[RElem[X]] = in match
96+
def rlastOption[X](in: X): Option[RElem[X]] = in.asMatchable match
9497
case s: String => s.lastOption
9598
case a: Array[RElem[X]] => a.lastOption.flatMap(x => rlastOption(x))
9699
case i: Iterable[RElem[X]] => i.lastOption.flatMap(x => rlastOption(x))
97100
case o: Option[RElem[X]] => o.flatMap(x => rlastOption(x))
98101
case a: Any => Some(a)
99102

100-
def rlastOrNull[X](in: X): RElem[X] | Null = in match
103+
def rlastOrNull[X](in: X): RElem[X] | Null = in.asMatchable match
101104
case s: String => if s.isEmpty then null else s.last
102105
case a: Array[RElem[X]] => if a.isEmpty then null else rlastOrNull(a.last)
103106
case i: Iterable[RElem[X]] => if i.isEmpty then null else rlastOrNull(i.last)

src/script/scala/progscala3/typesystem/recursivetypes/FBound.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ trait Super[T <: Super[T]]: // <1>
77
case class Sub1(s: String) extends Super[Sub1]: // <3>
88
def make: Sub1 = Sub1(s"Sub1: make: $s")
99

10-
case class Sub2(s: String) extends Super[Sub1]:
11-
def make: Sub1 = Sub1(s"Sub2: make: $s")
10+
case class Sub2(s: String) extends Super[Sub2]:
11+
def make: Sub2 = Sub2(s"Sub2: make: $s")
1212

1313
// case class Foo(str:String) // <4>
1414
// case class Odd(s: String) extends Super[Foo]:

src/script/scala/progscala3/typesystem/structuraltypes/ObserverFunc.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ c.increment()
2121
c.addObserver(observer2.apply)
2222
c.increment()
2323
assert(c.count == 3)
24-
assert(observed1 == 2)
25-
assert(observed2 == 1)
24+
assert(observer1.updateCalledCount == 2)
25+
assert(observer2.updateCalledCount == 1)

src/script/scala/progscala3/typesystem/valuetypes/ObjectTypes.scala

-13
This file was deleted.

0 commit comments

Comments
 (0)