[clang-tools-extra] [clang-doc] Add Markdown AST node type definitions (PR #205609)
Neil Nair via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 29 20:20:57 PDT 2026
================
@@ -0,0 +1,94 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "support/Markdown.h"
+#include "gtest/gtest.h"
+
+using namespace clang::doc::markdown;
+using namespace llvm;
+
+namespace {
+
+TEST(MarkdownNodeTest, TextNode) {
+ TextNode N("hello");
+ EXPECT_EQ(N.Kind, NodeKind::NK_Text);
+ EXPECT_EQ(N.getText(), "hello");
+}
+
+TEST(MarkdownNodeTest, FencedCodeNode) {
+ FencedCodeNode N("cpp", "int x = 0;\nint y = 1;");
+ EXPECT_EQ(N.Kind, NodeKind::NK_FencedCode);
+ EXPECT_EQ(N.getLang(), "cpp");
+ EXPECT_TRUE(N.getCode().contains("int x = 0;"));
+ EXPECT_TRUE(N.getCode().contains("int y = 1;"));
+}
+
+TEST(MarkdownNodeTest, HeadingNode) {
+ HeadingNode N(2);
+ EXPECT_EQ(N.Kind, NodeKind::NK_Heading);
+ EXPECT_EQ(N.getLevel(), 2u);
+}
+
+TEST(MarkdownNodeTest, ThematicBreakNode) {
+ ThematicBreakNode N;
+ EXPECT_EQ(N.Kind, NodeKind::NK_ThematicBreak);
+}
+
+TEST(MarkdownNodeTest, InlineCodeNode) {
+ InlineCodeNode N("foo()");
+ EXPECT_EQ(N.Kind, NodeKind::NK_InlineCode);
+ EXPECT_EQ(N.getCode(), "foo()");
+}
+
+TEST(MarkdownNodeTest, EmphasisNode) {
+ EmphasisNode N;
+ TextNode Child("emphasized");
+ N.Children.push_back(Child);
+ EXPECT_EQ(N.Kind, NodeKind::NK_Emphasis);
+ EXPECT_FALSE(N.Children.empty());
+ EXPECT_EQ(llvm::cast<TextNode>(N.Children.front()).getText(), "emphasized");
----------------
Neil-N4 wrote:
Added a firstChildText() helper to reduce the repeated cast pattern
https://github.com/llvm/llvm-project/pull/205609
More information about the cfe-commits
mailing list