1*561f0de6SRaphael Isemann // RUN: %clang_analyze_cc1 -fcxx-exceptions -std=c++1z -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
278692ea5SArtem Dergachev 
378692ea5SArtem Dergachev // expected-no-diagnostics
478692ea5SArtem Dergachev 
foo1(int x)578692ea5SArtem Dergachev bool foo1(int x) {
678692ea5SArtem Dergachev   if (x > 0)
778692ea5SArtem Dergachev     return false;
878692ea5SArtem Dergachev   else if (x < 0)
978692ea5SArtem Dergachev     try { x--; } catch (int i) {}
1078692ea5SArtem Dergachev   return true;
1178692ea5SArtem Dergachev }
1278692ea5SArtem Dergachev 
1378692ea5SArtem Dergachev // Uses parenthesis instead of type
foo2(int x)1478692ea5SArtem Dergachev bool foo2(int x) {
1578692ea5SArtem Dergachev   if (x > 0)
1678692ea5SArtem Dergachev     return false;
1778692ea5SArtem Dergachev   else if (x < 0)
1878692ea5SArtem Dergachev     try { x--; } catch (...) {}
1978692ea5SArtem Dergachev   return true;
2078692ea5SArtem Dergachev }
2178692ea5SArtem Dergachev 
2278692ea5SArtem Dergachev // Catches a different type (long instead of int)
foo3(int x)2378692ea5SArtem Dergachev bool foo3(int x) {
2478692ea5SArtem Dergachev   if (x > 0)
2578692ea5SArtem Dergachev     return false;
2678692ea5SArtem Dergachev   else if (x < 0)
2778692ea5SArtem Dergachev     try { x--; } catch (long i) {}
2878692ea5SArtem Dergachev   return true;
2978692ea5SArtem Dergachev }
30