// RUN: not mlir-pdll %s -split-input-file 2>&1 | FileCheck %s // CHECK: expected `{` or `=>` to start pattern body Pattern } // ----- // CHECK: :6:9: error: `Foo` has already been defined // CHECK: :5:9: note: see previous definition here Pattern Foo { erase root: Op; } Pattern Foo { erase root: Op; } // ----- // CHECK: `return` statements are only permitted within a `Constraint` or `Rewrite` body Pattern { return _: Value; } // ----- // CHECK: expected Pattern body to terminate with an operation rewrite statement Pattern { let value: Value; } // ----- // CHECK: Pattern body was terminated by an operation rewrite statement, but found trailing statements Pattern { erase root: Op; let value: Value; } // ----- // CHECK: expected Pattern lambda body to contain a single operation rewrite statement, such as `erase`, `replace`, or `rewrite` Pattern => op<>; // ----- Rewrite SomeRewrite(); // CHECK: unable to invoke `Rewrite` within a match section Pattern { SomeRewrite(); } // ----- //===----------------------------------------------------------------------===// // Metadata //===----------------------------------------------------------------------===// // CHECK: expected pattern metadata identifier Pattern with {} // ----- // CHECK: unknown pattern metadata Pattern with unknown {} // ----- // CHECK: expected `(` before pattern benefit Pattern with benefit) {} // ----- // CHECK: expected integral pattern benefit Pattern with benefit(foo) {} // ----- // CHECK: expected pattern benefit to fit within a 16-bit integer Pattern with benefit(65536) {} // ----- // CHECK: expected `)` after pattern benefit Pattern with benefit(1( {} // ----- // CHECK: pattern benefit has already been specified // CHECK: see previous definition here Pattern with benefit(1), benefit(1) {} // ----- // CHECK: pattern recursion metadata has already been specified // CHECK: see previous definition here Pattern with recursion, recursion {}