// Part of the Carbon Language project, under the Apache License v2.0 with LLVM // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #ifndef EXECUTABLE_SEMANTICS_COMMON_ERROR_BUILDERS_H_ #define EXECUTABLE_SEMANTICS_COMMON_ERROR_BUILDERS_H_ #include "common/error.h" #include "executable_semantics/common/source_location.h" namespace Carbon { // Builds an Error instance with the specified message. This should be used for // non-recoverable errors with user input. // // For example: // return ProgramError(line_num) << "Line is bad!"; // return ProgramError() << "Application is bad!"; // // Where possible, try to identify the error as a compilation or runtime error. // Use CHECK/FATAL for internal errors. The generic program error option is // provided as a fallback for cases that don't fit those classifications. inline auto CompilationError(SourceLocation loc) -> ErrorBuilder { ErrorBuilder builder; (void)(builder << "COMPILATION ERROR: " << loc << ": "); return builder; } inline auto ProgramError(SourceLocation loc) -> ErrorBuilder { ErrorBuilder builder; (void)(builder << "PROGRAM ERROR: " << loc << ": "); return builder; } inline auto RuntimeError(SourceLocation loc) -> ErrorBuilder { ErrorBuilder builder; (void)(builder << "RUNTIME ERROR: " << loc << ": "); return builder; } } // namespace Carbon #endif // EXECUTABLE_SEMANTICS_COMMON_ERROR_BUILDERS_H_