1 // RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -verify -Wformat-pedantic %s
2 // RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -fdiagnostics-parseable-fixits -Wformat-pedantic %s 2>&1 | FileCheck %s
4 extern "C" int printf(const char * restrict
, ...);
8 typedef long NSInteger
;
9 typedef unsigned long NSUInteger
;
12 typedef int NSInteger
;
13 typedef unsigned int NSUInteger
;
16 enum class CFIndexEnum
: CFIndex
{ One
};
17 enum class NSIntegerEnum
: NSInteger
{ Two
};
18 enum class NSUIntegerEnum
: NSUInteger
{ Three
};
21 printf("%d", CFIndexEnum::One
); // expected-warning{{format specifies type 'int' but the argument has type 'CFIndexEnum'}}
22 // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%ld"
23 // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"static_cast<long>("
24 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:32-[[@LINE-3]]:32}:")"
26 printf("%d", NSIntegerEnum::Two
); // expected-warning{{format specifies type 'int' but the argument has type 'NSIntegerEnum'}}
27 // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%ld"
28 // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"static_cast<long>("
29 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:34-[[@LINE-3]]:34}:")"
31 printf("%d", NSUIntegerEnum::Three
); // expected-warning{{format specifies type 'int' but the argument has type 'NSUIntegerEnum'}}
32 // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%lu"
33 // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"static_cast<unsigned long>("
34 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:37-[[@LINE-3]]:37}:")"