зеркало из https://github.com/microsoft/clang-1.git
Fix some redundant errors by changing CXXScopeSpec::isSet calls into
isNotEmpty calls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100722 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
1e3c6f4ab5
Коммит
edc287751a
|
@ -2427,7 +2427,7 @@ void Parser::ParseDeclaratorInternal(Declarator &D,
|
|||
CXXScopeSpec SS;
|
||||
ParseOptionalCXXScopeSpecifier(SS, /*ObjectType=*/0, true); // ignore fail
|
||||
|
||||
if (SS.isSet()) {
|
||||
if (SS.isNotEmpty()) {
|
||||
if (Tok.isNot(tok::star)) {
|
||||
// The scope spec really belongs to the direct-declarator.
|
||||
D.getCXXScopeSpec() = SS;
|
||||
|
|
|
@ -1046,7 +1046,7 @@ bool Parser::TryAnnotateCXXScopeToken(bool EnteringContext) {
|
|||
CXXScopeSpec SS;
|
||||
if (ParseOptionalCXXScopeSpecifier(SS, /*ObjectType=*/0, EnteringContext))
|
||||
return true;
|
||||
if (!SS.isSet())
|
||||
if (SS.isEmpty())
|
||||
return false;
|
||||
|
||||
// Push the current token back into the token stream (or revert it if it is
|
||||
|
|
|
@ -70,7 +70,7 @@ Sema::TypeTy *Sema::getTypeName(IdentifierInfo &II, SourceLocation NameLoc,
|
|||
QualType ObjectType = QualType::getFromOpaquePtr(ObjectTypePtr);
|
||||
if (ObjectType->isRecordType())
|
||||
LookupCtx = computeDeclContext(ObjectType);
|
||||
} else if (SS && SS->isSet()) {
|
||||
} else if (SS && SS->isNotEmpty()) {
|
||||
LookupCtx = computeDeclContext(*SS, false);
|
||||
|
||||
if (!LookupCtx) {
|
||||
|
|
|
@ -1253,8 +1253,11 @@ QualType Sema::GetTypeForDeclarator(Declarator &D, Scope *S,
|
|||
}
|
||||
// The scope spec must refer to a class, or be dependent.
|
||||
QualType ClsType;
|
||||
if (isDependentScopeSpecifier(DeclType.Mem.Scope())
|
||||
|| dyn_cast_or_null<CXXRecordDecl>(
|
||||
if (DeclType.Mem.Scope().isInvalid()) {
|
||||
// Avoid emitting extra errors if we already errored on the scope.
|
||||
D.setInvalidType(true);
|
||||
} else if (isDependentScopeSpecifier(DeclType.Mem.Scope())
|
||||
|| dyn_cast_or_null<CXXRecordDecl>(
|
||||
computeDeclContext(DeclType.Mem.Scope()))) {
|
||||
NestedNameSpecifier *NNS
|
||||
= (NestedNameSpecifier *)DeclType.Mem.Scope().getScopeRep();
|
||||
|
|
|
@ -13,9 +13,9 @@ namespace A {
|
|||
}
|
||||
|
||||
A:: ; // expected-error {{expected unqualified-id}}
|
||||
// FIXME: redundant errors
|
||||
::A::ax::undef ex3; // expected-error {{no member named}} expected-error {{unknown type name}}
|
||||
A::undef1::undef2 ex4; // expected-error {{no member named 'undef1'}} expected-error {{unknown type name}}
|
||||
// FIXME: there is a member 'ax'; it's just not a class.
|
||||
::A::ax::undef ex3; // expected-error {{no member named 'ax'}}
|
||||
A::undef1::undef2 ex4; // expected-error {{no member named 'undef1'}}
|
||||
|
||||
int A::C::Ag1() { return 0; }
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace PR6161 {
|
|||
// expected-error{{expected class name}} \
|
||||
// expected-note{{attempt to specialize declaration here}}
|
||||
{
|
||||
static locale::id id; // expected-error{{use of undeclared identifier}} FIXME: expected-error {{unknown type name}}
|
||||
static locale::id id; // expected-error{{use of undeclared identifier}}
|
||||
};
|
||||
numpunct<char>::~numpunct(); // expected-error{{template specialization requires 'template<>'}} \
|
||||
// expected-error{{specialization of member 'PR6161::numpunct<char>::~numpunct' does not specialize an instantiated member}}
|
||||
|
|
Загрузка…
Ссылка в новой задаче