131 lines
3.8 KiB
Python
131 lines
3.8 KiB
Python
# 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: 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)
|