diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-03-12 01:48:56 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-03-12 01:48:56 +0000 |
commit | 1beec45a618b4613b27ab0e78fdfc89f0b035398 (patch) | |
tree | c2589daed2b6f9ead4563534c8f3a416ff095857 /clang/lib/Parse/ParseExprCXX.cpp | |
parent | c313d94068b63afb8d8212a42cd74178af6539ca (diff) | |
download | bcm5719-llvm-1beec45a618b4613b27ab0e78fdfc89f0b035398.tar.gz bcm5719-llvm-1beec45a618b4613b27ab0e78fdfc89f0b035398.zip |
Fixes for some more expressions containing function templateids that
should be resolvable, from Faisal Vali!
llvm-svn: 127521
Diffstat (limited to 'clang/lib/Parse/ParseExprCXX.cpp')
-rw-r--r-- | clang/lib/Parse/ParseExprCXX.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseExprCXX.cpp b/clang/lib/Parse/ParseExprCXX.cpp index d09f20e113a..422b915b682 100644 --- a/clang/lib/Parse/ParseExprCXX.cpp +++ b/clang/lib/Parse/ParseExprCXX.cpp @@ -527,7 +527,15 @@ ExprResult Parser::ParseCXXTypeid() { RParenLoc = MatchRHSPunctuation(tok::r_paren, LParenLoc); if (RParenLoc.isInvalid()) return ExprError(); - + + // If we are a foo<int> that identifies a single function, resolve it now... + Expr* e = Result.get(); + if (e->getType() == Actions.Context.OverloadTy) { + ExprResult er = + Actions.ResolveAndFixSingleFunctionTemplateSpecialization(e); + if (er.isUsable()) + Result = er.release(); + } Result = Actions.ActOnCXXTypeid(OpLoc, LParenLoc, /*isType=*/false, Result.release(), RParenLoc); } |