| // RUN: %clang_cc1 -fsyntax-only -std=c++98 -Wc++11-compat -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s |
| |
| // Verify that the appropriate fixits are emitted for narrowing conversions in |
| // initializer lists. |
| |
| typedef short int16_t; |
| |
| void fixits() { |
| int x = 999; |
| struct {char c;} c2 = {x}; |
| // CHECK: warning:{{.*}} cannot be narrowed |
| // CHECK: fix-it:{{.*}}:26}:"static_cast<char>(" |
| // CHECK: fix-it:{{.*}}:27}:")" |
| struct {int16_t i;} i16 = {70000}; |
| // CHECK: warning:{{.*}} cannot be narrowed |
| // CHECK: fix-it:{{.*}}:30}:"static_cast<int16_t>(" |
| // CHECK: fix-it:{{.*}}:35}:")" |
| } |
| |
| template<typename T> |
| void maybe_shrink_int(T t) { |
| struct {T t;} t2 = {700}; |
| } |
| |
| void test_template() { |
| maybe_shrink_int((char)3); |
| // CHECK: warning:{{.*}} cannot be narrowed |
| // CHECK: note:{{.*}} in instantiation |
| // CHECK: note:{{.*}} silence |
| // FIXME: This should be static_cast<T>. |
| // CHECK: fix-it:{{.*}}"static_cast<char>(" |
| // CHECK: fix-it:{{.*}}")" |
| } |