forked from scala/scala3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathi15503e.scala
70 lines (59 loc) · 2.02 KB
/
i15503e.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//> using options -Wunused:explicits
object Foo {
/* This goes around the "trivial method" detection */
val default_val = 1
private def f1(a: Int) = a // OK
private def f2(a: Int) = default_val // warn
private def f3(a: Int)(using Int) = a // OK
private def f4(a: Int)(using Int) = default_val // warn
private def f6(a: Int)(using Int) = summon[Int] // warn
private def f7(a: Int)(using Int) = summon[Int] + a // OK
}
package scala2main.unused.args:
object happyBirthday {
def main(args: Array[String]): Unit = println("Hello World") // ok
}
package scala2main:
object happyBirthday {
def main(args: Array[String]): Unit = // OK
println(s"Hello World, there are ${args.size} arguments")
}
package scala3main:
/* This goes around the "trivial method" detection */
val default_unit = ()
@main def hello = println("Hello World") // OK
package foo.test.lambda.param:
val default_val = 1
val a = (i: Int) => i // OK
val b = (i: Int) => default_val // OK
val c = (_: Int) => default_val // OK
package foo.test.trivial:
/* A twisted test from Scala 2 */
class C {
def answer: 42 = 42
object X
private def g0(x: Int) = ??? // OK
private def f0(x: Int) = () // OK
private def f1(x: Int) = throw new RuntimeException // OK
private def f2(x: Int) = 42 // OK
private def f3(x: Int): Option[Int] = None // OK
private def f4(x: Int) = classOf[Int] // OK
private def f5(x: Int) = answer + 27 // OK
private def f6(x: Int) = X // OK
private def f7(x: Int) = Y // OK
private def f8(x: Int): List[C] = Nil // OK
private def f9(x: Int): List[Int] = List(1,2,3,4) // warn
private def foo:Int = 32 // OK
private def f77(x: Int) = foo // warn
}
object Y
package foo.test.i16955:
class S(var r: String) // OK
package foo.test.i16865:
trait Foo:
def fn(a: Int, b: Int): Int // OK
trait Bar extends Foo
object Ex extends Bar:
def fn(a: Int, b: Int): Int = b + 3 // OK
object Ex2 extends Bar:
override def fn(a: Int, b: Int): Int = b + 3 // OK