// ir-missing-return.cpp #include "slang-ir-missing-return.h" #include "slang-ir-insts.h" #include "slang-ir.h" namespace Slang { class DiagnosticSink; struct IRModule; void checkForMissingReturnsRec(IRInst* inst, DiagnosticSink* sink) { if (auto code = as(inst)) { for (auto block : code->getBlocks()) { auto terminator = block->getTerminator(); if (auto missingReturn = as(terminator)) { sink->diagnose(missingReturn, Diagnostics::missingReturn); } } } for (auto childInst : inst->getDecorationsAndChildren()) { checkForMissingReturnsRec(childInst, sink); } } void checkForMissingReturns(IRModule* module, DiagnosticSink* sink) { // Look for any `missingReturn` instructions checkForMissingReturnsRec(module->getModuleInst(), sink); } } // namespace Slang