Dave Lee 821c22a1be
[lldb][bytecode] Change compiler to require update return type decl (#188637)
To better ensure that bytecode `@update` implementations return a 0/1
value (see https://github.com/llvm/llvm-project/pull/181199), this
changes the Python -> formatter bytecode compiler to require that Python
`update` methods be declared to return `bool`.

A declaration like this will be a compiler error:

```py
def update(self):
    # implementation...
```
2026-03-26 14:39:18 -07:00

33 lines
1.2 KiB
Plaintext

# RUN: mkdir -p %t
# RUN: %python %S/../../../../examples/python/formatter_bytecode.py --compile %s --format c --type-name RigidArray --output %t/c-output.txt --skip-invocation-comment
# RUN: %python %S/../../../../examples/python/formatter_bytecode.py --compile %s --format swift --type-name RigidArray --output %t/swift-output.txt --skip-invocation-comment
# RUN: diff -u --strip-trailing-cr %S/Inputs/FormatterBytecode/RigidArrayLLDBFormatterC.txt %t/c-output.txt
# RUN: diff -u --strip-trailing-cr %S/Inputs/FormatterBytecode/RigidArrayLLDBFormatterSwift.txt %t/swift-output.txt
import lldb
class RigidArraySynthetic:
valobj: lldb.SBValue
storage: lldb.SBValue
count: int
def __init__(self, valobj: lldb.SBValue, _) -> None:
self.valobj = valobj
def num_children(self) -> int:
return self.count
def get_child_at_index(self, idx: int) -> lldb.SBValue:
return self.storage.GetChildAtIndex(idx)
def update(self) -> bool:
self.storage = self.valobj.GetChildMemberWithName(
"_storage"
).GetSyntheticValue()
self.count = (
self.valobj.GetChildMemberWithName("_count")
.GetSyntheticValue()
.GetValueAsUnsigned()
)
return True