[Lldb-commits] [lldb] [lldb] Support alternatives for scope format entries (PR #137751)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Wed Apr 30 10:31:39 PDT 2025
================
@@ -153,10 +173,37 @@ constexpr llvm::StringRef lookupStrings[] = {
"${target.file.fullpath}",
"${var.dummy-var-to-test-wildcard}"};
-TEST(FormatEntity, LookupAllEntriesInTree) {
+TEST_F(FormatEntityTest, LookupAllEntriesInTree) {
for (const llvm::StringRef testString : lookupStrings) {
Entry e;
EXPECT_TRUE(FormatEntity::Parse(testString, e).Success())
<< "Formatting " << testString << " did not succeed";
}
}
+
+TEST_F(FormatEntityTest, Scope) {
+ // Scope with one alternative.
+ EXPECT_THAT_EXPECTED(Format("{${frame.pc}|foo}"), HasValue("foo"));
+
+ // Scope with multiple alternatives.
+ EXPECT_THAT_EXPECTED(Format("{${frame.pc}|${function.name}|foo}"),
+ HasValue("foo"));
+
+ // Escaped pipe inside a scope.
+ EXPECT_THAT_EXPECTED(Format("{foo\\|bar}"), HasValue("foo|bar"));
+
+ // Unescaped pipe outside a scope.
+ EXPECT_THAT_EXPECTED(Format("foo|bar"), HasValue("foo|bar"));
+
+ // Nested scopes. Note that scopes always resolve.
+ EXPECT_THAT_EXPECTED(Format("{{${frame.pc}|foo}|{bar}}"), HasValue("foo"));
+ EXPECT_THAT_EXPECTED(Format("{{${frame.pc}}|{bar}}"), HasValue(""));
+
+ // Pipe between scopes.
+ EXPECT_THAT_EXPECTED(Format("{foo}|{bar}"), HasValue("foo|bar"));
+ EXPECT_THAT_EXPECTED(Format("{foo}||{bar}"), HasValue("foo||bar"));
+
+ // Empty space between pipes.
+ EXPECT_THAT_EXPECTED(Format("{{foo}||{bar}}"), HasValue("foo"));
----------------
Michael137 wrote:
What would we print for `{ { ${frame.pc} } | { bar } }`?
https://github.com/llvm/llvm-project/pull/137751
More information about the lldb-commits
mailing list