//===-- TypeCheckRequestKinds.def - Type Checking Request Kinds -*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// This file defines the kinds of TypeCheckRequests that can occur. It
// designed to be included multiple times with different definitions of
// the TYPE_CHECK_REQUEST(Request,Payload) macro, whose parameters
// are:
//
//   Request: The request kind.
//   Payload: The payload type.
//
//===----------------------------------------------------------------------===//

#if !defined(TYPE_CHECK_REQUEST)
#  error define TYPE_CHECK_REQUEST before including this file
#endif

/// Ensure that we can perform qualified name lookup into the given
/// declaration context for the given name.
TYPE_CHECK_REQUEST(QualifiedLookupInDeclContext, DeclContextLookup)

/// Ensure that we can perform unqualified name lookup into the given
/// declaration context for the given name.
TYPE_CHECK_REQUEST(UnqualifiedLookupInDeclContext, DeclContextLookup)

/// Perform type checking on an entry in the inherited clause of a
/// type or extension.
TYPE_CHECK_REQUEST(ResolveInheritedClauseEntry, InheritedClauseEntry)

/// Perform type checking on the superclass of a particular class.
TYPE_CHECK_REQUEST(TypeCheckSuperclass, Class)

/// Perform type checking on the raw type of a particular enum.
TYPE_CHECK_REQUEST(TypeCheckRawType, Enum)

/// Compute the set of inherited protocols for a given protocol.
TYPE_CHECK_REQUEST(InheritedProtocols, Protocol)

/// Partially resolve a type, forming enough of its structure to make
/// structural queries but not determining correctness.
TYPE_CHECK_REQUEST(ResolveTypeRepr, TypeResolution)

/// Resolve the given type declaration to the requested type
/// resolution stage.
TYPE_CHECK_REQUEST(ResolveTypeDecl, TypeDeclResolution)

#undef TYPE_CHECK_REQUEST
