blob: e02fade7a90f4c905f4345faaa6805bab5b75476 [file] [log] [blame]
/* APPLE LOCAL file 4529766 */
/* Check for declaration and usage of 'format' with __NSString__
selector attribute on method declarations. */
/* { dg-do compile } */
/* { dg-options "-Wformat -Wformat-security" } */
#include <Foundation/Foundation.h>
__attribute__((objc_root_class)) @interface MyClass
- (void) message_with_line : (int)anchor : (NSString *)format, ...
__attribute__ ((__format__ (__NSString__, 2, 3)));
+ (void) class_message : (int)anchor : (NSString *)format, ... __attribute__ ((__format__ (__NSString__, 2, 3)));
- (void) another_message : (int)anchor : (NSString *)format, ...
__attribute__ ((__format__ (__NSString__, 0, 3))); /* { dg-warning "format NSString argument not an 'NSString \\*' type" } */
- (void) another_with_line : (int)anchor : (NSString *)format: (int)a2, ... __attribute__ ((__format__ (__NSString__, 2, 4)));
- (void) bar_with_line : (int)anchor : (NSString *)format, ...
__attribute__ ((__format__ (__NSString__, 2, 2))); /* { dg-warning "format string argument follows the args to be formatted" } */
@end
void
FOO (MyClass* p, NSString * form)
{
[MyClass class_message :13:form, 10, 'a', 20, 10];
[p message_with_line :13:form]; /* { dg-warning "format not a string literal and no format arguments" } */
[MyClass class_message :13: @"foo%@", 10, 'a', p, 10];
[MyClass class_message :13: form]; /* { dg-warning "format not a string literal and no format arguments" } */
[p another_with_line :13:form:10, p, 'a', 20, 10];
[MyClass another_with_line :13:@"foo%@":100, 10, 'a', 20, 10];
[p another_with_line :13:form:100]; /* { dg-warning "format not a string literal and no format arguments" } */
}