41 lines
1.5 KiB
C++
41 lines
1.5 KiB
C++
// RUN: %clang_cc1 -std=c++17 -ast-dump %s -ast-dump-filter Test | FileCheck %s
|
|
|
|
struct A{};
|
|
|
|
template <typename T, typename U>
|
|
auto Test(T* pt, U* pu) {
|
|
// CHECK: UnaryOperator {{.*}} '<dependent type>' prefix '*'
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'T *' lvalue ParmVar {{.*}} 'pt' 'T *'
|
|
(void)*pt;
|
|
|
|
// CHECK: UnaryOperator {{.*}} '<dependent type>' prefix '++'
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'T *' lvalue ParmVar {{.*}} 'pt' 'T *'
|
|
(void)(++pt);
|
|
|
|
// CHECK: UnaryOperator {{.*}} '<dependent type>' prefix '+'
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'T *' lvalue ParmVar {{.*}} 'pt' 'T *'
|
|
(void)(+pt);
|
|
|
|
// CHECK: BinaryOperator {{.*}} '<dependent type>' '+'
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'T *' lvalue ParmVar {{.*}} 'pt' 'T *'
|
|
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 3
|
|
(void)(pt + 3);
|
|
|
|
// CHECK: BinaryOperator {{.*}} '<dependent type>' '-'
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'T *' lvalue ParmVar {{.*}} 'pt' 'T *'
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'T *' lvalue ParmVar {{.*}} 'pt' 'T *'
|
|
(void)(pt - pt);
|
|
|
|
// CHECK: BinaryOperator {{.*}} '<dependent type>' '-'
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'T *' lvalue ParmVar {{.*}} 'pt' 'T *'
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'U *' lvalue ParmVar {{.*}} 'pu' 'U *'
|
|
(void)(pt - pu);
|
|
|
|
// CHECK: BinaryOperator {{.*}} '<dependent type>' '=='
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'T *' lvalue ParmVar {{.*}} 'pt' 'T *'
|
|
// CHECK-NEXT: DeclRefExpr {{.*}} 'U *' lvalue ParmVar {{.*}} 'pu' 'U *'
|
|
(void)(pt == pu);
|
|
|
|
}
|
|
|
|
|