aboutsummaryrefslogblamecommitdiff
path: root/tests/run/inlinedAssign.scala
blob: 1b524f92bf24bf7fa52500f79fbd5176664a8681 (plain) (tree)
1
2
3
4
5
6
7
8
9

             
                                                                                    
          
          

   

                                  


                                   


                                   
                            
 



                            
                                                                  

   
object Test {

  inline def swap[T](x: T, inline x_= : T => Unit, y: T, inline y_= : T => Unit) = {
    x_=(y)
    y_=(x)
  }

  inline def f(x: Int => Unit) = x

  def main(args: Array[String]) = {
    var x = 1
    var y = 2
    inline def setX(z: Int) = x = z
    inline def setY(z: Int) = y = z
    swap(x, setX, y, setY)
    assert(x == 2 && y == 1)

    swap(x, x = _, y, y = _)
    assert(x == 1 && y == 2)


    val z = f(setX)  // tests case where inline arg is not applied
  }
}