@@ -163,27 +163,41 @@ private static ValueTable CreateAnnotationTable(BslAnnotationAttribute[] annotat
163163 {
164164 annotationRow . Set ( annotationNameColumn , ValueFactory . Create ( annotation . Name ) ) ;
165165 }
166- var parametersTable = new ValueTable ( ) ;
167- var parameterNameColumn = parametersTable . Columns . Add ( "Имя" ) ;
168- var parameterValueColumn = parametersTable . Columns . Add ( "Значение" ) ;
169-
166+ var parametersTable = FillAnnotationParameters ( annotation . Parameters ) ;
170167 annotationRow . Set ( annotationParamsColumn , parametersTable ) ;
171- if ( annotation . Parameters . Any ( ) )
172- {
168+ }
173169
174- foreach ( var annotationParameter in annotation . Parameters )
175- {
176- var parameterRow = parametersTable . Add ( ) ;
177- if ( annotationParameter . Name != null )
178- {
179- parameterRow . Set ( parameterNameColumn , ValueFactory . Create ( annotationParameter . Name ) ) ;
180- }
181- parameterRow . Set ( parameterValueColumn , annotationParameter . Value ) ;
182- }
170+ return annotationsTable ;
171+ }
172+
173+ private static ValueTable FillAnnotationParameters ( IEnumerable < BslAnnotationParameter > parameters )
174+ {
175+ var parametersTable = new ValueTable ( ) ;
176+ var parameterNameColumn = parametersTable . Columns . Add ( "Имя" ) ;
177+ var parameterValueColumn = parametersTable . Columns . Add ( "Значение" ) ;
178+
179+ foreach ( var annotationParameter in parameters )
180+ {
181+ var parameterRow = parametersTable . Add ( ) ;
182+ if ( annotationParameter . Name != null )
183+ {
184+ parameterRow . Set ( parameterNameColumn , ValueFactory . Create ( annotationParameter . Name ) ) ;
185+ }
186+ if ( annotationParameter . Value is BslAnnotationValue annotationValue )
187+ {
188+ var expandedValue = EmptyAnnotationsTable ( ) ;
189+ var row = expandedValue . Add ( ) ;
190+ row . Set ( expandedValue . Columns . FindColumnByName ( "Имя" ) , ValueFactory . Create ( annotationValue . Name ) ) ;
191+ row . Set ( expandedValue . Columns . FindColumnByName ( "Параметры" ) , FillAnnotationParameters ( annotationValue . Parameters ) ) ;
192+ parameterRow . Set ( parameterValueColumn , row ) ;
193+ }
194+ else
195+ {
196+ parameterRow . Set ( parameterValueColumn , annotationParameter . Value ) ;
183197 }
184198 }
185199
186- return annotationsTable ;
200+ return parametersTable ;
187201 }
188202
189203 private static bool MethodExistsForType ( BslTypeValue type , string methodName )
0 commit comments