Oh, a deep explanation is rather complicated.
Mostly signature:
def <<= (app: Initialize[Task[S]]): Setting[Task[S]] = macro std.TaskMacro.itaskAssignPosition[S]
Therefore, it includes this macro:
/* Implementations of <<= macro variations for tasks and settings. These just get the source position of the call site.*/ def itaskAssignPosition[T: c.WeakTypeTag](c: Context)(app: c.Expr[Initialize[Task[T]]]): c.Expr[Setting[Task[T]]] = settingAssignPosition(c)(app)
I already used this type of operator when working with AspectJ compilation:
products in Compile <<= products in Aspectj
This basically means: base the source of the code on the AspectJ source files (generated by the plugin ), and not on the classic ones.
I interpret it as a kind of "replaceAll / erase":
Replace the bunch of files for compilation with AspectJ annotation files.
source share