Skip to content

Commit fe18b0e

Browse files
Add more tests
Add more tests cases for generic signatures Add disabled tests with inner classes, traits, enums, etc.
1 parent 9bc5119 commit fe18b0e

15 files changed

+120
-6
lines changed

compiler/src/dotty/tools/dotc/transform/Inlining.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import dotty.tools.dotc.core.DenotTransformers.SymTransformer
1515
import dotty.tools.dotc.staging.StagingLevel
1616
import dotty.tools.dotc.core.SymDenotations.SymDenotation
1717
import dotty.tools.dotc.core.StdNames.str
18+
import dotty.tools.dotc.core.Types.TypeBounds
1819

1920
import scala.collection.mutable.ListBuffer
2021

@@ -75,7 +76,7 @@ class Inlining extends MacroTransform, SymTransformer {
7576
owner = tree.symbol,
7677
name = name.asTypeName,
7778
flags = tdef.symbol.flags & (Private | Protected),
78-
info = Types.TypeBounds.upper(newTrait.symbol.typeRef),
79+
info = TypeBounds.upper(newTrait.symbol.typeRef),
7980
privateWithin = tdef.symbol.privateWithin,
8081
coord = tdef.symbol.coord,
8182
nestingLevel = tdef.symbol.nestingLevel,
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
inline trait A:
2-
class Inner[T <: Int]:
3-
val x: T = 1
1+
inline trait A[T]:
2+
class Inner[U](u: U):
3+
val x: (T, U) = (???, u)
4+
def f: (T, String) = Inner("U").x
45

5-
class B extends A:
6-
def f = Inner[Int]().x
6+
class B extends A[Int]
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
inline trait IT1:
2+
def i: Int = 1
3+
def f[T](x: T): T = x
4+
5+
inline trait IT2:
6+
def j: String = "inline"
7+
def g(x: Int): String = x.toString()
8+
9+
trait T:
10+
def k: List[Nothing]
11+
def h(x: Int, y: Double): Double = x + y
12+
13+
class C1 extends IT1, T:
14+
override def i: Int = 123456
15+
def k = Nil
16+
override def h(x: Int, y: Double): Double = 1.0
17+
18+
class C2 extends IT1, IT2:
19+
override def i: Int = 567890
20+
override def f[T](x: T): T = ???
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
object InlineTraits:
2+
inline trait IT1:
3+
def i: Int = 1
4+
def f[T](x: T): T = x
5+
6+
inline trait IT2:
7+
def j: String = "inline"
8+
def g(x: Int): String = x.toString()
9+
10+
trait T:
11+
def k: List[Nothing]
12+
def h(x: Int, y: Double): Double = x + y
13+
14+
class C1 extends InlineTraits.IT1, T:
15+
def k = Nil
16+
17+
class C2 extends InlineTraits.IT1, InlineTraits.IT2
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
inline trait IT:
2+
def i: Int = 1
3+
def f[T](x: T): T = x
4+
5+
abstract class AC extends IT:
6+
override def i: Int = 123456
7+
def j: Int
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
inline trait IT:
2+
def i: Int = 1
3+
def f[T](x: T): T = x
4+
5+
abstract class AC extends IT:
6+
def j: Int
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
inline trait IT:
2+
def i: Int = 1
3+
def f[T](x: T): T = x
4+
5+
object O extends IT:
6+
override def i: Int = 123456
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
inline trait IT:
2+
def i: Int = 1
3+
def f[T](x: T): T = x
4+
5+
object O extends IT
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import reflect.Selectable.reflectiveSelectable
2+
3+
class C[T](x: T):
4+
def foo(): T = x
5+
6+
inline trait A[T, U[T]](u: U[T]{ def foo(): T }):
7+
def f: T = u.foo()
8+
9+
class B extends A(C(1))
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
inline trait A[T](x: T):
2+
def f: T = x
3+
4+
class B extends A[1](1)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
inline trait A(i: Int)(j: Double):
2+
def f: Double = i + j
3+
4+
class B extends A(1)(1.0)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
inline trait A():
2+
def i: Int = 1
3+
4+
class B extends A
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
object O:
2+
inline trait A[T]:
3+
def t: T = ???
4+
5+
class B extends O.A[Int]
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
1
2+
2
3+
999
4+
4
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
trait TGP[T]:
2+
def i: T
3+
def f(x: T): T = x
4+
5+
inline trait IT1[T](x: T) extends TGP[T]:
6+
override def i: T = x
7+
8+
inline trait IT2 extends TGP[Int]:
9+
override def i: Int = 999
10+
def j: String = "inline"
11+
def g(x: Int): String = x.toString()
12+
13+
trait T extends TGP[Int]
14+
15+
class C1 extends T, IT1[Int](1)
16+
class C2 extends IT1[Int](2), T
17+
class C3 extends IT1[Int](3), IT2
18+
class C4 extends IT2, IT1[Int](4)
19+
20+
@main def Test: Unit =
21+
for c <- List(C1(), C2(), C3(), C4())
22+
do println(c.i)

0 commit comments

Comments
 (0)