Using declarations for static member functions

In:

class A {
protected:
static void f() {}
};

class B : public A {
public:
using A::f;
};

void f() {
B::f();
}

The B::f() call creates a DeclRefExpr where the FoundDecl is the CXXMethodDecl A::f(). This is contrary to cases of non-static member functions (where the MemberExpr has a FoundDecl that is a UsingShadowDecl) and non-member functions in general (where the FoundDecl of the DeclRefExpr is a UsingShadowDecl).

Is this a bug? Does anyone know of hand how to fix it?

It does look like a bug. The way to fix it is to trace through Sema and figure out where the found decl is being changed.

John.