1*f4a0e9a7SRichard Trieu // RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin %s 2*f4a0e9a7SRichard Trieu 3*f4a0e9a7SRichard Trieu // This file tests -Wconstant-conversion, a subcategory of -Wconversion 4*f4a0e9a7SRichard Trieu // which is on by default. 5*f4a0e9a7SRichard Trieu nines()6*f4a0e9a7SRichard Trieuconstexpr int nines() { return 99999; } 7*f4a0e9a7SRichard Trieu too_big_for_char(int param)8*f4a0e9a7SRichard Trieuvoid too_big_for_char(int param) { 9*f4a0e9a7SRichard Trieu char warn1 = false ? 0 : 99999; 10*f4a0e9a7SRichard Trieu // expected-warning@-1 {{implicit conversion from 'int' to 'char' changes value from 99999 to -97}} 11*f4a0e9a7SRichard Trieu char warn2 = false ? 0 : nines(); 12*f4a0e9a7SRichard Trieu // expected-warning@-1 {{implicit conversion from 'int' to 'char' changes value from 99999 to -97}} 13*f4a0e9a7SRichard Trieu 14*f4a0e9a7SRichard Trieu char warn3 = param > 0 ? 0 : 99999; 15*f4a0e9a7SRichard Trieu // expected-warning@-1 {{implicit conversion from 'int' to 'char' changes value from 99999 to -97}} 16*f4a0e9a7SRichard Trieu char warn4 = param > 0 ? 0 : nines(); 17*f4a0e9a7SRichard Trieu // expected-warning@-1 {{implicit conversion from 'int' to 'char' changes value from 99999 to -97}} 18*f4a0e9a7SRichard Trieu 19*f4a0e9a7SRichard Trieu char ok1 = true ? 0 : 99999; 20*f4a0e9a7SRichard Trieu char ok2 = true ? 0 : nines(); 21*f4a0e9a7SRichard Trieu 22*f4a0e9a7SRichard Trieu char ok3 = true ? 0 : 99999 + 1; 23*f4a0e9a7SRichard Trieu char ok4 = true ? 0 : nines() + 1; 24*f4a0e9a7SRichard Trieu } 25