@@ -23,8 +23,6 @@ public class TypeDescription : AutoContext<TypeDescription>
2323 {
2424 private readonly List < BslTypeValue > _types = new List < BslTypeValue > ( ) ;
2525
26- private const string TYPE_BINARYDATA_NAME = "ДвоичныеДанные" ;
27-
2826 public TypeDescription ( IEnumerable < BslTypeValue > types = null )
2927 {
3028 if ( types != null )
@@ -196,39 +194,36 @@ public static TypeDescription Constructor(
196194 var qualifiers = new [ ] { null , p2 , p3 , p4 , p5 , p6 , p7 } ;
197195
198196 var rawSource = source ? . GetRawValue ( ) ;
199- if ( rawSource == null || rawSource . SystemType = = BasicTypes . Undefined )
197+ if ( rawSource != null && rawSource . SystemType ! = BasicTypes . Undefined )
200198 {
201- // пустой первый параметр - нет объекта-основания
202- // добавляемые/вычитаемые типы не допускаются, квалификаторы игнорируются
199+ if ( rawSource is TypeDescription typeDesc )
200+ {
201+ // Если 1 парарметр - ОписаниеТипов, то 2 - добавляемые типы, 3 - убираемые типы,
202+ builder . SourceDescription ( typeDesc ) ;
203203
204- // квалификакторы передаются только для контроля типов
205- }
206- else
207- if ( rawSource is TypeDescription typeDesc )
208- {
209- // Если 1 парарметр - ОписаниеТипов, то 2 - добавляемые типы, 3 - убираемые типы,
210- builder . SourceDescription ( typeDesc ) ;
211-
212- var typesToAdd = CheckAndParseTypeList ( context . TypeManager , p2 , 2 ) ;
213- var typesToRemove = CheckAndParseTypeList ( context . TypeManager , p3 , 3 ) ;
214-
215- builder . RemoveTypes ( typesToRemove ) ;
216- builder . AddTypes ( typesToAdd ) ;
217-
218- qualifiers [ 1 ] = null ; // эти параметры не квалификаторы
219- qualifiers [ 2 ] = null ; // эти параметры не квалификаторы
204+ var typesToAdd = CheckAndParseTypeList ( context . TypeManager , p2 , 2 ) ;
205+ var typesToRemove = CheckAndParseTypeList ( context . TypeManager , p3 , 3 ) ;
220206
221- }
222- else
223- if ( rawSource . SystemType == BasicTypes . String || rawSource is ArrayImpl )
224- {
225- // Если 1 парарметр - Массив или строка, то это набор конкретных типов
226- // остальные параметры (2 и далее) - клвалификаторы в произвольном порядке
227- var typesList = CheckAndParseTypeList ( context . TypeManager , rawSource , 1 ) ;
228- builder . AddTypes ( typesList ) ;
229- } else
230- throw RuntimeException . InvalidArgumentValue ( ) ;
231-
207+ builder . RemoveTypes ( typesToRemove ) ;
208+ builder . AddTypes ( typesToAdd ) ;
209+
210+ qualifiers [ 1 ] = null ; // эти параметры не квалификаторы
211+ qualifiers [ 2 ] = null ; // эти параметры не квалификаторы
212+ }
213+ else if ( rawSource . SystemType == BasicTypes . String || rawSource is ArrayImpl )
214+ {
215+ // Если 1 парарметр - Массив или строка, то это набор конкретных типов
216+ // остальные параметры (2 и далее) - клвалификаторы в произвольном порядке
217+ var typesList = CheckAndParseTypeList ( context . TypeManager , rawSource , 1 ) ;
218+ builder . AddTypes ( typesList ) ;
219+ }
220+ else
221+ throw RuntimeException . InvalidArgumentValue ( ) ;
222+ } /* else
223+ пустой первый параметр - нет объекта-основания
224+ добавляемые/вычитаемые типы не допускаются, квалификаторы игнорируются
225+ квалификакторы передаются только для контроля типов
226+ */
232227 CheckAndAddQualifiers ( builder , qualifiers ) ;
233228 return builder . Build ( ) ;
234229 }
0 commit comments