15f31f0893d75203c326ddcd9808099bbfe34aec0David Blaikie// RUN: %clang_cc1 -fsyntax-only -Wc++11-compat -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s 2191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin 3191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin// Verify that the appropriate fixits are emitted for narrowing conversions in 4191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin// initializer lists. 5191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin 6191591336f639dad1504e863733fb831645c1644Jeffrey Yasskintypedef short int16_t; 7191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin 8191591336f639dad1504e863733fb831645c1644Jeffrey Yasskinvoid fixits() { 9191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin int x = 999; 10191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin struct {char c;} c2 = {x}; 11191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: warning:{{.*}} cannot be narrowed 12191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: fix-it:{{.*}}:26}:"static_cast<char>(" 13191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: fix-it:{{.*}}:27}:")" 14191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin struct {int16_t i;} i16 = {70000}; 15191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: warning:{{.*}} cannot be narrowed 16191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: fix-it:{{.*}}:30}:"static_cast<int16_t>(" 17191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: fix-it:{{.*}}:35}:")" 18191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin} 19191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin 20191591336f639dad1504e863733fb831645c1644Jeffrey Yasskintemplate<typename T> 21191591336f639dad1504e863733fb831645c1644Jeffrey Yasskinvoid maybe_shrink_int(T t) { 22191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin struct {T t;} t2 = {700}; 23191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin} 24191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin 25191591336f639dad1504e863733fb831645c1644Jeffrey Yasskinvoid test_template() { 26191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin maybe_shrink_int((char)3); 27191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: warning:{{.*}} cannot be narrowed 28191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: note:{{.*}} in instantiation 296bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: note:{{.*}} silence 30191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // FIXME: This should be static_cast<T>. 31191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: fix-it:{{.*}}"static_cast<char>(" 32191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin // CHECK: fix-it:{{.*}}")" 33191591336f639dad1504e863733fb831645c1644Jeffrey Yasskin} 34