@@ -2351,6 +2351,61 @@ TEST_F(TokenAnnotatorTest, UnderstandsCtorAndDtorDeclNames) {
2351
2351
EXPECT_TOKEN (Tokens[4 ], tok::l_paren, TT_FunctionDeclarationLParen);
2352
2352
EXPECT_TOKEN (Tokens[6 ], tok::l_brace, TT_FunctionLBrace);
2353
2353
2354
+ Tokens = annotate (" Foo<int>::Foo() {}" );
2355
+ ASSERT_EQ (Tokens.size (), 11u ) << Tokens;
2356
+ EXPECT_TOKEN (Tokens[5 ], tok::identifier, TT_CtorDtorDeclName);
2357
+ EXPECT_TOKEN (Tokens[6 ], tok::l_paren, TT_FunctionDeclarationLParen);
2358
+ EXPECT_TOKEN (Tokens[8 ], tok::l_brace, TT_FunctionLBrace);
2359
+
2360
+ Tokens = annotate (" Foo<int>::~Foo() {}" );
2361
+ ASSERT_EQ (Tokens.size (), 12u ) << Tokens;
2362
+ EXPECT_TOKEN (Tokens[6 ], tok::identifier, TT_CtorDtorDeclName);
2363
+ EXPECT_TOKEN (Tokens[7 ], tok::l_paren, TT_FunctionDeclarationLParen);
2364
+ EXPECT_TOKEN (Tokens[9 ], tok::l_brace, TT_FunctionLBrace);
2365
+
2366
+ Tokens = annotate (" template <typename V> Foo<V>::Foo() {}" );
2367
+ ASSERT_EQ (Tokens.size (), 16u ) << Tokens;
2368
+ EXPECT_TOKEN (Tokens[10 ], tok::identifier, TT_CtorDtorDeclName);
2369
+ EXPECT_TOKEN (Tokens[11 ], tok::l_paren, TT_FunctionDeclarationLParen);
2370
+ EXPECT_TOKEN (Tokens[13 ], tok::l_brace, TT_FunctionLBrace);
2371
+
2372
+ Tokens = annotate (" template <typename V> Foo<V>::~Foo() {}" );
2373
+ ASSERT_EQ (Tokens.size (), 17u ) << Tokens;
2374
+ EXPECT_TOKEN (Tokens[11 ], tok::identifier, TT_CtorDtorDeclName);
2375
+ EXPECT_TOKEN (Tokens[12 ], tok::l_paren, TT_FunctionDeclarationLParen);
2376
+ EXPECT_TOKEN (Tokens[14 ], tok::l_brace, TT_FunctionLBrace);
2377
+
2378
+ Tokens = annotate (" template <typename V> [[nodiscard]] Foo<V>::Foo() {}" );
2379
+ ASSERT_EQ (Tokens.size (), 21u ) << Tokens;
2380
+ EXPECT_TOKEN (Tokens[15 ], tok::identifier, TT_CtorDtorDeclName);
2381
+ EXPECT_TOKEN (Tokens[16 ], tok::l_paren, TT_FunctionDeclarationLParen);
2382
+ EXPECT_TOKEN (Tokens[18 ], tok::l_brace, TT_FunctionLBrace);
2383
+
2384
+ Tokens = annotate (" template <typename V> Foo<V>::Foo() [[nodiscard]] {}" );
2385
+ ASSERT_EQ (Tokens.size (), 21u ) << Tokens;
2386
+ EXPECT_TOKEN (Tokens[10 ], tok::identifier, TT_CtorDtorDeclName);
2387
+ EXPECT_TOKEN (Tokens[11 ], tok::l_paren, TT_FunctionDeclarationLParen);
2388
+ EXPECT_TOKEN (Tokens[18 ], tok::l_brace, TT_FunctionLBrace);
2389
+
2390
+ Tokens = annotate (" template <typename V, typename U> Foo<V, U>::Foo() {}" );
2391
+ ASSERT_EQ (Tokens.size (), 21u ) << Tokens;
2392
+ EXPECT_TOKEN (Tokens[15 ], tok::identifier, TT_CtorDtorDeclName);
2393
+ EXPECT_TOKEN (Tokens[16 ], tok::l_paren, TT_FunctionDeclarationLParen);
2394
+ EXPECT_TOKEN (Tokens[18 ], tok::l_brace, TT_FunctionLBrace);
2395
+
2396
+ Tokens = annotate (" template <typename V, typename U> Foo<V, U>::~Foo() {}" );
2397
+ ASSERT_EQ (Tokens.size (), 22u ) << Tokens;
2398
+ EXPECT_TOKEN (Tokens[16 ], tok::identifier, TT_CtorDtorDeclName);
2399
+ EXPECT_TOKEN (Tokens[17 ], tok::l_paren, TT_FunctionDeclarationLParen);
2400
+ EXPECT_TOKEN (Tokens[19 ], tok::l_brace, TT_FunctionLBrace);
2401
+
2402
+ Tokens = annotate (
2403
+ " template <typename V> template<typename W> Foo<V>::Foo(W x) {}" );
2404
+ ASSERT_EQ (Tokens.size (), 23u ) << Tokens;
2405
+ EXPECT_TOKEN (Tokens[15 ], tok::identifier, TT_CtorDtorDeclName);
2406
+ EXPECT_TOKEN (Tokens[16 ], tok::l_paren, TT_FunctionDeclarationLParen);
2407
+ EXPECT_TOKEN (Tokens[20 ], tok::l_brace, TT_FunctionLBrace);
2408
+
2354
2409
Tokens = annotate (" struct Test {\n "
2355
2410
" Test()\n "
2356
2411
" : l([] {\n "
0 commit comments