| # RUN: %PYTHON %s | FileCheck %s |
| |
| import gc |
| from mlir.ir import * |
| |
| |
| def run(f): |
| print("\nTEST:", f.__name__) |
| f() |
| gc.collect() |
| assert Context._get_live_count() == 0 |
| |
| |
| # CHECK-LABEL: TEST: testUnknown |
| def testUnknown(): |
| with Context() as ctx: |
| loc = Location.unknown() |
| assert loc.context is ctx |
| ctx = None |
| gc.collect() |
| # CHECK: unknown str: loc(unknown) |
| print("unknown str:", str(loc)) |
| # CHECK: unknown repr: loc(unknown) |
| print("unknown repr:", repr(loc)) |
| |
| |
| run(testUnknown) |
| |
| |
| # CHECK-LABEL: TEST: testLocationAttr |
| def testLocationAttr(): |
| with Context() as ctxt: |
| loc = Location.unknown() |
| attr = loc.attr |
| clone = Location.from_attr(attr) |
| gc.collect() |
| # CHECK: loc: loc(unknown) |
| print("loc:", str(loc)) |
| # CHECK: clone: loc(unknown) |
| print("clone:", str(clone)) |
| assert loc == clone |
| |
| |
| run(testLocationAttr) |
| |
| # CHECK-LABEL: TEST: testFileLineCol |
| def testFileLineCol(): |
| with Context() as ctx: |
| loc = Location.file("foo.txt", 123, 56) |
| ctx = None |
| gc.collect() |
| # CHECK: file str: loc("foo.txt":123:56) |
| print("file str:", str(loc)) |
| # CHECK: file repr: loc("foo.txt":123:56) |
| print("file repr:", repr(loc)) |
| |
| |
| run(testFileLineCol) |
| |
| |
| # CHECK-LABEL: TEST: testName |
| def testName(): |
| with Context() as ctx: |
| loc = Location.name("nombre") |
| locWithChildLoc = Location.name("naam", loc) |
| ctx = None |
| gc.collect() |
| # CHECK: file str: loc("nombre") |
| print("file str:", str(loc)) |
| # CHECK: file repr: loc("nombre") |
| print("file repr:", repr(loc)) |
| # CHECK: file str: loc("naam"("nombre")) |
| print("file str:", str(locWithChildLoc)) |
| # CHECK: file repr: loc("naam"("nombre")) |
| print("file repr:", repr(locWithChildLoc)) |
| |
| |
| run(testName) |
| |
| |
| # CHECK-LABEL: TEST: testCallSite |
| def testCallSite(): |
| with Context() as ctx: |
| loc = Location.callsite( |
| Location.file("foo.text", 123, 45), |
| [Location.file("util.foo", 379, 21), Location.file("main.foo", 100, 63)], |
| ) |
| ctx = None |
| # CHECK: file str: loc(callsite("foo.text":123:45 at callsite("util.foo":379:21 at "main.foo":100:63)) |
| print("file str:", str(loc)) |
| # CHECK: file repr: loc(callsite("foo.text":123:45 at callsite("util.foo":379:21 at "main.foo":100:63)) |
| print("file repr:", repr(loc)) |
| |
| |
| run(testCallSite) |
| |
| |
| # CHECK-LABEL: TEST: testFused |
| def testFused(): |
| with Context() as ctx: |
| loc_single = Location.fused([Location.name("apple")]) |
| loc = Location.fused([Location.name("apple"), Location.name("banana")]) |
| attr = Attribute.parse('"sauteed"') |
| loc_attr = Location.fused( |
| [Location.name("carrot"), Location.name("potatoes")], attr |
| ) |
| loc_empty = Location.fused([]) |
| loc_empty_attr = Location.fused([], attr) |
| loc_single_attr = Location.fused([Location.name("apple")], attr) |
| ctx = None |
| # CHECK: file str: loc("apple") |
| print("file str:", str(loc_single)) |
| # CHECK: file repr: loc("apple") |
| print("file repr:", repr(loc_single)) |
| # CHECK: file str: loc(fused["apple", "banana"]) |
| print("file str:", str(loc)) |
| # CHECK: file repr: loc(fused["apple", "banana"]) |
| print("file repr:", repr(loc)) |
| # CHECK: file str: loc(fused<"sauteed">["carrot", "potatoes"]) |
| print("file str:", str(loc_attr)) |
| # CHECK: file repr: loc(fused<"sauteed">["carrot", "potatoes"]) |
| print("file repr:", repr(loc_attr)) |
| # CHECK: file str: loc(unknown) |
| print("file str:", str(loc_empty)) |
| # CHECK: file repr: loc(unknown) |
| print("file repr:", repr(loc_empty)) |
| # CHECK: file str: loc(fused<"sauteed">[unknown]) |
| print("file str:", str(loc_empty_attr)) |
| # CHECK: file repr: loc(fused<"sauteed">[unknown]) |
| print("file repr:", repr(loc_empty_attr)) |
| # CHECK: file str: loc(fused<"sauteed">["apple"]) |
| print("file str:", str(loc_single_attr)) |
| # CHECK: file repr: loc(fused<"sauteed">["apple"]) |
| print("file repr:", repr(loc_single_attr)) |
| |
| |
| run(testFused) |
| |
| |
| # CHECK-LABEL: TEST: testLocationCapsule |
| def testLocationCapsule(): |
| with Context() as ctx: |
| loc1 = Location.file("foo.txt", 123, 56) |
| # CHECK: mlir.ir.Location._CAPIPtr |
| loc_capsule = loc1._CAPIPtr |
| print(loc_capsule) |
| loc2 = Location._CAPICreate(loc_capsule) |
| assert loc2 == loc1 |
| assert loc2.context is ctx |
| |
| |
| run(testLocationCapsule) |