mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-10 01:55:08 +00:00
1ef7554efd
conversions are only applied to operands of class type, and the second standard conversion sequence is not applied. When diagnosing an invalid builtin binary operator, talk about the original types rather than the converted types. If these differ by a user-defined conversion, tell the user what happened. llvm-svn: 335781
51 lines
1.3 KiB
C
51 lines
1.3 KiB
C
// RUN: not %clang -cc1 -fsyntax-only %s 2>&1 | FileCheck %s
|
|
|
|
#define a b
|
|
#define b c
|
|
#define c(x) d(x)
|
|
#define d(x) x*1
|
|
|
|
#define e f
|
|
#define f g
|
|
#define g(x) h(x)
|
|
#define h(x) x
|
|
|
|
void PR16799() {
|
|
const char str[] = "string";
|
|
a(str);
|
|
// CHECK: :15:3: error: invalid operands to binary expression
|
|
// CHECK: ('const char [7]' and 'int')
|
|
// CHECK: a(str);
|
|
// CHECK: ^~~~~~
|
|
// CHECK: :3:11: note: expanded from macro 'a'
|
|
// CHECK: #define a b
|
|
// CHECK: ^
|
|
// CHECK: :4:11: note: expanded from macro 'b'
|
|
// CHECK: #define b c
|
|
// CHECK: ^
|
|
// CHECK: :5:14: note: expanded from macro 'c'
|
|
// CHECK: #define c(x) d(x)
|
|
// CHECK: ^~~~
|
|
// CHECK: :6:15: note: expanded from macro 'd'
|
|
// CHECK: #define d(x) x*1
|
|
// CHECK: ~^~
|
|
|
|
e(str);
|
|
// CHECK: :33:5: warning: expression result unused
|
|
// CHECK: e(str);
|
|
// CHECK: ^~~
|
|
// CHECK: :8:11: note: expanded from macro 'e'
|
|
// CHECK: #define e f
|
|
// CHECK: ^
|
|
// CHECK: :9:11: note: expanded from macro 'f'
|
|
// CHECK: #define f g
|
|
// CHECK: ^
|
|
// CHECK: :10:16: note: expanded from macro 'g'
|
|
// CHECK: #define g(x) h(x)
|
|
// CHECK: ^
|
|
// CHECK: :11:14: note: expanded from macro 'h'
|
|
// CHECK: #define h(x) x
|
|
// CHECK: ^
|
|
}
|
|
// CHECK: 1 warning and 1 error generated.
|