use bitflags::bitflags;
bitflags! {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct SymbolFlags: u32 {
const NONE = 0;
const FUNCTION_SCOPED_VARIABLE = 1 << 0;
const BLOCK_SCOPED_VARIABLE = 1 << 1;
const PROPERTY = 1 << 2;
const ENUM_MEMBER = 1 << 3;
const FUNCTION = 1 << 4;
const CLASS = 1 << 5;
const INTERFACE = 1 << 6;
const CONST_ENUM = 1 << 7;
const REGULAR_ENUM = 1 << 8;
const VALUE_MODULE = 1 << 9;
const NAMESPACE_MODULE = 1 << 10;
const TYPE_LITERAL = 1 << 11;
const OBJECT_LITERAL = 1 << 12;
const METHOD = 1 << 13;
const CONSTRUCTOR = 1 << 14;
const GET_ACCESSOR = 1 << 15;
const SET_ACCESSOR = 1 << 16;
const SIGNATURE = 1 << 17;
const TYPE_PARAMETER = 1 << 18;
const TYPE_ALIAS = 1 << 19;
const EXPORT_VALUE = 1 << 20;
const ALIAS = 1 << 21;
const PROTOTYPE = 1 << 22;
const EXPORT_STAR = 1 << 23;
const OPTIONAL = 1 << 24;
const TRANSIENT = 1 << 25;
const ASSIGNMENT = 1 << 26;
const MODULE_EXPORTS = 1 << 27;
const CONST_ENUM_ONLY_MODULE = 1 << 28;
const REPLACEABLE_BY_METHOD = 1 << 29;
const GLOBAL_LOOKUP = 1 << 30;
const ENUM = Self::REGULAR_ENUM.bits() | Self::CONST_ENUM.bits();
const VARIABLE = Self::FUNCTION_SCOPED_VARIABLE.bits() | Self::BLOCK_SCOPED_VARIABLE.bits();
const VALUE = Self::VARIABLE.bits() | Self::PROPERTY.bits() | Self::ENUM_MEMBER.bits()
| Self::OBJECT_LITERAL.bits() | Self::FUNCTION.bits() | Self::CLASS.bits()
| Self::ENUM.bits() | Self::VALUE_MODULE.bits() | Self::METHOD.bits()
| Self::GET_ACCESSOR.bits() | Self::SET_ACCESSOR.bits();
const TYPE = Self::CLASS.bits() | Self::INTERFACE.bits() | Self::ENUM.bits()
| Self::ENUM_MEMBER.bits() | Self::TYPE_LITERAL.bits() | Self::TYPE_PARAMETER.bits()
| Self::TYPE_ALIAS.bits();
const NAMESPACE = Self::VALUE_MODULE.bits() | Self::NAMESPACE_MODULE.bits() | Self::ENUM.bits();
const MODULE = Self::VALUE_MODULE.bits() | Self::NAMESPACE_MODULE.bits();
const ACCESSOR = Self::GET_ACCESSOR.bits() | Self::SET_ACCESSOR.bits();
const MODULE_MEMBER = Self::VARIABLE.bits() | Self::FUNCTION.bits() | Self::CLASS.bits()
| Self::INTERFACE.bits() | Self::ENUM.bits() | Self::MODULE.bits()
| Self::TYPE_ALIAS.bits() | Self::ALIAS.bits();
const EXPORT_HAS_LOCAL = Self::FUNCTION.bits() | Self::CLASS.bits() | Self::ENUM.bits()
| Self::VALUE_MODULE.bits();
const BLOCK_SCOPED = Self::BLOCK_SCOPED_VARIABLE.bits() | Self::CLASS.bits() | Self::ENUM.bits();
const PROPERTY_OR_ACCESSOR = Self::PROPERTY.bits() | Self::ACCESSOR.bits();
const CLASS_MEMBER = Self::METHOD.bits() | Self::ACCESSOR.bits() | Self::PROPERTY.bits();
const EXPORT_SUPPORTS_DEFAULT_MODIFIER = Self::CLASS.bits() | Self::FUNCTION.bits()
| Self::INTERFACE.bits();
const CLASSIFIABLE = Self::CLASS.bits() | Self::ENUM.bits() | Self::TYPE_ALIAS.bits()
| Self::INTERFACE.bits() | Self::TYPE_PARAMETER.bits() | Self::MODULE.bits()
| Self::ALIAS.bits();
const LATE_BINDING_CONTAINER = Self::CLASS.bits() | Self::INTERFACE.bits()
| Self::TYPE_LITERAL.bits() | Self::OBJECT_LITERAL.bits() | Self::FUNCTION.bits();
}
}