@@ -16,21 +16,6 @@ namespace cpp2rust::TranslationRule {
1616
1717namespace {
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-
3419TypeInfo 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+
321309void 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