Files
carbon-lang/toolchain/sem_ir/import_cpp.h
T
Jon Ross-Perkins a65f4b89e2 Make ValueStore require a ValueT parameter (#5757)
This is reducing ValueStore inference of types from `using`, and removes
`using ValueType = ...` from affected id types.

I'm adding a number of `using FooStore = ValueStore<FooId, Foo>` because
I think it's a little repetitive otherwise; often 4 cases where I'm
doing this: getter, const getter, member, and getter on `Context`. Note
we also have a number of `-> decltype(auto)` that were added I think
mainly to avoid repeating the type, but I'm not sure whether there'll be
agreement on replacing those and so am not changing them here.

I'm placing these aliases with the value type in general, because I
think it's probably easier to view that way. An alternative would be to
put all the types on `File`, but:

- That would be inconsistent with things like `InstStore`, which are
very `ValueStore`-adjacent and put with their value type.
- `File` would have a _lot_ of using's, and the accessors are already
noisy -- I think it would just make the file harder to skim.

Note this is the heart of what I'd brought up [on
Discord](https://discord.com/channels/655572317891461132/655578254970716160/1388199282250613019).
This PR still leaves CanonicalValueStore and BlockValueStore as things
to also add parameters to, but I thought it best to try breaking the set
of changes apart by type. Both of those rely on ValueStore, so
ValueStore needs to change first.
2025-07-02 18:07:55 +00:00

28 lines
808 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_SEM_IR_IMPORT_CPP_H_
#define CARBON_TOOLCHAIN_SEM_IR_IMPORT_CPP_H_
#include "common/raw_string_ostream.h"
#include "toolchain/sem_ir/typed_insts.h"
namespace Carbon::SemIR {
// Per `import Cpp` data.
struct ImportCpp : Printable<ImportCpp> {
auto Print(llvm::raw_ostream& out) const -> void {
out << "{node_id: " << node_id << ", library_id: " << library_id << "}";
}
Parse::ImportDeclId node_id;
StringLiteralValueId library_id;
};
using ImportCppStore = ValueStore<ImportCppId, ImportCpp>;
} // namespace Carbon::SemIR
#endif // CARBON_TOOLCHAIN_SEM_IR_IMPORT_CPP_H_