fix(meta-decompile): одноэлементный FixedArray choiceParameters терялся как скаляр (v0.33)

Get-ChoiceParamValue возвращал 1-элементный ArrayList → PowerShell разворачивал
коллекцию при `return` в скаляр → FixedArray с одним элементом декомпилировался как
скалярное значение → компилятор эмитил `app:value` вместо `v8:FixedArray`+`v8:Value`.
Фикс: унарная запятая `return ,$arr`. Многоэлементные массивы не задевало (не
разворачиваются). Компилятор на явном `["x"]` был корректен — баг чисто декомпиляторный.

Роундтрип Document: Attribute>Value 54→0, TOTAL 166→94, match 109→118/151.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-06 16:28:14 +03:00
parent ac3a373348
commit d0e256a42f
@@ -1,4 +1,4 @@
# meta-decompile v0.32 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
# meta-decompile v0.33 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
#
# Поддержаны: Catalog, ExchangePlan, ChartOfCharacteristicTypes, ChartOfAccounts, ChartOfCalculationTypes, Document. Инверс meta-compile (omit-on-default: ключ эмитим только
@@ -210,7 +210,7 @@ function Get-ChoiceParamValue {
if ($xt -match 'FixedArray$') {
$arr = [System.Collections.ArrayList]@()
foreach ($sub in @($valNode.SelectNodes('v8:Value', $nsm))) { [void]$arr.Add((Convert-ChScalarNode $sub)) }
return $arr
return ,$arr # унарная запятая: PS иначе разворачивает 1-элементную коллекцию при return → FixedArray станет скаляром
}
return Convert-ChScalarNode $valNode
}