We often visit the same variable multiple times, e.g. once when checking its initializer and later when compiling the function. Unify both of those in visitVarDecl() and do the returning of the value in visitDecl().
I was working on something different and noticed that we register the same variable declaration twice.
Clang calls EvaluateAsInitializer() for local (const, probably) declarations as well, so we shouldn't register those as global variables.
I was a bit surprised to not see override here -- I wonder if we should have some visual separation between the overrides and the non-overrides given the similarity in naming?