brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 1d95e14 Raw
57 lines · cpp
1// RUN: %clang_cc1 -std=c++98 %s -verify -pedantic-errors2// RUN: %clang_cc1 -std=c++11 %s -verify -pedantic-errors -ast-dump | FileCheck %s3// RUN: %clang_cc1 -std=c++14 %s -verify -pedantic-errors -ast-dump | FileCheck %s4// RUN: %clang_cc1 -std=c++17 %s -verify -pedantic-errors -ast-dump | FileCheck %s5// RUN: %clang_cc1 -std=c++20 %s -verify -pedantic-errors -ast-dump | FileCheck %s6// RUN: %clang_cc1 -std=c++23 %s -verify -pedantic-errors -ast-dump | FileCheck %s7// RUN: %clang_cc1 -std=c++26 %s -verify -pedantic-errors -ast-dump | FileCheck %s8 9// expected-no-diagnostics10// cwg722: 2011 12#if __cplusplus >= 201103L13namespace std {14  using nullptr_t = decltype(nullptr);15} // namespace std16 17void f(std::nullptr_t, ...);18std::nullptr_t g();19void h() {20  std::nullptr_t np;21  const std::nullptr_t cnp = nullptr;22  extern int i;23  f(24    nullptr,25    nullptr, np, cnp,26    static_cast<std::nullptr_t>(np),27    g(),28    __builtin_bit_cast(std::nullptr_t, static_cast<void*>(&i))29  );30// CHECK:      `-CallExpr {{.+}} 'void'31// CHECK-NEXT:  |-ImplicitCastExpr {{.+}} 'void (*)(std::nullptr_t, ...)' <FunctionToPointerDecay>32// CHECK-NEXT:  | `-DeclRefExpr {{.+}} 'void (std::nullptr_t, ...)' lvalue Function {{.+}} 'f' 'void (std::nullptr_t, ...)'33// CHECK-NEXT:  |-CXXNullPtrLiteralExpr {{.+}} 'std::nullptr_t'34// CHECK-NEXT:  |-ImplicitCastExpr {{.+}} 'void *' <NullToPointer>35// CHECK-NEXT:  | `-CXXNullPtrLiteralExpr {{.+}} 'std::nullptr_t'36// CHECK-NEXT:  |-ImplicitCastExpr {{.+}} 'void *' <NullToPointer>37// CHECK-NEXT:  | `-DeclRefExpr {{.+}} 'std::nullptr_t' lvalue Var {{.+}} 'np' 'std::nullptr_t'38// CHECK-NEXT:  |-ImplicitCastExpr {{.+}} 'void *' <NullToPointer>39// CHECK-NEXT:  | `-DeclRefExpr {{.+}} 'const std::nullptr_t' lvalue Var {{.+}} 'cnp' 'const std::nullptr_t'40// CHECK-NEXT:  |-ImplicitCastExpr {{.+}} 'void *' <NullToPointer>41// CHECK-NEXT:  | `-CXXStaticCastExpr {{.+}} 'std::nullptr_t' static_cast<std::nullptr_t> <NoOp>42// CHECK-NEXT:  |   `-ImplicitCastExpr {{.+}} 'std::nullptr_t' <NullToPointer> part_of_explicit_cast43// CHECK-NEXT:  |     `-DeclRefExpr {{.+}} 'std::nullptr_t' lvalue Var {{.+}} 'np' 'std::nullptr_t'44// CHECK-NEXT:  |-ImplicitCastExpr {{.+}} 'void *' <NullToPointer>45// CHECK-NEXT:  | `-CallExpr {{.+}} 'std::nullptr_t'46// CHECK-NEXT:  |   `-ImplicitCastExpr {{.+}} 'std::nullptr_t (*)()' <FunctionToPointerDecay>47// CHECK-NEXT:  |     `-DeclRefExpr {{.+}} 'std::nullptr_t ()' lvalue Function {{.+}} 'g' 'std::nullptr_t ()'48// CHECK-NEXT:  `-ImplicitCastExpr {{.+}} 'void *' <NullToPointer>49// CHECK-NEXT:    `-BuiltinBitCastExpr {{.+}} 'std::nullptr_t' <LValueToRValueBitCast>50// CHECK-NEXT:      `-MaterializeTemporaryExpr {{.+}} 'void *' xvalue51// CHECK-NEXT:        `-CXXStaticCastExpr {{.+}} 'void *' static_cast<void *> <NoOp>52// CHECK-NEXT:          `-ImplicitCastExpr {{.+}} 'void *' <BitCast> part_of_explicit_cast53// CHECK-NEXT:            `-UnaryOperator {{.+}} 'int *' prefix '&' cannot overflow54// CHECK-NEXT:              `-DeclRefExpr {{.+}} 'int' lvalue Var {{.+}} 'i' 'int'55}56#endif57