1 // RUN: %clang_cc1 -fsyntax-only -Wc++11-compat -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s 2 3 // Verify that the appropriate fixits are emitted for narrowing conversions in 4 // initializer lists. 5 6 typedef short int16_t; 7 8 void fixits() { 9 int x = 999; 10 struct {char c;} c2 = {x}; 11 // CHECK: warning:{{.*}} cannot be narrowed 12 // CHECK: fix-it:{{.*}}:26}:"static_cast<char>(" 13 // CHECK: fix-it:{{.*}}:27}:")" 14 struct {int16_t i;} i16 = {70000}; 15 // CHECK: warning:{{.*}} cannot be narrowed 16 // CHECK: fix-it:{{.*}}:30}:"static_cast<int16_t>(" 17 // CHECK: fix-it:{{.*}}:35}:")" 18 } 19 20 template<typename T> 21 void maybe_shrink_int(T t) { 22 struct {T t;} t2 = {700}; 23 } 24 25 void test_template() { 26 maybe_shrink_int((char)3); 27 // CHECK: warning:{{.*}} cannot be narrowed 28 // CHECK: note:{{.*}} in instantiation 29 // CHECK: note:{{.*}} silence 30 // FIXME: This should be static_cast<T>. 31 // CHECK: fix-it:{{.*}}"static_cast<char>(" 32 // CHECK: fix-it:{{.*}}")" 33 } 34