@@ -67,9 +67,8 @@ internal string RequestCustomEnumMarshaller(string qualifiedEnumTypeName, Unmana
6767 // }
6868 MethodDeclarationSyntax convertToManagedMethod = MethodDeclaration ( enumTypeSyntax , Identifier ( "ConvertToManaged" ) )
6969 . AddModifiers ( TokenWithSpace ( SyntaxKind . PublicKeyword ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) , TokenWithSpace ( SyntaxKind . UnsafeKeyword ) )
70- . AddParameterListParameters ( Parameter ( Identifier ( "unmanaged" ) ) . WithType ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) ) )
71- . WithBody ( Block ( ) . AddStatements (
72- ReturnStatement ( UncheckedExpression ( CastExpression ( enumTypeSyntax , IdentifierName ( "unmanaged" ) ) ) ) ) ) ;
70+ . AddParameterListParameters ( Parameter ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) , Identifier ( "unmanaged" ) ) )
71+ . WithBody ( Block ( ReturnStatement ( UncheckedExpression ( CastExpression ( enumTypeSyntax , IdentifierName ( "unmanaged" ) ) ) ) ) ) ;
7372
7473 // Create ConvertToUnmanaged method
7574 // public static uint ConvertToUnmanaged(Enum managed)
@@ -78,24 +77,22 @@ internal string RequestCustomEnumMarshaller(string qualifiedEnumTypeName, Unmana
7877 // }
7978 MethodDeclarationSyntax convertToUnmanagedMethod = MethodDeclaration ( unmanagedTypeSyntax , Identifier ( "ConvertToUnmanaged" ) )
8079 . AddModifiers ( TokenWithSpace ( SyntaxKind . PublicKeyword ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) )
81- . AddParameterListParameters ( Parameter ( Identifier ( "managed" ) ) . WithType ( enumTypeSyntax . WithTrailingTrivia ( Space ) ) )
82- . WithBody ( Block ( ) . AddStatements (
83- ReturnStatement ( UncheckedExpression ( CastExpression ( unmanagedTypeSyntax , IdentifierName ( "managed" ) ) ) ) ) ) ;
80+ . AddParameterListParameters ( Parameter ( enumTypeSyntax . WithTrailingTrivia ( Space ) , Identifier ( "managed" ) ) )
81+ . WithBody ( Block ( ReturnStatement ( UncheckedExpression ( CastExpression ( unmanagedTypeSyntax , IdentifierName ( "managed" ) ) ) ) ) ) ;
8482
8583 // Create Free method
8684 // public static void Free(uint unmanaged)
8785 // {
8886 // }
8987 MethodDeclarationSyntax freeMethod = MethodDeclaration ( PredefinedType ( Token ( SyntaxKind . VoidKeyword ) ) , Identifier ( "Free" ) )
9088 . AddModifiers ( TokenWithSpace ( SyntaxKind . PublicKeyword ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) )
91- . AddParameterListParameters ( Parameter ( Identifier ( "unmanaged" ) ) . WithType ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) ) )
89+ . AddParameterListParameters ( Parameter ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) , Identifier ( "unmanaged" ) ) )
9290 . WithBody ( Block ( ) ) ; // Empty body
9391
9492 // Create the class declaration
95- ClassDeclarationSyntax marshallerClass = ClassDeclaration ( Identifier ( customTypeMarshallerName ) )
93+ ClassDeclarationSyntax marshallerClass = ClassDeclaration ( Identifier ( customTypeMarshallerName ) , [ convertToManagedMethod , convertToUnmanagedMethod , freeMethod ] )
9694 . AddModifiers ( TokenWithSpace ( this . Visibility ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) )
97- . AddAttributeLists ( customMarshallerAttributes . Select ( attr => AttributeList ( ) . AddAttributes ( attr ) ) . ToArray ( ) )
98- . AddMembers ( convertToManagedMethod , convertToUnmanagedMethod , freeMethod ) ;
95+ . AddAttributeLists ( customMarshallerAttributes . Select ( attr => AttributeList ( attr ) ) . ToArray ( ) ) ;
9996
10097 marshallerClass = marshallerClass . WithAdditionalAnnotations ( new SyntaxAnnotation ( NamespaceContainerAnnotation , shortNamespace ) ) ;
10198
@@ -140,20 +137,18 @@ internal string RequestCustomTypeDefMarshaller(string fullyQualifiedTypeName, Ty
140137 // public static unsafe void* ConvertToUnmanaged(HWND managed) => managed.Value;
141138 MethodDeclarationSyntax toUnmanaged = MethodDeclaration ( unmanagedTypeSyntax , Identifier ( "ConvertToUnmanaged" ) )
142139 . AddModifiers ( TokenWithSpace ( SyntaxKind . PublicKeyword ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) , TokenWithSpace ( SyntaxKind . UnsafeKeyword ) )
143- . AddParameterListParameters ( Parameter ( Identifier ( "managed" ) ) . WithType ( typedefTypeSyntax . WithTrailingTrivia ( Space ) ) )
140+ . AddParameterListParameters ( Parameter ( typedefTypeSyntax . WithTrailingTrivia ( Space ) , Identifier ( "managed" ) ) )
144141 . WithBody ( Block ( ReturnStatement ( MemberAccessExpression ( SyntaxKind . SimpleMemberAccessExpression , IdentifierName ( "managed" ) , IdentifierName ( "Value" ) ) ) ) ) ;
145142
146143 // public static unsafe HWND ConvertToManaged(void* unmanaged) => new(unmanaged);
147144 MethodDeclarationSyntax toManaged = MethodDeclaration ( typedefTypeSyntax , Identifier ( "ConvertToManaged" ) )
148145 . AddModifiers ( TokenWithSpace ( SyntaxKind . PublicKeyword ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) , TokenWithSpace ( SyntaxKind . UnsafeKeyword ) )
149- . AddParameterListParameters ( Parameter ( Identifier ( "unmanaged" ) ) . WithType ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) ) )
150- . WithBody ( Block ( ReturnStatement ( ObjectCreationExpression ( typedefTypeSyntax )
151- . WithArgumentList ( ArgumentList ( SingletonSeparatedList ( Argument ( IdentifierName ( "unmanaged" ) ) ) ) ) ) ) ) ;
146+ . AddParameterListParameters ( Parameter ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) , Identifier ( "unmanaged" ) ) )
147+ . WithBody ( Block ( ReturnStatement ( ObjectCreationExpression ( typedefTypeSyntax , [ Argument ( IdentifierName ( "unmanaged" ) ) ] ) ) ) ) ;
152148
153- ClassDeclarationSyntax marshallerClass = ClassDeclaration ( Identifier ( customTypeMarshallerName ) )
149+ ClassDeclarationSyntax marshallerClass = ClassDeclaration ( Identifier ( customTypeMarshallerName ) , [ toUnmanaged , toManaged ] )
154150 . AddModifiers ( TokenWithSpace ( this . Visibility ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) )
155- . AddAttributeLists ( AttributeList ( ) . AddAttributes ( attribute ) )
156- . AddMembers ( toUnmanaged , toManaged )
151+ . AddAttributeLists ( AttributeList ( attribute ) )
157152 . WithAdditionalAnnotations ( new SyntaxAnnotation ( NamespaceContainerAnnotation , shortNamespace ) ) ;
158153
159154 string qualifiedName = $ "global::{ this . Namespace } .{ shortNamespace } .{ customTypeMarshallerName } ";
@@ -215,15 +210,14 @@ internal string RequestCustomWinRTMarshaller(string qualifiedWinRTTypeName)
215210 // }
216211 MethodDeclarationSyntax convertToManagedMethod = MethodDeclaration ( winrtTypeSyntax , Identifier ( "ConvertToManaged" ) )
217212 . AddModifiers ( TokenWithSpace ( SyntaxKind . PublicKeyword ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) , TokenWithSpace ( SyntaxKind . UnsafeKeyword ) )
218- . AddParameterListParameters ( Parameter ( Identifier ( "unmanaged" ) ) . WithType ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) ) )
219- . WithBody ( Block ( ) . AddStatements (
213+ . AddParameterListParameters ( Parameter ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) , Identifier ( "unmanaged" ) ) )
214+ . WithBody ( Block (
220215 ReturnStatement ( InvocationExpression (
221216 MemberAccessExpression (
222217 SyntaxKind . SimpleMemberAccessExpression ,
223- GenericName ( "global::WinRT.MarshalInterface" )
224- . AddTypeArgumentListArguments ( winrtTypeSyntax ) ,
218+ GenericName ( "global::WinRT.MarshalInterface" , [ winrtTypeSyntax ] ) ,
225219 IdentifierName ( "FromAbi" ) ) ,
226- ArgumentList ( ) . AddArguments ( Argument ( IdentifierName ( "unmanaged" ) ) ) ) ) ) ) ;
220+ [ Argument ( IdentifierName ( "unmanaged" ) ) ] ) ) ) ) ;
227221
228222 // Create ConvertToUnmanaged method
229223 // public static nint ConvertToUnmanaged(T managed)
@@ -232,15 +226,14 @@ internal string RequestCustomWinRTMarshaller(string qualifiedWinRTTypeName)
232226 // }
233227 MethodDeclarationSyntax convertToUnmanagedMethod = MethodDeclaration ( unmanagedTypeSyntax , Identifier ( "ConvertToUnmanaged" ) )
234228 . AddModifiers ( TokenWithSpace ( SyntaxKind . PublicKeyword ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) )
235- . AddParameterListParameters ( Parameter ( Identifier ( "managed" ) ) . WithType ( winrtTypeSyntax . WithTrailingTrivia ( Space ) ) )
236- . WithBody ( Block ( ) . AddStatements (
229+ . AddParameterListParameters ( Parameter ( winrtTypeSyntax . WithTrailingTrivia ( Space ) , Identifier ( "managed" ) ) )
230+ . WithBody ( Block (
237231 ReturnStatement ( InvocationExpression (
238232 MemberAccessExpression (
239233 SyntaxKind . SimpleMemberAccessExpression ,
240- GenericName ( "global::WinRT.MarshalInterface" )
241- . AddTypeArgumentListArguments ( winrtTypeSyntax ) ,
234+ GenericName ( "global::WinRT.MarshalInterface" , [ winrtTypeSyntax ] ) ,
242235 IdentifierName ( "FromManaged" ) ) ,
243- ArgumentList ( ) . AddArguments ( Argument ( IdentifierName ( "managed" ) ) ) ) ) ) ) ;
236+ [ Argument ( IdentifierName ( "managed" ) ) ] ) ) ) ) ;
244237
245238 // Create Free method
246239 // public static void Free(nint unmanaged)
@@ -249,21 +242,19 @@ internal string RequestCustomWinRTMarshaller(string qualifiedWinRTTypeName)
249242 // }
250243 MethodDeclarationSyntax freeMethod = MethodDeclaration ( PredefinedType ( Token ( SyntaxKind . VoidKeyword ) ) , Identifier ( "Free" ) )
251244 . AddModifiers ( TokenWithSpace ( SyntaxKind . PublicKeyword ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) )
252- . AddParameterListParameters ( Parameter ( Identifier ( "unmanaged" ) ) . WithType ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) ) )
253- . WithBody ( Block ( ) . AddStatements (
245+ . AddParameterListParameters ( Parameter ( unmanagedTypeSyntax . WithTrailingTrivia ( Space ) , Identifier ( "unmanaged" ) ) )
246+ . WithBody ( Block (
254247 ExpressionStatement ( InvocationExpression (
255248 MemberAccessExpression (
256249 SyntaxKind . SimpleMemberAccessExpression ,
257- GenericName ( "global::WinRT.MarshalInterface" )
258- . AddTypeArgumentListArguments ( winrtTypeSyntax ) ,
250+ GenericName ( "global::WinRT.MarshalInterface" , [ winrtTypeSyntax ] ) ,
259251 IdentifierName ( "DisposeAbi" ) ) ,
260- ArgumentList ( ) . AddArguments ( Argument ( IdentifierName ( "unmanaged" ) ) ) ) ) ) ) ;
252+ [ Argument ( IdentifierName ( "unmanaged" ) ) ] ) ) ) ) ;
261253
262254 // Create the class declaration
263- ClassDeclarationSyntax marshallerClass = ClassDeclaration ( Identifier ( customTypeMarshallerName ) )
255+ ClassDeclarationSyntax marshallerClass = ClassDeclaration ( Identifier ( customTypeMarshallerName ) , [ convertToManagedMethod , convertToUnmanagedMethod , freeMethod ] )
264256 . AddModifiers ( TokenWithSpace ( this . Visibility ) , TokenWithSpace ( SyntaxKind . StaticKeyword ) )
265- . AddAttributeLists ( customMarshallerAttributes . Select ( attr => AttributeList ( ) . AddAttributes ( attr ) ) . ToArray ( ) )
266- . AddMembers ( convertToManagedMethod , convertToUnmanagedMethod , freeMethod ) ;
257+ . AddAttributeLists ( customMarshallerAttributes . Select ( attr => AttributeList ( attr ) ) . ToArray ( ) ) ;
267258
268259 marshallerClass = marshallerClass . WithAdditionalAnnotations ( new SyntaxAnnotation ( NamespaceContainerAnnotation , marshallerNamespace ) ) ;
269260
0 commit comments