diff --git a/src/storm-dft/storage/dft/DFTBuilder.cpp b/src/storm-dft/storage/dft/DFTBuilder.cpp index 0bff9bd2b..70df810cf 100644 --- a/src/storm-dft/storage/dft/DFTBuilder.cpp +++ b/src/storm-dft/storage/dft/DFTBuilder.cpp @@ -205,12 +205,20 @@ namespace storm { topoVisit(c, visited, L); } } + // TODO restrictions and dependencies have no parents, so this can be done more efficiently. if(n->isRestriction()) { visited[n] = topoSortColour::GREY; for (DFTElementPointer const& c : std::static_pointer_cast>(n)->children()) { topoVisit(c, visited, L); } } + if(n->isDependency()) { + visited[n] = topoSortColour::GREY; + for (DFTElementPointer const& c : std::static_pointer_cast>(n)->dependentEvents()) { + topoVisit(c, visited, L); + } + topoVisit(std::static_pointer_cast>(n)->triggerEvent(), visited, L); + } visited[n] = topoSortColour::BLACK; L.push_back(n); }