mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-22 02:05:52 +03:00
fix(meta-compile,meta-validate): правки по второму ревью
Три находки, все воспроизведены: 1. Счётчик членов составного типа не видел форму с локальной xmlns: тип из чужого пространства имён пишется как <v8:Type xmlns:mxl="…">, а регулярка требовала '>' сразу за именем тега. В итоге на одном и том же файле meta-compile молчал, а meta-validate предупреждал — навыки расходились в оценке одного содержимого. Радиус: оба порта. 2. Report-OK проверки 23 печатался безусловно — то есть сразу после собственного ERROR, и раздувал счётчик проверок в итоговой строке. Соседние проверки (21, 22) так не делают. 3. ToString() копировал весь буфер вывода на каждый реквизит: O(n^2) на крупном объекте. В файле уже есть ranged-перегрузка ровно для этого (Emit-TypeContent). py-порт был изначально корректен — он режет список. Добавлен кейс на тип с локальной xmlns: без него находка 1 вернулась бы незамеченной, потому что обычный составной тип её не показывает. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
1481e58bfc
commit
24b1aa9ee1
@@ -1103,7 +1103,9 @@ def emit_value_type(indent, type_str):
|
||||
# корпусе erp+acc — 6500 единственных против 1 составного.
|
||||
def warn_defined_type_in_composite(from_index):
|
||||
frag = chr(10).join(lines[from_index:])
|
||||
if len(re.findall(r'<v8:(?:Type|TypeSet)>', frag)) < 2:
|
||||
# После имени тега — либо '>', либо пробел: тип из чужого пространства имён несёт локальную
|
||||
# xmlns прямо в теге (<v8:Type xmlns:mxl="…">), и без пробела в классе он не считался членом.
|
||||
if len(re.findall(r'<v8:(?:Type|TypeSet)[ >]', frag)) < 2:
|
||||
return
|
||||
dts = re.findall(r'<v8:TypeSet>cfg:(DefinedType[.][^<]+)</v8:TypeSet>', frag)
|
||||
if dts:
|
||||
|
||||
Reference in New Issue
Block a user