@@ -414,7 +414,7 @@ public override VisualBasicSyntaxNode VisitDestructorDeclaration(CSS.DestructorD
414414 public override VisualBasicSyntaxNode VisitMethodDeclaration ( CSS . MethodDeclarationSyntax node )
415415 {
416416 var isIteratorState = new MethodBodyExecutableStatementVisitor ( _semanticModel , TriviaConvertingVisitor , _commonConversions ) ;
417- bool requiresBody = node . Body != null || node . ExpressionBody != null || node . Modifiers . Any ( m => SyntaxTokenExtensions . IsKind ( m , CS . SyntaxKind . ExternKeyword ) ) ;
417+ bool requiresBody = node . Body != null || node . ExpressionBody != null || node . Modifiers . Any ( m => SyntaxTokenExtensions . IsKind ( m , CS . SyntaxKind . ExternKeyword , CS . SyntaxKind . PartialKeyword ) ) ;
418418 var block = _commonConversions . ConvertBody ( node . Body , node . ExpressionBody , isIteratorState ) ;
419419 var id = _commonConversions . ConvertIdentifier ( node . Identifier ) ;
420420 var attributes = SyntaxFactory . List ( node . AttributeLists . Select ( a => ( AttributeListSyntax ) a . Accept ( TriviaConvertingVisitor ) ) ) ;
@@ -829,7 +829,7 @@ public override VisualBasicSyntaxNode VisitLiteralExpression(CSS.LiteralExpressi
829829 )
830830 ) ;
831831 } else {
832- return CommonConversions . Literal ( node . Token . Value , node . Token . Text ) ;
832+ return _commonConversions . Literal ( node . Token . Value , node . Token . Text ) ;
833833 }
834834 }
835835
@@ -898,7 +898,7 @@ public override VisualBasicSyntaxNode VisitPrefixUnaryExpression(CSS.PrefixUnary
898898 return SyntaxFactory . AssignmentStatement (
899899 kind ,
900900 ( ExpressionSyntax ) node . Operand . Accept ( TriviaConvertingVisitor ) ,
901- SyntaxFactory . Token ( VBUtil . GetExpressionOperatorTokenKind ( kind ) ) , CommonConversions . Literal ( 1 )
901+ SyntaxFactory . Token ( VBUtil . GetExpressionOperatorTokenKind ( kind ) ) , _commonConversions . Literal ( 1 )
902902 ) ;
903903 }
904904 if ( kind == SyntaxKind . AddAssignmentStatement || kind == SyntaxKind . SubtractAssignmentStatement ) {
@@ -908,12 +908,15 @@ public override VisualBasicSyntaxNode VisitPrefixUnaryExpression(CSS.PrefixUnary
908908 else
909909 operatorName = "Decrement" ;
910910 return SyntaxFactory . InvocationExpression (
911- SyntaxFactory . ParseName ( nameof ( System ) + "." + nameof ( System . Threading ) + "." + nameof ( System . Threading . Interlocked ) + "." + operatorName ) ,
911+ SyntaxFactory . ParseName ( GetQualifiedName ( nameof ( System ) , nameof ( System . Threading ) , nameof ( System . Threading . Interlocked ) , operatorName ) ) ,
912912 ExpressionSyntaxExtensions . CreateArgList ( ( ExpressionSyntax ) node . Operand . Accept ( TriviaConvertingVisitor ) )
913913 ) ;
914914 }
915915 return SyntaxFactory . UnaryExpression ( kind , SyntaxFactory . Token ( VBUtil . GetExpressionOperatorTokenKind ( kind ) ) , ( ExpressionSyntax ) node . Operand . Accept ( TriviaConvertingVisitor ) ) ;
916916 }
917+ private static string GetQualifiedName ( params string [ ] names ) {
918+ return names . Aggregate ( ( seed , current ) => seed + '.' + current ) ;
919+ }
917920
918921 public override VisualBasicSyntaxNode VisitAssignmentExpression ( CSS . AssignmentExpressionSyntax node )
919922 {
@@ -986,7 +989,7 @@ public override VisualBasicSyntaxNode VisitPostfixUnaryExpression(CSS.PostfixUna
986989 if ( IsReturnValueDiscarded ( node ) ) {
987990 return SyntaxFactory . AssignmentStatement ( CS . CSharpExtensions . Kind ( node ) . ConvertToken ( TokenContext . Local ) ,
988991 ( ExpressionSyntax ) node . Operand . Accept ( TriviaConvertingVisitor ) ,
989- SyntaxFactory . Token ( VBUtil . GetExpressionOperatorTokenKind ( kind ) ) , CommonConversions . Literal ( 1 )
992+ SyntaxFactory . Token ( VBUtil . GetExpressionOperatorTokenKind ( kind ) ) , _commonConversions . Literal ( 1 )
990993 ) ;
991994 } else {
992995 string operatorName , minMax ;
@@ -1001,13 +1004,13 @@ public override VisualBasicSyntaxNode VisitPostfixUnaryExpression(CSS.PostfixUna
10011004 op = SyntaxKind . AddExpression ;
10021005 }
10031006 return SyntaxFactory . InvocationExpression (
1004- SyntaxFactory . ParseName ( nameof ( Math ) + "." + minMax ) ,
1007+ SyntaxFactory . ParseName ( GetQualifiedName ( nameof ( System ) , nameof ( Math ) , minMax ) ) ,
10051008 new ExpressionSyntax [ ] {
10061009 SyntaxFactory . InvocationExpression (
1007- SyntaxFactory . ParseName ( " System.Threading.Interlocked." + operatorName ) ,
1010+ SyntaxFactory . ParseName ( GetQualifiedName ( nameof ( System ) , nameof ( System . Threading ) , nameof ( System . Threading . Interlocked ) , operatorName ) ) ,
10081011 ExpressionSyntaxExtensions . CreateArgList ( ( ExpressionSyntax ) node . Operand . Accept ( TriviaConvertingVisitor ) )
10091012 ) ,
1010- SyntaxFactory . BinaryExpression ( op , ( ExpressionSyntax ) node . Operand . Accept ( TriviaConvertingVisitor ) , SyntaxFactory . Token ( VBUtil . GetExpressionOperatorTokenKind ( op ) ) , CommonConversions . Literal ( 1 ) )
1013+ SyntaxFactory . BinaryExpression ( op , ( ExpressionSyntax ) node . Operand . Accept ( TriviaConvertingVisitor ) , SyntaxFactory . Token ( VBUtil . GetExpressionOperatorTokenKind ( op ) ) , _commonConversions . Literal ( 1 ) )
10111014 } . CreateArgList ( )
10121015 ) ;
10131016 }
@@ -1245,7 +1248,7 @@ public override VisualBasicSyntaxNode VisitCastExpression(CSS.CastExpressionSynt
12451248 var expr = ( ExpressionSyntax ) node . Expression . Accept ( TriviaConvertingVisitor ) ;
12461249 Func < SyntaxKind , VisualBasicSyntaxNode > toNumber = kind => {
12471250 if ( sourceType ? . SpecialType == SpecialType . System_Char )
1248- return SyntaxFactory . InvocationExpression ( SyntaxFactory . ParseName ( nameof ( Strings . AscW ) ) , ExpressionSyntaxExtensions . CreateArgList ( expr ) ) ;
1251+ return SyntaxFactory . InvocationExpression ( SyntaxFactory . ParseName ( GetQualifiedName ( nameof ( Microsoft ) , nameof ( Microsoft . VisualBasic ) , nameof ( Microsoft . VisualBasic . Strings . AscW ) ) ) , ExpressionSyntaxExtensions . CreateArgList ( expr ) ) ;
12491252 return SyntaxFactory . PredefinedCastExpression ( SyntaxFactory . Token ( kind ) , expr ) ;
12501253 } ;
12511254 switch ( destType . SpecialType ) {
@@ -1255,7 +1258,7 @@ public override VisualBasicSyntaxNode VisitCastExpression(CSS.CastExpressionSynt
12551258 return SyntaxFactory . PredefinedCastExpression ( SyntaxFactory . Token ( SyntaxKind . CBoolKeyword ) , expr ) ;
12561259 case SpecialType . System_Char :
12571260 return sourceType ? . IsNumericType ( ) == true
1258- ? ( VisualBasicSyntaxNode ) SyntaxFactory . InvocationExpression ( SyntaxFactory . ParseName ( nameof ( Strings . ChrW ) ) , ExpressionSyntaxExtensions . CreateArgList ( expr ) )
1261+ ? ( VisualBasicSyntaxNode ) SyntaxFactory . InvocationExpression ( SyntaxFactory . ParseName ( GetQualifiedName ( nameof ( Microsoft ) , nameof ( Microsoft . VisualBasic ) , nameof ( Microsoft . VisualBasic . Strings . ChrW ) ) ) , ExpressionSyntaxExtensions . CreateArgList ( expr ) )
12591262 : SyntaxFactory . PredefinedCastExpression ( SyntaxFactory . Token ( SyntaxKind . CCharKeyword ) , expr ) ;
12601263 case SpecialType . System_SByte :
12611264 return toNumber ( SyntaxKind . CSByteKeyword ) ;
0 commit comments