Is this a bug in pattern matching in Maxima?



Hello I have the following code

matchdeclare(g,true);
defrule(myrule,exp(g),print("exp(g) entered with g=",g));
myrule(2^(exp(x)));   --- gives g=x but I expected false
myrule(exp(exp(x)));   ---- gives g=exp(x), as expected
myrule(x^(exp(x)));   ---- gives g=x but false have been expected


Is this a bug in maxima or am I doing something wrong?

Thank you
Robert