1*2dbfa840SRyosuke Niwa // RUN: %clang_analyze_cc1 -analyzer-checker=alpha.webkit.UncountedCallArgsChecker -verify %s 2*2dbfa840SRyosuke Niwa 3*2dbfa840SRyosuke Niwa #include "mock-types.h" 4*2dbfa840SRyosuke Niwa 5*2dbfa840SRyosuke Niwa class Obj { 6*2dbfa840SRyosuke Niwa public: 7*2dbfa840SRyosuke Niwa static Obj* get(); 8*2dbfa840SRyosuke Niwa static RefPtr<Obj> create(); 9*2dbfa840SRyosuke Niwa void ref() const; 10*2dbfa840SRyosuke Niwa void deref() const; 11*2dbfa840SRyosuke Niwa }; 12*2dbfa840SRyosuke Niwa 13*2dbfa840SRyosuke Niwa void someFunction(Obj*, Obj* = nullptr); 14*2dbfa840SRyosuke Niwa void otherFunction(Obj*, Obj* = Obj::get()); 15*2dbfa840SRyosuke Niwa // expected-warning@-1{{Call argument is uncounted and unsafe [alpha.webkit.UncountedCallArgsChecker]}} 16*2dbfa840SRyosuke Niwa void anotherFunction(Obj*, Obj* = Obj::create().get()); 17*2dbfa840SRyosuke Niwa otherFunction()18*2dbfa840SRyosuke Niwavoid otherFunction() { 19*2dbfa840SRyosuke Niwa someFunction(nullptr); 20*2dbfa840SRyosuke Niwa someFunction(Obj::get()); 21*2dbfa840SRyosuke Niwa // expected-warning@-1{{Call argument is uncounted and unsafe [alpha.webkit.UncountedCallArgsChecker]}} 22*2dbfa840SRyosuke Niwa someFunction(Obj::create().get()); 23*2dbfa840SRyosuke Niwa otherFunction(nullptr); 24*2dbfa840SRyosuke Niwa anotherFunction(nullptr); 25*2dbfa840SRyosuke Niwa } 26