summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaLookup.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-06-26 05:26:50 +0000
committerAnders Carlsson <andersca@mac.com>2009-06-26 05:26:50 +0000
commitf057cb2310b324a8b051cb6840dfab7f5d4e01e0 (patch)
tree1a29b23039bf8137a9ae8ef031171d6a5a2c04c5 /clang/lib/Sema/SemaLookup.cpp
parent288dcd11589e3a0b3ccb7290aa4827df04f80ad4 (diff)
downloadbcm5719-llvm-f057cb2310b324a8b051cb6840dfab7f5d4e01e0.tar.gz
bcm5719-llvm-f057cb2310b324a8b051cb6840dfab7f5d4e01e0.zip
See through UsingDecls in more places.
llvm-svn: 74269
Diffstat (limited to 'clang/lib/Sema/SemaLookup.cpp')
-rw-r--r--clang/lib/Sema/SemaLookup.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp
index e1c6302fcc1..d76761c6963 100644
--- a/clang/lib/Sema/SemaLookup.cpp
+++ b/clang/lib/Sema/SemaLookup.cpp
@@ -139,16 +139,24 @@ MaybeConstructOverloadSet(ASTContext &Context,
// nothing to leak.
Ovl = OverloadedFunctionDecl::Create(Context, (*I)->getDeclContext(),
(*I)->getDeclName());
- if (isa<FunctionDecl>(*I))
- Ovl->addOverload(cast<FunctionDecl>(*I));
+ NamedDecl *ND = (*I);
+ if (UsingDecl *UD = dyn_cast<UsingDecl>(ND))
+ ND = UD->getTargetDecl();
+
+ if (isa<FunctionDecl>(ND))
+ Ovl->addOverload(cast<FunctionDecl>(ND));
else
- Ovl->addOverload(cast<FunctionTemplateDecl>(*I));
+ Ovl->addOverload(cast<FunctionTemplateDecl>(ND));
}
- if (isa<FunctionDecl>(*Last))
- Ovl->addOverload(cast<FunctionDecl>(*Last));
+ NamedDecl *ND = (*Last);
+ if (UsingDecl *UD = dyn_cast<UsingDecl>(ND))
+ ND = UD->getTargetDecl();
+
+ if (isa<FunctionDecl>(ND))
+ Ovl->addOverload(cast<FunctionDecl>(ND));
else
- Ovl->addOverload(cast<FunctionTemplateDecl>(*Last));
+ Ovl->addOverload(cast<FunctionTemplateDecl>(ND));
}
// If we had more than one function, we built an overload
OpenPOWER on IntegriCloud