@@ -25,8 +25,8 @@ internal class Walker : CSharpSyntaxWalker, ILog
2525 private readonly CSTOJSOptions _Options ;
2626 private readonly SemanticModel _Model ;
2727
28- private SyntaxNode ? _SNOriginal = null ;
29- private SyntaxNode ? _BaseConstructorInitializerNode = null ;
28+ private SyntaxNode ? _SNOriginalAsExpression = null ;
29+ private SyntaxNode ? _SNBaseConstructorInitializerNode = null ;
3030 private SyntaxNode ? _SNPropertyType = null ;
3131
3232 private string _NameSpaceStr = string . Empty ;
@@ -359,7 +359,7 @@ public override void VisitConstructorDeclaration(ConstructorDeclarationSyntax no
359359 break ;
360360 case SyntaxKind . BaseConstructorInitializer :
361361 {
362- _BaseConstructorInitializerNode = asNode ;
362+ _SNBaseConstructorInitializerNode = asNode ;
363363 SyntaxTriviaList _syntaxTrivias = asNode . GetTrailingTrivia ( ) ;
364364 for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
365365 {
@@ -569,18 +569,18 @@ public override void VisitBlock(BlockSyntax node)
569569 case SyntaxKind . OpenBraceToken :
570570 {
571571 VisitToken ( asToken ) ;
572- if ( _BaseConstructorInitializerNode != null )
572+ if ( _SNBaseConstructorInitializerNode != null )
573573 {
574574 SyntaxTriviaList _syntaxTrivias = asToken . LeadingTrivia ;
575575 for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
576576 {
577577 VisitTrivia ( _syntaxTrivias [ _i ] ) ;
578578 }
579579 JSSB . Append ( "\t super" ) ;
580- Visit ( ( _BaseConstructorInitializerNode as ConstructorInitializerSyntax ) . ArgumentList ) ;
580+ Visit ( ( _SNBaseConstructorInitializerNode as ConstructorInitializerSyntax ) . ArgumentList ) ;
581581 //Todo!
582582 //JSSB.Append(";");
583- _BaseConstructorInitializerNode = null ;
583+ _SNBaseConstructorInitializerNode = null ;
584584 }
585585 break ;
586586 }
@@ -2152,13 +2152,12 @@ public override void VisitParenthesizedExpression(ParenthesizedExpressionSyntax
21522152 break ;
21532153 case SyntaxKind . AsExpression :
21542154 {
2155-
21562155 //Todo double/multiply asExpression?? How?
2157- _SNOriginal = ( asNode as BinaryExpressionSyntax ) . Left ;
2156+ _SNOriginalAsExpression = ( asNode as BinaryExpressionSyntax ) . Left ;
21582157
2159- Visit ( _SNOriginal . WithoutTrailingTrivia ( ) ) ;
2158+ Visit ( _SNOriginalAsExpression . WithoutTrailingTrivia ( ) ) ;
21602159
2161- _SNOriginal = null ;
2160+ _SNOriginalAsExpression = null ;
21622161 break ;
21632162 }
21642163 default :
@@ -2717,9 +2716,9 @@ public bool IdentifierToken(SyntaxNode node)
27172716 }
27182717
27192718 SymbolInfo ? symbolInfo = null ;
2720- if ( _SNOriginal != null )
2719+ if ( _SNOriginalAsExpression != null )
27212720 {
2722- IEnumerable < SyntaxNodeOrToken > _identifierNameSyntax = _SNOriginal . DescendantNodesAndTokens ( ) . Where ( e => e . IsToken == true ) ;
2721+ IEnumerable < SyntaxNodeOrToken > _identifierNameSyntax = _SNOriginalAsExpression . DescendantNodesAndTokens ( ) . Where ( e => e . IsToken == true ) ;
27232722 foreach ( SyntaxNodeOrToken _item in _identifierNameSyntax )
27242723 {
27252724 SyntaxToken _syntaxToken = _item . AsToken ( ) ;
@@ -2733,7 +2732,7 @@ public bool IdentifierToken(SyntaxNode node)
27332732 }
27342733 }
27352734 }
2736- node = _SNOriginal ;
2735+ node = _SNOriginalAsExpression ;
27372736 }
27382737 else
27392738 {
@@ -2909,7 +2908,7 @@ where e.IsKind(SyntaxKind.IdentifierToken)
29092908 object [ ] _attrs = type . GetCustomAttributes ( true ) ;
29102909 foreach ( object _attr in _attrs )
29112910 {
2912- ToAttribute _authAttr = _attr as ToAttribute ;
2911+ ToAttribute ? _authAttr = _attr as ToAttribute ;
29132912 if ( _authAttr != null )
29142913 {
29152914 VisitLeadingTrivia ( identifier ) ;
@@ -2922,64 +2921,28 @@ where e.IsKind(SyntaxKind.IdentifierToken)
29222921 }
29232922
29242923 MemberInfo [ ] _Members = type . GetMembers ( ) ;
2925- foreach ( MemberInfo _memberInfo in _Members )
2926- {
2927- //TODO! A better way for nested classes!
2928- var c = _memberInfo as Type ;
2929-
2930- if ( c != null && c . IsClass )
2931- {
2932- MemberInfo [ ] _Members1 = c . GetMembers ( ) ;
2933- foreach ( MemberInfo _memberInfo1 in _Members1 )
2934- {
2935- //TODO! A better way for nested classes!
2936- var c1 = _memberInfo1 as Type ;
2937-
2938- if ( c1 != null && c1 . IsClass )
2939- {
2940- MemberInfo [ ] _Members2 = c1 . GetMembers ( ) ;
2941- foreach ( MemberInfo _memberInfo2 in _Members2 )
2942- {
2943- if ( _memberInfo2 . Name == text )
2944- {
2945- object [ ] _attrs2 = _memberInfo2 . GetCustomAttributes ( true ) ;
2946- foreach ( object _attr2 in _attrs2 )
2947- {
2948- ToAttribute _authAttr2 = _attr2 as ToAttribute ;
2949- if ( _authAttr2 != null )
2950- {
2951- JSSB . Append ( $ "{ _authAttr2 . Convert ( text ) } ") ;
2952- return true ;
2953- }
2954- }
29552924
2956- return true ;
2957- }
2958- }
2959- }
2960- if ( _memberInfo1 . Name == text )
2961- {
2962- object [ ] _attrs1 = _memberInfo1 . GetCustomAttributes ( true ) ;
2963- foreach ( object _attr1 in _attrs1 )
2964- {
2965- ToAttribute _authAttr1 = _attr1 as ToAttribute ;
2966- if ( _authAttr1 != null )
2967- {
2968- JSSB . Append ( $ "{ _authAttr1 . Convert ( text ) } ") ;
2969- return true ;
2970- }
2971- }
2925+ bool b = _CheckMembersInNestedClasses ( _Members ) ;
29722926
2973- return true ;
2974- }
2975- }
2927+ if ( b == true )
2928+ return true ;
2929+ }
2930+ bool _CheckMembersInNestedClasses ( MemberInfo [ ] _members )
2931+ {
2932+ foreach ( MemberInfo _memberInfo in _members )
2933+ {
2934+ Type ? _type = _memberInfo as Type ;
2935+ if ( _type != null && _type . IsClass )
2936+ {
2937+ return _CheckMembersInNestedClasses ( _type . GetMembers ( ) ) ;
29762938 }
29772939 if ( _memberInfo . Name == text )
29782940 {
29792941 object [ ] _attrs = _memberInfo . GetCustomAttributes ( true ) ;
2942+
29802943 foreach ( object _attr in _attrs )
29812944 {
2982- ToAttribute _authAttr = _attr as ToAttribute ;
2945+ ToAttribute ? _authAttr = _attr as ToAttribute ;
29832946 if ( _authAttr != null )
29842947 {
29852948 JSSB . Append ( $ "{ _authAttr . Convert ( text ) } ") ;
@@ -2990,6 +2953,8 @@ where e.IsKind(SyntaxKind.IdentifierToken)
29902953 return true ;
29912954 }
29922955 }
2956+
2957+ return false ;
29932958 }
29942959
29952960 if ( CustomCSNamesToJS ( node ) == false )
0 commit comments