mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-02 17:52:58 +01:00
This echoes #2818 and the philosophy is mostly covered there. Versus parsing, semantics uses fewer separate handler files (for now) because the logic has been shorter. However, the design is still intended to make it easy to split files along boundaries similar to the parser, as I've done for a couple more complex/inter-related sections.
29 lines
885 B
C++
29 lines
885 B
C++
// 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 CARBON_TOOLCHAIN_COMMON_PRETTY_STACK_TRACE_FUNCTION_H_
|
|
#define CARBON_TOOLCHAIN_COMMON_PRETTY_STACK_TRACE_FUNCTION_H_
|
|
|
|
#include <functional>
|
|
|
|
#include "llvm/Support/PrettyStackTrace.h"
|
|
|
|
namespace Carbon {
|
|
|
|
class PrettyStackTraceFunction : public llvm::PrettyStackTraceEntry {
|
|
public:
|
|
explicit PrettyStackTraceFunction(std::function<void(llvm::raw_ostream&)> fn)
|
|
: fn_(std::move(fn)) {}
|
|
~PrettyStackTraceFunction() override = default;
|
|
|
|
auto print(llvm::raw_ostream& output) const -> void override { fn_(output); }
|
|
|
|
private:
|
|
const std::function<void(llvm::raw_ostream&)> fn_;
|
|
};
|
|
|
|
} // namespace Carbon
|
|
|
|
#endif // CARBON_TOOLCHAIN_COMMON_PRETTY_STACK_TRACE_FUNCTION_H_
|