@@ -1014,7 +1014,11 @@ public override void VisitPropertyDeclaration(PropertyDeclarationSyntax node)
10141014 {
10151015 ChildSyntaxList nodesAndTokens = node . ChildNodesAndTokens ( ) ;
10161016
1017- for ( int i = 0 ; i < nodesAndTokens . Count ; i ++ )
1017+ FieldDeclarationSyntax ? field = null ;
1018+ bool hasDefault = false ;
1019+ EqualsValueClauseSyntax ? defaultValue = null ;
1020+
1021+ for ( int i = nodesAndTokens . Count - 1 ; i >= 0 ; i -- )
10181022 {
10191023 SyntaxNode ? asNode = nodesAndTokens [ i ] . AsNode ( ) ;
10201024
@@ -1033,8 +1037,6 @@ where n.IsNode
10331037 where n . AsNode ( ) . IsKind ( SyntaxKind . PredefinedType )
10341038 select n ;
10351039
1036- FieldDeclarationSyntax ? field = null ;
1037-
10381040 string _indentifier = "_" + nodesAndTokens [ i - 1 ] . AsToken ( ) . ToString ( ) + "_" ;
10391041
10401042 if ( ! _PropertyStatic )
@@ -1063,8 +1065,52 @@ where n.AsNode().IsKind(SyntaxKind.NullableType)
10631065 select n ;
10641066 }
10651067
1066- field = SyntaxFactory . FieldDeclaration (
1067- SyntaxFactory . VariableDeclaration ( SyntaxFactory . IdentifierName ( key . First ( ) . ToString ( ) ) )
1068+
1069+ //
1070+ //
1071+ //TODO! change this mess!
1072+ if ( hasDefault )
1073+ {
1074+ field = SyntaxFactory . FieldDeclaration (
1075+ SyntaxFactory . VariableDeclaration ( SyntaxFactory . IdentifierName ( key . First ( ) . ToString ( ) ) )
1076+ . WithVariables (
1077+ SyntaxFactory . SingletonSeparatedList (
1078+ SyntaxFactory . VariableDeclarator (
1079+ SyntaxFactory . Identifier ( _indentifier ) )
1080+ . WithInitializer ( defaultValue ) ) ) )
1081+ . WithModifiers (
1082+ SyntaxFactory . TokenList ( new [ ]
1083+ {
1084+ SyntaxFactory . Token ( SyntaxKind . PrivateKeyword )
1085+ } ) )
1086+ . WithLeadingTrivia ( node . GetLeadingTrivia ( ) )
1087+ . WithTrailingTrivia ( node . GetTrailingTrivia ( ) ) ;
1088+ }
1089+ else
1090+ {
1091+ field = SyntaxFactory . FieldDeclaration (
1092+ SyntaxFactory . VariableDeclaration ( SyntaxFactory . IdentifierName ( key . First ( ) . ToString ( ) ) )
1093+ . WithVariables (
1094+ SyntaxFactory . SingletonSeparatedList (
1095+ SyntaxFactory . VariableDeclarator (
1096+ SyntaxFactory . Identifier ( _indentifier ) ) ) ) )
1097+ . WithModifiers (
1098+ SyntaxFactory . TokenList ( new [ ]
1099+ {
1100+ SyntaxFactory . Token ( SyntaxKind . PrivateKeyword )
1101+ } ) )
1102+ . WithLeadingTrivia ( node . GetLeadingTrivia ( ) )
1103+ . WithTrailingTrivia ( node . GetTrailingTrivia ( ) ) ;
1104+ }
1105+ }
1106+ else
1107+ {
1108+ key = key . First ( ) . ChildNodesAndTokens ( ) ;
1109+ if ( hasDefault )
1110+ {
1111+ field = SyntaxFactory . FieldDeclaration (
1112+ SyntaxFactory . VariableDeclaration (
1113+ SyntaxFactory . PredefinedType ( SyntaxFactory . Token ( key . First ( ) . Kind ( ) ) ) )
10681114 . WithVariables (
10691115 SyntaxFactory . SingletonSeparatedList (
10701116 SyntaxFactory . VariableDeclarator (
@@ -1076,32 +1122,36 @@ where n.AsNode().IsKind(SyntaxKind.NullableType)
10761122 } ) )
10771123 . WithLeadingTrivia ( node . GetLeadingTrivia ( ) )
10781124 . WithTrailingTrivia ( node . GetTrailingTrivia ( ) ) ;
1079- }
1080- else
1081- {
1082- key = key . First ( ) . ChildNodesAndTokens ( ) ;
1083- field = SyntaxFactory . FieldDeclaration (
1125+ }
1126+ else
1127+ {
1128+ field = SyntaxFactory . FieldDeclaration (
10841129 SyntaxFactory . VariableDeclaration (
10851130 SyntaxFactory . PredefinedType ( SyntaxFactory . Token ( key . First ( ) . Kind ( ) ) ) )
10861131 . WithVariables (
10871132 SyntaxFactory . SingletonSeparatedList (
10881133 SyntaxFactory . VariableDeclarator (
1089- SyntaxFactory . Identifier ( _indentifier ) ) ) ) )
1134+ SyntaxFactory . Identifier ( _indentifier ) )
1135+ . WithInitializer ( defaultValue ) ) ) )
10901136 . WithModifiers (
10911137 SyntaxFactory . TokenList ( new [ ]
10921138 {
10931139 SyntaxFactory . Token ( SyntaxKind . PrivateKeyword )
10941140 } ) )
10951141 . WithLeadingTrivia ( node . GetLeadingTrivia ( ) )
10961142 . WithTrailingTrivia ( node . GetTrailingTrivia ( ) ) ;
1143+ }
10971144 }
1098-
1099- VisitFieldDeclaration ( field ) ;
1100- break ;
11011145 }
11021146 }
1147+
1148+ if ( kind == SyntaxKind . EqualsValueClause )
1149+ {
1150+ hasDefault = true ;
1151+ defaultValue = asNode as EqualsValueClauseSyntax ;
1152+ }
11031153 }
1104- else
1154+ else
11051155 {
11061156 SyntaxToken asToken = nodesAndTokens [ i ] . AsToken ( ) ;
11071157 SyntaxKind kind = asToken . Kind ( ) ;
@@ -1112,6 +1162,12 @@ where n.AsNode().IsKind(SyntaxKind.NullableType)
11121162
11131163 }
11141164
1165+ if ( field != null )
1166+ VisitFieldDeclaration ( field ) ;
1167+
1168+
1169+
1170+ //main for loop for property
11151171 for ( int i = 0 ; i < nodesAndTokens . Count ; i ++ )
11161172 {
11171173 SyntaxNode ? asNode = nodesAndTokens [ i ] . AsNode ( ) ;
@@ -1122,7 +1178,6 @@ where n.AsNode().IsKind(SyntaxKind.NullableType)
11221178
11231179 switch ( kind )
11241180 {
1125- //TODO "EqualsValueClause" default value
11261181 case SyntaxKind . EqualsValueClause :
11271182 case SyntaxKind . AttributeList :
11281183 case SyntaxKind . PredefinedType :
0 commit comments