//===--- ExprNodes.def - Swift Expression AST Metaprogramming ---*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// This file defines macros used for macro-metaprogramming with expressions.
//
//===----------------------------------------------------------------------===//

/// EXPR(Id, Parent)
///   If the expression node is not abstract, its enumerator value is
///   ExprKind::Id.  The node's class name is Id##Expr, and the name of
///   its base class (in the Expr hierarchy) is Parent.
#ifndef EXPR
#define EXPR(Id, Parent)
#endif

/// An abstract expression node is an abstract base class in the hierarchy;
/// it is never a most-derived type, and it does not have an enumerator in
/// ExprKind.
///
/// Most metaprograms do not care about abstract expressions, so the default
/// is to ignore them.
#ifndef ABSTRACT_EXPR
#define ABSTRACT_EXPR(Id, Parent)
#endif

/// An "unchecked" expression node is removed from valid code by the end
/// of the type-checking phase.
///
/// By default, these are treated like any other expression.
#ifndef UNCHECKED_EXPR
#define UNCHECKED_EXPR(Id, Parent) EXPR(Id, Parent)
#endif

/// A literal expression node represents a literal value, such as a number,
/// boolean, string, etc.
///
/// By default, these are treated like any other expression.
#ifndef LITERAL_EXPR
#define LITERAL_EXPR(Id, Parent) EXPR(Id, Parent)
#endif

/// A expression node with a DeclContext. For example: closures.
///
/// By default, these are treated like any other expression.
#ifndef CONTEXT_EXPR
#define CONTEXT_EXPR(Id, Parent) EXPR(Id, Parent)
#endif

/// A convenience for determining the range of expressions.  These will always
/// appear immediately after the last member.
#ifndef EXPR_RANGE
#define EXPR_RANGE(Id, First, Last)
#endif

#ifndef LAST_EXPR
#define LAST_EXPR(Id)
#endif

EXPR(Error, Expr)
ABSTRACT_EXPR(Literal, Expr)
  LITERAL_EXPR(NilLiteral, LiteralExpr)
  ABSTRACT_EXPR(NumberLiteral, LiteralExpr)
    LITERAL_EXPR(IntegerLiteral, NumberLiteralExpr)
    LITERAL_EXPR(FloatLiteral, NumberLiteralExpr)
  EXPR_RANGE(NumberLiteral, IntegerLiteral, FloatLiteral)
  LITERAL_EXPR(BooleanLiteral, LiteralExpr)
  LITERAL_EXPR(StringLiteral, LiteralExpr)
  LITERAL_EXPR(InterpolatedStringLiteral, LiteralExpr)
  LITERAL_EXPR(ObjectLiteral, LiteralExpr)
  LITERAL_EXPR(MagicIdentifierLiteral, LiteralExpr)
  EXPR_RANGE(Literal, NilLiteral, MagicIdentifierLiteral)
EXPR(DiscardAssignment, Expr)
EXPR(DeclRef, Expr)
EXPR(SuperRef, Expr)
EXPR(Type, Expr)
EXPR(OtherConstructorDeclRef, Expr)
EXPR(DotSyntaxBaseIgnored, Expr)
ABSTRACT_EXPR(OverloadSetRef, Expr)
  UNCHECKED_EXPR(OverloadedDeclRef, OverloadSetRefExpr)
  EXPR_RANGE(OverloadSetRef, OverloadedDeclRef, OverloadedDeclRef)
UNCHECKED_EXPR(UnresolvedDeclRef, Expr)
ABSTRACT_EXPR(Lookup, Expr)
  EXPR(MemberRef, LookupExpr)
  EXPR(Subscript, LookupExpr)
  ABSTRACT_EXPR(DynamicLookup, LookupExpr)
    EXPR(DynamicMemberRef, DynamicLookupExpr)
    EXPR(DynamicSubscript, DynamicLookupExpr)
    EXPR_RANGE(DynamicLookup, DynamicMemberRef, DynamicSubscript)
  EXPR_RANGE(Lookup, MemberRef, DynamicSubscript)
UNCHECKED_EXPR(UnresolvedSpecialize, Expr)
UNCHECKED_EXPR(UnresolvedMember, Expr)
UNCHECKED_EXPR(UnresolvedDot, Expr)
UNCHECKED_EXPR(Sequence, Expr)
ABSTRACT_EXPR(Identity, Expr)
  EXPR(Paren, IdentityExpr)
  EXPR(DotSelf, IdentityExpr)
  EXPR_RANGE(Identity, Paren, DotSelf)
ABSTRACT_EXPR(AnyTry, Expr)
  EXPR(Try, AnyTryExpr)
  EXPR(ForceTry, AnyTryExpr)
  EXPR(OptionalTry, AnyTryExpr)
  EXPR_RANGE(AnyTry, Try, OptionalTry)
EXPR(Tuple, Expr)
ABSTRACT_EXPR(Collection, Expr)
  EXPR(Array, CollectionExpr)
  EXPR(Dictionary, CollectionExpr)
  EXPR_RANGE(Collection, Array, Dictionary)
EXPR(KeyPathApplication, Expr)
EXPR(TupleElement, Expr)
EXPR(CaptureList, Expr)
ABSTRACT_EXPR(AbstractClosure, Expr)
  CONTEXT_EXPR(Closure, AbstractClosureExpr)
  CONTEXT_EXPR(AutoClosure, AbstractClosureExpr)
  EXPR_RANGE(AbstractClosure, Closure, AutoClosure)
EXPR(InOut, Expr)
EXPR(VarargExpansion, Expr)
EXPR(DynamicType, Expr)
EXPR(RebindSelfInConstructor, Expr)
EXPR(OpaqueValue, Expr)
EXPR(DefaultArgument, Expr)
EXPR(CallerDefaultArgument, Expr)
EXPR(BindOptional, Expr)
EXPR(OptionalEvaluation, Expr)
EXPR(ForceValue, Expr)
EXPR(OpenExistential, Expr)
EXPR(MakeTemporarilyEscapable, Expr)
ABSTRACT_EXPR(Apply, Expr)
  EXPR(Call, ApplyExpr)
  EXPR(PrefixUnary, ApplyExpr)
  EXPR(PostfixUnary, ApplyExpr)
  EXPR(Binary, ApplyExpr)
  ABSTRACT_EXPR(SelfApply, ApplyExpr)
    EXPR(DotSyntaxCall, SelfApplyExpr)
    EXPR(ConstructorRefCall, SelfApplyExpr)
    EXPR_RANGE(SelfApply, DotSyntaxCall, ConstructorRefCall)
  EXPR_RANGE(Apply, Call, ConstructorRefCall)
ABSTRACT_EXPR(ImplicitConversion, Expr)
  EXPR(Load, ImplicitConversionExpr)
  EXPR(DestructureTuple, ImplicitConversionExpr)
  EXPR(UnresolvedTypeConversion, ImplicitConversionExpr)
  EXPR(FunctionConversion, ImplicitConversionExpr)
  EXPR(CovariantFunctionConversion, ImplicitConversionExpr)
  EXPR(CovariantReturnConversion, ImplicitConversionExpr)
  EXPR(ImplicitlyUnwrappedFunctionConversion, ImplicitConversionExpr)
  EXPR(MetatypeConversion, ImplicitConversionExpr)
  EXPR(CollectionUpcastConversion, ImplicitConversionExpr)
  EXPR(Erasure, ImplicitConversionExpr)
  EXPR(AnyHashableErasure, ImplicitConversionExpr)
  EXPR(BridgeToObjC, ImplicitConversionExpr)
  EXPR(BridgeFromObjC, ImplicitConversionExpr)
  EXPR(ConditionalBridgeFromObjC, ImplicitConversionExpr)
  EXPR(DerivedToBase, ImplicitConversionExpr)
  EXPR(ArchetypeToSuper, ImplicitConversionExpr)
  EXPR(InjectIntoOptional, ImplicitConversionExpr)
  EXPR(ClassMetatypeToObject, ImplicitConversionExpr)
  EXPR(ExistentialMetatypeToObject, ImplicitConversionExpr)
  EXPR(ProtocolMetatypeToObject, ImplicitConversionExpr)
  EXPR(InOutToPointer, ImplicitConversionExpr)
  EXPR(ArrayToPointer, ImplicitConversionExpr)
  EXPR(StringToPointer, ImplicitConversionExpr)
  EXPR(PointerToPointer, ImplicitConversionExpr)
  EXPR(ForeignObjectConversion, ImplicitConversionExpr)
  EXPR(UnevaluatedInstance, ImplicitConversionExpr)
  EXPR_RANGE(ImplicitConversion, Load, UnevaluatedInstance)
ABSTRACT_EXPR(ExplicitCast, Expr)
  ABSTRACT_EXPR(CheckedCast, ExplicitCastExpr)
    EXPR(ForcedCheckedCast, CheckedCastExpr)
    EXPR(ConditionalCheckedCast, CheckedCastExpr)
    EXPR(Is, CheckedCastExpr)
    EXPR_RANGE(CheckedCast, ForcedCheckedCast, Is)
  EXPR(Coerce, ExplicitCastExpr)
  EXPR_RANGE(ExplicitCast, ForcedCheckedCast, Coerce)
UNCHECKED_EXPR(Arrow, Expr)
EXPR(If, Expr)
EXPR(EnumIsCase, Expr)
EXPR(Assign, Expr)
EXPR(CodeCompletion, Expr)
UNCHECKED_EXPR(UnresolvedPattern, Expr)
EXPR(LazyInitializer, Expr)
EXPR(EditorPlaceholder, Expr)
EXPR(ObjCSelector, Expr)
EXPR(KeyPath, Expr)
UNCHECKED_EXPR(KeyPathDot, Expr)
EXPR(Tap, Expr)
LAST_EXPR(Tap)

#undef EXPR_RANGE
#undef LITERAL_EXPR
#undef UNCHECKED_EXPR
#undef ABSTRACT_EXPR
#undef CONTEXT_EXPR
#undef EXPR
#undef LAST_EXPR
