1# RUN: %PYTHON %s | FileCheck %s 2 3from mlir.ir import * 4from mlir.dialects import pdl 5 6 7def run(f): 8 print("\nTEST:", f.__name__) 9 f() 10 return f 11 12 13# CHECK-LABEL: TEST: test_attribute_type 14@run 15def test_attribute_type(): 16 with Context(): 17 parsedType = Type.parse("!pdl.attribute") 18 constructedType = pdl.AttributeType.get() 19 20 assert pdl.AttributeType.isinstance(parsedType) 21 assert not pdl.OperationType.isinstance(parsedType) 22 assert not pdl.RangeType.isinstance(parsedType) 23 assert not pdl.TypeType.isinstance(parsedType) 24 assert not pdl.ValueType.isinstance(parsedType) 25 26 assert pdl.AttributeType.isinstance(constructedType) 27 assert not pdl.OperationType.isinstance(constructedType) 28 assert not pdl.RangeType.isinstance(constructedType) 29 assert not pdl.TypeType.isinstance(constructedType) 30 assert not pdl.ValueType.isinstance(constructedType) 31 32 assert parsedType == constructedType 33 34 # CHECK: !pdl.attribute 35 print(parsedType) 36 # CHECK: !pdl.attribute 37 print(constructedType) 38 39 40# CHECK-LABEL: TEST: test_operation_type 41@run 42def test_operation_type(): 43 with Context(): 44 parsedType = Type.parse("!pdl.operation") 45 constructedType = pdl.OperationType.get() 46 47 assert not pdl.AttributeType.isinstance(parsedType) 48 assert pdl.OperationType.isinstance(parsedType) 49 assert not pdl.RangeType.isinstance(parsedType) 50 assert not pdl.TypeType.isinstance(parsedType) 51 assert not pdl.ValueType.isinstance(parsedType) 52 53 assert not pdl.AttributeType.isinstance(constructedType) 54 assert pdl.OperationType.isinstance(constructedType) 55 assert not pdl.RangeType.isinstance(constructedType) 56 assert not pdl.TypeType.isinstance(constructedType) 57 assert not pdl.ValueType.isinstance(constructedType) 58 59 assert parsedType == constructedType 60 61 # CHECK: !pdl.operation 62 print(parsedType) 63 # CHECK: !pdl.operation 64 print(constructedType) 65 66 67# CHECK-LABEL: TEST: test_range_type 68@run 69def test_range_type(): 70 with Context(): 71 typeType = Type.parse("!pdl.type") 72 parsedType = Type.parse("!pdl.range<type>") 73 constructedType = pdl.RangeType.get(typeType) 74 elementType = constructedType.element_type 75 76 assert not pdl.AttributeType.isinstance(parsedType) 77 assert not pdl.OperationType.isinstance(parsedType) 78 assert pdl.RangeType.isinstance(parsedType) 79 assert not pdl.TypeType.isinstance(parsedType) 80 assert not pdl.ValueType.isinstance(parsedType) 81 82 assert not pdl.AttributeType.isinstance(constructedType) 83 assert not pdl.OperationType.isinstance(constructedType) 84 assert pdl.RangeType.isinstance(constructedType) 85 assert not pdl.TypeType.isinstance(constructedType) 86 assert not pdl.ValueType.isinstance(constructedType) 87 88 assert parsedType == constructedType 89 assert elementType == typeType 90 91 # CHECK: !pdl.range<type> 92 print(parsedType) 93 # CHECK: !pdl.range<type> 94 print(constructedType) 95 # CHECK: !pdl.type 96 print(elementType) 97 98 99# CHECK-LABEL: TEST: test_type_type 100@run 101def test_type_type(): 102 with Context(): 103 parsedType = Type.parse("!pdl.type") 104 constructedType = pdl.TypeType.get() 105 106 assert not pdl.AttributeType.isinstance(parsedType) 107 assert not pdl.OperationType.isinstance(parsedType) 108 assert not pdl.RangeType.isinstance(parsedType) 109 assert pdl.TypeType.isinstance(parsedType) 110 assert not pdl.ValueType.isinstance(parsedType) 111 112 assert not pdl.AttributeType.isinstance(constructedType) 113 assert not pdl.OperationType.isinstance(constructedType) 114 assert not pdl.RangeType.isinstance(constructedType) 115 assert pdl.TypeType.isinstance(constructedType) 116 assert not pdl.ValueType.isinstance(constructedType) 117 118 assert parsedType == constructedType 119 120 # CHECK: !pdl.type 121 print(parsedType) 122 # CHECK: !pdl.type 123 print(constructedType) 124 125 126# CHECK-LABEL: TEST: test_value_type 127@run 128def test_value_type(): 129 with Context(): 130 parsedType = Type.parse("!pdl.value") 131 constructedType = pdl.ValueType.get() 132 133 assert not pdl.AttributeType.isinstance(parsedType) 134 assert not pdl.OperationType.isinstance(parsedType) 135 assert not pdl.RangeType.isinstance(parsedType) 136 assert not pdl.TypeType.isinstance(parsedType) 137 assert pdl.ValueType.isinstance(parsedType) 138 139 assert not pdl.AttributeType.isinstance(constructedType) 140 assert not pdl.OperationType.isinstance(constructedType) 141 assert not pdl.RangeType.isinstance(constructedType) 142 assert not pdl.TypeType.isinstance(constructedType) 143 assert pdl.ValueType.isinstance(constructedType) 144 145 assert parsedType == constructedType 146 147 # CHECK: !pdl.value 148 print(parsedType) 149 # CHECK: !pdl.value 150 print(constructedType) 151