1*a393e68bSGeorge Karpenkov // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config eagerly-assume=false %s -analyzer-output=text -verify 28591aa78SAnna Zaks 38591aa78SAnna Zaks void clang_analyzer_eval(bool); 48591aa78SAnna Zaks 58591aa78SAnna Zaks // Test that the analyzer does not crash on GNU extension operator "?:". NoCrashTest(int x,int y)68591aa78SAnna Zaksvoid NoCrashTest(int x, int y) { 78591aa78SAnna Zaks int w = x ?: y; 88591aa78SAnna Zaks } 98591aa78SAnna Zaks OperatorEvaluationTest(int y)108591aa78SAnna Zaksvoid OperatorEvaluationTest(int y) { 118591aa78SAnna Zaks int x = 1; 128591aa78SAnna Zaks int w = x ?: y; // expected-note {{'?' condition is true}} 138591aa78SAnna Zaks 148591aa78SAnna Zaks // TODO: We are not precise when processing the "?:" operator in C++. 158591aa78SAnna Zaks clang_analyzer_eval(w == 1); // expected-warning{{UNKNOWN}} 168591aa78SAnna Zaks // expected-note@-1{{UNKNOWN}} 178591aa78SAnna Zaks } 18