]> granicus.if.org Git - clang/commitdiff
Make sure FunctionDecls aren't considered during overload resolution if there
authorKaelyn Uhrain <rikka@google.com>
Mon, 8 Aug 2011 17:35:31 +0000 (17:35 +0000)
committerKaelyn Uhrain <rikka@google.com>
Mon, 8 Aug 2011 17:35:31 +0000 (17:35 +0000)
are explicit template args.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137054 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaExpr.cpp

index 5e092b7c06cefc8d4fed15a2a26aa7f5fae6eb55..2814004b0b071a5245dc46c7860306f59df69673 100644 (file)
@@ -1457,14 +1457,15 @@ bool Sema::DiagnoseEmptyLookup(Scope *S, CXXScopeSpec &SS, LookupResult &R,
         for (TypoCorrection::decl_iterator CD = Corrected.begin(),
                                         CDEnd = Corrected.end();
              CD != CDEnd; ++CD) {
-          if (FunctionDecl *FD = dyn_cast<FunctionDecl>(*CD))
-            AddOverloadCandidate(FD, DeclAccessPair::make(FD, AS_none),
-                                 Args, NumArgs, OCS);
-          else if (FunctionTemplateDecl *FTD =
+          if (FunctionTemplateDecl *FTD =
                    dyn_cast<FunctionTemplateDecl>(*CD))
             AddTemplateOverloadCandidate(
                 FTD, DeclAccessPair::make(FTD, AS_none), ExplicitTemplateArgs,
                 Args, NumArgs, OCS);
+          else if (FunctionDecl *FD = dyn_cast<FunctionDecl>(*CD))
+            if (!ExplicitTemplateArgs || ExplicitTemplateArgs->size() == 0)
+              AddOverloadCandidate(FD, DeclAccessPair::make(FD, AS_none),
+                                   Args, NumArgs, OCS);
         }
         switch (OCS.BestViableFunction(*this, R.getNameLoc(), Best)) {
           case OR_Success: