blob: 0a192dcada83ffdb45278c84f88f9c6391f04012 [file] [log] [blame] [edit]
"""Test that lldb recognizes enum variant emitted by Rust compiler """
import logging
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from RustEnumValue import RustEnumValue
class TestRustEnumStructs(TestBase):
def setUp(self):
TestBase.setUp(self)
src_dir = self.getSourceDir()
yaml_path = os.path.join(src_dir, "main.yaml")
obj_path = self.getBuildArtifact("main.o")
self.yaml2obj(yaml_path, obj_path)
self.dbg.CreateTarget(obj_path)
def getFromGlobal(self, name):
values = self.target().FindGlobalVariables(name, 1)
self.assertEqual(values.GetSize(), 1)
return RustEnumValue(values[0])
def test_enum_instance(self):
# static ENUM_INSTANCE: A = A::A(B::B(10));
value = self.getFromGlobal("ENUM_INSTANCE").getCurrentValue()
self.assertEqual(value.GetType().GetDisplayTypeName(), "main::A::A")
value_b = RustEnumValue(value.GetChildAtIndex(0))
self.assertEqual(
value_b.getCurrentValue()
.GetChildAtIndex(0)
.GetData()
.GetUnsignedInt8(lldb.SBError(), 0),
10,
)