# Literal const parameter defaults struct S; ==> SourceFile( StructItem( struct, TypeIdentifier, TypeParamList( ConstParameter(const, BoundIdentifier, TypeIdentifier, Integer), ConstParameter(const, BoundIdentifier, TypeIdentifier, Boolean), ConstParameter(const, BoundIdentifier, TypeIdentifier, Char)))) # Negative const parameter default enum E { A } ==> SourceFile( EnumItem( enum, TypeIdentifier, TypeParamList(ConstParameter(const, BoundIdentifier, TypeIdentifier, ArithOp, Integer)), EnumVariantList(EnumVariant(Identifier)))) # Identifier const parameter default const N: usize = 1; struct S; ==> SourceFile( ConstItem(const, BoundIdentifier, TypeIdentifier, Integer), StructItem( struct, TypeIdentifier, TypeParamList(ConstParameter(const, BoundIdentifier, TypeIdentifier, Identifier)))) # Block const parameter default trait T {} ==> SourceFile( TraitItem( trait, TypeIdentifier, TypeParamList( ConstParameter( const, BoundIdentifier, TypeIdentifier, Block(ExpressionStatement(BinaryExpression(Integer, ArithOp, Integer))))), DeclarationList))