42 lines
1.5 KiB
C++
42 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);
|
||
|
|
||
|
}
|
||
|
|
||
|
|