Irregularity in Context.typeof()

Let’s say you have a function that prints a compile-time type:

public static macro function printType(expr:Expr):Expr {
    return macro null;

Plus a typedef:

typedef Time = Date;

What happens when these things interact?

printType(new Time(0, 0, 0, 0, 0, 0)); //Date

var time:Time =;
printType(time); //Time

var time = new Time(0, 0, 0, 0, 0, 0);
printType(time); //Date

printType((; //Time

I feel like all of these should actually print “Time.” Is there any way to make that happen?