# Macro expression in an attribute value #[doc = concat!("first", "second")] fn documented() {} ==> SourceFile( AttributeItem( Attribute( MetaItem(Identifier, MacroInvocation(Identifier, ParenthesizedTokens(String, String)))), FunctionItem(fn, BoundIdentifier, ParamList, Block))) # Macro expression in an inner attribute value #![doc = concat!("first", "second")] fn documented() {} ==> SourceFile( InnerAttribute( MetaItem(Identifier, MacroInvocation(Identifier, ParenthesizedTokens(String, String)))), FunctionItem(fn, BoundIdentifier, ParamList, Block)) # Nested macro expression in an attribute value #[doc = concat!("item: ", stringify!(documented))] fn documented() {} ==> SourceFile( AttributeItem( Attribute( MetaItem( Identifier, MacroInvocation( Identifier, ParenthesizedTokens(String, Identifier, ParenthesizedTokens(Identifier))))), FunctionItem(fn, BoundIdentifier, ParamList, Block)))