
#ifndef PORYGONLANG_DIAGNOSTICCODE_HPP
#define PORYGONLANG_DIAGNOSTICCODE_HPP

namespace Porygon::Diagnostics {
    enum class DiagnosticCode : uint8_t {
        // Lex diagnostics
        UnexpectedCharacter,
        InvalidStringControlCharacter,

        // Parse diagnostics
        UnexpectedToken,

        // Bind diagnostics
        NoBinaryOperationFound,
        NoUnaryOperationFound,
        CantAssignVariable,
        VariableNotFound,
        ExpressionIsNotAFunction,
        CantIndex,
        InvalidReturnType,
        ConditionNotABool,
        InvalidTableValueType,
        InvalidTypeName,
        UserDataFieldNoGetter,
        UserDataFieldNoSetter,
        NumericalForArgumentNotANumber,
        CantIterateExpression,
        InvalidFunctionParameters,
        ModuleDoesntExist
    };
}
#endif //PORYGONLANG_DIAGNOSTICCODE_HPP
