//===--- Types.def - Driver Type info ---------------------------*- 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 the driver type information. Users of this file
// must define the TYPE macro to make use of this information.
//
//===----------------------------------------------------------------------===//

#ifndef TYPE
#error "Define TYPE prior to including this file!"
#endif

// TYPE(NAME, ID, SUFFIX, FLAGS)

// The first value is the type name as a string; this should be something which
// could be displayed to the user, or something which the user could provide.

// The second value is the type id, which will result in a
// swift::driver::file_types::TY_XX enum constant.

// The third value is the extension to use when creating temporary files
// of this type. It is also used when inferring a type from an extension.
// If multiple types specify the same extension, the first one is chosen when
// performing type inference.

// The fourth value is a string containing option flags. For now, this is
// unused, and should always be the empty string.

// Input types
TYPE("swift",               Swift,                     "swift",           "")
TYPE("sil",                 SIL,                       "sil",             "")
TYPE("sib",                 SIB,                       "sib",             "")

// Output types
TYPE("ast-dump",            ASTDump,                   "ast",             "")
TYPE("image",               Image,                     "out",             "")
TYPE("object",              Object,                    "o",               "")
TYPE("dSYM",                dSYM,                      "dSYM",            "")
TYPE("dependencies",        Dependencies,              "d",               "")
TYPE("autolink",            AutolinkFile,              "autolink",        "")
TYPE("swiftmodule",         SwiftModuleFile,           "swiftmodule",     "")
TYPE("swiftdoc",            SwiftModuleDocFile,        "swiftdoc",        "")
TYPE("swiftinterface",      SwiftParseableInterfaceFile, \
                                                       "swiftinterface",  "")
TYPE("assembly",            Assembly,                  "s",               "")
TYPE("raw-sil",             RawSIL,                    "sil",             "")
TYPE("raw-sib",             RawSIB,                    "sib",             "")
TYPE("llvm-ir",             LLVM_IR,                   "ll",              "")
TYPE("llvm-bc",             LLVM_BC,                   "bc",              "")
TYPE("diagnostics",         SerializedDiagnostics,     "dia",             "")
TYPE("objc-header",         ObjCHeader,                "h",               "")
TYPE("swift-dependencies",  SwiftDeps,                 "swiftdeps",       "")
TYPE("remap",               Remapping,                 "remap",           "")
TYPE("imported-modules",    ImportedModules,           "importedmodules", "")
TYPE("tbd",                 TBD,                       "tbd",             "")
TYPE("module-trace",        ModuleTrace,               "trace.json",      "")
TYPE("index-data",          IndexData,                 "",                "")
TYPE("opt-record",          OptRecord,                 "opt.yaml",        "")

// Misc types
TYPE("pcm",                 ClangModuleFile,           "pcm",             "")
TYPE("pch",                 PCH,                       "pch",             "")
TYPE("none",                Nothing,                   "",                "")

#undef TYPE
