Files
carbon-lang/toolchain/sem_ir/stringify.h
T
Richard Smith 47fa1b5991 Rename StringifyType to reflect that it can stringify non-type constants. (#5285)
Use it to stringify associated constant values in diagnostics. In
passing, add missing support for stringifying bool literals. Note that
there are some cases that it doesn't stringify properly, but that's not
new here; such cases could already be observed when stringifying generic
arguments.
2025-04-10 19:15:27 +00:00

31 lines
1.2 KiB
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_SEM_IR_STRINGIFY_H_
#define CARBON_TOOLCHAIN_SEM_IR_STRINGIFY_H_
#include "toolchain/sem_ir/file.h"
#include "toolchain/sem_ir/ids.h"
namespace Carbon::SemIR {
// Produces a string version of an instruction with a constant value. Generally,
// this should not be called directly. To format a constant value into a
// diagnostic, use a diagnostic parameter of type `InstIdAsConstant`. When the
// constant value is a type, use `InstIdAsType`, `InstIdAsRawType`, or
// `TypeOfInstId` where possible, or of type `TypeId` or `TypeIdAsRawType` if
// you don't have an expression describing the type.
auto StringifyConstantInst(const File& sem_ir, InstId outer_inst_id)
-> std::string;
// Produces a string version of the name of a specific. Generally, this should
// not be called directly. To format a string into a diagnostic, use a
// diagnostic parameter of type `SemIR::SpecificId`.
auto StringifySpecific(const File& sem_ir, SpecificId specific_id)
-> std::string;
} // namespace Carbon::SemIR
#endif // CARBON_TOOLCHAIN_SEM_IR_STRINGIFY_H_