Files
cc-1c-skills/tests/skills/cases/skd-compile/decimal-qualifier-defaults.json
T
Nick Shirokov 05374100c1 fix(skd-compile): accept bare decimal and decimal(N) with sensible defaults
Emit-SingleValueType / emit_single_value_type previously required full
decimal(D,F) — anything else fell through to a fallback that produced
invalid <v8:Type>decimal</v8:Type> (no xs: prefix, no qualifiers).

New regex `^decimal(\((\d+)(,(\d+))?(,nonneg)?\))?$` accepts:
- decimal                → 10,2,Any (money default — most common 1C intent)
- decimal(N)             → N,0,Any (integer)
- decimal(N,nonneg)      → N,0,Nonnegative
- decimal(N,M)           → as before
- decimal(N,M,nonneg)    → as before

Synonyms (число, число(N), etc.) inherit the same forms via Resolve-TypeStr.

Shared Emit-ValueType is called from fields, parameters, and output
parameters — one fix covers all three paths. 3 existing snapshots
regenerated with proper xs:decimal + qualifiers, plus new
decimal-qualifier-defaults test case covering all 5 forms × synonyms.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 11:45:23 +03:00

30 lines
1.1 KiB
JSON

{
"name": "decimal — все формы квалификаторов (bare, (N), (N,M), nonneg, синонимы)",
"params": { "outputPath": "Template.xml" },
"input": {
"dataSets": [{
"name": "Основной",
"query": "ВЫБРАТЬ 1 КАК Поле1",
"fields": [
"ДеньгиПоУмолчанию: decimal",
"ЦелоеОдинАргумент: decimal(10)",
"ОбычныеДеньги: decimal(10,2)",
"Положительные: decimal(10,2,nonneg)",
"ЦелоеПоложительное: decimal(10,nonneg)",
"ЧислоСинонимБезАргументов: число",
"ЧислоСинонимЦелое: число(8)",
"ЧислоСинонимКоличество: число(15,3)"
]
}],
"parameters": [
"ПараметрДеньги: decimal",
"ПараметрЦелое: decimal(10)",
"ПараметрКоличество: decimal(15,3,nonneg)"
]
},
"validatePath": "Template.xml",
"expect": {
"files": ["Template.xml"]
}
}