Transforms a function call so that it can both provide implicit-style source information and
have a chained apply call. Without macros, only one is possible, since having a implicit
argument in the definition will cause the compiler to interpret a chained apply as an
explicit implicit argument and give type errors.
Instead of an implicit argument, the public-facing function no longer takes a SourceInfo at all.
The macro transforms the public-facing function into a call to an internal function that takes
an explicit SourceInfo by inserting an implicitly[SourceInfo] as the explicit argument.
Transforms a function call so that it can both provide implicit-style source information and have a chained apply call. Without macros, only one is possible, since having a implicit argument in the definition will cause the compiler to interpret a chained apply as an explicit implicit argument and give type errors.
Instead of an implicit argument, the public-facing function no longer takes a SourceInfo at all. The macro transforms the public-facing function into a call to an internal function that takes an explicit SourceInfo by inserting an implicitly[SourceInfo] as the explicit argument.