# RUN: %PYTHON %s # Standalone sanity check of context life-cycle. import gc import mlir assert mlir.ir.Context._get_live_count() == 0 # Create first context. print("CREATE C1") c1 = mlir.ir.Context() assert mlir.ir.Context._get_live_count() == 1 c1_repr = repr(c1) print("C1 = ", c1_repr) print("GETTING AGAIN...") c2 = c1._get_context_again() c2_repr = repr(c2) assert mlir.ir.Context._get_live_count() == 1 assert c1_repr == c2_repr print("C2 =", c2) # Make sure new contexts on constructor. print("CREATE C3") c3 = mlir.ir.Context() assert mlir.ir.Context._get_live_count() == 2 c3_repr = repr(c3) print("C3 =", c3) assert c3_repr != c1_repr print("FREE C3") c3 = None gc.collect() assert mlir.ir.Context._get_live_count() == 1 print("Free C1") c1 = None gc.collect() assert mlir.ir.Context._get_live_count() == 1 print("Free C2") c2 = None gc.collect() assert mlir.ir.Context._get_live_count() == 0 # Create a context, get its capsule and create from capsule. c4 = mlir.ir.Context() c4_capsule = c4._CAPIPtr assert '"mlir.ir.Context._CAPIPtr"' in repr(c4_capsule) c5 = mlir.ir.Context._CAPICreate(c4_capsule) assert c4 is c5