//==--- DiagnosticFrontendKinds.td - frontend diagnostics -----------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

let Component = "Frontend" in {

def err_fe_error_opening : Error<"error opening '%0': %1">;
def err_fe_error_reading : Error<"error reading '%0'">;
def err_fe_error_reading_stdin : Error<"error reading stdin">;
def err_fe_error_backend : Error<"error in backend: %0">, DefaultFatal;
def err_fe_invalid_ast_file : Error<"invalid AST file: '%0'">, DefaultFatal;
def err_fe_invalid_ast_action : Error<"invalid action for AST input">,
                                      DefaultFatal;
// Error generated by the backend.
def err_fe_inline_asm : Error<"%0">, CatInlineAsm;
def note_fe_inline_asm_here : Note<"instantated into assembly here">;



def err_fe_invalid_code_complete_file : Error<
    "cannot locate code-completion file %0">, DefaultFatal;
def err_fe_stdout_binary : Error<"unable to change standard output to binary">,
  DefaultFatal;
def err_fe_stderr_binary : Error<"unable to change standard error to binary">,
  DefaultFatal;
def err_fe_dependency_file_requires_MT : Error<
    "-dependency-file requires at least one -MT or -MQ option">;
def err_fe_incompatible_options : Error<
    "'%0' cannot be used with '%1'">, DefaultFatal;
def err_fe_no_fixit_and_codegen : Error<
    "FIX-ITs cannot be applied when generating code">;
def err_fe_unable_to_find_fixit_file : Error<
    "FIX-IT could not find file '%0'">;
def err_fe_invalid_plugin_name : Error<
    "unable to find plugin '%0'">;
def err_fe_expected_compiler_job : Error<
    "unable to handle compilation, expected exactly one compiler job in '%0'">;
def err_fe_expected_clang_command : Error<
    "expected a clang compiler command">;
def err_fe_remap_missing_to_file : Error<
    "could not remap file '%0' to the contents of file '%1'">, DefaultFatal;
def err_fe_remap_missing_from_file : Error<
    "could not remap from missing file '%0'">, DefaultFatal;
def err_fe_unable_to_load_pch : Error<
    "unable to load PCH file">;
def err_fe_unable_to_load_plugin : Error<
    "unable to load plugin '%0': '%1'">;
def err_fe_unable_to_create_target : Error<
    "unable to create target: '%0'">;
def err_fe_unable_to_interface_with_target : Error<
    "unable to interface with target machine">;
def err_fe_unable_to_read_pch_file : Error<
    "unable to read PCH file: '%0'">;
def err_fe_not_a_pch_file : Error<
    "input is not a PCH file: '%0'">;
def err_fe_pch_malformed : Error<
    "malformed or corrupted PCH file: '%0'">, DefaultFatal;
def err_fe_pch_malformed_block : Error<
    "malformed block record in PCH file: '%0'">, DefaultFatal;
def err_fe_pch_error_at_end_block : Error<
    "error at end of module block in PCH file: '%0'">, DefaultFatal;
def err_fe_pch_file_modified : Error<
    "file '%0' has been modified since the precompiled header was built">,
    DefaultFatal;
def err_fe_unable_to_open_output : Error<
    "unable to open output file '%0': '%1'">;
def err_fe_unable_to_open_logfile : Error<
    "unable to open logfile file '%0': '%1'">;
def err_fe_pth_file_has_no_source_header : Error<
    "PTH file '%0' does not designate an original source header file for -include-pth">;
def warn_fe_macro_contains_embedded_newline : Warning<
    "macro '%0' contains embedded newline, text after the newline is ignored.">;

def err_verify_missing_start : Error<
    "cannot find start ('{{') of expected %0">;
def err_verify_missing_end : Error<
    "cannot find end ('}}') of expected %0">;
def err_verify_invalid_content : Error<
    "invalid expected %0: %1">;
def err_verify_inconsistent_diags : Error<
    "'%0' diagnostics %select{expected|seen}1 but not %select{seen|expected}1: %2">;

def note_fixit_applied : Note<"FIX-IT applied suggested code changes">;
def note_fixit_in_macro : Note<
    "FIX-IT unable to apply suggested code changes in a macro">;
def note_fixit_failed : Note<
    "FIX-IT unable to apply suggested code changes">;
def note_fixit_unfixed_error : Note<"FIX-IT detected an error it cannot fix">;
def note_fixit_main_file_unchanged : Note<
    "main file unchanged">;
def warn_fixit_no_changes : Note<
    "FIX-IT detected errors it could not fix; no output will be generated">;

def err_fe_invoking : Error<"error invoking%0: %1">, DefaultFatal;

// PCH reader
def err_relocatable_without_isysroot : Error<
    "must specify system root with -isysroot when building a relocatable "
    "PCH file">;
def warn_pch_target_triple : Error<
    "PCH file was compiled for the target '%0' but the current translation "
    "unit is being compiled for target '%1'">;
def warn_pch_c99 : Error<
    "C99 support was %select{disabled|enabled}0 in PCH file but is "
    "currently %select{disabled|enabled}1">;
def warn_pch_cplusplus : Error<
    "C++ support was %select{disabled|enabled}0 in PCH file but is "
    "currently %select{disabled|enabled}1">;
def warn_pch_cplusplus0x : Error<
    "C++0x support was %select{disabled|enabled}0 in PCH file but is "
    "currently %select{disabled|enabled}1">;
def warn_pch_objective_c : Error<
    "Objective-C support was %select{disabled|enabled}0 in PCH file but is "
    "currently %select{disabled|enabled}1">;
def warn_pch_objective_c2 : Error<
    "Objective-C 2.0 support was %select{disabled|enabled}0 in PCH file but "
    "is currently %select{disabled|enabled}1">;
def warn_pch_nonfragile_abi : Error<
    "PCH file was compiled with the %select{32-bit|non-fragile}0 Objective-C "
    "ABI but the %select{32-bit|non-fragile}1 Objective-C ABI is selected">;
def warn_pch_nonfragile_abi2 : Error<
    "PCH file was compiled with the %select{32-bit|enhanced non-fragile}0 "
    "Objective-C ABI but the %select{32-bit|enhanced non-fragile}1 "
    "Objective-C ABI is selected">;
def warn_pch_no_constant_cfstrings : Error<
    "Objctive-C NSstring generation support was %select{disabled|enabled}0 "
    "in PCH file but currently %select{disabled|enabled}1">; 
def warn_pch_extensions : Error<
    "extensions were %select{enabled|disabled}0 in PCH file but are "
    "currently %select{enabled|disabled}1">;
def warn_pch_gnu_extensions : Error<
    "GNU extensions were %select{disabled|enabled}0 in PCH file but are "
    "currently %select{disabled|enabled}1">;
def warn_pch_gnu_keywords : Error<
    "GNU keywords were %select{disabled|enabled}0 in PCH file but are "
    "currently %select{disabled|enabled}1">;
def warn_pch_microsoft_extensions : Error<
    "Microsoft extensions were %select{disabled|enabled}0 in PCH file but are "
    "currently %select{disabled|enabled}1">;
def warn_pch_heinous_extensions : Error<
    "heinous extensions were %select{disabled|enabled}0 in PCH file but are "
    "currently %select{disabled|enabled}1">;
def warn_pch_lax_vector_conversions : Error<
    "lax vector conversions were %select{disabled|enabled}0 in PCH file but "
    "are currently %select{disabled|enabled}1">;
def warn_pch_altivec : Error<
    "AltiVec initializers were %select{disabled|enabled}0 in PCH file but "
    "are currently %select{disabled|enabled}1">;
def warn_pch_opencl : Error<
    "OpenCL language extensions were %select{disabled|enabled}0 in PCH file "
    "but are currently %select{disabled|enabled}1">;
def warn_pch_elide_constructors : Error<
    "Elidable copy constructors were %select{disabled|enabled}0 in PCH file "
    "but are currently %select{disabled|enabled}1">;
def warn_pch_exceptions : Error<
    "exceptions were %select{disabled|enabled}0 in PCH file but "
    "are currently %select{disabled|enabled}1">;
def warn_pch_sjlj_exceptions : Error<
    "sjlj-exceptions were %select{disabled|enabled}0 in PCH file but "
    "are currently %select{disabled|enabled}1">;
def warn_pch_objc_runtime : Error<
    "PCH file was compiled with the %select{NeXT|GNU}0 runtime but the "
    "%select{NeXT|GNU}1 runtime is selected">;
def warn_pch_freestanding : Error<
    "PCH file was compiled with a %select{hosted|freestanding}0  "
    "implementation but a %select{hosted|freestanding}1 implementation "
    "is selected">;
def warn_pch_builtins : Error<
    "PCH file was compiled with builtins %select{enabled|disabled}0 but "
    "builtins are currently %select{enabled|disabled}1">;
def warn_pch_thread_safe_statics : Error<
    "PCH file was compiled %select{without|with}0 thread-safe statics but "
    "thread-safe statics are currently %select{disabled|enabled}1">;
def warn_pch_posix_threads : Error<
    "PCH file was compiled %select{without|with}0 POSIX thread support but "
    "POSIX threads are currently %select{disabled|enabled}1">;
def warn_pch_stack_protector : Error<
    "stack protector was %select{off|on|required}0 in PCH file but "
    "is currently %select{off|on|required}1">;
def warn_pch_blocks : Error<
    "blocks were %select{disabled|enabled}0 in PCH file but "
    "are currently %select{disabled|enabled}1">;
def warn_pch_math_errno : Error<
    "math functions %select{do not respect|respect}0 'errno' in PCH "
    "file but they are currently set to %select{not respect|respect}1 "
    "'errno'">;
def warn_pch_optimize : Error<
    "the macro '__OPTIMIZE__' was %select{not defined|defined}0 in "
    "the PCH file but is currently %select{undefined|defined}1">;
def warn_pch_optimize_size : Error<
    "the macro '__OPTIMIZE_SIZE__' was %select{not defined|defined}0 in "
    "the PCH file but is currently %select{undefined|defined}1">;
def warn_pch_static : Error<
    "the PCH file was compiled %select{dynamic|static}0 but the "
    "current translation unit is being compiled as %select{dynamic|static}1">;
def warn_pch_pic_level : Error<
    "PCH file was compiled with PIC level %0, but the current translation "
    "unit will be compiled with PIC level %1">;
def warn_pch_gnu_inline : Error<
    "PCH file was compiled with %select{C99|GNU|}0 inline semantics but "
    "%select{C99|GNU}1 inline semantics are currently selected">;
def warn_pch_no_inline : Error<
    "the macro '__NO_INLINE__' was %select{not defined|defined}0 in "
    "the PCH file but is currently %select{undefined|defined}1">;
def warn_pch_gc_mode : Error<
    "the PCH file was built with %select{no||hybrid}0 garbage collection but "
    "the current translation unit will compiled with %select{no||hybrid}1 "
    "garbage collection">;
def warn_pch_version_too_old : Error<
    "PCH file uses an older PCH format that is no longer supported">;
def warn_pch_version_too_new : Error<
    "PCH file uses a newer PCH format that cannot be read">;
def warn_pch_different_branch : Error<
    "PCH file built from a different branch (%0) than the compiler (%1)">;
def warn_cmdline_conflicting_macro_def : Error<
    "definition of the macro '%0' conflicts with the definition used to "
    "build the precompiled header">;
def note_pch_macro_defined_as : Note<
    "definition of macro '%0' in the precompiled header">;
def warn_cmdline_missing_macro_defs : Warning<
    "macro definitions used to build the precompiled header are missing">;
def note_using_macro_def_from_pch : Note<
    "using this macro definition from precompiled header">;
def warn_macro_name_used_in_pch : Error<
    "definition of macro %0 conflicts with an identifier used in the "
    "precompiled header">;
def warn_pch_compiler_options_mismatch : Error<
    "compiler options used when building the precompiled header differ from "
    "the options used when using the precompiled header">;
def warn_pch_access_control : Error<
    "C++ access control was %select{disabled|enabled}0 in the PCH file but "
    "is currently %select{disabled|enabled}1">;
def warn_pch_char_signed : Error<
    "char was %select{unsigned|signed}0 in the PCH file but "
    "is currently %select{unsigned|signed}1">;
def warn_pch_short_wchar : Error<
    "-fshort-wchar was %select{disabled|enabled}0 in the PCH file but "
    "is currently %select{disabled|enabled}1">;

def err_not_a_pch_file : Error<
    "'%0' does not appear to be a precompiled header file">, DefaultFatal;
def warn_unknown_warning_option : Warning<
    "unknown warning option '%0'">,
    InGroup<DiagGroup<"unknown-warning-option"> >;
def warn_unknown_warning_specifier : Warning<
    "unknown %0 warning specifier: '%1'">,
    InGroup<DiagGroup<"unknown-warning-option"> >;
}
