@@ -1014,7 +1014,11 @@ public override void VisitPropertyDeclaration(PropertyDeclarationSyntax node)
1014
1014
{
1015
1015
ChildSyntaxList nodesAndTokens = node . ChildNodesAndTokens ( ) ;
1016
1016
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 -- )
1018
1022
{
1019
1023
SyntaxNode ? asNode = nodesAndTokens [ i ] . AsNode ( ) ;
1020
1024
@@ -1033,8 +1037,6 @@ where n.IsNode
1033
1037
where n . AsNode ( ) . IsKind ( SyntaxKind . PredefinedType )
1034
1038
select n ;
1035
1039
1036
- FieldDeclarationSyntax ? field = null ;
1037
-
1038
1040
string _indentifier = "_" + nodesAndTokens [ i - 1 ] . AsToken ( ) . ToString ( ) + "_" ;
1039
1041
1040
1042
if ( ! _PropertyStatic )
@@ -1063,8 +1065,52 @@ where n.AsNode().IsKind(SyntaxKind.NullableType)
1063
1065
select n ;
1064
1066
}
1065
1067
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 ( ) ) ) )
1068
1114
. WithVariables (
1069
1115
SyntaxFactory . SingletonSeparatedList (
1070
1116
SyntaxFactory . VariableDeclarator (
@@ -1076,32 +1122,36 @@ where n.AsNode().IsKind(SyntaxKind.NullableType)
1076
1122
} ) )
1077
1123
. WithLeadingTrivia ( node . GetLeadingTrivia ( ) )
1078
1124
. WithTrailingTrivia ( node . GetTrailingTrivia ( ) ) ;
1079
- }
1080
- else
1081
- {
1082
- key = key . First ( ) . ChildNodesAndTokens ( ) ;
1083
- field = SyntaxFactory . FieldDeclaration (
1125
+ }
1126
+ else
1127
+ {
1128
+ field = SyntaxFactory . FieldDeclaration (
1084
1129
SyntaxFactory . VariableDeclaration (
1085
1130
SyntaxFactory . PredefinedType ( SyntaxFactory . Token ( key . First ( ) . Kind ( ) ) ) )
1086
1131
. WithVariables (
1087
1132
SyntaxFactory . SingletonSeparatedList (
1088
1133
SyntaxFactory . VariableDeclarator (
1089
- SyntaxFactory . Identifier ( _indentifier ) ) ) ) )
1134
+ SyntaxFactory . Identifier ( _indentifier ) )
1135
+ . WithInitializer ( defaultValue ) ) ) )
1090
1136
. WithModifiers (
1091
1137
SyntaxFactory . TokenList ( new [ ]
1092
1138
{
1093
1139
SyntaxFactory . Token ( SyntaxKind . PrivateKeyword )
1094
1140
} ) )
1095
1141
. WithLeadingTrivia ( node . GetLeadingTrivia ( ) )
1096
1142
. WithTrailingTrivia ( node . GetTrailingTrivia ( ) ) ;
1143
+ }
1097
1144
}
1098
-
1099
- VisitFieldDeclaration ( field ) ;
1100
- break ;
1101
1145
}
1102
1146
}
1147
+
1148
+ if ( kind == SyntaxKind . EqualsValueClause )
1149
+ {
1150
+ hasDefault = true ;
1151
+ defaultValue = asNode as EqualsValueClauseSyntax ;
1152
+ }
1103
1153
}
1104
- else
1154
+ else
1105
1155
{
1106
1156
SyntaxToken asToken = nodesAndTokens [ i ] . AsToken ( ) ;
1107
1157
SyntaxKind kind = asToken . Kind ( ) ;
@@ -1112,6 +1162,12 @@ where n.AsNode().IsKind(SyntaxKind.NullableType)
1112
1162
1113
1163
}
1114
1164
1165
+ if ( field != null )
1166
+ VisitFieldDeclaration ( field ) ;
1167
+
1168
+
1169
+
1170
+ //main for loop for property
1115
1171
for ( int i = 0 ; i < nodesAndTokens . Count ; i ++ )
1116
1172
{
1117
1173
SyntaxNode ? asNode = nodesAndTokens [ i ] . AsNode ( ) ;
@@ -1122,7 +1178,6 @@ where n.AsNode().IsKind(SyntaxKind.NullableType)
1122
1178
1123
1179
switch ( kind )
1124
1180
{
1125
- //TODO "EqualsValueClause" default value
1126
1181
case SyntaxKind . EqualsValueClause :
1127
1182
case SyntaxKind . AttributeList :
1128
1183
case SyntaxKind . PredefinedType :
0 commit comments