change Sema::ActOnFriendTypeDecl to use GetTypeForDeclarator instead
of ConvertDeclSpecToType, which I'd like to keep private to SemaType.cpp. We do this by cons'ing up a trivial Declarator for the type. John, please review. llvm-svn: 85060
This commit is contained in:
parent
22e8563175
commit
1fb66f4323
|
@ -1245,8 +1245,7 @@ public:
|
|||
}
|
||||
|
||||
/// ActOnFriendTypeDecl - Parsed a friend type declaration.
|
||||
virtual DeclPtrTy ActOnFriendTypeDecl(Scope *S,
|
||||
const DeclSpec &DS,
|
||||
virtual DeclPtrTy ActOnFriendTypeDecl(Scope *S, const DeclSpec &DS,
|
||||
MultiTemplateParamsArg TParams) {
|
||||
return DeclPtrTy();
|
||||
}
|
||||
|
|
|
@ -4271,8 +4271,7 @@ Sema::DeclPtrTy Sema::ActOnStaticAssertDeclaration(SourceLocation AssertLoc,
|
|||
/// We permit this as a special case; if there are any template
|
||||
/// parameters present at all, require proper matching, i.e.
|
||||
/// template <> template <class T> friend class A<int>::B;
|
||||
Sema::DeclPtrTy Sema::ActOnFriendTypeDecl(Scope *S,
|
||||
const DeclSpec &DS,
|
||||
Sema::DeclPtrTy Sema::ActOnFriendTypeDecl(Scope *S, const DeclSpec &DS,
|
||||
MultiTemplateParamsArg TempParams) {
|
||||
SourceLocation Loc = DS.getSourceRange().getBegin();
|
||||
|
||||
|
@ -4282,9 +4281,11 @@ Sema::DeclPtrTy Sema::ActOnFriendTypeDecl(Scope *S,
|
|||
// Try to convert the decl specifier to a type. This works for
|
||||
// friend templates because ActOnTag never produces a ClassTemplateDecl
|
||||
// for a TUK_Friend.
|
||||
bool invalid = false;
|
||||
QualType T = ConvertDeclSpecToType(DS, Loc, invalid);
|
||||
if (invalid) return DeclPtrTy();
|
||||
Declarator TheDeclarator(DS, Declarator::MemberContext);
|
||||
// TODO: Should use D.SetIdentifier() to specify where the identifier is?
|
||||
QualType T = GetTypeForDeclarator(TheDeclarator, S);
|
||||
if (TheDeclarator.isInvalidType())
|
||||
return DeclPtrTy();
|
||||
|
||||
// This is definitely an error in C++98. It's probably meant to
|
||||
// be forbidden in C++0x, too, but the specification is just
|
||||
|
|
Loading…
Reference in New Issue