NFC: Simplify ModuleTerminatorOp by using the HasParent trait.
authorRiver Riddle <riverriddle@google.com>
Tue, 6 Aug 2019 18:46:01 +0000 (11:46 -0700)
committerA. Unique TensorFlower <gardener@tensorflow.org>
Tue, 6 Aug 2019 18:46:32 +0000 (11:46 -0700)
PiperOrigin-RevId: 261962104

mlir/include/mlir/IR/Module.h
mlir/lib/IR/Module.cpp
mlir/test/IR/invalid-module-op.mlir

index 0bdd5f2..147337f 100644 (file)
@@ -107,13 +107,11 @@ public:
 /// the terminator in their custom syntax for brevity.
 class ModuleTerminatorOp
     : public Op<ModuleTerminatorOp, OpTrait::ZeroOperands, OpTrait::ZeroResult,
-                OpTrait::IsTerminator> {
+                OpTrait::HasParent<ModuleOp>::Impl, OpTrait::IsTerminator> {
 public:
   using Op::Op;
   static StringRef getOperationName() { return "module_terminator"; }
-
   static void build(Builder *, OperationState *) {}
-  LogicalResult verify();
 };
 
 //===----------------------------------------------------------------------===//
index 73510a1..b1c56c2 100644 (file)
@@ -86,14 +86,3 @@ LogicalResult ModuleOp::verify() {
 /// Return body of this module.
 Region &ModuleOp::getBodyRegion() { return getOperation()->getRegion(0); }
 Block *ModuleOp::getBody() { return &getBodyRegion().front(); }
-
-//===----------------------------------------------------------------------===//
-// Module Terminator Operation.
-//===----------------------------------------------------------------------===//
-
-LogicalResult ModuleTerminatorOp::verify() {
-  if (!isa_and_nonnull<ModuleOp>(getOperation()->getParentOp()))
-    return emitOpError() << "is expected to terminate a '"
-                         << ModuleOp::getOperationName() << "' operation";
-  return success();
-}
index 02ebe92..56cea78 100644 (file)
@@ -38,6 +38,6 @@ func @module_op() {
 // -----
 
 func @module_op() {
-  // expected-error@+1 {{is expected to terminate a 'module' operation}}
+  // expected-error@+1 {{expects parent op 'module'}}
   "module_terminator"() : () -> ()
 }