We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 1558591 commit d4e477cCopy full SHA for d4e477c
tests/pos/erased-conforms.scala
@@ -0,0 +1,20 @@
1
+import language.experimental.erasedTerms
2
+erased class ErasedTerm
3
+
4
+erased class <::<[-From, +To] extends ErasedTerm
5
6
+erased class =::=[From, To] extends (From <::< To)
7
8
+erased given [X]: (X =::= X) = scala.compiletime.erasedValue
9
10
+extension [From](x: From)
11
+ inline def cast[To](using From <::< To): To = x.asInstanceOf[To] // Safe cast because we know `From <:< To`
12
13
14
+def convert[A, B](a: A)(using /*erased*/ x: A <::< B): B =
15
+ // println(x) // error: OK because x should be erased
16
+ // but currently x is not marked as erased which it should
17
+ a.cast[B]
18
19
20
+@main def App: Unit = convert[Int, Int](3) // should not be an error
0 commit comments