From 67062db57c1abef88e0049dac5d82d4f13375a48 Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Thu, 3 Oct 2013 23:02:27 -0700 Subject: Single Abstract Method support: synthesize SAMs Under `-Xexperimental`, `typedFunction` invokes `synthesizeSAMFunction` when the expected type for the function literal (`pt`) is not the built-in `FunctionN` type of the expected arity, but `pt` does have a SAM with the expected number of arguments. PS: We'll require `import language.sam` instead of `-Xexperimental`, as soon as the SIP is ready and there are more tests. --- test/files/pos/sammy_scope.scala | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 test/files/pos/sammy_scope.scala (limited to 'test/files/pos/sammy_scope.scala') diff --git a/test/files/pos/sammy_scope.scala b/test/files/pos/sammy_scope.scala new file mode 100644 index 0000000000..8f1fe7058e --- /dev/null +++ b/test/files/pos/sammy_scope.scala @@ -0,0 +1,8 @@ +// test synthesizeSAMFunction: scope hygiene +abstract class SamFun[T1, R] { self => + def apply(v1: T1): R + + // this should type check, as the apply ref is equivalent to self.apply + // it shouldn't resolve to the sam's apply that's synthesized (that wouldn't type check, hence the pos test) + def compose[A](g: SamFun[A, T1]): SamFun[A, R] = { x => apply(g(x)) } +} \ No newline at end of file -- cgit v1.2.3