Skip to content

Справочник по кодам ошибок ​

Компилятор YaoXiang использует коды ошибок для идентификации различных типов диагностических сообщений. Коды ошибок группируются по диапазонам номеров, каждый код соответствует определённому сценарию ошибки.


E0xxx — Лексический и синтаксический анализ ​

Ошибки, возникающие на этапах лексического анализа (Lexer) и синтаксического анализа (Parser).

КодШаблонОписание
E0001Invalid character: '{char}'Недопустимый символ
E0002Invalid number literal: '{literal}'Недопустимый числовой литерал
E0003Unterminated string starting at line {line}Незакрытая строка
E0004Invalid character literal: '{literal}'Недопустимый символьный литерал
E0010Expected {expected}, found {found}Ожидаемый токен
E0011Unexpected token: '{token}'Неожиданный токен
E0012Invalid syntax: {reason}Недопустимый синтаксис
E0013Mismatched {bracket_type}: opened at line {open_line}, column {open_col}, not closedНесоответствующая скобка
E0014Missing semicolon after {statement}Отсутствует точка с запятой

E1xxx — Проверка типов ​

Ошибки этапа проверки типов, охватывающие типы переменных, вызовы функций, сопоставление с образцом, инстанцирование дженериков, параллельную семантику и распространение ошибок.

КодШаблонОписание
E1001Unknown variable: '{name}'Неизвестная переменная
E1002Expected type '{expected}', found type '{found}'Несоответствие типов
E1003Unknown type: '{type}'Неизвестный тип
E1010Function '{func}' expects {expected} arguments, found {found}Несоответствие количества аргументов
E1011Parameter type mismatch: expected '{expected}', found '{found}'Несоответствие типа аргумента
E1012Return type mismatch: expected '{expected}', found '{found}'Несоответствие типа возврата
E1013Function not found: '{func}'Функция не найдена
E1020Cannot infer type for '{expr}'Невозможно вывести тип
E1021Type inference conflict: {reason}Конфликт вывода типов
E1030Pattern non-exhaustive: missing patterns {patterns}Неисчерпывающий шаблон
E1031Unreachable pattern: '{pattern}'Недостижимый шаблон
E1040Operation '{op}' is not supported for type '{type}'Операция не поддерживается
E1041Index out of bounds: valid range is 0..{max}, found {index}Выход индекса за границы
E1042Field '{field}' not found in struct '{struct}'Поле не найдено
E1050Logical operation requires boolean operands, found '{left}' and '{right}'Требуются логические операнды
E1051Logical NOT requires boolean operand, found '{type}'Логическое NOT требует логический операнд
E1052Cannot dereference type '{type}', expected pointer typeНедопустимое разыменование
E1053Cannot access field on non-struct type '{type}'Доступ к полю неструктурного типа
E1054Condition must be boolean, found '{type}'Несоответствие типа условия
E1055Constraint type '{type}' can only be used in generic contextОграничение применимо только в обобщённом контексте
E1060Expected {expected} type argument(s), found {found}Несоответствие количества аргументов типа
E1061Cannot instantiate generic type with given argumentsНевозможно инстанцировать обобщённый тип
E1081`?` is only allowed inside functions returning Result? допускается только в функциях, возвращающих Result
E1082`?` requires a Result expression, found '{type}'? может использоваться только с выражением Result
E1083Result error type mismatch for `?`: expected '{expected}', found '{found}'Несоответствие типа ошибки для ?
E1090Type: Type = TypeНевыразимо (пасхалка)
E1091Generic meta-type self-reference is not allowed: '{decl}'Недопустимый обобщённый мета-тип
E1062Const generic constraint violation: {reason}Нарушение ограничения const-дженерика
E1064Invalid binding position(s) {positions} for function with {total} parameter(s)Недопустимый индекс позиции связывания (RFC-004)
E1095Unknown interface: '{name}'Неизвестный интерфейс (RFC-011a)
E1096Interface '{name}' expects {expected} type argument(s), found {found}Несоответствие числа аргументов при инстанциации интерфейса
E1097Interface member '{member}' conflicts with field of type '{type}'Конфликт имени члена интерфейса с полем
E1098Type '{type}' does not implement '{interface}.{method}'Метод интерфейса не реализован
E1099Signature mismatch for '{type}.{method}': expected '{expected}', found '{found}'Несоответствие сигнатуры метода интерфейса
E1100Duplicate implementation of '{type}.{method}' (override is not allowed)Дублирование реализации метода с той же сигнатурой (переопределение запрещено)
E1101Type '{type}' does not implement interface '{interface}' and cannot enter this existential positionТип не реализует интерфейс (проверка члена экзистенциального типа)

E2xxx — Семантический анализ ​

Ошибки этапа семантического анализа, охватывающие область видимости, время жизни переменных, владение и разбор сигнатур функций.

КодШаблонОписание
E2001Variable '{name}' is not in scopeОшибка области видимости
E2002Duplicate definition: '{name}' is already defined in this scopeДублирующееся определение
E2003Ownership constraint violated: {reason}Ошибка владения
E2010Cannot assign to immutable variable '{name}'Присвоение неизменяемому
E2011Use of uninitialized variable '{name}'Использование неинициализированной переменной
E2012Mutability conflict: cannot use mutable reference in immutable contextКонфликт изменяемости
E2013Cannot shadow existing variable '{name}'Затенение переменной
E2014'{name}' has been moved and cannot be usedИспользование перемещённой переменной
E2090Invalid signature: {reason}Недопустимая сигнатура
E2091Invalid signature: unknown type '{type_name}'Неизвестный тип в сигнатуре
E2092Invalid signature: missing '->'Отсутствует '->' в сигнатуре
E2093Invalid signature: duplicate parameter '{name}'Дублирующееся имя параметра
E2094Invalid signature: generic '{name}' shadows outer genericЗатенение внешнего обобщённого параметра
E2095Invalid signature: parameter '{name}' shadows genericЗатенение обобщённого типа параметром

E4xxx — Дженерики и трейты ​

Ошибки, связанные с ограничениями дженериков и системой трейтов.

КодШаблонОписание
E4001Type '{type}' does not satisfy the trait bound '{trait}'Нарушение ограничения дженерика
E4002Trait '{trait}' not foundТрейт не найден
E4003Missing implementation for trait '{trait}' for type '{type}'Отсутствует реализация трейта
E4004Conflicting trait implementations for '{trait}'Конфликт реализаций трейта
E4005Associated type '{assoc_type}' not found in '{container}'Связанный тип не найден

E5xxx — Модули и импорт ​

Ошибки модульной системы и импорта.

КодШаблонОписание
E5001Module '{module}' not foundМодуль не найден
E5002Failed to import module '{module}': {reason}Ошибка импорта
E5003Export '{export}' not found in module '{module}'Экспорт не найден
E5004Circular dependency detected: {path}Циклическая зависимость
E5005Invalid module path: '{path}'Недопустимый путь модуля
E5006Duplicate import: '{name}' is already importedДублирующийся импорт
E5007Module '{module}' exports: {available}Подсказка об экспортах модуля

E6xxx — Время выполнения ​

Ошибки, возникающие на этапе выполнения.

КодШаблонОписание
E6001Division by zero in expression: {expr}Деление на ноль
E6003Array index out of bounds: valid range is 0..{max}, found {index}Выход индекса массива за границы
E6004Stack overflow: recursion depth exceeded limit {limit}Переполнение стека
E6005Assertion failed: {condition}Сбой утверждения
E6006Function not found: '{func}'Функция не найдена (время выполнения)
E6007Runtime error: {message}Ошибка времени выполнения

E7xxx — Ввод-вывод и системные ​

Ошибки операций ввода-вывода и системного уровня.

КодШаблонОписание
E7001File not found: '{path}'Файл не найден
E7002Permission denied: '{path}'Доступ запрещён
E7003I/O error: {reason}Ошибка ввода-вывода
E7004Network error: {reason}Сетевая ошибка

E8xxx — Внутренние ошибки компилятора ​

Внутренние ошибки компилятора, обычно свидетельствующие о баге в самом компиляторе. При обнаружении таких ошибок, пожалуйста, сообщайте о них в GitHub Issues.

КодШаблонОписание
E8001Internal compiler error: {message}Внутренняя ошибка компилятора
E8002Unexpected compiler panic: {reason}Неожиданный панический сбой
E8003Compiler phase error: {phase} - {message}Ошибка фазы компилятора

W1xxx — Предупреждения ​

Предупреждения, связанные с обнаружением мёртвого кода. Предупреждения не препятствуют компиляции, но указывают на возможные проблемы в коде.

КодШаблонОписание
W1001Unused exported function: '{name}'Неиспользуемая экспортируемая функция
W1002Unused exported type: '{name}'Неиспользуемый экспортируемый тип
W1003Unused import: '{name}'Неиспользуемый импорт
W1004Unused exported variable: '{name}'Неиспользуемая экспортируемая переменная
W1005Unused exported method: '{name}'Неиспользуемый экспортируемый метод
W1063const generic constraint cannot be evaluated: `{constraint}` ({var} = {value})Невозможно вычислить ограничение const-дженерика
W1080Constraint cannot be proven at compile-time, degraded to runtime checkПонижение доказательства времени компиляции

Всего 118 диагностических кодов (111 кодов ошибок + 7 кодов предупреждений), авторитетным источником является реестр define_codes! (src/util/diagnostic/codes/); полный зарегистрированный список каждого кода определяется реестром; на этой странице перечислены распространённые коды по семействам.