@@ -270,6 +270,10 @@ class TestTokenizer : public TestFixture {
270270 TEST_CASE (functionAttributeListBefore);
271271 TEST_CASE (functionAttributeListAfter);
272272
273+ TEST_CASE (cppMaybeUnusedBefore);
274+ TEST_CASE (cppMaybeUnusedAfter);
275+ TEST_CASE (cppMaybeUnusedStructuredBinding);
276+
273277 TEST_CASE (splitTemplateRightAngleBrackets);
274278
275279 TEST_CASE (cpp03template1);
@@ -4163,6 +4167,47 @@ class TestTokenizer : public TestFixture {
41634167 ASSERT (func8 && func8->isAttributeNoreturn () && func8->isAttributePure () && func8->isAttributeNothrow () && func8->isAttributeConst ());
41644168 }
41654169
4170+ void cppMaybeUnusedBefore () {
4171+ const char code[] = " [[maybe_unused]] int var {};" ;
4172+ const char expected[] = " int var { } ;" ;
4173+
4174+ SimpleTokenizer tokenizer (settings0, *this );
4175+ ASSERT (tokenizer.tokenize (code));
4176+
4177+ ASSERT_EQUALS (expected, tokenizer.tokens ()->stringifyList (nullptr , false ));
4178+
4179+ const Token *var = Token::findsimplematch (tokenizer.tokens (), " var" );
4180+ ASSERT (var && var->isAttributeMaybeUnused ());
4181+ }
4182+
4183+ void cppMaybeUnusedAfter () {
4184+ const char code[] = " int var [[maybe_unused]] {};" ;
4185+ const char expected[] = " int var { } ;" ;
4186+
4187+ SimpleTokenizer tokenizer (settings0, *this );
4188+ ASSERT (tokenizer.tokenize (code));
4189+
4190+ ASSERT_EQUALS (expected, tokenizer.tokens ()->stringifyList (nullptr , false ));
4191+
4192+ const Token *var = Token::findsimplematch (tokenizer.tokens (), " var" );
4193+ ASSERT (var && var->isAttributeMaybeUnused ());
4194+ }
4195+
4196+ void cppMaybeUnusedStructuredBinding () {
4197+ const char code[] = " [[maybe_unused]] auto [var1, var2] = f();" ;
4198+ const char expected[] = " auto [ var1 , var2 ] = f ( ) ;" ;
4199+
4200+ SimpleTokenizer tokenizer (settings0, *this );
4201+ ASSERT (tokenizer.tokenize (code));
4202+
4203+ ASSERT_EQUALS (expected, tokenizer.tokens ()->stringifyList (nullptr , false ));
4204+
4205+ const Token *var1 = Token::findsimplematch (tokenizer.tokens (), " var1" );
4206+ ASSERT (var1 && var1->isAttributeMaybeUnused ());
4207+ const Token *var2 = Token::findsimplematch (tokenizer.tokens (), " var2" );
4208+ ASSERT (var2 && var2->isAttributeMaybeUnused ());
4209+ }
4210+
41664211
41674212 void splitTemplateRightAngleBrackets () {
41684213 {
0 commit comments