@@ -3414,8 +3414,9 @@ public override void VisitGenericName(GenericNameSyntax node)
34143414 {
34153415 case SyntaxKind . IdentifierToken :
34163416 {
3417- //TODO! See "VisitIdentifierName"
3418-
3417+ if ( IsRightAttribute ( node , asToken ) )
3418+ break ;
3419+
34193420 if ( IdentifierToken ( node ) == false )
34203421 {
34213422 base . VisitGenericName ( node ) ;
@@ -3458,146 +3459,152 @@ public override void VisitIdentifierName(IdentifierNameSyntax node)
34583459 {
34593460 case SyntaxKind . IdentifierToken :
34603461 {
3461- IdentifierNameSyntax _identifier = ( IdentifierNameSyntax ) node ;
3462- SymbolInfo ? _symbolInfo = null ;
3463-
3464- if ( _SNOriginalAsExpression != null )
3465- {
3466- IEnumerable < SyntaxNodeOrToken > _identifierNameSyntax = _SNOriginalAsExpression . DescendantNodesAndTokens ( ) . Where ( e => e . IsToken == true ) ;
3467- foreach ( SyntaxNodeOrToken _item in _identifierNameSyntax )
3468- {
3469- SyntaxToken _syntaxToken = _item . AsToken ( ) ;
3470-
3471- if ( _syntaxToken . IsKind ( SyntaxKind . IdentifierToken ) )
3472- {
3473- if ( _syntaxToken . Text == asToken . Text )
3474- {
3475- if ( _item . Parent != null )
3476- _symbolInfo = _Model . GetSymbolInfo ( _item . Parent ) ;
3477- else
3478- Log . ErrorLine ( "_item.Parent is null" ) ;
3479- break ;
3480- }
3481- }
3482- }
3483- //node = _SNOriginalAsExpression;
3484- }
3485- else
3462+ if ( IsRightAttribute ( node , asToken ) )
3463+ break ;
3464+
3465+ if ( IdentifierToken ( node ) == false )
34863466 {
3487- if ( _SNPropertyType != null )
3488- _symbolInfo = _Model . GetSymbolInfo ( _SNPropertyType ) ;
3489- else
3490- _symbolInfo = _Model . GetSymbolInfo ( _identifier ) ;
3467+ base . VisitIdentifierName ( node ) ;
34913468 }
3492-
3493- ISymbol ? _symbol = null ;
3469+ break ;
3470+ }
3471+ default :
3472+ Log . ErrorLine ( $ "asToken : { kind } ") ;
3473+ break ;
3474+ }
3475+ }
3476+ }
3477+ }
3478+ private bool IsRightAttribute < T > ( T identifier , SyntaxToken asToken ) where T : SimpleNameSyntax
3479+ {
3480+ SymbolInfo ? _symbolInfo = null ;
34943481
3495- if ( _symbolInfo ? . CandidateSymbols . Length >= 1 )
3496- _symbol = _symbolInfo ? . CandidateSymbols [ 0 ] ;
3497- else
3498- _symbol = _symbolInfo ? . Symbol ;
3482+ if ( _SNOriginalAsExpression != null )
3483+ {
3484+ IEnumerable < SyntaxNodeOrToken > _identifierNameSyntax = _SNOriginalAsExpression . DescendantNodesAndTokens ( ) . Where ( e => e . IsToken == true ) ;
3485+ foreach ( SyntaxNodeOrToken _item in _identifierNameSyntax )
3486+ {
3487+ SyntaxToken _syntaxToken = _item . AsToken ( ) ;
34993488
3500- if ( _symbol != null )
3501- {
3502- CheckParentAttributes :
3503- AttributeData [ ] _attributeData = _symbol . GetAttributes ( ) . ToArray ( ) ;
3504- for ( int j = 0 ; j < _attributeData . Length ; j ++ )
3505- {
3506- if ( _attributeData [ j ] . AttributeClass != null )
3507- {
3508- if ( _attributeData [ j ] . AttributeClass ! . Name == nameof ( BinaryAttribute ) ||
3509- _attributeData [ j ] . AttributeClass ! . Name == nameof ( UnaryAttribute ) )
3510- {
3511- _AttributeDatasForInvocation [ 0 ] = _attributeData [ j ] . AttributeClass ! . Name ;
3512- _AttributeDatasForInvocation [ 1 ] = _attributeData [ j ] . ConstructorArguments [ 0 ] . Value . ToString ( ) ;
3513- goto BreakIndetifierToken ;
3514- }
3489+ if ( _syntaxToken . IsKind ( SyntaxKind . IdentifierToken ) )
3490+ {
3491+ if ( _syntaxToken . Text == asToken . Text )
3492+ {
3493+ if ( _item . Parent != null )
3494+ _symbolInfo = _Model . GetSymbolInfo ( _item . Parent ) ;
3495+ else
3496+ Log . ErrorLine ( "_item.Parent is null" ) ;
3497+ break ;
3498+ }
3499+ }
3500+ }
3501+ //node = _SNOriginalAsExpression;
3502+ }
3503+ else
3504+ {
3505+ if ( _SNPropertyType != null )
3506+ _symbolInfo = _Model . GetSymbolInfo ( _SNPropertyType ) ;
3507+ else
3508+ _symbolInfo = _Model . GetSymbolInfo ( identifier ) ;
3509+ }
35153510
3516- if ( _attributeData [ j ] . AttributeClass . Name == nameof ( EnumValueAttribute ) )
3517- {
3518- SyntaxTriviaList _syntaxTrivias = _identifier . GetLeadingTrivia ( ) ;
3519- for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3520- {
3521- VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3522- }
3511+ ISymbol ? _symbol = null ;
35233512
3524- JSSB . Append ( $ "\" { _attributeData [ j ] . ConstructorArguments [ 0 ] . Value } \" ") ;
3513+ if ( _symbolInfo ? . CandidateSymbols . Length >= 1 )
3514+ _symbol = _symbolInfo ? . CandidateSymbols [ 0 ] ;
3515+ else
3516+ _symbol = _symbolInfo ? . Symbol ;
35253517
3526- _syntaxTrivias = _identifier . GetTrailingTrivia ( ) ;
3527- for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3528- {
3529- VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3530- }
3518+ if ( _symbol != null )
3519+ {
3520+ CheckParentAttributes :
3521+ AttributeData [ ] _attributeData = _symbol . GetAttributes ( ) . ToArray ( ) ;
3522+ for ( int j = 0 ; j < _attributeData . Length ; j ++ )
3523+ {
3524+ if ( _attributeData [ j ] . AttributeClass != null )
3525+ {
3526+ if ( _attributeData [ j ] . AttributeClass ! . Name == nameof ( BinaryAttribute ) ||
3527+ _attributeData [ j ] . AttributeClass ! . Name == nameof ( UnaryAttribute ) )
3528+ {
3529+ _AttributeDatasForInvocation [ 0 ] = _attributeData [ j ] . AttributeClass ! . Name ;
3530+ _AttributeDatasForInvocation [ 1 ] = _attributeData [ j ] . ConstructorArguments [ 0 ] . Value . ToString ( ) ;
35313531
3532- goto BreakIndetifierToken ;
3533- }
3532+ return true ;
3533+ }
35343534
3535- if ( _attributeData [ j ] . AttributeClass . Name == nameof ( ValueAttribute ) )
3536- {
3537- SyntaxTriviaList _syntaxTrivias = _identifier . GetLeadingTrivia ( ) ;
3538- for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3539- {
3540- VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3541- }
3535+ if ( _attributeData [ j ] . AttributeClass . Name == nameof ( EnumValueAttribute ) )
3536+ {
3537+ SyntaxTriviaList _syntaxTrivias = identifier . GetLeadingTrivia ( ) ;
3538+ for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3539+ {
3540+ VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3541+ }
35423542
3543- JSSB . Append ( $ "{ _attributeData [ j ] . ConstructorArguments [ 0 ] . Value } ") ;
3543+ JSSB . Append ( $ "\" { _attributeData [ j ] . ConstructorArguments [ 0 ] . Value } \" ") ;
35443544
3545- _syntaxTrivias = _identifier . GetTrailingTrivia ( ) ;
3546- for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3547- {
3548- VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3549- }
3545+ _syntaxTrivias = identifier . GetTrailingTrivia ( ) ;
3546+ for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3547+ {
3548+ VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3549+ }
35503550
3551- goto BreakIndetifierToken ;
3552- }
3551+ return true ;
3552+ }
35533553
3554- if ( _attributeData [ j ] . AttributeClass . Name == nameof ( ToAttribute ) )
3555- {
3556- ToAttribute _toAttr = new ToAttribute ( _attributeData [ j ] . ConstructorArguments [ 0 ] . Value . ToString ( ) ) ;
3554+ if ( _attributeData [ j ] . AttributeClass . Name == nameof ( ValueAttribute ) )
3555+ {
3556+ SyntaxTriviaList _syntaxTrivias = identifier . GetLeadingTrivia ( ) ;
3557+ for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3558+ {
3559+ VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3560+ }
35573561
3558- if ( _toAttr . To == ToAttribute . None )
3559- _IgnoreTailingDot = true ;
3562+ JSSB . Append ( $ "{ _attributeData [ j ] . ConstructorArguments [ 0 ] . Value } ") ;
35603563
3561- SyntaxTriviaList _syntaxTrivias = _identifier . GetLeadingTrivia ( ) ;
3562- for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3563- {
3564- VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3565- }
3564+ _syntaxTrivias = identifier . GetTrailingTrivia ( ) ;
3565+ for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3566+ {
3567+ VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3568+ }
35663569
3567- JSSB . Append ( $ "{ _toAttr . Convert ( _identifier . Identifier . Text ) } ") ;
3570+ return true ;
3571+ }
35683572
3569- _syntaxTrivias = _identifier . GetTrailingTrivia ( ) ;
3570- for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3571- {
3572- VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3573- }
3574-
3575- goto BreakIndetifierToken ;
3576- }
3577- }
3578- }
3579- if ( _symbol . ContainingType != null )
3580- {
3581- _symbol = _symbol . ContainingType ;
3582- goto CheckParentAttributes ;
3583- }
3584- }
3573+ if ( _attributeData [ j ] . AttributeClass . Name == nameof ( ToAttribute ) )
3574+ {
3575+ ToAttribute _toAttr = new ToAttribute ( _attributeData [ j ] . ConstructorArguments [ 0 ] . Value . ToString ( ) ) ;
35853576
3586- if ( IdentifierToken ( node ) == false )
3587- {
3588- base . VisitIdentifierName ( node ) ;
3589- }
3590- BreakIndetifierToken :
3591- break ;
3577+ if ( _toAttr . To == ToAttribute . None )
3578+ _IgnoreTailingDot = true ;
3579+
3580+ SyntaxTriviaList _syntaxTrivias = identifier . GetLeadingTrivia ( ) ;
3581+ for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3582+ {
3583+ VisitTrivia ( _syntaxTrivias [ _i ] ) ;
35923584 }
3593- default :
3594- Log . ErrorLine ( $ "asToken : { kind } ") ;
3595- break ;
3585+
3586+ JSSB . Append ( $ "{ _toAttr . Convert ( identifier . Identifier . Text ) } ") ;
3587+
3588+ _syntaxTrivias = identifier . GetTrailingTrivia ( ) ;
3589+ for ( int _i = 0 ; _i < _syntaxTrivias . Count ; _i ++ )
3590+ {
3591+ VisitTrivia ( _syntaxTrivias [ _i ] ) ;
3592+ }
3593+
3594+ return true ;
3595+ }
35963596 }
35973597 }
3598+ if ( _symbol . ContainingType != null )
3599+ {
3600+ _symbol = _symbol . ContainingType ;
3601+ goto CheckParentAttributes ;
3602+ }
35983603 }
3599- }
36003604
3605+ return false ;
3606+ }
3607+
36013608 public override void VisitAssignmentExpression ( AssignmentExpressionSyntax node )
36023609 {
36033610#if DEBUG
@@ -5006,10 +5013,10 @@ public override void VisitInvocationExpression(InvocationExpressionSyntax node)
50065013 if ( _AttributeDatasForInvocation [ 0 ] == nameof ( BinaryAttribute ) )
50075014 {
50085015 _AttributeDatasForInvocation [ 0 ] = string . Empty ;
5009- string _arg = _AttributeDatasForInvocation [ 1 ] ;
5016+ string _operator = _AttributeDatasForInvocation [ 1 ] ;
50105017
50115018 VisitArgument ( _arguments . Arguments [ 0 ] ) ;
5012- JSSB . Append ( _arg ) ;
5019+ JSSB . Append ( _operator ) ;
50135020 VisitTrailingTrivia ( _arguments . Arguments . GetSeparator ( 0 ) ) ;
50145021 VisitArgument ( _arguments . Arguments [ 1 ] ) ;
50155022
@@ -5025,9 +5032,9 @@ public override void VisitInvocationExpression(InvocationExpressionSyntax node)
50255032 if ( _AttributeDatasForInvocation [ 0 ] == nameof ( UnaryAttribute ) )
50265033 {
50275034 _AttributeDatasForInvocation [ 0 ] = string . Empty ;
5028- string _arg = _AttributeDatasForInvocation [ 1 ] ;
5035+ string _operator = _AttributeDatasForInvocation [ 1 ] ;
50295036
5030- JSSB . Append ( _arg ) ;
5037+ JSSB . Append ( _operator ) ;
50315038 VisitArgument ( _arguments . Arguments [ 0 ] ) ;
50325039
50335040 goto BreakArgumentList ;
0 commit comments