summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-06-27 00:27:47 +0000
committerAnders Carlsson <andersca@mac.com>2009-06-27 00:27:47 +0000
commit74d7f0dd652bdb3fd6fdbd3fd582829c8b4d5deb (patch)
treeaaad2c7877334e8327072d45bea6848086dac47d /clang/lib/Sema/SemaDeclCXX.cpp
parent8e5f6951ebdc1f9d367226d146050bc542941f7a (diff)
downloadbcm5719-llvm-74d7f0dd652bdb3fd6fdbd3fd582829c8b4d5deb.tar.gz
bcm5719-llvm-74d7f0dd652bdb3fd6fdbd3fd582829c8b4d5deb.zip
Make it possible for using decls to point to operators. Fixes PR4441.
llvm-svn: 74362
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index b2383185336..b7a429991f4 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -1785,18 +1785,24 @@ Sema::DeclPtrTy Sema::ActOnUsingDeclaration(Scope *S,
const CXXScopeSpec &SS,
SourceLocation IdentLoc,
IdentifierInfo *TargetName,
+ OverloadedOperatorKind Op,
AttributeList *AttrList,
bool IsTypeName) {
assert(!SS.isInvalid() && "Invalid CXXScopeSpec.");
- assert(TargetName && "Invalid TargetName.");
+ assert(TargetName || Op && "Invalid TargetName.");
assert(IdentLoc.isValid() && "Invalid TargetName location.");
assert(S->getFlags() & Scope::DeclScope && "Invalid Scope.");
UsingDecl *UsingAlias = 0;
+ DeclarationName Name;
+ if (TargetName)
+ Name = TargetName;
+ else
+ Name = Context.DeclarationNames.getCXXOperatorName(Op);
+
// Lookup target name.
- LookupResult R = LookupParsedName(S, &SS, TargetName,
- LookupOrdinaryName, false);
+ LookupResult R = LookupParsedName(S, &SS, Name, LookupOrdinaryName, false);
if (NamedDecl *NS = R) {
if (IsTypeName && !isa<TypeDecl>(NS)) {
OpenPOWER on IntegriCloud