I should be clearer about terminology. We have in the past used “compiler plugin” (and “syntax extension”) to refer to procedural macros. Macros (whether macros-by-example, currently using macro_rules!) or procedural are purely syntactic, they only interact with the parser, not the rest of the compiler. Type information is not available until much later in the compiler, by which time all macros have been expanded and have disappeared. So, a compiler plugin (in my sense of the concept) with access to type information is a very different beast from a macro (even a procedural macro) which only has access to the syntax.