summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseExprCXX.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-03-12 01:48:56 +0000
committerDouglas Gregor <dgregor@apple.com>2011-03-12 01:48:56 +0000
commit1beec45a618b4613b27ab0e78fdfc89f0b035398 (patch)
treec2589daed2b6f9ead4563534c8f3a416ff095857 /clang/lib/Parse/ParseExprCXX.cpp
parentc313d94068b63afb8d8212a42cd74178af6539ca (diff)
downloadbcm5719-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.cpp10
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);
}
OpenPOWER on IntegriCloud