MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / createLinks2

Method createLinks2

test/testtokenize.cpp:3467–3850  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3465 }
3466
3467 void createLinks2() {
3468 {
3469 // #7158
3470 const char code[] = "enum { value = boost::mpl::at_c<B, C> };";
3471 SimpleTokenizer tokenizer(settingsDefault, *this);
3472 ASSERT(tokenizer.tokenize(code));
3473 const Token *tok = Token::findsimplematch(tokenizer.tokens(), "<");
3474 ASSERT_EQUALS(true, tok->link() == tok->tokAt(4));
3475 ASSERT_EQUALS(true, tok->linkAt(4) == tok);
3476 }
3477
3478 {
3479 // #7865
3480 const char code[] = "template <typename T, typename U>\n"
3481 "struct CheckedDivOp< T, U, typename std::enable_if<std::is_floating_point<T>::value || std::is_floating_point<U>::value>::type> {\n"
3482 "};\n";
3483 SimpleTokenizer tokenizer(settingsDefault, *this);
3484 ASSERT(tokenizer.tokenize(code));
3485 const Token *tok1 = Token::findsimplematch(tokenizer.tokens(), "struct")->tokAt(2);
3486 const Token *tok2 = Token::findsimplematch(tokenizer.tokens(), "{")->previous();
3487 ASSERT_EQUALS(true, tok1->link() == tok2);
3488 ASSERT_EQUALS(true, tok2->link() == tok1);
3489 }
3490
3491 {
3492 // #7975
3493 const char code[] = "template <class C> X<Y&&Z, C*> copy() {};\n";
3494 SimpleTokenizer tokenizer(settingsDefault, *this);
3495 ASSERT(tokenizer.tokenize(code));
3496 const Token *tok1 = Token::findsimplematch(tokenizer.tokens(), "< Y");
3497 const Token *tok2 = Token::findsimplematch(tok1, "> copy");
3498 ASSERT_EQUALS(true, tok1->link() == tok2);
3499 ASSERT_EQUALS(true, tok2->link() == tok1);
3500 }
3501
3502 {
3503 // #8006
3504 const char code[] = "C<int> && a = b;";
3505 SimpleTokenizer tokenizer(settingsDefault, *this);
3506 ASSERT(tokenizer.tokenize(code));
3507 const Token *tok1 = tokenizer.tokens()->next();
3508 const Token *tok2 = tok1->tokAt(2);
3509 ASSERT_EQUALS(true, tok1->link() == tok2);
3510 ASSERT_EQUALS(true, tok2->link() == tok1);
3511 }
3512
3513 {
3514 // #8115
3515 const char code[] = "void Test(C<int> && c);";
3516 SimpleTokenizer tokenizer(settingsDefault, *this);
3517 ASSERT(tokenizer.tokenize(code));
3518 const Token *tok1 = Token::findsimplematch(tokenizer.tokens(), "<");
3519 const Token *tok2 = tok1->tokAt(2);
3520 ASSERT_EQUALS(true, tok1->link() == tok2);
3521 ASSERT_EQUALS(true, tok2->link() == tok1);
3522 }
3523 {
3524 // #8654

Callers 1

testAstMethod · 0.45

Calls 6

findsimplematchFunction · 0.85
tokenizeMethod · 0.80
linkAtMethod · 0.80
nextMethod · 0.80
simpleMatchFunction · 0.50
tokAtMethod · 0.45

Tested by

no test coverage detected