Allow function calls to dereferenced member pointers of

pointer-to-function type. Fixes <rdar://problem/9065289>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127739 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Douglas Gregor 2011-03-16 17:42:23 +00:00
Родитель c9977d09a2
Коммит eed5ddc255
2 изменённых файлов: 15 добавлений и 3 удалений

Просмотреть файл

@ -4574,9 +4574,6 @@ Sema::ActOnCallExpr(Scope *S, Expr *Fn, SourceLocation LParenLoc,
return MaybeBindToTemporary(TheCall);
}
return ExprError(Diag(Fn->getLocStart(),
diag::err_typecheck_call_not_function)
<< Fn->getType() << Fn->getSourceRange());
}
}
}

Просмотреть файл

@ -34,3 +34,18 @@ void test0() {
Test0 mytest;
mytest.test();
}
namespace rdar9065289 {
typedef void (*FuncPtr)();
struct X0 { };
struct X1
{
X0* x0;
FuncPtr X0::*fptr;
};
void f(X1 p) {
(p.x0->*(p.fptr))();
}
}