Skip to content

Commit 7a5e6a4

Browse files
committed
Show that implicitNotFound unchecked in typer
1 parent 2df748d commit 7a5e6a4

File tree

2 files changed

+38
-34
lines changed

2 files changed

+38
-34
lines changed

tests/neg/i4986c.check

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,64 @@
1-
-- Error: tests/neg/i4986c.scala:38:7 ----------------------------------------------------------------------------------
2-
38 | test.f // error
1+
-- Error: tests/neg/i4986c.scala:42:7 ----------------------------------------------------------------------------------
2+
42 | test.f // error
33
| ^
44
| Missing X$Y for Test[Char]
5-
-- Error: tests/neg/i4986c.scala:39:8 ----------------------------------------------------------------------------------
6-
39 | test.g[Int] // error
5+
-- Error: tests/neg/i4986c.scala:43:8 ----------------------------------------------------------------------------------
6+
43 | test.g[Int] // error
77
| ^
88
| Missing Outer[Int] with OuterMember = pkg.Outer[Int]#OuterMember
9-
-- Error: tests/neg/i4986c.scala:40:8 ----------------------------------------------------------------------------------
10-
40 | test.h[X$Y] // error
9+
-- Error: tests/neg/i4986c.scala:44:8 ----------------------------------------------------------------------------------
10+
44 | test.h[X$Y] // error
1111
| ^
1212
| Missing Outer[pkg.X$Y] with OuterMember = pkg.Outer[pkg.X$Y]#OuterMember
13-
-- Error: tests/neg/i4986c.scala:41:8 ----------------------------------------------------------------------------------
14-
41 | test.i[Option[String]] // error
13+
-- Error: tests/neg/i4986c.scala:45:8 ----------------------------------------------------------------------------------
14+
45 | test.i[Option[String]] // error
1515
| ^
1616
| Missing implicit outer param of type Outer[Option[String]] for Test[Char]
17-
-- Error: tests/neg/i4986c.scala:42:8 ----------------------------------------------------------------------------------
18-
42 | test.j[(Long, Long), Int | String, Array] // error
17+
-- Error: tests/neg/i4986c.scala:46:8 ----------------------------------------------------------------------------------
18+
46 | test.j[(Long, Long), Int | String, Array] // error
1919
| ^
2020
|Missing Inner[Int | String, Array] with InnerMember = pkg.Outer[(Long, Long)]#Inner[Int | String, Array]#InnerMember from Outer[(Long, Long)] with OuterMember = pkg.Outer[(Long, Long)]#OuterMember
21-
-- Error: tests/neg/i4986c.scala:43:8 ----------------------------------------------------------------------------------
22-
43 | test.k[Either[String, Any], Seq[Seq[Char]], Vector] // error
21+
-- Error: tests/neg/i4986c.scala:47:8 ----------------------------------------------------------------------------------
22+
47 | test.k[Either[String, Any], Seq[Seq[Char]], Vector] // error
2323
| ^
2424
| Missing implicit inner param of type Outer[Either[String, Any]]#Inner[Seq[Seq[Char]], Vector] for Test[Char]
25-
-- Error: tests/neg/i4986c.scala:45:12 ---------------------------------------------------------------------------------
26-
45 | implicitly[Outer[Option[String] | List[Iterable[Char]]] { type MyType = BigDecimal }] // error
25+
-- Error: tests/neg/i4986c.scala:49:12 ---------------------------------------------------------------------------------
26+
49 | implicitly[Outer[Option[String] | List[Iterable[Char]]] { type MyType = BigDecimal }] // error
2727
| ^
2828
|Missing Outer[Option[String] | List[Iterable[Char]]] with OuterMember = pkg.Outer[Option[String] | List[Iterable[Char]]]{MyType = BigDecimal}#OuterMember
29-
-- Error: tests/neg/i4986c.scala:46:12 ---------------------------------------------------------------------------------
30-
46 | implicitly[(Outer[Option[String] | List[Iterable[Char]]] { type MyType = BigDecimal })#Inner[Byte, Seq]] // error
29+
-- Error: tests/neg/i4986c.scala:50:12 ---------------------------------------------------------------------------------
30+
50 | implicitly[(Outer[Option[String] | List[Iterable[Char]]] { type MyType = BigDecimal })#Inner[Byte, Seq]] // error
3131
| ^
3232
|Missing Inner[Byte, Seq] with InnerMember = pkg.Outer[Option[String] | List[Iterable[Char]]]{MyType = BigDecimal}#Inner[Byte, Seq]#InnerMember from Outer[Option[String] | List[Iterable[Char]]] with OuterMember = pkg.Outer[Option[String] | List[Iterable[Char]]]{MyType = BigDecimal}#OuterMember
33-
-- Error: tests/neg/i4986c.scala:47:12 ---------------------------------------------------------------------------------
34-
47 | implicitly[Outer[Int] @myAnnot] // error
33+
-- Error: tests/neg/i4986c.scala:51:12 ---------------------------------------------------------------------------------
34+
51 | implicitly[Outer[Int] @myAnnot] // error
3535
| ^
3636
| Missing Outer[Int] with OuterMember = pkg.Outer[Int] @myAnnot#OuterMember
37-
-- Error: tests/neg/i4986c.scala:52:12 ---------------------------------------------------------------------------------
38-
52 | implicitly[Outer[Int] { type OuterMember = Long }] // error
37+
-- Error: tests/neg/i4986c.scala:56:12 ---------------------------------------------------------------------------------
38+
56 | implicitly[Outer[Int] { type OuterMember = Long }] // error
3939
| ^
4040
| Missing Outer[Int] with OuterMember = Long
41-
-- Error: tests/neg/i4986c.scala:53:12 ---------------------------------------------------------------------------------
42-
53 | implicitly[outer.type] // error
41+
-- Error: tests/neg/i4986c.scala:57:12 ---------------------------------------------------------------------------------
42+
57 | implicitly[outer.type] // error
4343
| ^
4444
| Missing Outer[Int] with OuterMember = pkg.Test.outer.OuterMember
45-
-- Error: tests/neg/i4986c.scala:54:12 ---------------------------------------------------------------------------------
46-
54 | implicitly[(Outer[Int] { type OuterMember = Long })#Inner[Long, Iterator] { type InnerMember = Byte }] // error
45+
-- Error: tests/neg/i4986c.scala:58:12 ---------------------------------------------------------------------------------
46+
58 | implicitly[(Outer[Int] { type OuterMember = Long })#Inner[Long, Iterator] { type InnerMember = Byte }] // error
4747
| ^
4848
| Missing Inner[Long, Iterator] with InnerMember = Byte from Outer[Int] with OuterMember = Long
49-
-- Error: tests/neg/i4986c.scala:55:12 ---------------------------------------------------------------------------------
50-
55 | implicitly[outer.Inner[Long, Iterator] { type InnerMember = Byte }] // error
49+
-- Error: tests/neg/i4986c.scala:59:12 ---------------------------------------------------------------------------------
50+
59 | implicitly[outer.Inner[Long, Iterator] { type InnerMember = Byte }] // error
5151
| ^
5252
|Missing Inner[Long, Iterator] with InnerMember = Byte from Outer[Int] with OuterMember = pkg.Test.outer.OuterMember
53-
-- Error: tests/neg/i4986c.scala:56:12 ---------------------------------------------------------------------------------
54-
56 | implicitly[inner.type] // error
53+
-- Error: tests/neg/i4986c.scala:60:12 ---------------------------------------------------------------------------------
54+
60 | implicitly[inner.type] // error
5555
| ^
5656
|Missing Inner[Long, Iterator] with InnerMember = pkg.Test.inner.InnerMember from Outer[Int] with OuterMember = pkg.Test.outer.OuterMember
57-
-- Error: tests/neg/i4986c.scala:58:12 ---------------------------------------------------------------------------------
58-
58 | implicitly[U[Int, Option, Map]] // error
57+
-- Error: tests/neg/i4986c.scala:62:12 ---------------------------------------------------------------------------------
58+
62 | implicitly[U[Int, Option, Map]] // error
5959
| ^
6060
| There's no U[Int, Option, Map]
61-
-- Error: tests/neg/i4986c.scala:62:5 ----------------------------------------------------------------------------------
62-
62 | i.m[Option[Long]] // error
61+
-- Error: tests/neg/i4986c.scala:66:5 ----------------------------------------------------------------------------------
62+
66 | i.m[Option[Long]] // error
6363
| ^
64-
| String; List; [A, _] =>> List[Option[?]]; Int; Option[Long];
64+
| There is no '' but it's unchecked; String; List; [A, _] =>> List[Option[?]]; Int; Option[Long]

tests/neg/i4986c.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@ trait X$Y
1919
@implicitNotFound(msg = "There's no U[${X}, ${Y}, ${Z}]")
2020
trait U[X, Y[_], Z[_, ZZ]] {
2121
class I[R] {
22-
def m[S](implicit @implicitNotFound("${X}; ${Y}; ${ Z }; ${R}; ${S}; ${XX}") i: Int) = ???
22+
def m[S](implicit @implicitNotFound("There is no '${XX}' but it's unchecked; ${X}; ${Y}; ${ Z }; ${R}; ${S}") i: Int) = ???
2323
}
2424
}
2525

26+
// No refcheck of XX in presence of typer errors; trailing space in previous message for I.m was especially weird.
27+
@implicitNotFound(msg = "There's no U[${X}, ${Y}, ${Z}] or ${XX}")
28+
trait Unchecked[X, Y[_], Z[_, ZZ]]
29+
2630
class Test[A] {
2731
def f(implicit @implicitNotFound(msg = "Missing X$Y for Test[${A}]") xy: X$Y) = ???
2832
def g[B: Outer] = ???

0 commit comments

Comments
 (0)