Steve Naroff 2008-09-22 10:28:57 +00:00
Родитель 5950b3f93a
Коммит 4f9b9f1e68
2 изменённых файлов: 16 добавлений и 6 удалений

Просмотреть файл

@ -445,9 +445,9 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS) {
DS.SetRangeEnd(EndProtoLoc);
// Do not allow any other declspecs after the protocol qualifier list
// "<foo,bar>short" is not allowed.
goto DoneWithDeclSpec;
// Need to support trailing type qualifiers (e.g. "id<p> const").
// If a type specifier follows, it will be diagnosed elsewhere.
continue;
}
// GNU attributes support.
case tok::kw___attribute:
@ -585,9 +585,9 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS) {
Diag(Loc, diag::warn_objc_protocol_qualifier_missing_id,
SourceRange(Loc, EndProtoLoc));
// Do not allow any other declspecs after the protocol qualifier list
// "<foo,bar>short" is not allowed.
goto DoneWithDeclSpec;
// Need to support trailing type qualifiers (e.g. "id<p> const").
// If a type specifier follows, it will be diagnosed elsewhere.
continue;
}
}
// If the specifier combination wasn't legal, issue a diagnostic.

Просмотреть файл

@ -12,3 +12,13 @@ void foo(id x) {
[(<SomeProtocol>)x bar]; // expected-warning {{protocol qualifiers without 'id' is archaic}}
}
@protocol MyProtocol
- (void)doSomething;
@end
@interface MyClass
- (void)m1:(id <MyProtocol> const)arg1;
// FIXME: provide a better diagnostic (no typedef).
- (void)m2:(id <MyProtocol> short)arg1; // expected-error {{'short typedef' is invalid}}
@end