aboutsummaryrefslogblamecommitdiff
path: root/tests/pos/desugar.scala
blob: 7a12de373ec30befb4d3d9d4ebf066f89681e87e (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                                        
  
                              









                                                                       
 

                                         




                      
                                             
    
                         

                       



                              
   
 
object desugar {

  // variables
  var x: Int = 2
  var y = x * x
  
  { var z: Int = y }
 
  def foo0(first: Int, second: Int = 2, third: Int = 3) = first + second
  def foo1(first: Int, second: Int = 2)(third: Int = 3) = first + second
  def foo2(first: Int)(second: Int = 2)(third: Int = 3) = first + second
  
  object caseClasses { self =>
    trait List[+T] {
      def head: T
      def tail: List[T]
    }

    case class Cons[+T](val head: T, val tail: List[T]) extends List[T]

    object Cons {
      def apply[T](head: T): Cons[T] = apply(head, Nil)
    }

    case object Nil extends List[Nothing]
  }
  
  import caseClasses._
  
  object patDefs {
    
    val xs: List[Int] = Cons(1, Cons(2, Nil))
    
    val Cons(y, ys) = xs 
    val Cons(z, _) = xs
    val Cons(_, _) = xs
   
    val (cons: Cons[Int]) = xs
    
    val x, y, z: Int = 1
  }
}