diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-06-27 00:27:47 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-06-27 00:27:47 +0000 |
| commit | 74d7f0dd652bdb3fd6fdbd3fd582829c8b4d5deb (patch) | |
| tree | aaad2c7877334e8327072d45bea6848086dac47d /clang/lib/Sema/SemaDeclCXX.cpp | |
| parent | 8e5f6951ebdc1f9d367226d146050bc542941f7a (diff) | |
| download | bcm5719-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.cpp | 12 |
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)) { |

