// Copyright (C) 2022-2026 Exaloop Inc. <https://exaloop.io>

#pragma once

namespace codon::ast {

constexpr int INDENT_SIZE = 2;

struct Attr {
  enum {
    Module = 201,
    ParentClass,
    Bindings,
    LLVM,
    Python,
    Atomic,
    Property,
    StaticMethod,
    Attribute,
    C,
    Internal,
    HiddenFromUser,
    ForceRealize,
    AllowPassThrough,
    ParentCallExpr,
    TupleCall,
    Validated,
    AutoGenerated,
    CVarArg,
    Method,
    Capture,
    HasSelf,
    IsGenerator,
    Extend,
    Tuple,
    Dataclass,
    ClassDeduce,
    ClassNoTuple,
    Test,
    Overload,
    Export,
    Inline,
    NoArgReorder,
    FunctionAttributes,
    NoExtend,

    ClassMagic,
    ExprSequenceItem,
    ExprStarSequenceItem,
    ExprList,
    ExprSet,
    ExprDict,
    ExprPartial,
    ExprDominated,
    ExprStarArgument,
    ExprKwStarArgument,
    ExprOrderedCall,
    ExprExternVar,
    ExprDominatedUndefCheck,
    ExprDominatedUsed,
    ExprTime,
    ExprDoNotRealize,
    ExprNoSpecial,
    TryPyVar
  };
};
} // namespace codon::ast
