| 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 |
no test coverage detected