We recently discussed eta expansion and expected types. Most recently at
https://github.com/scala/scala/pull/7660
The main reason we don’t do it for 0-ary SAM types is to avoid confusion when the interface is a SAM by accident (InputStream is a fun example.) We could do the expansion when the type is annotated with FunctionalInterface