@@ -494,10 +494,17 @@ public override void VisitArgument(ArgumentSyntax node)
494494 case SyntaxKind . StringLiteralExpression :
495495 case SyntaxKind . InterpolatedStringExpression :
496496 case SyntaxKind . ObjectCreationExpression :
497- {
497+ case SyntaxKind . ImplicitObjectCreationExpression :
498+ {
498499 Visit ( asNode ) ;
499500 break ;
501+ }
502+ case SyntaxKind . AnonymousObjectCreationExpression :
503+ {
504+ VisitAnonymousObjectCreationExpression ( asNode as AnonymousObjectCreationExpressionSyntax ) ;
505+ break ;
500506 }
507+
501508 case SyntaxKind . ElementAccessExpression :
502509 case SyntaxKind . IdentifierName :
503510 case SyntaxKind . SimpleMemberAccessExpression :
@@ -528,6 +535,91 @@ public override void VisitArgument(ArgumentSyntax node)
528535 }
529536 }
530537
538+ public override void VisitAnonymousObjectCreationExpression ( AnonymousObjectCreationExpressionSyntax node )
539+ {
540+ ChildSyntaxList nodesAndTokens = node . ChildNodesAndTokens ( ) ;
541+
542+ for ( int i = 0 ; i < nodesAndTokens . Count ; i ++ )
543+ {
544+ SyntaxNode ? asNode = nodesAndTokens [ i ] . AsNode ( ) ;
545+
546+ if ( asNode != null )
547+ {
548+ SyntaxKind kind = asNode . Kind ( ) ;
549+
550+ switch ( kind )
551+ {
552+ case SyntaxKind . AnonymousObjectMemberDeclarator :
553+ Visit ( asNode ) ;
554+ break ;
555+ default :
556+ SM . Log ( $ "asNode : { kind } ") ;
557+ break ;
558+ }
559+ }
560+ else
561+ {
562+ SyntaxToken asToken = nodesAndTokens [ i ] . AsToken ( ) ;
563+ SyntaxKind kind = asToken . Kind ( ) ;
564+
565+ switch ( kind )
566+ {
567+ case SyntaxKind . OpenBraceToken :
568+ case SyntaxKind . CloseBraceToken :
569+ VisitToken ( asToken ) ;
570+ break ;
571+ case SyntaxKind . NewKeyword :
572+ break ;
573+ default :
574+ SM . Log ( $ "asToken : { kind } ") ;
575+ break ;
576+ }
577+ }
578+ }
579+ }
580+
581+ public override void VisitNameEquals ( NameEqualsSyntax node )
582+ {
583+ ChildSyntaxList nodesAndTokens = node . ChildNodesAndTokens ( ) ;
584+
585+ for ( int i = 0 ; i < nodesAndTokens . Count ; i ++ )
586+ {
587+ SyntaxNode ? asNode = nodesAndTokens [ i ] . AsNode ( ) ;
588+
589+ if ( asNode != null )
590+ {
591+ SyntaxKind kind = asNode . Kind ( ) ;
592+
593+ switch ( kind )
594+ {
595+ case SyntaxKind . IdentifierName :
596+ VisitIdentifierName ( asNode as IdentifierNameSyntax ) ;
597+ break ;
598+ default :
599+ SM . Log ( $ "asNode : { kind } ") ;
600+ break ;
601+ }
602+ }
603+ else
604+ {
605+ SyntaxToken asToken = nodesAndTokens [ i ] . AsToken ( ) ;
606+ SyntaxKind kind = asToken . Kind ( ) ;
607+
608+ switch ( kind )
609+ {
610+ case SyntaxKind . EqualsToken :
611+ {
612+ JSSB . Append ( ":" ) ;
613+ break ;
614+ }
615+ default :
616+ SM . Log ( $ "asToken : { kind } ") ;
617+ break ;
618+ }
619+ }
620+ }
621+ }
622+
531623 public override void VisitMethodDeclaration ( MethodDeclarationSyntax node )
532624 {
533625 ChildSyntaxList nodesAndTokens = node . ChildNodesAndTokens ( ) ;
@@ -1772,6 +1864,7 @@ public bool IdentifierToken(SyntaxNode node)
17721864 }
17731865 }
17741866 }
1867+ node = _SNOriginal ;
17751868 }
17761869 else
17771870 {
@@ -1919,6 +2012,17 @@ where e.IsKind(SyntaxKind.IdentifierToken)
19192012
19202013 }
19212014
2015+ if ( iSymbol != null && iSymbol . ContainingType != null && iSymbol . ContainingType . IsAnonymousType == true )
2016+ {
2017+ if ( CustomCSNamesToJS ( node ) == false )
2018+ {
2019+ VisitLeadingTrivia ( identifier ) ;
2020+ JSSB . Append ( text ) ;
2021+ VisitTrailingTrivia ( identifier ) ;
2022+ }
2023+ return true ;
2024+ }
2025+
19222026 foreach ( Type type in _Options . CustomCSTypesToJS )
19232027 {
19242028 if ( type . Name == text )
0 commit comments