It does not seem to be useful for the $submenu mechanism to re-evaluate the content that is returned by the alias and it does not seem to be forced like in /timer or /scid:
menu menubar {
double evaluation
.$submenu($testsm($1))
}
alias testsm {
if ($1 == 1) return item : echo -ag > $!!me
}
Inside a script $!me means plain text "$me", so if someone is using $!me there, they would expect plain text "$me".
If there's no good reason for this behavior, could it be changed? Even if it's been in place for so long, double evaluating is not something you want, it can be exploited etc.