Oh, la spiegazione profonda è piuttosto complicata.
In sostanza, la firma è:
def <<= (app: Initialize[Task[S]]): Setting[Task[S]] = macro std.TaskMacro.itaskAssignPosition[S]
Quindi si tratta di questa 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)
ho già usato questo tipo di operatore quando si tratta di compilazione AspectJ:
products in Compile <<= products in Aspectj
Fondamentalmente, significa: basare la sorgente del codice sui file di origine AspectJ (generati con un plugin), non quelli classici.
L'interpreto come una sorta di "replaceAll/cancella":
Sostituire un gruppo di file da compilare in base ai file che includono le annotazioni di AspectJ.
Molto troppo complicato. Significa 'depends-on << = (tutto, elencato, qui)' – pfn