aboutsummaryrefslogtreecommitdiff
path: root/test/test/sigtest.sc
blob: ed3793f1c18900178ad2a15982e6f27a2fa7784b (plain) (blame)
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
package test

import dotty.tools.dotc._
import core._
import Decorators._
import Types._, Symbols._

object sigtest extends DottyTest {
  println("Welcome to the Scala worksheet")       //> Welcome to the Scala worksheet
  val int = ctx.requiredClass("scala.Int")        //> int  : dotty.tools.dotc.core.Symbols.ClassSymbol = class Int
  int.signature                                   //> res0: dotty.tools.dotc.core.Denotations.Signature = List()
  val intmeth = methType("x")(int.symbolicRef)()  //> intmeth  : dotty.tools.dotc.core.Types.MethodType = MethodType(List(x), List
                                                  //| (TypeRef(ThisType(module class scala),Int)), TypeRef(ThisType(module class s
                                                  //| cala),Unit))
  intmeth.signature                               //> res1: dotty.tools.dotc.core.Denotations.Signature = List(Int)
  val arr = defn.ArrayType.appliedTo(int.symbolicRef)
                                                  //> arr  : dotty.tools.dotc.core.Types.Type = RefinedType(TypeRef(ThisType(modul
                                                  //| e class scala),Array), scala$Array$$T, TypeAlias(TypeRef(ThisType(module cla
                                                  //| ss scala),Int)) | hash = 1907214242)
  val arraymeth = methType("x")(arr)()            //> arraymeth  : dotty.tools.dotc.core.Types.MethodType = MethodType(List(x), Li
                                                  //| st(RefinedType(TypeRef(ThisType(module class scala),Array), scala$Array$$T, 
                                                  //| TypeAlias(TypeRef(ThisType(module class scala),Int)) | hash = 1907214242)), 
                                                  //| TypeRef(ThisType(module class scala),Unit))
  arraymeth.signature                             //> res2: dotty.tools.dotc.core.Denotations.Signature = List(Int[])
  val curriedmeth = methType("x", "y")(defn.IntType, defn.BooleanType)(methType("z")(defn.ArrayType.appliedTo(defn.IntType))())
                                                  //> curriedmeth  : dotty.tools.dotc.core.Types.MethodType = MethodType(List(x, y
                                                  //| ), List(TypeRef(ThisType(module class scala),Int), TypeRef(ThisType(module c
                                                  //| lass scala),Boolean)), MethodType(List(z), List(RefinedType(TypeRef(ThisType
                                                  //| (module class scala),Array), scala$Array$$T, TypeAlias(TypeRef(ThisType(modu
                                                  //| le class scala),Int)) | hash = 1808140099)), TypeRef(ThisType(module class s
                                                  //| cala),Unit)))
  curriedmeth.signature                           //> res3: dotty.tools.dotc.core.Denotations.Signature = List(Int, Boolean, Int[]
                                                  //| )
}