/// Copyright: Copyright (c) 2021 Andrey Penechko.
/// License: $(WEB boost.org/LICENSE_1_0.txt, Boost License 1.0).
/// Authors: Andrey Penechko.
module vox.fe.ast.ast_node_flags;

enum AstFlags : ushort
{
	/// Before AST node AttributeInfo struct allocated
	hasAttributes      = 1 <<  0,

	isType             = 1 <<  1,
	/// Is added to expression nodes that are being assigned to
	isLvalue           = 1 <<  2,
	/// stores ScopeKind
	scopeKindMask      = 1 <<  3 | 1 << 4, // used for reading value
	isLocal            = 0 <<  3,          // used for setting flags
	isGlobal           = 1 <<  3,          // used for setting flags
	isMember           = 2 <<  3,          // used for setting flags

	isTemplateInstance = 1 <<  5,
	// used for node specific flags
	userFlag           = 1 <<  6,
}