| 273 | } |
| 274 | |
| 275 | void function_arg_variadic() const { |
| 276 | constexpr char xmldata[] = "<?xml version=\"1.0\"?>\n" |
| 277 | "<def>\n" |
| 278 | "<function name=\"foo\">\n" |
| 279 | " <arg nr=\"1\"></arg>\n" |
| 280 | " <arg nr=\"variadic\"><not-uninit/></arg>\n" |
| 281 | "</function>\n" |
| 282 | "</def>"; |
| 283 | |
| 284 | Library library; |
| 285 | ASSERT(LibraryHelper::loadxmldata(library, xmldata, sizeof(xmldata))); |
| 286 | ASSERT_EQUALS(0, library.functions().at("foo").argumentChecks.at(-1).notuninit); |
| 287 | |
| 288 | const char code[] = "foo(a,b,c,d,e);"; |
| 289 | SimpleTokenList tokenList(code); |
| 290 | tokenList.front()->next()->astOperand1(tokenList.front()); |
| 291 | |
| 292 | ASSERT_EQUALS(false, library.isuninitargbad(tokenList.front(), 1)); |
| 293 | ASSERT_EQUALS(true, library.isuninitargbad(tokenList.front(), 2)); |
| 294 | ASSERT_EQUALS(true, library.isuninitargbad(tokenList.front(), 3)); |
| 295 | ASSERT_EQUALS(true, library.isuninitargbad(tokenList.front(), 4)); |
| 296 | } |
| 297 | |
| 298 | void function_arg_direction() const { |
| 299 | constexpr char xmldata[] = "<?xml version=\"1.0\"?>\n" |
nothing calls this directly
no test coverage detected