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}'Логическое НЕ требует булев операнд
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Невозможно создать экземпляр обобщённого типа
E1070Unknown label: '{label}'Неизвестная метка
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}'Тип ошибки Result для ? не совпадает
E1090Type: Type = TypeНевыразимое (пасхалка)
E1091Generic meta-type self-reference is not allowed: '{decl}'Недопустимая самоссылка обобщённого метакласса
E1062Const generic constraint violation: {reason}Нарушение ограничения const-обобщения

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 -- Обобщения и trait'ы

Ошибки, связанные с ограничениями обобщённых типов и системой trait'ов.

Код ошибкиШаблонОписание
E4001Type '{type}' does not satisfy the trait bound '{trait}'Нарушение ограничения trait'а
E4002Trait '{trait}' not foundtrait не найден
E4003Missing implementation for trait '{trait}' for type '{type}'Отсутствует реализация trait'а
E4004Conflicting trait implementations for '{trait}'Конфликт реализаций 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 -- Runtime

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

Код ошибкиШаблонОписание
E6001Division by zero in expression: {expr}Деление на ноль
E6002Null pointer dereference at {location}Разыменование нулевого указателя
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}'Функция не найдена (runtime)
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}Неожиданный Panic
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}'Неиспользуемый экспортированный метод

| W1063 | Const generic constraint not evaluable at compile time | Ограничение const-обобщения

нельзя вычислить на этапе компиляции

Всего 85 диагностических кодов (79 кодов ошибок + 6 кодов предупреждений).