Skip to content

Commit 2fb872e

Browse files
committed
Replace constexpr storage with std::array
1 parent e570d3e commit 2fb872e

1 file changed

Lines changed: 4 additions & 18 deletions

File tree

cpp2rust/converter/translation_rule.cpp

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,6 @@ namespace cpp2rust::TranslationRule {
1616

1717
namespace {
1818

19-
struct GenericPlaceholders {
20-
char storage[kMaxGenerics][3]{};
21-
22-
constexpr GenericPlaceholders() {
23-
for (unsigned i = 0; i < kMaxGenerics; ++i) {
24-
storage[i][0] = 'T';
25-
storage[i][1] = static_cast<char>('1' + i);
26-
storage[i][2] = '\0';
27-
}
28-
}
29-
};
30-
static_assert(kMaxGenerics <= 9,
31-
"GenericPlaceholders assumes single-digit names");
32-
constexpr GenericPlaceholders kGenericPlaceholders{};
33-
3419
TypeInfo ParseTypeInfoJSON(const llvm::json::Object &obj) {
3520
TypeInfo info;
3621
if (auto ty = obj.getString("type"))
@@ -318,17 +303,18 @@ void ExprRule::dump() const {
318303
}
319304
}
320305

306+
std::array<const char *, kMaxGenerics> kGenericPlaceholders = {
307+
"T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9"};
308+
321309
void ExprRule::validate(const std::string &name) const {
322310
if (src.empty()) {
323311
llvm::errs() << name << '\n';
324312
dump();
325313
assert(0 && "Expr rule loaded from IR but has no src");
326314
}
327315

328-
assert(generics.size() <= kMaxGenerics &&
329-
"rule declares more generics than kMaxGenerics");
330316
for (unsigned i = 0, e = generics.size(); i < e; ++i) {
331-
const char *placeholder = kGenericPlaceholders.storage[i];
317+
const char *placeholder = kGenericPlaceholders[i];
332318
if (src.find(placeholder) == std::string::npos) {
333319
llvm::errs() << name << '\n';
334320
dump();

0 commit comments

Comments
 (0)