@@ -409,21 +409,22 @@ TranslationRule::TypeRule *search(clang::QualType qual_type) {
409409}
410410
411411void addRulesFromDirectory (const std::filesystem::path &dir, Model model) {
412- for (const auto &entry : std::filesystem::recursive_directory_iterator (dir)) {
413- auto &path = entry.path ();
414- if (entry.is_regular_file () &&
415- (path.extension () == " .cpp" || path.extension () == " .c" )) {
416- auto [expr_rules, type_rules] = TranslationRule::Load (path, model);
417- if (expr_rules.empty () && type_rules.empty ()) {
418- log () << " No rules found in " << path << ' \n ' ;
419- continue ;
420- }
421- for (auto &[_, rule] : expr_rules) {
422- exprs_.emplace (GetExprMapKey (rule.src ), std::move (rule));
423- }
424- for (auto &[_, rule] : type_rules) {
425- types_.emplace (GetTypeMapKey (rule.src ), std::move (rule));
426- }
412+ namespace fs = std::filesystem;
413+ for (const auto &entry : fs::directory_iterator (dir)) {
414+ const auto &path = entry.path ();
415+ assert (fs::exists (path / " ir_src.json" ) &&
416+ (fs::exists (path / " ir_unsafe.json" ) ||
417+ fs::exists (path / " ir_refcount.json" )));
418+ auto [expr_rules, type_rules] = TranslationRule::Load (path, model);
419+ if (expr_rules.empty () && type_rules.empty ()) {
420+ log () << " No rules found in " << path << ' \n ' ;
421+ continue ;
422+ }
423+ for (auto &[_, rule] : expr_rules) {
424+ exprs_.emplace (GetExprMapKey (rule.src ), std::move (rule));
425+ }
426+ for (auto &[_, rule] : type_rules) {
427+ types_.emplace (GetTypeMapKey (rule.src ), std::move (rule));
427428 }
428429 }
429430}
0 commit comments