// RUN: %check_clang_tidy %s llvm-use-new-mlir-op-builder %t namespace mlir { class Location {}; class OpBuilder { public: template OpTy create(Location location, Args &&...args) { return OpTy(args...); } Location getUnknownLoc() { return Location(); } }; class ImplicitLocOpBuilder : public OpBuilder { public: template OpTy create(Args &&...args) { return OpTy(args...); } }; struct ModuleOp { ModuleOp() {} static ModuleOp create(OpBuilder &builder, Location location) { return ModuleOp(); } }; struct NamedOp { NamedOp(const char* name) {} static NamedOp create(OpBuilder &builder, Location location, const char* name) { return NamedOp(name); } }; } // namespace mlir #define ASSIGN(A, B, C, D) C A = B.create(B.getUnknownLoc(), D) template void g(mlir::OpBuilder &b) { // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create(...)' [llvm-use-new-mlir-op-builder] // CHECK-FIXES: T::create(b, b.getUnknownLoc(), "gaz"); b.create(b.getUnknownLoc(), "gaz"); } void f() { mlir::OpBuilder builder; // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create(...)' [llvm-use-new-mlir-op-builder] // CHECK-FIXES: mlir:: ModuleOp::create(builder, builder.getUnknownLoc()); builder.create(builder.getUnknownLoc()); using mlir::NamedOp; // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create(...)' [llvm-use-new-mlir-op-builder] // CHECK-FIXES: NamedOp::create(builder, builder.getUnknownLoc(), "baz"); builder.create(builder.getUnknownLoc(), "baz"); // CHECK-MESSAGES: :[[@LINE+3]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create(...)' [llvm-use-new-mlir-op-builder] // CHECK-FIXES: NamedOp::create(builder, builder.getUnknownLoc(), // CHECK-FIXES: "caz"); builder. create( builder.getUnknownLoc(), "caz"); // CHECK-MESSAGES: :[[@LINE+1]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create(...)' [llvm-use-new-mlir-op-builder] ASSIGN(op, builder, NamedOp, "daz"); g(builder); mlir::ImplicitLocOpBuilder ib; // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create(...)' [llvm-use-new-mlir-op-builder] // CHECK-FIXES: mlir::ModuleOp::create(ib); ib.create( ); // CHECK-MESSAGES: :[[@LINE+2]]:3: warning: use 'OpType::create(builder, ...)' instead of 'builder.create(...)' [llvm-use-new-mlir-op-builder] // CHECK-FIXES: mlir::OpBuilder().create(builder.getUnknownLoc()); mlir::OpBuilder().create(builder.getUnknownLoc()); }