// RUN: mlir-tblgen -gen-op-defs -I %S/../../include %s | FileCheck %s include "mlir/IR/OpBase.td" def Test_Dialect : Dialect { let name = "test"; } def TopLevelTypeInterface : TypeInterface<"TopLevelTypeInterface">; def TypeInterfaceInNamespace : TypeInterface<"TypeInterfaceInNamespace"> { let cppNamespace = "test"; } def TopLevelAttrInterface : AttrInterface<"TopLevelAttrInterface">; def AttrInterfaceInNamespace : AttrInterface<"AttrInterfaceInNamespace"> { let cppNamespace = "test"; } def OpUsingAllOfThose : Op { let arguments = (ins TopLevelAttrInterface:$attr1, AttrInterfaceInNamespace:$attr2); let results = (outs TopLevelTypeInterface:$res1, TypeInterfaceInNamespace:$res2); } // CHECK: static ::mlir::LogicalResult {{__mlir_ods_local_type_constraint.*}}( // CHECK: if (!((::llvm::isa(type)))) { // CHECK-NEXT: return op->emitOpError(valueKind) << " #" << valueIndex // CHECK-NEXT: << " must be TopLevelTypeInterface instance, but got " << type; // CHECK: static ::mlir::LogicalResult {{__mlir_ods_local_type_constraint.*}}( // CHECK: if (!((::llvm::isa(type)))) { // CHECK-NEXT: return op->emitOpError(valueKind) << " #" << valueIndex // CHECK-NEXT: << " must be TypeInterfaceInNamespace instance, but got " << type; // CHECK: static ::mlir::LogicalResult {{__mlir_ods_local_attr_constraint.*}}( // CHECK: if (attr && !((::llvm::isa(attr)))) // CHECK-NEXT: return emitError() << "attribute '" << attrName // CHECK-NEXT: << "' failed to satisfy constraint: TopLevelAttrInterface instance"; // CHECK: static ::mlir::LogicalResult {{__mlir_ods_local_attr_constraint.*}}( // CHECK: if (attr && !((::llvm::isa(attr)))) // CHECK-NEXT: return emitError() << "attribute '" << attrName // CHECK-NEXT: << "' failed to satisfy constraint: AttrInterfaceInNamespace instance"; // CHECK: TopLevelAttrInterface OpUsingAllOfThose::getAttr1() // CHECK: test::AttrInterfaceInNamespace OpUsingAllOfThose::getAttr2()