[Lldb-commits] [lldb] [lldb] Support alternatives for scope format entries (PR #137751)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Thu May 1 14:19:33 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(""));
----------------
JDevlieghere wrote:
I'm on the fence. It's probably not too hard to implement (although you need to be careful to only trigger this for an alternative scope, a regular nested scope is okay). On the other hand, if you know how a scope works, I think this behaves pretty much as expected, it's just a rather unhelpful thing to do. I don't think we have precedence for diagnosing something like this. I can see how "clean" or "ugly" it is to implement and that might sway me one way or another.
https://github.com/llvm/llvm-project/pull/137751
More information about the lldb-commits
mailing list