Files
clang-p2996/mlir/test/Dialect/Quant/parse-any-invalid.mlir
River Riddle ab9cdf09f4 [mlir:Parser] Don't use strings for the "ugly" form of Attribute/Type syntax
This commit refactors the syntax of "ugly" attribute/type formats to not use
strings for wrapping. This means that moving forward attirbutes and type formats
will always need to be in some recognizable form, i.e. if they use incompatible
characters they will need to manually wrap those in a string, the framework will
no longer do it automatically.

This has the benefit of greatly simplifying how parsing attributes/types work, given
that we currently rely on some extremely complicated nested parser logic which is
quite problematic for a myriad of reasons; unecessary complexity(we create a nested
source manager/lexer/etc.), diagnostic locations can be off/wrong given string escaping,
etc.

Differential Revision: https://reviews.llvm.org/D118505
2022-07-05 16:20:30 -07:00

62 lines
1.8 KiB
MLIR

// RUN: mlir-opt %s -split-input-file -verify-diagnostics
// -----
// Unrecognized token: missing storage type maximum
// expected-error@+1 {{expected ':'}}
!qalias = !quant.any<i8<16>:f32>
// -----
// Unrecognized token: missing closing angle bracket
// expected-error@+1 {{unbalanced '<' character in pretty dialect name}}
!qalias = !quant<any<i8<-4:3:f32>>
// -----
// Unrecognized token: missing type colon
// expected-error@+1 {{expected '>'}}
!qalias = !quant.any<i8<-4:3>f32>
// -----
// Unrecognized storage type: illegal prefix
// expected-error@+1 {{illegal storage type prefix}}
!qalias = !quant.any<int8<-4:3>:f32>
// -----
// Unrecognized storage type: no width
// expected-error@+1 {{illegal storage type prefix}}
!qalias = !quant.any<i<-4:3>:f32>
// -----
// Unrecognized storage type: storage size > 32
// expected-error@+1 {{illegal storage type size: 33}}
!qalias = !quant.any<i33:f32>
// -----
// Unrecognized storage type: storage size < 0
// expected-error@+1 {{illegal storage type size: 1024}}
!qalias = !quant.any<i1024<-4:3>:f32>
// -----
// Unrecognized storage type: storage size
// expected-error@+1 {{invalid integer width}}
!qalias = !quant.any<i0123123123123123<-4:3>:f32>
// -----
// Illegal storage min/max: max - min < 0
// expected-error@+1 {{illegal storage min and storage max: (2:1)}}
!qalias = !quant.any<i8<2:1>:f32>
// -----
// Illegal storage min/max: max - min == 0
// expected-error@+1 {{illegal storage min and storage max: (1:1)}}
!qalias = !quant.any<i8<1:1>:f32>
// -----
// Illegal storage min/max: max > defaultMax
// expected-error@+1 {{illegal storage type maximum: 9}}
!qalias = !quant.any<i4<-1:9>:f32>
// -----
// Illegal storage min/max: min < defaultMin
// expected-error@+1 {{illegal storage type minimum: -9}}
!qalias = !quant.any<i4<-9:1>:f32>