brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · 48747d3 Raw
161 lines · plain
1// RUN: not mlir-pdll %s -split-input-file 2>&1 | FileCheck %s2 3//===----------------------------------------------------------------------===//4// Constraint Structure5//===----------------------------------------------------------------------===//6 7// CHECK: expected identifier name8Constraint {}9 10// -----11 12// CHECK: :6:12: error: `Foo` has already been defined13// CHECK: :5:12: note: see previous definition here14Constraint Foo() { op<>; }15Constraint Foo() { op<>; }16 17// -----18 19Constraint Foo() {20  // CHECK: `erase` cannot be used within a Constraint21  erase op<>;22}23 24// -----25 26Constraint Foo() {27  // CHECK: `replace` cannot be used within a Constraint28  replace;29}30 31// -----32 33Constraint Foo() {34  // CHECK: `rewrite` cannot be used within a Constraint35  rewrite;36}37 38// -----39 40Constraint Foo() -> Value {41  // CHECK: `return` terminated the `Constraint` body, but found trailing statements afterwards42  return _: Value;43  return _: Value;44}45 46// -----47 48// CHECK: missing return in a `Constraint` expected to return `Value`49Constraint Foo() -> Value {50  let value: Value;51}52 53// -----54 55// CHECK: expected `Constraint` lambda body to contain a single expression56Constraint Foo() -> Value => let foo: Value;57 58// -----59 60// CHECK: unable to convert expression of type `Op` to the expected type of `Attr`61Constraint Foo() -> Attr => op<>;62 63// -----64 65Rewrite SomeRewrite();66 67// CHECK: unable to invoke `Rewrite` within a match section68Constraint Foo() {69  SomeRewrite();70}71 72// -----73 74Constraint Foo() {75  Constraint Foo() {};76}77 78// -----79 80//===----------------------------------------------------------------------===//81// Arguments82//===----------------------------------------------------------------------===//83 84// CHECK: expected `(` to start argument list85Constraint Foo {}86 87// -----88 89// CHECK: expected identifier argument name90Constraint Foo(10{}91 92// -----93 94// CHECK: expected `:` before argument constraint95Constraint Foo(arg{}96 97// -----98 99// CHECK: inline `Attr`, `Value`, and `ValueRange` type constraints are not permitted on arguments or results100Constraint Foo(arg: Value<type>){}101 102// -----103 104// CHECK: expected `)` to end argument list105Constraint Foo(arg: Value{}106 107// -----108 109//===----------------------------------------------------------------------===//110// Results111//===----------------------------------------------------------------------===//112 113// CHECK: expected identifier constraint114Constraint Foo() -> {}115 116// -----117 118// CHECK: cannot create a single-element tuple with an element label119Constraint Foo() -> result: Value {}120 121// -----122 123// CHECK: cannot create a single-element tuple with an element label124Constraint Foo() -> (result: Value) {}125 126// -----127 128// CHECK: expected identifier constraint129Constraint Foo() -> () {}130 131// -----132 133// CHECK: expected `:` before result constraint134Constraint Foo() -> (result {};135 136// -----137 138// CHECK: expected `)` to end result list139Constraint Foo() -> (Op{};140 141// -----142 143// CHECK: inline `Attr`, `Value`, and `ValueRange` type constraints are not permitted on arguments or results144Constraint Foo() -> Value<type>) {}145 146// -----147 148//===----------------------------------------------------------------------===//149// Native Constraints150//===----------------------------------------------------------------------===//151 152Pattern {153  // CHECK: external declarations must be declared in global scope154  Constraint ExternalConstraint();155}156 157// -----158 159// CHECK: expected `;` after native declaration160Constraint Foo() [{}]161