// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -fcxx-exceptions -emit-pch -o %t.1.ast %S/Inputs/exprs3.cpp
// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++1z -fcxx-exceptions -ast-merge %t.1.ast -fsyntax-only -verify %s
// expected-no-diagnostics

static_assert(Ch1 == 'a');
static_assert(Ch2 == 'b');
static_assert(Ch3 == 'c');

static_assert(Ch4 == L'd');
static_assert(Ch5 == L'e');
static_assert(Ch6 == L'f');

static_assert(C1 == 12);
static_assert(C2 == 13);

static_assert(C3 == 12);
static_assert(C4 == 13);

static_assert(C5 == 22L);
static_assert(C6 == 23L);

static_assert(C7 == 66LL);
static_assert(C8 == 67ULL);

static_assert(bval1 == true);
static_assert(bval2 == false);

static_assert(ExpressionTrait == false);

static_assert(ArrayRank == 2);
static_assert(ArrayExtent == 20);

static_assert(testLambdaAdd(3) == 6);

void testImport(int *x, const S1 &cs1, S1 &s1) {
  testNewThrowDelete();
  testArrayElement(nullptr, 12);
  testTernaryOp(0, 1, 2);
  testConstCast(cs1);
  testStaticCast(s1);
  testReinterpretCast(s1);
  testDynamicCast(s1);
  testScalarInit(42);
  testOffsetOf();
  testDefaultArg(12);
  testDefaultArg();
  testDefaultArgExpr();
  useTemplateType();
  TestLambdaTemplate<int>(1, 2).testLambda(3);
}
