Example #1
0
void ide::getDocumentationCommentAsDoxygen(const DocComment *DC,
                                           raw_ostream &OS) {
  CommentToDoxygenConverter Converter(OS);

  auto Brief = DC->getBrief();
  if (Brief.hasValue()) {
    SmallString<256> BriefStr;
    llvm::raw_svector_ostream OS(BriefStr);
    swift::markup::printInlinesUnder(Brief.getValue(), OS);
    Converter.print(OS.str());
    Converter.printNewline();
    Converter.printNewline();
  }

  for (const auto *N : DC->getBodyNodes()) {
    if (const auto *P = dyn_cast<Paragraph>(N)) {
      Converter.printASTNode(P);
      Converter.printNewline();
      Converter.printNewline();
      continue;
    }
    Converter.printASTNode(N);
    Converter.printNewline();
  }

  for (const auto PF : DC->getParamFields()) {
    Converter.printParamField(PF);
    Converter.printNewline();
  }

  auto TF = DC->getThrowsField();
  if (TF.hasValue()) {
    Converter.printThrowField(TF.getValue());
    Converter.printNewline();
  }

  auto RF = DC->getReturnsField();
  if (RF.hasValue()) {
    Converter.printReturnField(RF.getValue());
    Converter.printNewline();
  }

  if (Converter.PendingNewlines != 0)
    OS << "\n";
}