diff --git a/clang/bindings/python/clang/cindex.py b/clang/bindings/python/clang/cindex.py --- a/clang/bindings/python/clang/cindex.py +++ b/clang/bindings/python/clang/cindex.py @@ -1629,6 +1629,18 @@ return AvailabilityKind.from_id(self._availability) + @property + def binary_operator(self): + """ + Retrieves the opcode if this cursor points to a binary operator + :return: + """ + + if not hasattr(self, '_binopcode'): + self._binopcode = conf.lib.clang_Cursor_getBinaryOpcode(self) + + return BinaryOperator.from_id(self._binopcode) + @property def access_specifier(self): """ @@ -1917,6 +1929,61 @@ res._tu = args[0]._tu return res +class BinaryOperator(BaseEnumeration): + """ + Describes the BinaryOperator of a declaration + """ + + # The unique kind objects, index by id. + _kinds = [] + _name_map = None + + def __nonzero__(self): + """ Allows checks of the kind ```if cursor.binary_operator:```""" + return self.value != 0 + + @property + def is_assignment(self): + return BinaryOperator.Assign.value <= self.value < BinaryOperator.Comma.value + + def __repr__(self): + return 'BinaryOperator.%s' % (self.name,) + +BinaryOperator.Invalid = BinaryOperator(0) +BinaryOperator.PtrMemD = BinaryOperator(1) +BinaryOperator.PtrMemI = BinaryOperator(2) +BinaryOperator.Mul = BinaryOperator(3) +BinaryOperator.Div = BinaryOperator(4) +BinaryOperator.Rem = BinaryOperator(5) +BinaryOperator.Add = BinaryOperator(6) +BinaryOperator.Sub = BinaryOperator(7) +BinaryOperator.Shl = BinaryOperator(8) +BinaryOperator.Shr = BinaryOperator(9) +BinaryOperator.Cmp = BinaryOperator(10) +BinaryOperator.LT = BinaryOperator(11) +BinaryOperator.GT = BinaryOperator(12) +BinaryOperator.LE = BinaryOperator(13) +BinaryOperator.GE = BinaryOperator(14) +BinaryOperator.EQ = BinaryOperator(15) +BinaryOperator.NE = BinaryOperator(16) +BinaryOperator.And = BinaryOperator(17) +BinaryOperator.Xor = BinaryOperator(18) +BinaryOperator.Or = BinaryOperator(19) +BinaryOperator.LAnd = BinaryOperator(20) +BinaryOperator.LOr = BinaryOperator(21) +BinaryOperator.Assign = BinaryOperator(22) +BinaryOperator.MulAssign = BinaryOperator(23) +BinaryOperator.DivAssign = BinaryOperator(24) +BinaryOperator.RemAssign = BinaryOperator(25) +BinaryOperator.AddAssign = BinaryOperator(26) +BinaryOperator.SubAssign = BinaryOperator(27) +BinaryOperator.ShlAssign = BinaryOperator(28) +BinaryOperator.ShrAssign = BinaryOperator(29) +BinaryOperator.AndAssign = BinaryOperator(30) +BinaryOperator.XorAssign = BinaryOperator(31) +BinaryOperator.OrAssign = BinaryOperator(32) +BinaryOperator.Comma = BinaryOperator(33) + class StorageClass(object): """ Describes the storage class of a declaration diff --git a/clang/bindings/python/tests/cindex/test_cursor.py b/clang/bindings/python/tests/cindex/test_cursor.py --- a/clang/bindings/python/tests/cindex/test_cursor.py +++ b/clang/bindings/python/tests/cindex/test_cursor.py @@ -12,6 +12,7 @@ from clang.cindex import TemplateArgumentKind from clang.cindex import TranslationUnit from clang.cindex import TypeKind +from clang.cindex import BinaryOperator from .util import get_cursor from .util import get_cursors from .util import get_tu @@ -53,6 +54,64 @@ void foo<-7, float, true>(); """ +kBinops = """\ +struct C { + int m; + }; + + void func(void){ + int a, b; + int C::* p = &C:: + + C c; + c.*p; + + C* pc; + pc->*p; + + a * b; + a / b; + a % b; + a + b; + a - b; + + a << b; + a >> b; + + a < b; + a > b; + + a <= b; + a >= b; + a == b; + a != b; + + a & b; + a ^ b; + a | b; + + a && b; + a || b; + + a = b; + + a *= b; + a /= b; + a %= b; + a += b; + a -= b; + + a <<= b; + a >>= b; + + a &= b; + a ^= b; + a |= b; + a , b; + + } + """ + class TestCursor(unittest.TestCase): def test_get_children(self): tu = get_tu(kInput) @@ -567,3 +626,49 @@ # [c-index-test handles this by running the source through clang, emitting # an AST file and running libclang on that AST file] self.assertIn(foo.mangled_name, ('_Z3fooii', '__Z3fooii', '?foo@@YAHHH', '?foo@@YAHHH@Z')) + + def test_binop(self): + tu = get_tu(kBinops, lang="cpp") + + operators = { + # not exposed yet + # ".*" : BinaryOperator.PtrMemD, + "->*" : BinaryOperator.PtrMemI, + "*" : BinaryOperator.Mul, + "/" : BinaryOperator.Div, + "%" : BinaryOperator.Rem, + "+" : BinaryOperator.Add, + "-" : BinaryOperator.Sub, + "<<" : BinaryOperator.Shl, + ">>" : BinaryOperator.Shr, + # tests do not run in C++2a mode so this operator is not available + # "<=>" : BinaryOperator.Cmp, + "<" : BinaryOperator.LT, + ">" : BinaryOperator.GT, + "<=" : BinaryOperator.LE, + ">=" : BinaryOperator.GE, + "==" : BinaryOperator.EQ, + "!=" : BinaryOperator.NE, + "&" : BinaryOperator.And, + "^" : BinaryOperator.Xor, + "|" : BinaryOperator.Or, + "&&" : BinaryOperator.LAnd, + "||" : BinaryOperator.LOr, + "=" : BinaryOperator.Assign, + "*=" : BinaryOperator.MulAssign, + "/=" : BinaryOperator.DivAssign, + "%=" : BinaryOperator.RemAssign, + "+=" : BinaryOperator.AddAssign, + "-=" : BinaryOperator.SubAssign, + "<<=" : BinaryOperator.ShlAssign, + ">>=" : BinaryOperator.ShrAssign, + "&=" : BinaryOperator.AndAssign, + "^=" : BinaryOperator.XorAssign, + "|=" : BinaryOperator.OrAssign, + "," : BinaryOperator.Comma, + } + + + for op, typ in operators.items(): + c = get_cursor(tu, op) + assert c.binary_operator == typ diff --git a/clang/include/clang-c/Index.h b/clang/include/clang-c/Index.h --- a/clang/include/clang-c/Index.h +++ b/clang/include/clang-c/Index.h @@ -4057,6 +4057,59 @@ CX_SC_Register }; +/** + * Represents a specific kind of binary operator which can appear at a cursor. + */ +enum CX_BinaryOperatorKind { + CX_BO_Invalid = 0, + CX_BO_PtrMemD = 1, + CX_BO_PtrMemI = 2, + CX_BO_Mul = 3, + CX_BO_Div = 4, + CX_BO_Rem = 5, + CX_BO_Add = 6, + CX_BO_Sub = 7, + CX_BO_Shl = 8, + CX_BO_Shr = 9, + CX_BO_Cmp = 10, + CX_BO_LT = 11, + CX_BO_GT = 12, + CX_BO_LE = 13, + CX_BO_GE = 14, + CX_BO_EQ = 15, + CX_BO_NE = 16, + CX_BO_And = 17, + CX_BO_Xor = 18, + CX_BO_Or = 19, + CX_BO_LAnd = 20, + CX_BO_LOr = 21, + CX_BO_Assign = 22, + CX_BO_MulAssign = 23, + CX_BO_DivAssign = 24, + CX_BO_RemAssign = 25, + CX_BO_AddAssign = 26, + CX_BO_SubAssign = 27, + CX_BO_ShlAssign = 28, + CX_BO_ShrAssign = 29, + CX_BO_AndAssign = 30, + CX_BO_XorAssign = 31, + CX_BO_OrAssign = 32, + CX_BO_Comma = 33, + CX_BO_LAST = CX_BO_Comma +}; + +/** + * \brief Returns the operator code for the binary operator. + */ +CINDEX_LINKAGE enum CX_BinaryOperatorKind +clang_Cursor_getBinaryOpcode(CXCursor C); + +/** + * \brief Returns a string containing the spelling of the binary operator. + */ +CINDEX_LINKAGE CXString +clang_Cursor_getBinaryOpcodeStr(enum CX_BinaryOperatorKind Op); + /** * Returns the storage class for a function or variable declaration. * diff --git a/clang/test/Index/binop.cpp b/clang/test/Index/binop.cpp new file mode 100644 --- /dev/null +++ b/clang/test/Index/binop.cpp @@ -0,0 +1,92 @@ +// RUN: c-index-test -test-print-binops %s | FileCheck %s + +struct C { + int m; +}; + +void func(void) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunused-value" + int a, b; + int C::*p = &C::m; + + C c; + c.*p; + + C *pc; + pc->*p; + + a *b; + a / b; + a % b; + a + b; + a - b; + + a << b; + a >> b; + + a < b; + a > b; + + a <= b; + a >= b; + a == b; + a != b; + + a &b; + a ^ b; + a | b; + + a &&b; + a || b; + + a = b; + + a *= b; + a /= b; + a %= b; + a += b; + a -= b; + + a <<= b; + a >>= b; + + a &= b; + a ^= b; + a |= b; + a, b; +#pragma clang diagnostic pop +} + +// CHECK: BinaryOperator=.* BinOp=.* 1 +// CHECK: BinaryOperator=->* BinOp=->* 2 +// CHECK: BinaryOperator=* BinOp=* 3 +// CHECK: BinaryOperator=/ BinOp=/ 4 +// CHECK: BinaryOperator=% BinOp=% 5 +// CHECK: BinaryOperator=+ BinOp=+ 6 +// CHECK: BinaryOperator=- BinOp=- 7 +// CHECK: BinaryOperator=<< BinOp=<< 8 +// CHECK: BinaryOperator=>> BinOp=>> 9 +// CHECK: BinaryOperator=< BinOp=< 11 +// CHECK: BinaryOperator=> BinOp=> 12 +// CHECK: BinaryOperator=<= BinOp=<= 13 +// CHECK: BinaryOperator=>= BinOp=>= 14 +// CHECK: BinaryOperator=== BinOp=== 15 +// CHECK: BinaryOperator=!= BinOp=!= 16 +// CHECK: BinaryOperator=& BinOp=& 17 +// CHECK: BinaryOperator=^ BinOp=^ 18 +// CHECK: BinaryOperator=| BinOp=| 19 +// CHECK: BinaryOperator=&& BinOp=&& 20 +// CHECK: BinaryOperator=|| BinOp=|| 21 +// CHECK: BinaryOperator== BinOp== 22 +// CHECK: CompoundAssignOperator=*= BinOp=*= 23 +// CHECK: CompoundAssignOperator=/= BinOp=/= 24 +// CHECK: CompoundAssignOperator=%= BinOp=%= 25 +// CHECK: CompoundAssignOperator=+= BinOp=+= 26 +// CHECK: CompoundAssignOperator=-= BinOp=-= 27 +// CHECK: CompoundAssignOperator=<<= BinOp=<<= 28 +// CHECK: CompoundAssignOperator=>>= BinOp=>>= 29 +// CHECK: CompoundAssignOperator=&= BinOp=&= 30 +// CHECK: CompoundAssignOperator=^= BinOp=^= 31 +// CHECK: CompoundAssignOperator=|= BinOp=|= 32 +// CHECK: BinaryOperator=, BinOp=, 33 diff --git a/clang/test/Index/blocks.c b/clang/test/Index/blocks.c --- a/clang/test/Index/blocks.c +++ b/clang/test/Index/blocks.c @@ -23,7 +23,7 @@ // CHECK: blocks.c:9:18: TypeRef=struct foo:4:8 Extent=[9:18 - 9:21] // CHECK: blocks.c:9:28: CompoundStmt= Extent=[9:28 - 9:58] // CHECK: blocks.c:9:30: ReturnStmt= Extent=[9:30 - 9:55] -// CHECK: blocks.c:9:37: BinaryOperator= Extent=[9:37 - 9:55] +// CHECK: blocks.c:9:37: BinaryOperator=+ Extent=[9:37 - 9:55] // CHECK: blocks.c:9:37: CStyleCastExpr= Extent=[9:37 - 9:51] // CHECK: blocks.c:9:38: TypeRef=int_t:3:13 Extent=[9:38 - 9:43] // CHECK: blocks.c:9:50: MemberRefExpr=x:4:19 SingleRefName=[9:50 - 9:51] RefName=[9:50 - 9:51] Extent=[9:45 - 9:51] @@ -31,4 +31,3 @@ // CHECK: blocks.c:9:54: DeclRefExpr=i:8:11 Extent=[9:54 - 9:55] // CHECK: blocks.c:9:59: UnaryOperator= Extent=[9:59 - 9:64] // CHECK: blocks.c:9:60: DeclRefExpr=_foo:7:21 Extent=[9:60 - 9:64] - diff --git a/clang/test/Index/c-index-api-loadTU-test.m b/clang/test/Index/c-index-api-loadTU-test.m --- a/clang/test/Index/c-index-api-loadTU-test.m +++ b/clang/test/Index/c-index-api-loadTU-test.m @@ -131,7 +131,7 @@ // CHECK: c-index-api-loadTU-test.m:50:13: VarDecl=d:50:13 (Definition) Extent=[50:2 - 50:14] // CHECK: c-index-api-loadTU-test.m:50:2: TypeRef=id:0:0 Extent=[50:2 - 50:4] // CHECK: c-index-api-loadTU-test.m:50:6: ObjCProtocolRef=Proto:25:11 Extent=[50:6 - 50:11] -// CHECK: c-index-api-loadTU-test.m:51:2: BinaryOperator= Extent=[51:2 - 51:7] +// CHECK: c-index-api-loadTU-test.m:51:2: BinaryOperator== Extent=[51:2 - 51:7] // CHECK: c-index-api-loadTU-test.m:51:2: DeclRefExpr=d:50:13 Extent=[51:2 - 51:3] // CHECK: c-index-api-loadTU-test.m:51:6: UnexposedExpr=c:49:12 Extent=[51:6 - 51:7] // CHECK: c-index-api-loadTU-test.m:51:6: UnexposedExpr=c:49:12 Extent=[51:6 - 51:7] diff --git a/clang/test/Index/load-staticassert.cpp b/clang/test/Index/load-staticassert.cpp --- a/clang/test/Index/load-staticassert.cpp +++ b/clang/test/Index/load-staticassert.cpp @@ -3,8 +3,8 @@ // RUN: c-index-test -test-load-source all -fno-delayed-template-parsing -std=c++11 %s | FileCheck %s // CHECK: load-staticassert.cpp:2:1: StaticAssert=:2:1 (Definition) Extent=[2:1 - 2:42] -// CHECK: load-staticassert.cpp:2:15: BinaryOperator= Extent=[2:15 - 2:25] -// CHECK: load-staticassert.cpp:2:15: BinaryOperator= Extent=[2:15 - 2:20] +// CHECK: load-staticassert.cpp:2:15: BinaryOperator=== Extent=[2:15 - 2:25] +// CHECK: load-staticassert.cpp:2:15: BinaryOperator=+ Extent=[2:15 - 2:20] // CHECK: load-staticassert.cpp:2:15: IntegerLiteral= Extent=[2:15 - 2:16] // CHECK: load-staticassert.cpp:2:19: IntegerLiteral= Extent=[2:19 - 2:20] // CHECK: load-staticassert.cpp:2:24: IntegerLiteral= Extent=[2:24 - 2:25] diff --git a/clang/test/Index/nested-binaryoperators.cpp b/clang/test/Index/nested-binaryoperators.cpp --- a/clang/test/Index/nested-binaryoperators.cpp +++ b/clang/test/Index/nested-binaryoperators.cpp @@ -169,1815 +169,2328 @@ // CHECK: 3:3: ReturnStmt= Extent=[3:3 - 160:52] // CHECK: 3:10: UnexposedExpr= Extent=[3:10 - 160:52] // CHECK: 3:10: ParenExpr= Extent=[3:10 - 160:52] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 160:51] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 160:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 159:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 158:51] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 158:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 157:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 156:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 155:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 154:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 153:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 152:51] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 152:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 151:51] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 151:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 150:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 149:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 148:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 147:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 146:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 145:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 144:51] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 144:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 143:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 142:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 141:81] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 141:49] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 141:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 141:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 140:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 139:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 138:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 137:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 136:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 135:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 134:81] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 134:49] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 134:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 134:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 133:51] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 133:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 132:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 131:33] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 130:64] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 130:49] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 130:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 130:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 129:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 128:33] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 127:64] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 127:49] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 127:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 127:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 126:51] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 126:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 125:63] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 125:31] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 125:16] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 124:64] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 124:49] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 124:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 124:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 123:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 122:51] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 122:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 121:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 120:51] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 120:19] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 119:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 118:36] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 117:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 116:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 115:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 115:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 114:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 114:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 113:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 112:62] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 112:32] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 112:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 111:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 110:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 109:62] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 109:32] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 109:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 108:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 108:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 107:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 106:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 105:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 105:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 104:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 103:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 102:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 101:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 100:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 99:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 98:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 98:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 97:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 96:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 95:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 94:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 93:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 92:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 91:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 90:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 89:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 88:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 87:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 86:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 85:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 84:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 83:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 82:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 82:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 81:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 80:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 79:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 78:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 77:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 76:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 76:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 75:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 74:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 73:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 72:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 71:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 70:62] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 70:32] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 70:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 69:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 68:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 67:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 66:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 65:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 65:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 64:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 63:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 63:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 62:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 61:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 60:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 59:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 58:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 57:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 56:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 55:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 54:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 53:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 52:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 51:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 51:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 50:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 49:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 48:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 47:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 46:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 46:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 45:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 44:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 44:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 43:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 42:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 41:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 40:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 39:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 38:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 37:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 36:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 35:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 35:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 34:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 33:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 32:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 31:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 30:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 29:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 28:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 27:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 26:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 25:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 24:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 23:45] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 23:15] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 22:46] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 22:32] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 22:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 21:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 20:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 19:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 19:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 18:48] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 18:18] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 17:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 16:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 15:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 14:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 13:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 12:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 11:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 10:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 9:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 8:34] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 7:32] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 6:32] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 5:32] -// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 4:32] -// CHECK: 3:12: BinaryOperator= Extent=[3:12 - 3:34] -// CHECK: 3:12: BinaryOperator= Extent=[3:12 - 3:21] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 160:51] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 160:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 159:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 158:51] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 158:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 157:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 156:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 155:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 154:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 153:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 152:51] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 152:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 151:51] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 151:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 150:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 149:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 148:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 147:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 146:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 145:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 144:51] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 144:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 143:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 142:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 141:81] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 141:49] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 141:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 141:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 140:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 139:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 138:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 137:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 136:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 135:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 134:81] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 134:49] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 134:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 134:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 133:51] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 133:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 132:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 131:33] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 130:64] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 130:49] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 130:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 130:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 129:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 128:33] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 127:64] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 127:49] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 127:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 127:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 126:51] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 126:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 125:63] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 125:31] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 125:16] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 124:64] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 124:49] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 124:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 124:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 123:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 122:51] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 122:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 121:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 120:51] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 120:19] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 119:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 118:36] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 117:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 116:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 115:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 115:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 114:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 114:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 113:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 112:62] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 112:32] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 112:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 111:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 110:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 109:62] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 109:32] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 109:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 108:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 108:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 107:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 106:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 105:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 105:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 104:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 103:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 102:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 101:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 100:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 99:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 98:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 98:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 97:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 96:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 95:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 94:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 93:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 92:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 91:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 90:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 89:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 88:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 87:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 86:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 85:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 84:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 83:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 82:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 82:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 81:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 80:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 79:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 78:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 77:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 76:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 76:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 75:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 74:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 73:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 72:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 71:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 70:62] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 70:32] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 70:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 69:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 68:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 67:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 66:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 65:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 65:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 64:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 63:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 63:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 62:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 61:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 60:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 59:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 58:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 57:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 56:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 55:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 54:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 53:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 52:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 51:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 51:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 50:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 49:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 48:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 47:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 46:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 46:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 45:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 44:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 44:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 43:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 42:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 41:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 40:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 39:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 38:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 37:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 36:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 35:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 35:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 34:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 33:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 32:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 31:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 30:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 29:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 28:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 27:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 26:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 25:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 24:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 23:45] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 23:15] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 22:46] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 22:32] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 22:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 21:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 20:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 19:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 19:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 18:48] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 18:18] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 17:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 16:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 15:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 14:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 13:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 12:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 11:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 10:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 9:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 8:34] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 7:32] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 6:32] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 5:32] +// CHECK: 3:11: BinaryOperator=|| Extent=[3:11 - 4:32] +// CHECK: 3:11: ParenExpr= Extent=[3:11 - 3:35] +// CHECK: 3:12: BinaryOperator=&& Extent=[3:12 - 3:34] +// CHECK: 3:12: BinaryOperator=>= Extent=[3:12 - 3:21] +// CHECK: 3:12: UnexposedExpr=c:2:14 Extent=[3:12 - 3:13] // CHECK: 3:12: DeclRefExpr=c:2:14 Extent=[3:12 - 3:13] // CHECK: 3:17: UnexposedExpr= Extent=[3:17 - 3:21] // CHECK: 3:17: IntegerLiteral= Extent=[3:17 - 3:21] -// CHECK: 3:25: BinaryOperator= Extent=[3:25 - 3:34] +// CHECK: 3:25: BinaryOperator=<= Extent=[3:25 - 3:34] +// CHECK: 3:25: UnexposedExpr=c:2:14 Extent=[3:25 - 3:26] // CHECK: 3:25: DeclRefExpr=c:2:14 Extent=[3:25 - 3:26] // CHECK: 3:30: UnexposedExpr= Extent=[3:30 - 3:34] // CHECK: 3:30: IntegerLiteral= Extent=[3:30 - 3:34] -// CHECK: 4:9: BinaryOperator= Extent=[4:9 - 4:31] -// CHECK: 4:9: BinaryOperator= Extent=[4:9 - 4:18] +// CHECK: 4:8: ParenExpr= Extent=[4:8 - 4:32] +// CHECK: 4:9: BinaryOperator=&& Extent=[4:9 - 4:31] +// CHECK: 4:9: BinaryOperator=>= Extent=[4:9 - 4:18] +// CHECK: 4:9: UnexposedExpr=c:2:14 Extent=[4:9 - 4:10] // CHECK: 4:9: DeclRefExpr=c:2:14 Extent=[4:9 - 4:10] // CHECK: 4:14: UnexposedExpr= Extent=[4:14 - 4:18] // CHECK: 4:14: IntegerLiteral= Extent=[4:14 - 4:18] -// CHECK: 4:22: BinaryOperator= Extent=[4:22 - 4:31] +// CHECK: 4:22: BinaryOperator=<= Extent=[4:22 - 4:31] +// CHECK: 4:22: UnexposedExpr=c:2:14 Extent=[4:22 - 4:23] // CHECK: 4:22: DeclRefExpr=c:2:14 Extent=[4:22 - 4:23] // CHECK: 4:27: UnexposedExpr= Extent=[4:27 - 4:31] // CHECK: 4:27: IntegerLiteral= Extent=[4:27 - 4:31] // CHECK: 5:8: ParenExpr= Extent=[5:8 - 5:32] -// CHECK: 5:9: BinaryOperator= Extent=[5:9 - 5:31] -// CHECK: 5:9: BinaryOperator= Extent=[5:9 - 5:18] +// CHECK: 5:9: BinaryOperator=&& Extent=[5:9 - 5:31] +// CHECK: 5:9: BinaryOperator=>= Extent=[5:9 - 5:18] +// CHECK: 5:9: UnexposedExpr=c:2:14 Extent=[5:9 - 5:10] // CHECK: 5:9: DeclRefExpr=c:2:14 Extent=[5:9 - 5:10] // CHECK: 5:14: UnexposedExpr= Extent=[5:14 - 5:18] // CHECK: 5:14: IntegerLiteral= Extent=[5:14 - 5:18] -// CHECK: 5:22: BinaryOperator= Extent=[5:22 - 5:31] +// CHECK: 5:22: BinaryOperator=<= Extent=[5:22 - 5:31] +// CHECK: 5:22: UnexposedExpr=c:2:14 Extent=[5:22 - 5:23] // CHECK: 5:22: DeclRefExpr=c:2:14 Extent=[5:22 - 5:23] // CHECK: 5:27: UnexposedExpr= Extent=[5:27 - 5:31] // CHECK: 5:27: IntegerLiteral= Extent=[5:27 - 5:31] -// CHECK: 6:9: BinaryOperator= Extent=[6:9 - 6:31] -// CHECK: 6:9: BinaryOperator= Extent=[6:9 - 6:18] +// CHECK: 6:8: ParenExpr= Extent=[6:8 - 6:32] +// CHECK: 6:9: BinaryOperator=&& Extent=[6:9 - 6:31] +// CHECK: 6:9: BinaryOperator=>= Extent=[6:9 - 6:18] +// CHECK: 6:9: UnexposedExpr=c:2:14 Extent=[6:9 - 6:10] // CHECK: 6:9: DeclRefExpr=c:2:14 Extent=[6:9 - 6:10] // CHECK: 6:14: UnexposedExpr= Extent=[6:14 - 6:18] // CHECK: 6:14: IntegerLiteral= Extent=[6:14 - 6:18] -// CHECK: 6:22: BinaryOperator= Extent=[6:22 - 6:31] +// CHECK: 6:22: BinaryOperator=<= Extent=[6:22 - 6:31] +// CHECK: 6:22: UnexposedExpr=c:2:14 Extent=[6:22 - 6:23] // CHECK: 6:22: DeclRefExpr=c:2:14 Extent=[6:22 - 6:23] // CHECK: 6:27: UnexposedExpr= Extent=[6:27 - 6:31] // CHECK: 6:27: IntegerLiteral= Extent=[6:27 - 6:31] -// CHECK: 7:9: BinaryOperator= Extent=[7:9 - 7:31] -// CHECK: 7:9: BinaryOperator= Extent=[7:9 - 7:18] +// CHECK: 7:8: ParenExpr= Extent=[7:8 - 7:32] +// CHECK: 7:9: BinaryOperator=&& Extent=[7:9 - 7:31] +// CHECK: 7:9: BinaryOperator=>= Extent=[7:9 - 7:18] +// CHECK: 7:9: UnexposedExpr=c:2:14 Extent=[7:9 - 7:10] // CHECK: 7:9: DeclRefExpr=c:2:14 Extent=[7:9 - 7:10] // CHECK: 7:14: UnexposedExpr= Extent=[7:14 - 7:18] // CHECK: 7:14: IntegerLiteral= Extent=[7:14 - 7:18] -// CHECK: 7:22: BinaryOperator= Extent=[7:22 - 7:31] +// CHECK: 7:22: BinaryOperator=<= Extent=[7:22 - 7:31] +// CHECK: 7:22: UnexposedExpr=c:2:14 Extent=[7:22 - 7:23] // CHECK: 7:22: DeclRefExpr=c:2:14 Extent=[7:22 - 7:23] // CHECK: 7:27: UnexposedExpr= Extent=[7:27 - 7:31] // CHECK: 7:27: IntegerLiteral= Extent=[7:27 - 7:31] -// CHECK: 8:9: BinaryOperator= Extent=[8:9 - 8:33] -// CHECK: 8:9: BinaryOperator= Extent=[8:9 - 8:19] +// CHECK: 8:8: ParenExpr= Extent=[8:8 - 8:34] +// CHECK: 8:9: BinaryOperator=&& Extent=[8:9 - 8:33] +// CHECK: 8:9: BinaryOperator=>= Extent=[8:9 - 8:19] +// CHECK: 8:9: UnexposedExpr=c:2:14 Extent=[8:9 - 8:10] // CHECK: 8:9: DeclRefExpr=c:2:14 Extent=[8:9 - 8:10] // CHECK: 8:14: UnexposedExpr= Extent=[8:14 - 8:19] // CHECK: 8:14: IntegerLiteral= Extent=[8:14 - 8:19] -// CHECK: 8:23: BinaryOperator= Extent=[8:23 - 8:33] +// CHECK: 8:23: BinaryOperator=<= Extent=[8:23 - 8:33] +// CHECK: 8:23: UnexposedExpr=c:2:14 Extent=[8:23 - 8:24] // CHECK: 8:23: DeclRefExpr=c:2:14 Extent=[8:23 - 8:24] // CHECK: 8:28: UnexposedExpr= Extent=[8:28 - 8:33] // CHECK: 8:28: IntegerLiteral= Extent=[8:28 - 8:33] -// CHECK: 9:9: BinaryOperator= Extent=[9:9 - 9:33] -// CHECK: 9:9: BinaryOperator= Extent=[9:9 - 9:19] +// CHECK: 9:8: ParenExpr= Extent=[9:8 - 9:34] +// CHECK: 9:9: BinaryOperator=&& Extent=[9:9 - 9:33] +// CHECK: 9:9: BinaryOperator=>= Extent=[9:9 - 9:19] +// CHECK: 9:9: UnexposedExpr=c:2:14 Extent=[9:9 - 9:10] // CHECK: 9:9: DeclRefExpr=c:2:14 Extent=[9:9 - 9:10] // CHECK: 9:14: UnexposedExpr= Extent=[9:14 - 9:19] // CHECK: 9:14: IntegerLiteral= Extent=[9:14 - 9:19] -// CHECK: 9:23: BinaryOperator= Extent=[9:23 - 9:33] +// CHECK: 9:23: BinaryOperator=<= Extent=[9:23 - 9:33] +// CHECK: 9:23: UnexposedExpr=c:2:14 Extent=[9:23 - 9:24] // CHECK: 9:23: DeclRefExpr=c:2:14 Extent=[9:23 - 9:24] // CHECK: 9:28: UnexposedExpr= Extent=[9:28 - 9:33] // CHECK: 9:28: IntegerLiteral= Extent=[9:28 - 9:33] -// CHECK: 10:9: BinaryOperator= Extent=[10:9 - 10:33] -// CHECK: 10:9: BinaryOperator= Extent=[10:9 - 10:19] +// CHECK: 10:8: ParenExpr= Extent=[10:8 - 10:34] +// CHECK: 10:9: BinaryOperator=&& Extent=[10:9 - 10:33] +// CHECK: 10:9: BinaryOperator=>= Extent=[10:9 - 10:19] +// CHECK: 10:9: UnexposedExpr=c:2:14 Extent=[10:9 - 10:10] // CHECK: 10:9: DeclRefExpr=c:2:14 Extent=[10:9 - 10:10] // CHECK: 10:14: UnexposedExpr= Extent=[10:14 - 10:19] // CHECK: 10:14: IntegerLiteral= Extent=[10:14 - 10:19] -// CHECK: 10:23: BinaryOperator= Extent=[10:23 - 10:33] +// CHECK: 10:23: BinaryOperator=<= Extent=[10:23 - 10:33] +// CHECK: 10:23: UnexposedExpr=c:2:14 Extent=[10:23 - 10:24] // CHECK: 10:23: DeclRefExpr=c:2:14 Extent=[10:23 - 10:24] // CHECK: 10:28: UnexposedExpr= Extent=[10:28 - 10:33] // CHECK: 10:28: IntegerLiteral= Extent=[10:28 - 10:33] -// CHECK: 11:9: BinaryOperator= Extent=[11:9 - 11:33] -// CHECK: 11:9: BinaryOperator= Extent=[11:9 - 11:19] +// CHECK: 11:8: ParenExpr= Extent=[11:8 - 11:34] +// CHECK: 11:9: BinaryOperator=&& Extent=[11:9 - 11:33] +// CHECK: 11:9: BinaryOperator=>= Extent=[11:9 - 11:19] +// CHECK: 11:9: UnexposedExpr=c:2:14 Extent=[11:9 - 11:10] // CHECK: 11:9: DeclRefExpr=c:2:14 Extent=[11:9 - 11:10] // CHECK: 11:14: UnexposedExpr= Extent=[11:14 - 11:19] // CHECK: 11:14: IntegerLiteral= Extent=[11:14 - 11:19] -// CHECK: 11:23: BinaryOperator= Extent=[11:23 - 11:33] +// CHECK: 11:23: BinaryOperator=<= Extent=[11:23 - 11:33] +// CHECK: 11:23: UnexposedExpr=c:2:14 Extent=[11:23 - 11:24] // CHECK: 11:23: DeclRefExpr=c:2:14 Extent=[11:23 - 11:24] // CHECK: 11:28: UnexposedExpr= Extent=[11:28 - 11:33] // CHECK: 11:28: IntegerLiteral= Extent=[11:28 - 11:33] -// CHECK: 12:9: BinaryOperator= Extent=[12:9 - 12:33] -// CHECK: 12:9: BinaryOperator= Extent=[12:9 - 12:19] +// CHECK: 12:8: ParenExpr= Extent=[12:8 - 12:34] +// CHECK: 12:9: BinaryOperator=&& Extent=[12:9 - 12:33] +// CHECK: 12:9: BinaryOperator=>= Extent=[12:9 - 12:19] +// CHECK: 12:9: UnexposedExpr=c:2:14 Extent=[12:9 - 12:10] // CHECK: 12:9: DeclRefExpr=c:2:14 Extent=[12:9 - 12:10] // CHECK: 12:14: UnexposedExpr= Extent=[12:14 - 12:19] // CHECK: 12:14: IntegerLiteral= Extent=[12:14 - 12:19] -// CHECK: 12:23: BinaryOperator= Extent=[12:23 - 12:33] +// CHECK: 12:23: BinaryOperator=<= Extent=[12:23 - 12:33] +// CHECK: 12:23: UnexposedExpr=c:2:14 Extent=[12:23 - 12:24] // CHECK: 12:23: DeclRefExpr=c:2:14 Extent=[12:23 - 12:24] // CHECK: 12:28: UnexposedExpr= Extent=[12:28 - 12:33] // CHECK: 12:28: IntegerLiteral= Extent=[12:28 - 12:33] -// CHECK: 13:9: BinaryOperator= Extent=[13:9 - 13:33] -// CHECK: 13:9: BinaryOperator= Extent=[13:9 - 13:19] +// CHECK: 13:8: ParenExpr= Extent=[13:8 - 13:34] +// CHECK: 13:9: BinaryOperator=&& Extent=[13:9 - 13:33] +// CHECK: 13:9: BinaryOperator=>= Extent=[13:9 - 13:19] +// CHECK: 13:9: UnexposedExpr=c:2:14 Extent=[13:9 - 13:10] // CHECK: 13:9: DeclRefExpr=c:2:14 Extent=[13:9 - 13:10] // CHECK: 13:14: UnexposedExpr= Extent=[13:14 - 13:19] // CHECK: 13:14: IntegerLiteral= Extent=[13:14 - 13:19] -// CHECK: 13:23: BinaryOperator= Extent=[13:23 - 13:33] +// CHECK: 13:23: BinaryOperator=<= Extent=[13:23 - 13:33] +// CHECK: 13:23: UnexposedExpr=c:2:14 Extent=[13:23 - 13:24] // CHECK: 13:23: DeclRefExpr=c:2:14 Extent=[13:23 - 13:24] // CHECK: 13:28: UnexposedExpr= Extent=[13:28 - 13:33] // CHECK: 13:28: IntegerLiteral= Extent=[13:28 - 13:33] -// CHECK: 14:9: BinaryOperator= Extent=[14:9 - 14:33] -// CHECK: 14:9: BinaryOperator= Extent=[14:9 - 14:19] +// CHECK: 14:8: ParenExpr= Extent=[14:8 - 14:34] +// CHECK: 14:9: BinaryOperator=&& Extent=[14:9 - 14:33] +// CHECK: 14:9: BinaryOperator=>= Extent=[14:9 - 14:19] +// CHECK: 14:9: UnexposedExpr=c:2:14 Extent=[14:9 - 14:10] // CHECK: 14:9: DeclRefExpr=c:2:14 Extent=[14:9 - 14:10] // CHECK: 14:14: UnexposedExpr= Extent=[14:14 - 14:19] // CHECK: 14:14: IntegerLiteral= Extent=[14:14 - 14:19] -// CHECK: 14:23: BinaryOperator= Extent=[14:23 - 14:33] +// CHECK: 14:23: BinaryOperator=<= Extent=[14:23 - 14:33] +// CHECK: 14:23: UnexposedExpr=c:2:14 Extent=[14:23 - 14:24] // CHECK: 14:23: DeclRefExpr=c:2:14 Extent=[14:23 - 14:24] // CHECK: 14:28: UnexposedExpr= Extent=[14:28 - 14:33] // CHECK: 14:28: IntegerLiteral= Extent=[14:28 - 14:33] -// CHECK: 15:9: BinaryOperator= Extent=[15:9 - 15:33] -// CHECK: 15:9: BinaryOperator= Extent=[15:9 - 15:19] +// CHECK: 15:8: ParenExpr= Extent=[15:8 - 15:34] +// CHECK: 15:9: BinaryOperator=&& Extent=[15:9 - 15:33] +// CHECK: 15:9: BinaryOperator=>= Extent=[15:9 - 15:19] +// CHECK: 15:9: UnexposedExpr=c:2:14 Extent=[15:9 - 15:10] // CHECK: 15:9: DeclRefExpr=c:2:14 Extent=[15:9 - 15:10] // CHECK: 15:14: UnexposedExpr= Extent=[15:14 - 15:19] // CHECK: 15:14: IntegerLiteral= Extent=[15:14 - 15:19] -// CHECK: 15:23: BinaryOperator= Extent=[15:23 - 15:33] +// CHECK: 15:23: BinaryOperator=<= Extent=[15:23 - 15:33] +// CHECK: 15:23: UnexposedExpr=c:2:14 Extent=[15:23 - 15:24] // CHECK: 15:23: DeclRefExpr=c:2:14 Extent=[15:23 - 15:24] // CHECK: 15:28: UnexposedExpr= Extent=[15:28 - 15:33] // CHECK: 15:28: IntegerLiteral= Extent=[15:28 - 15:33] -// CHECK: 16:9: BinaryOperator= Extent=[16:9 - 16:33] -// CHECK: 16:9: BinaryOperator= Extent=[16:9 - 16:19] +// CHECK: 16:8: ParenExpr= Extent=[16:8 - 16:34] +// CHECK: 16:9: BinaryOperator=&& Extent=[16:9 - 16:33] +// CHECK: 16:9: BinaryOperator=>= Extent=[16:9 - 16:19] +// CHECK: 16:9: UnexposedExpr=c:2:14 Extent=[16:9 - 16:10] // CHECK: 16:9: DeclRefExpr=c:2:14 Extent=[16:9 - 16:10] // CHECK: 16:14: UnexposedExpr= Extent=[16:14 - 16:19] // CHECK: 16:14: IntegerLiteral= Extent=[16:14 - 16:19] -// CHECK: 16:23: BinaryOperator= Extent=[16:23 - 16:33] +// CHECK: 16:23: BinaryOperator=<= Extent=[16:23 - 16:33] +// CHECK: 16:23: UnexposedExpr=c:2:14 Extent=[16:23 - 16:24] // CHECK: 16:23: DeclRefExpr=c:2:14 Extent=[16:23 - 16:24] // CHECK: 16:28: UnexposedExpr= Extent=[16:28 - 16:33] // CHECK: 16:28: IntegerLiteral= Extent=[16:28 - 16:33] -// CHECK: 17:9: BinaryOperator= Extent=[17:9 - 17:33] -// CHECK: 17:9: BinaryOperator= Extent=[17:9 - 17:19] +// CHECK: 17:8: ParenExpr= Extent=[17:8 - 17:34] +// CHECK: 17:9: BinaryOperator=&& Extent=[17:9 - 17:33] +// CHECK: 17:9: BinaryOperator=>= Extent=[17:9 - 17:19] +// CHECK: 17:9: UnexposedExpr=c:2:14 Extent=[17:9 - 17:10] // CHECK: 17:9: DeclRefExpr=c:2:14 Extent=[17:9 - 17:10] // CHECK: 17:14: UnexposedExpr= Extent=[17:14 - 17:19] // CHECK: 17:14: IntegerLiteral= Extent=[17:14 - 17:19] -// CHECK: 17:23: BinaryOperator= Extent=[17:23 - 17:33] +// CHECK: 17:23: BinaryOperator=<= Extent=[17:23 - 17:33] +// CHECK: 17:23: UnexposedExpr=c:2:14 Extent=[17:23 - 17:24] // CHECK: 17:23: DeclRefExpr=c:2:14 Extent=[17:23 - 17:24] // CHECK: 17:28: UnexposedExpr= Extent=[17:28 - 17:33] // CHECK: 17:28: IntegerLiteral= Extent=[17:28 - 17:33] -// CHECK: 18:8: BinaryOperator= Extent=[18:8 - 18:18] +// CHECK: 18:8: BinaryOperator=== Extent=[18:8 - 18:18] +// CHECK: 18:8: UnexposedExpr=c:2:14 Extent=[18:8 - 18:9] // CHECK: 18:8: DeclRefExpr=c:2:14 Extent=[18:8 - 18:9] // CHECK: 18:13: UnexposedExpr= Extent=[18:13 - 18:18] // CHECK: 18:13: IntegerLiteral= Extent=[18:13 - 18:18] -// CHECK: 18:23: BinaryOperator= Extent=[18:23 - 18:47] -// CHECK: 18:23: BinaryOperator= Extent=[18:23 - 18:33] +// CHECK: 18:22: ParenExpr= Extent=[18:22 - 18:48] +// CHECK: 18:23: BinaryOperator=&& Extent=[18:23 - 18:47] +// CHECK: 18:23: BinaryOperator=>= Extent=[18:23 - 18:33] +// CHECK: 18:23: UnexposedExpr=c:2:14 Extent=[18:23 - 18:24] // CHECK: 18:23: DeclRefExpr=c:2:14 Extent=[18:23 - 18:24] // CHECK: 18:28: UnexposedExpr= Extent=[18:28 - 18:33] // CHECK: 18:28: IntegerLiteral= Extent=[18:28 - 18:33] -// CHECK: 18:37: BinaryOperator= Extent=[18:37 - 18:47] +// CHECK: 18:37: BinaryOperator=<= Extent=[18:37 - 18:47] +// CHECK: 18:37: UnexposedExpr=c:2:14 Extent=[18:37 - 18:38] // CHECK: 18:37: DeclRefExpr=c:2:14 Extent=[18:37 - 18:38] // CHECK: 18:42: UnexposedExpr= Extent=[18:42 - 18:47] // CHECK: 18:42: IntegerLiteral= Extent=[18:42 - 18:47] -// CHECK: 19:8: BinaryOperator= Extent=[19:8 - 19:18] +// CHECK: 19:8: BinaryOperator=== Extent=[19:8 - 19:18] +// CHECK: 19:8: UnexposedExpr=c:2:14 Extent=[19:8 - 19:9] // CHECK: 19:8: DeclRefExpr=c:2:14 Extent=[19:8 - 19:9] // CHECK: 19:13: UnexposedExpr= Extent=[19:13 - 19:18] // CHECK: 19:13: IntegerLiteral= Extent=[19:13 - 19:18] -// CHECK: 19:23: BinaryOperator= Extent=[19:23 - 19:47] -// CHECK: 19:23: BinaryOperator= Extent=[19:23 - 19:33] +// CHECK: 19:22: ParenExpr= Extent=[19:22 - 19:48] +// CHECK: 19:23: BinaryOperator=&& Extent=[19:23 - 19:47] +// CHECK: 19:23: BinaryOperator=>= Extent=[19:23 - 19:33] +// CHECK: 19:23: UnexposedExpr=c:2:14 Extent=[19:23 - 19:24] // CHECK: 19:23: DeclRefExpr=c:2:14 Extent=[19:23 - 19:24] // CHECK: 19:28: UnexposedExpr= Extent=[19:28 - 19:33] // CHECK: 19:28: IntegerLiteral= Extent=[19:28 - 19:33] -// CHECK: 19:37: BinaryOperator= Extent=[19:37 - 19:47] +// CHECK: 19:37: BinaryOperator=<= Extent=[19:37 - 19:47] +// CHECK: 19:37: UnexposedExpr=c:2:14 Extent=[19:37 - 19:38] // CHECK: 19:37: DeclRefExpr=c:2:14 Extent=[19:37 - 19:38] // CHECK: 19:42: UnexposedExpr= Extent=[19:42 - 19:47] // CHECK: 19:42: IntegerLiteral= Extent=[19:42 - 19:47] -// CHECK: 20:9: BinaryOperator= Extent=[20:9 - 20:33] -// CHECK: 20:9: BinaryOperator= Extent=[20:9 - 20:19] +// CHECK: 20:8: ParenExpr= Extent=[20:8 - 20:34] +// CHECK: 20:9: BinaryOperator=&& Extent=[20:9 - 20:33] +// CHECK: 20:9: BinaryOperator=>= Extent=[20:9 - 20:19] +// CHECK: 20:9: UnexposedExpr=c:2:14 Extent=[20:9 - 20:10] // CHECK: 20:9: DeclRefExpr=c:2:14 Extent=[20:9 - 20:10] // CHECK: 20:14: UnexposedExpr= Extent=[20:14 - 20:19] // CHECK: 20:14: IntegerLiteral= Extent=[20:14 - 20:19] -// CHECK: 20:23: BinaryOperator= Extent=[20:23 - 20:33] +// CHECK: 20:23: BinaryOperator=<= Extent=[20:23 - 20:33] +// CHECK: 20:23: UnexposedExpr=c:2:14 Extent=[20:23 - 20:24] // CHECK: 20:23: DeclRefExpr=c:2:14 Extent=[20:23 - 20:24] // CHECK: 20:28: UnexposedExpr= Extent=[20:28 - 20:33] // CHECK: 20:28: IntegerLiteral= Extent=[20:28 - 20:33] -// CHECK: 21:9: BinaryOperator= Extent=[21:9 - 21:33] -// CHECK: 21:9: BinaryOperator= Extent=[21:9 - 21:19] +// CHECK: 21:8: ParenExpr= Extent=[21:8 - 21:34] +// CHECK: 21:9: BinaryOperator=&& Extent=[21:9 - 21:33] +// CHECK: 21:9: BinaryOperator=>= Extent=[21:9 - 21:19] +// CHECK: 21:9: UnexposedExpr=c:2:14 Extent=[21:9 - 21:10] // CHECK: 21:9: DeclRefExpr=c:2:14 Extent=[21:9 - 21:10] // CHECK: 21:14: UnexposedExpr= Extent=[21:14 - 21:19] // CHECK: 21:14: IntegerLiteral= Extent=[21:14 - 21:19] -// CHECK: 21:23: BinaryOperator= Extent=[21:23 - 21:33] +// CHECK: 21:23: BinaryOperator=<= Extent=[21:23 - 21:33] +// CHECK: 21:23: UnexposedExpr=c:2:14 Extent=[21:23 - 21:24] // CHECK: 21:23: DeclRefExpr=c:2:14 Extent=[21:23 - 21:24] // CHECK: 21:28: UnexposedExpr= Extent=[21:28 - 21:33] // CHECK: 21:28: IntegerLiteral= Extent=[21:28 - 21:33] -// CHECK: 22:8: BinaryOperator= Extent=[22:8 - 22:18] +// CHECK: 22:8: BinaryOperator=== Extent=[22:8 - 22:18] +// CHECK: 22:8: UnexposedExpr=c:2:14 Extent=[22:8 - 22:9] // CHECK: 22:8: DeclRefExpr=c:2:14 Extent=[22:8 - 22:9] // CHECK: 22:13: UnexposedExpr= Extent=[22:13 - 22:18] // CHECK: 22:13: IntegerLiteral= Extent=[22:13 - 22:18] -// CHECK: 22:22: BinaryOperator= Extent=[22:22 - 22:32] +// CHECK: 22:22: BinaryOperator=== Extent=[22:22 - 22:32] +// CHECK: 22:22: UnexposedExpr=c:2:14 Extent=[22:22 - 22:23] // CHECK: 22:22: DeclRefExpr=c:2:14 Extent=[22:22 - 22:23] // CHECK: 22:27: UnexposedExpr= Extent=[22:27 - 22:32] // CHECK: 22:27: IntegerLiteral= Extent=[22:27 - 22:32] -// CHECK: 22:36: BinaryOperator= Extent=[22:36 - 22:46] +// CHECK: 22:36: BinaryOperator=== Extent=[22:36 - 22:46] +// CHECK: 22:36: UnexposedExpr=c:2:14 Extent=[22:36 - 22:37] // CHECK: 22:36: DeclRefExpr=c:2:14 Extent=[22:36 - 22:37] // CHECK: 22:41: UnexposedExpr= Extent=[22:41 - 22:46] // CHECK: 22:41: IntegerLiteral= Extent=[22:41 - 22:46] -// CHECK: 23:5: BinaryOperator= Extent=[23:5 - 23:15] +// CHECK: 23:5: BinaryOperator=== Extent=[23:5 - 23:15] +// CHECK: 23:5: UnexposedExpr=c:2:14 Extent=[23:5 - 23:6] // CHECK: 23:5: DeclRefExpr=c:2:14 Extent=[23:5 - 23:6] // CHECK: 23:10: UnexposedExpr= Extent=[23:10 - 23:15] // CHECK: 23:10: IntegerLiteral= Extent=[23:10 - 23:15] -// CHECK: 23:20: BinaryOperator= Extent=[23:20 - 23:44] -// CHECK: 23:20: BinaryOperator= Extent=[23:20 - 23:30] +// CHECK: 23:19: ParenExpr= Extent=[23:19 - 23:45] +// CHECK: 23:20: BinaryOperator=&& Extent=[23:20 - 23:44] +// CHECK: 23:20: BinaryOperator=>= Extent=[23:20 - 23:30] +// CHECK: 23:20: UnexposedExpr=c:2:14 Extent=[23:20 - 23:21] // CHECK: 23:20: DeclRefExpr=c:2:14 Extent=[23:20 - 23:21] // CHECK: 23:25: UnexposedExpr= Extent=[23:25 - 23:30] // CHECK: 23:25: IntegerLiteral= Extent=[23:25 - 23:30] -// CHECK: 23:34: BinaryOperator= Extent=[23:34 - 23:44] +// CHECK: 23:34: BinaryOperator=<= Extent=[23:34 - 23:44] +// CHECK: 23:34: UnexposedExpr=c:2:14 Extent=[23:34 - 23:35] // CHECK: 23:34: DeclRefExpr=c:2:14 Extent=[23:34 - 23:35] // CHECK: 23:39: UnexposedExpr= Extent=[23:39 - 23:44] // CHECK: 23:39: IntegerLiteral= Extent=[23:39 - 23:44] -// CHECK: 24:9: BinaryOperator= Extent=[24:9 - 24:33] -// CHECK: 24:9: BinaryOperator= Extent=[24:9 - 24:19] +// CHECK: 24:8: ParenExpr= Extent=[24:8 - 24:34] +// CHECK: 24:9: BinaryOperator=&& Extent=[24:9 - 24:33] +// CHECK: 24:9: BinaryOperator=>= Extent=[24:9 - 24:19] +// CHECK: 24:9: UnexposedExpr=c:2:14 Extent=[24:9 - 24:10] // CHECK: 24:9: DeclRefExpr=c:2:14 Extent=[24:9 - 24:10] // CHECK: 24:14: UnexposedExpr= Extent=[24:14 - 24:19] // CHECK: 24:14: IntegerLiteral= Extent=[24:14 - 24:19] -// CHECK: 24:23: BinaryOperator= Extent=[24:23 - 24:33] +// CHECK: 24:23: BinaryOperator=<= Extent=[24:23 - 24:33] +// CHECK: 24:23: UnexposedExpr=c:2:14 Extent=[24:23 - 24:24] // CHECK: 24:23: DeclRefExpr=c:2:14 Extent=[24:23 - 24:24] // CHECK: 24:28: UnexposedExpr= Extent=[24:28 - 24:33] // CHECK: 24:28: IntegerLiteral= Extent=[24:28 - 24:33] -// CHECK: 25:9: BinaryOperator= Extent=[25:9 - 25:33] -// CHECK: 25:9: BinaryOperator= Extent=[25:9 - 25:19] +// CHECK: 25:8: ParenExpr= Extent=[25:8 - 25:34] +// CHECK: 25:9: BinaryOperator=&& Extent=[25:9 - 25:33] +// CHECK: 25:9: BinaryOperator=>= Extent=[25:9 - 25:19] +// CHECK: 25:9: UnexposedExpr=c:2:14 Extent=[25:9 - 25:10] // CHECK: 25:9: DeclRefExpr=c:2:14 Extent=[25:9 - 25:10] // CHECK: 25:14: UnexposedExpr= Extent=[25:14 - 25:19] // CHECK: 25:14: IntegerLiteral= Extent=[25:14 - 25:19] -// CHECK: 25:23: BinaryOperator= Extent=[25:23 - 25:33] +// CHECK: 25:23: BinaryOperator=<= Extent=[25:23 - 25:33] +// CHECK: 25:23: UnexposedExpr=c:2:14 Extent=[25:23 - 25:24] // CHECK: 25:23: DeclRefExpr=c:2:14 Extent=[25:23 - 25:24] // CHECK: 25:28: UnexposedExpr= Extent=[25:28 - 25:33] // CHECK: 25:28: IntegerLiteral= Extent=[25:28 - 25:33] -// CHECK: 26:9: BinaryOperator= Extent=[26:9 - 26:33] -// CHECK: 26:9: BinaryOperator= Extent=[26:9 - 26:19] +// CHECK: 26:8: ParenExpr= Extent=[26:8 - 26:34] +// CHECK: 26:9: BinaryOperator=&& Extent=[26:9 - 26:33] +// CHECK: 26:9: BinaryOperator=>= Extent=[26:9 - 26:19] +// CHECK: 26:9: UnexposedExpr=c:2:14 Extent=[26:9 - 26:10] // CHECK: 26:9: DeclRefExpr=c:2:14 Extent=[26:9 - 26:10] // CHECK: 26:14: UnexposedExpr= Extent=[26:14 - 26:19] // CHECK: 26:14: IntegerLiteral= Extent=[26:14 - 26:19] -// CHECK: 26:23: BinaryOperator= Extent=[26:23 - 26:33] +// CHECK: 26:23: BinaryOperator=<= Extent=[26:23 - 26:33] +// CHECK: 26:23: UnexposedExpr=c:2:14 Extent=[26:23 - 26:24] // CHECK: 26:23: DeclRefExpr=c:2:14 Extent=[26:23 - 26:24] // CHECK: 26:28: UnexposedExpr= Extent=[26:28 - 26:33] // CHECK: 26:28: IntegerLiteral= Extent=[26:28 - 26:33] -// CHECK: 27:9: BinaryOperator= Extent=[27:9 - 27:33] -// CHECK: 27:9: BinaryOperator= Extent=[27:9 - 27:19] +// CHECK: 27:8: ParenExpr= Extent=[27:8 - 27:34] +// CHECK: 27:9: BinaryOperator=&& Extent=[27:9 - 27:33] +// CHECK: 27:9: BinaryOperator=>= Extent=[27:9 - 27:19] +// CHECK: 27:9: UnexposedExpr=c:2:14 Extent=[27:9 - 27:10] // CHECK: 27:9: DeclRefExpr=c:2:14 Extent=[27:9 - 27:10] // CHECK: 27:14: UnexposedExpr= Extent=[27:14 - 27:19] // CHECK: 27:14: IntegerLiteral= Extent=[27:14 - 27:19] -// CHECK: 27:23: BinaryOperator= Extent=[27:23 - 27:33] +// CHECK: 27:23: BinaryOperator=<= Extent=[27:23 - 27:33] +// CHECK: 27:23: UnexposedExpr=c:2:14 Extent=[27:23 - 27:24] // CHECK: 27:23: DeclRefExpr=c:2:14 Extent=[27:23 - 27:24] // CHECK: 27:28: UnexposedExpr= Extent=[27:28 - 27:33] // CHECK: 27:28: IntegerLiteral= Extent=[27:28 - 27:33] -// CHECK: 28:9: BinaryOperator= Extent=[28:9 - 28:33] -// CHECK: 28:9: BinaryOperator= Extent=[28:9 - 28:19] +// CHECK: 28:8: ParenExpr= Extent=[28:8 - 28:34] +// CHECK: 28:9: BinaryOperator=&& Extent=[28:9 - 28:33] +// CHECK: 28:9: BinaryOperator=>= Extent=[28:9 - 28:19] +// CHECK: 28:9: UnexposedExpr=c:2:14 Extent=[28:9 - 28:10] // CHECK: 28:9: DeclRefExpr=c:2:14 Extent=[28:9 - 28:10] // CHECK: 28:14: UnexposedExpr= Extent=[28:14 - 28:19] // CHECK: 28:14: IntegerLiteral= Extent=[28:14 - 28:19] -// CHECK: 28:23: BinaryOperator= Extent=[28:23 - 28:33] +// CHECK: 28:23: BinaryOperator=<= Extent=[28:23 - 28:33] +// CHECK: 28:23: UnexposedExpr=c:2:14 Extent=[28:23 - 28:24] // CHECK: 28:23: DeclRefExpr=c:2:14 Extent=[28:23 - 28:24] // CHECK: 28:28: UnexposedExpr= Extent=[28:28 - 28:33] // CHECK: 28:28: IntegerLiteral= Extent=[28:28 - 28:33] -// CHECK: 29:9: BinaryOperator= Extent=[29:9 - 29:33] -// CHECK: 29:9: BinaryOperator= Extent=[29:9 - 29:19] +// CHECK: 29:8: ParenExpr= Extent=[29:8 - 29:34] +// CHECK: 29:9: BinaryOperator=&& Extent=[29:9 - 29:33] +// CHECK: 29:9: BinaryOperator=>= Extent=[29:9 - 29:19] +// CHECK: 29:9: UnexposedExpr=c:2:14 Extent=[29:9 - 29:10] // CHECK: 29:9: DeclRefExpr=c:2:14 Extent=[29:9 - 29:10] // CHECK: 29:14: UnexposedExpr= Extent=[29:14 - 29:19] // CHECK: 29:14: IntegerLiteral= Extent=[29:14 - 29:19] -// CHECK: 29:23: BinaryOperator= Extent=[29:23 - 29:33] +// CHECK: 29:23: BinaryOperator=<= Extent=[29:23 - 29:33] +// CHECK: 29:23: UnexposedExpr=c:2:14 Extent=[29:23 - 29:24] // CHECK: 29:23: DeclRefExpr=c:2:14 Extent=[29:23 - 29:24] // CHECK: 29:28: UnexposedExpr= Extent=[29:28 - 29:33] // CHECK: 29:28: IntegerLiteral= Extent=[29:28 - 29:33] -// CHECK: 30:9: BinaryOperator= Extent=[30:9 - 30:33] -// CHECK: 30:9: BinaryOperator= Extent=[30:9 - 30:19] +// CHECK: 30:8: ParenExpr= Extent=[30:8 - 30:34] +// CHECK: 30:9: BinaryOperator=&& Extent=[30:9 - 30:33] +// CHECK: 30:9: BinaryOperator=>= Extent=[30:9 - 30:19] +// CHECK: 30:9: UnexposedExpr=c:2:14 Extent=[30:9 - 30:10] // CHECK: 30:9: DeclRefExpr=c:2:14 Extent=[30:9 - 30:10] // CHECK: 30:14: UnexposedExpr= Extent=[30:14 - 30:19] // CHECK: 30:14: IntegerLiteral= Extent=[30:14 - 30:19] -// CHECK: 30:23: BinaryOperator= Extent=[30:23 - 30:33] +// CHECK: 30:23: BinaryOperator=<= Extent=[30:23 - 30:33] +// CHECK: 30:23: UnexposedExpr=c:2:14 Extent=[30:23 - 30:24] // CHECK: 30:23: DeclRefExpr=c:2:14 Extent=[30:23 - 30:24] // CHECK: 30:28: UnexposedExpr= Extent=[30:28 - 30:33] // CHECK: 30:28: IntegerLiteral= Extent=[30:28 - 30:33] -// CHECK: 31:9: BinaryOperator= Extent=[31:9 - 31:33] -// CHECK: 31:9: BinaryOperator= Extent=[31:9 - 31:19] +// CHECK: 31:8: ParenExpr= Extent=[31:8 - 31:34] +// CHECK: 31:9: BinaryOperator=&& Extent=[31:9 - 31:33] +// CHECK: 31:9: BinaryOperator=>= Extent=[31:9 - 31:19] +// CHECK: 31:9: UnexposedExpr=c:2:14 Extent=[31:9 - 31:10] // CHECK: 31:9: DeclRefExpr=c:2:14 Extent=[31:9 - 31:10] // CHECK: 31:14: UnexposedExpr= Extent=[31:14 - 31:19] // CHECK: 31:14: IntegerLiteral= Extent=[31:14 - 31:19] -// CHECK: 31:23: BinaryOperator= Extent=[31:23 - 31:33] +// CHECK: 31:23: BinaryOperator=<= Extent=[31:23 - 31:33] +// CHECK: 31:23: UnexposedExpr=c:2:14 Extent=[31:23 - 31:24] // CHECK: 31:23: DeclRefExpr=c:2:14 Extent=[31:23 - 31:24] // CHECK: 31:28: UnexposedExpr= Extent=[31:28 - 31:33] // CHECK: 31:28: IntegerLiteral= Extent=[31:28 - 31:33] -// CHECK: 32:9: BinaryOperator= Extent=[32:9 - 32:33] -// CHECK: 32:9: BinaryOperator= Extent=[32:9 - 32:19] +// CHECK: 32:8: ParenExpr= Extent=[32:8 - 32:34] +// CHECK: 32:9: BinaryOperator=&& Extent=[32:9 - 32:33] +// CHECK: 32:9: BinaryOperator=>= Extent=[32:9 - 32:19] +// CHECK: 32:9: UnexposedExpr=c:2:14 Extent=[32:9 - 32:10] // CHECK: 32:9: DeclRefExpr=c:2:14 Extent=[32:9 - 32:10] // CHECK: 32:14: UnexposedExpr= Extent=[32:14 - 32:19] // CHECK: 32:14: IntegerLiteral= Extent=[32:14 - 32:19] -// CHECK: 32:23: BinaryOperator= Extent=[32:23 - 32:33] +// CHECK: 32:23: BinaryOperator=<= Extent=[32:23 - 32:33] +// CHECK: 32:23: UnexposedExpr=c:2:14 Extent=[32:23 - 32:24] // CHECK: 32:23: DeclRefExpr=c:2:14 Extent=[32:23 - 32:24] // CHECK: 32:28: UnexposedExpr= Extent=[32:28 - 32:33] // CHECK: 32:28: IntegerLiteral= Extent=[32:28 - 32:33] -// CHECK: 33:9: BinaryOperator= Extent=[33:9 - 33:33] -// CHECK: 33:9: BinaryOperator= Extent=[33:9 - 33:19] +// CHECK: 33:8: ParenExpr= Extent=[33:8 - 33:34] +// CHECK: 33:9: BinaryOperator=&& Extent=[33:9 - 33:33] +// CHECK: 33:9: BinaryOperator=>= Extent=[33:9 - 33:19] +// CHECK: 33:9: UnexposedExpr=c:2:14 Extent=[33:9 - 33:10] // CHECK: 33:9: DeclRefExpr=c:2:14 Extent=[33:9 - 33:10] // CHECK: 33:14: UnexposedExpr= Extent=[33:14 - 33:19] // CHECK: 33:14: IntegerLiteral= Extent=[33:14 - 33:19] -// CHECK: 33:23: BinaryOperator= Extent=[33:23 - 33:33] +// CHECK: 33:23: BinaryOperator=<= Extent=[33:23 - 33:33] +// CHECK: 33:23: UnexposedExpr=c:2:14 Extent=[33:23 - 33:24] // CHECK: 33:23: DeclRefExpr=c:2:14 Extent=[33:23 - 33:24] // CHECK: 33:28: UnexposedExpr= Extent=[33:28 - 33:33] // CHECK: 33:28: IntegerLiteral= Extent=[33:28 - 33:33] -// CHECK: 34:9: BinaryOperator= Extent=[34:9 - 34:33] -// CHECK: 34:9: BinaryOperator= Extent=[34:9 - 34:19] +// CHECK: 34:8: ParenExpr= Extent=[34:8 - 34:34] +// CHECK: 34:9: BinaryOperator=&& Extent=[34:9 - 34:33] +// CHECK: 34:9: BinaryOperator=>= Extent=[34:9 - 34:19] +// CHECK: 34:9: UnexposedExpr=c:2:14 Extent=[34:9 - 34:10] // CHECK: 34:9: DeclRefExpr=c:2:14 Extent=[34:9 - 34:10] // CHECK: 34:14: UnexposedExpr= Extent=[34:14 - 34:19] // CHECK: 34:14: IntegerLiteral= Extent=[34:14 - 34:19] -// CHECK: 34:23: BinaryOperator= Extent=[34:23 - 34:33] +// CHECK: 34:23: BinaryOperator=<= Extent=[34:23 - 34:33] +// CHECK: 34:23: UnexposedExpr=c:2:14 Extent=[34:23 - 34:24] // CHECK: 34:23: DeclRefExpr=c:2:14 Extent=[34:23 - 34:24] // CHECK: 34:28: UnexposedExpr= Extent=[34:28 - 34:33] // CHECK: 34:28: IntegerLiteral= Extent=[34:28 - 34:33] -// CHECK: 35:8: BinaryOperator= Extent=[35:8 - 35:18] +// CHECK: 35:8: BinaryOperator=== Extent=[35:8 - 35:18] +// CHECK: 35:8: UnexposedExpr=c:2:14 Extent=[35:8 - 35:9] // CHECK: 35:8: DeclRefExpr=c:2:14 Extent=[35:8 - 35:9] // CHECK: 35:13: UnexposedExpr= Extent=[35:13 - 35:18] // CHECK: 35:13: IntegerLiteral= Extent=[35:13 - 35:18] -// CHECK: 35:23: BinaryOperator= Extent=[35:23 - 35:47] -// CHECK: 35:23: BinaryOperator= Extent=[35:23 - 35:33] +// CHECK: 35:22: ParenExpr= Extent=[35:22 - 35:48] +// CHECK: 35:23: BinaryOperator=&& Extent=[35:23 - 35:47] +// CHECK: 35:23: BinaryOperator=>= Extent=[35:23 - 35:33] +// CHECK: 35:23: UnexposedExpr=c:2:14 Extent=[35:23 - 35:24] // CHECK: 35:23: DeclRefExpr=c:2:14 Extent=[35:23 - 35:24] // CHECK: 35:28: UnexposedExpr= Extent=[35:28 - 35:33] // CHECK: 35:28: IntegerLiteral= Extent=[35:28 - 35:33] -// CHECK: 35:37: BinaryOperator= Extent=[35:37 - 35:47] +// CHECK: 35:37: BinaryOperator=<= Extent=[35:37 - 35:47] +// CHECK: 35:37: UnexposedExpr=c:2:14 Extent=[35:37 - 35:38] // CHECK: 35:37: DeclRefExpr=c:2:14 Extent=[35:37 - 35:38] // CHECK: 35:42: UnexposedExpr= Extent=[35:42 - 35:47] // CHECK: 35:42: IntegerLiteral= Extent=[35:42 - 35:47] -// CHECK: 36:9: BinaryOperator= Extent=[36:9 - 36:33] -// CHECK: 36:9: BinaryOperator= Extent=[36:9 - 36:19] +// CHECK: 36:8: ParenExpr= Extent=[36:8 - 36:34] +// CHECK: 36:9: BinaryOperator=&& Extent=[36:9 - 36:33] +// CHECK: 36:9: BinaryOperator=>= Extent=[36:9 - 36:19] +// CHECK: 36:9: UnexposedExpr=c:2:14 Extent=[36:9 - 36:10] // CHECK: 36:9: DeclRefExpr=c:2:14 Extent=[36:9 - 36:10] // CHECK: 36:14: UnexposedExpr= Extent=[36:14 - 36:19] // CHECK: 36:14: IntegerLiteral= Extent=[36:14 - 36:19] -// CHECK: 36:23: BinaryOperator= Extent=[36:23 - 36:33] +// CHECK: 36:23: BinaryOperator=<= Extent=[36:23 - 36:33] +// CHECK: 36:23: UnexposedExpr=c:2:14 Extent=[36:23 - 36:24] // CHECK: 36:23: DeclRefExpr=c:2:14 Extent=[36:23 - 36:24] // CHECK: 36:28: UnexposedExpr= Extent=[36:28 - 36:33] // CHECK: 36:28: IntegerLiteral= Extent=[36:28 - 36:33] -// CHECK: 37:9: BinaryOperator= Extent=[37:9 - 37:33] -// CHECK: 37:9: BinaryOperator= Extent=[37:9 - 37:19] +// CHECK: 37:8: ParenExpr= Extent=[37:8 - 37:34] +// CHECK: 37:9: BinaryOperator=&& Extent=[37:9 - 37:33] +// CHECK: 37:9: BinaryOperator=>= Extent=[37:9 - 37:19] +// CHECK: 37:9: UnexposedExpr=c:2:14 Extent=[37:9 - 37:10] // CHECK: 37:9: DeclRefExpr=c:2:14 Extent=[37:9 - 37:10] // CHECK: 37:14: UnexposedExpr= Extent=[37:14 - 37:19] // CHECK: 37:14: IntegerLiteral= Extent=[37:14 - 37:19] -// CHECK: 37:23: BinaryOperator= Extent=[37:23 - 37:33] +// CHECK: 37:23: BinaryOperator=<= Extent=[37:23 - 37:33] +// CHECK: 37:23: UnexposedExpr=c:2:14 Extent=[37:23 - 37:24] // CHECK: 37:23: DeclRefExpr=c:2:14 Extent=[37:23 - 37:24] // CHECK: 37:28: UnexposedExpr= Extent=[37:28 - 37:33] // CHECK: 37:28: IntegerLiteral= Extent=[37:28 - 37:33] -// CHECK: 38:9: BinaryOperator= Extent=[38:9 - 38:33] -// CHECK: 38:9: BinaryOperator= Extent=[38:9 - 38:19] +// CHECK: 38:8: ParenExpr= Extent=[38:8 - 38:34] +// CHECK: 38:9: BinaryOperator=&& Extent=[38:9 - 38:33] +// CHECK: 38:9: BinaryOperator=>= Extent=[38:9 - 38:19] +// CHECK: 38:9: UnexposedExpr=c:2:14 Extent=[38:9 - 38:10] // CHECK: 38:9: DeclRefExpr=c:2:14 Extent=[38:9 - 38:10] // CHECK: 38:14: UnexposedExpr= Extent=[38:14 - 38:19] // CHECK: 38:14: IntegerLiteral= Extent=[38:14 - 38:19] -// CHECK: 38:23: BinaryOperator= Extent=[38:23 - 38:33] +// CHECK: 38:23: BinaryOperator=<= Extent=[38:23 - 38:33] +// CHECK: 38:23: UnexposedExpr=c:2:14 Extent=[38:23 - 38:24] // CHECK: 38:23: DeclRefExpr=c:2:14 Extent=[38:23 - 38:24] // CHECK: 38:28: UnexposedExpr= Extent=[38:28 - 38:33] // CHECK: 38:28: IntegerLiteral= Extent=[38:28 - 38:33] -// CHECK: 39:9: BinaryOperator= Extent=[39:9 - 39:33] -// CHECK: 39:9: BinaryOperator= Extent=[39:9 - 39:19] +// CHECK: 39:8: ParenExpr= Extent=[39:8 - 39:34] +// CHECK: 39:9: BinaryOperator=&& Extent=[39:9 - 39:33] +// CHECK: 39:9: BinaryOperator=>= Extent=[39:9 - 39:19] +// CHECK: 39:9: UnexposedExpr=c:2:14 Extent=[39:9 - 39:10] // CHECK: 39:9: DeclRefExpr=c:2:14 Extent=[39:9 - 39:10] // CHECK: 39:14: UnexposedExpr= Extent=[39:14 - 39:19] // CHECK: 39:14: IntegerLiteral= Extent=[39:14 - 39:19] -// CHECK: 39:23: BinaryOperator= Extent=[39:23 - 39:33] +// CHECK: 39:23: BinaryOperator=<= Extent=[39:23 - 39:33] +// CHECK: 39:23: UnexposedExpr=c:2:14 Extent=[39:23 - 39:24] // CHECK: 39:23: DeclRefExpr=c:2:14 Extent=[39:23 - 39:24] // CHECK: 39:28: UnexposedExpr= Extent=[39:28 - 39:33] // CHECK: 39:28: IntegerLiteral= Extent=[39:28 - 39:33] -// CHECK: 40:9: BinaryOperator= Extent=[40:9 - 40:33] -// CHECK: 40:9: BinaryOperator= Extent=[40:9 - 40:19] +// CHECK: 40:8: ParenExpr= Extent=[40:8 - 40:34] +// CHECK: 40:9: BinaryOperator=&& Extent=[40:9 - 40:33] +// CHECK: 40:9: BinaryOperator=>= Extent=[40:9 - 40:19] +// CHECK: 40:9: UnexposedExpr=c:2:14 Extent=[40:9 - 40:10] // CHECK: 40:9: DeclRefExpr=c:2:14 Extent=[40:9 - 40:10] // CHECK: 40:14: UnexposedExpr= Extent=[40:14 - 40:19] // CHECK: 40:14: IntegerLiteral= Extent=[40:14 - 40:19] -// CHECK: 40:23: BinaryOperator= Extent=[40:23 - 40:33] +// CHECK: 40:23: BinaryOperator=<= Extent=[40:23 - 40:33] +// CHECK: 40:23: UnexposedExpr=c:2:14 Extent=[40:23 - 40:24] // CHECK: 40:23: DeclRefExpr=c:2:14 Extent=[40:23 - 40:24] // CHECK: 40:28: UnexposedExpr= Extent=[40:28 - 40:33] // CHECK: 40:28: IntegerLiteral= Extent=[40:28 - 40:33] -// CHECK: 41:9: BinaryOperator= Extent=[41:9 - 41:33] -// CHECK: 41:9: BinaryOperator= Extent=[41:9 - 41:19] +// CHECK: 41:8: ParenExpr= Extent=[41:8 - 41:34] +// CHECK: 41:9: BinaryOperator=&& Extent=[41:9 - 41:33] +// CHECK: 41:9: BinaryOperator=>= Extent=[41:9 - 41:19] +// CHECK: 41:9: UnexposedExpr=c:2:14 Extent=[41:9 - 41:10] // CHECK: 41:9: DeclRefExpr=c:2:14 Extent=[41:9 - 41:10] // CHECK: 41:14: UnexposedExpr= Extent=[41:14 - 41:19] // CHECK: 41:14: IntegerLiteral= Extent=[41:14 - 41:19] -// CHECK: 41:23: BinaryOperator= Extent=[41:23 - 41:33] +// CHECK: 41:23: BinaryOperator=<= Extent=[41:23 - 41:33] +// CHECK: 41:23: UnexposedExpr=c:2:14 Extent=[41:23 - 41:24] // CHECK: 41:23: DeclRefExpr=c:2:14 Extent=[41:23 - 41:24] // CHECK: 41:28: UnexposedExpr= Extent=[41:28 - 41:33] // CHECK: 41:28: IntegerLiteral= Extent=[41:28 - 41:33] -// CHECK: 42:9: BinaryOperator= Extent=[42:9 - 42:33] -// CHECK: 42:9: BinaryOperator= Extent=[42:9 - 42:19] +// CHECK: 42:8: ParenExpr= Extent=[42:8 - 42:34] +// CHECK: 42:9: BinaryOperator=&& Extent=[42:9 - 42:33] +// CHECK: 42:9: BinaryOperator=>= Extent=[42:9 - 42:19] +// CHECK: 42:9: UnexposedExpr=c:2:14 Extent=[42:9 - 42:10] // CHECK: 42:9: DeclRefExpr=c:2:14 Extent=[42:9 - 42:10] // CHECK: 42:14: UnexposedExpr= Extent=[42:14 - 42:19] // CHECK: 42:14: IntegerLiteral= Extent=[42:14 - 42:19] -// CHECK: 42:23: BinaryOperator= Extent=[42:23 - 42:33] +// CHECK: 42:23: BinaryOperator=<= Extent=[42:23 - 42:33] +// CHECK: 42:23: UnexposedExpr=c:2:14 Extent=[42:23 - 42:24] // CHECK: 42:23: DeclRefExpr=c:2:14 Extent=[42:23 - 42:24] // CHECK: 42:28: UnexposedExpr= Extent=[42:28 - 42:33] // CHECK: 42:28: IntegerLiteral= Extent=[42:28 - 42:33] -// CHECK: 43:9: BinaryOperator= Extent=[43:9 - 43:33] -// CHECK: 43:9: BinaryOperator= Extent=[43:9 - 43:19] +// CHECK: 43:8: ParenExpr= Extent=[43:8 - 43:34] +// CHECK: 43:9: BinaryOperator=&& Extent=[43:9 - 43:33] +// CHECK: 43:9: BinaryOperator=>= Extent=[43:9 - 43:19] +// CHECK: 43:9: UnexposedExpr=c:2:14 Extent=[43:9 - 43:10] // CHECK: 43:9: DeclRefExpr=c:2:14 Extent=[43:9 - 43:10] // CHECK: 43:14: UnexposedExpr= Extent=[43:14 - 43:19] // CHECK: 43:14: IntegerLiteral= Extent=[43:14 - 43:19] -// CHECK: 43:23: BinaryOperator= Extent=[43:23 - 43:33] +// CHECK: 43:23: BinaryOperator=<= Extent=[43:23 - 43:33] +// CHECK: 43:23: UnexposedExpr=c:2:14 Extent=[43:23 - 43:24] // CHECK: 43:23: DeclRefExpr=c:2:14 Extent=[43:23 - 43:24] // CHECK: 43:28: UnexposedExpr= Extent=[43:28 - 43:33] // CHECK: 43:28: IntegerLiteral= Extent=[43:28 - 43:33] -// CHECK: 44:8: BinaryOperator= Extent=[44:8 - 44:18] +// CHECK: 44:8: BinaryOperator=== Extent=[44:8 - 44:18] +// CHECK: 44:8: UnexposedExpr=c:2:14 Extent=[44:8 - 44:9] // CHECK: 44:8: DeclRefExpr=c:2:14 Extent=[44:8 - 44:9] // CHECK: 44:13: UnexposedExpr= Extent=[44:13 - 44:18] // CHECK: 44:13: IntegerLiteral= Extent=[44:13 - 44:18] -// CHECK: 44:23: BinaryOperator= Extent=[44:23 - 44:47] -// CHECK: 44:23: BinaryOperator= Extent=[44:23 - 44:33] +// CHECK: 44:22: ParenExpr= Extent=[44:22 - 44:48] +// CHECK: 44:23: BinaryOperator=&& Extent=[44:23 - 44:47] +// CHECK: 44:23: BinaryOperator=>= Extent=[44:23 - 44:33] +// CHECK: 44:23: UnexposedExpr=c:2:14 Extent=[44:23 - 44:24] // CHECK: 44:23: DeclRefExpr=c:2:14 Extent=[44:23 - 44:24] // CHECK: 44:28: UnexposedExpr= Extent=[44:28 - 44:33] // CHECK: 44:28: IntegerLiteral= Extent=[44:28 - 44:33] -// CHECK: 44:37: BinaryOperator= Extent=[44:37 - 44:47] +// CHECK: 44:37: BinaryOperator=<= Extent=[44:37 - 44:47] +// CHECK: 44:37: UnexposedExpr=c:2:14 Extent=[44:37 - 44:38] // CHECK: 44:37: DeclRefExpr=c:2:14 Extent=[44:37 - 44:38] // CHECK: 44:42: UnexposedExpr= Extent=[44:42 - 44:47] // CHECK: 44:42: IntegerLiteral= Extent=[44:42 - 44:47] -// CHECK: 45:9: BinaryOperator= Extent=[45:9 - 45:33] -// CHECK: 45:9: BinaryOperator= Extent=[45:9 - 45:19] +// CHECK: 45:8: ParenExpr= Extent=[45:8 - 45:34] +// CHECK: 45:9: BinaryOperator=&& Extent=[45:9 - 45:33] +// CHECK: 45:9: BinaryOperator=>= Extent=[45:9 - 45:19] +// CHECK: 45:9: UnexposedExpr=c:2:14 Extent=[45:9 - 45:10] // CHECK: 45:9: DeclRefExpr=c:2:14 Extent=[45:9 - 45:10] // CHECK: 45:14: UnexposedExpr= Extent=[45:14 - 45:19] // CHECK: 45:14: IntegerLiteral= Extent=[45:14 - 45:19] -// CHECK: 45:23: BinaryOperator= Extent=[45:23 - 45:33] +// CHECK: 45:23: BinaryOperator=<= Extent=[45:23 - 45:33] +// CHECK: 45:23: UnexposedExpr=c:2:14 Extent=[45:23 - 45:24] // CHECK: 45:23: DeclRefExpr=c:2:14 Extent=[45:23 - 45:24] // CHECK: 45:28: UnexposedExpr= Extent=[45:28 - 45:33] // CHECK: 45:28: IntegerLiteral= Extent=[45:28 - 45:33] -// CHECK: 46:8: BinaryOperator= Extent=[46:8 - 46:18] +// CHECK: 46:8: BinaryOperator=== Extent=[46:8 - 46:18] +// CHECK: 46:8: UnexposedExpr=c:2:14 Extent=[46:8 - 46:9] // CHECK: 46:8: DeclRefExpr=c:2:14 Extent=[46:8 - 46:9] // CHECK: 46:13: UnexposedExpr= Extent=[46:13 - 46:18] // CHECK: 46:13: IntegerLiteral= Extent=[46:13 - 46:18] -// CHECK: 46:23: BinaryOperator= Extent=[46:23 - 46:47] -// CHECK: 46:23: BinaryOperator= Extent=[46:23 - 46:33] +// CHECK: 46:22: ParenExpr= Extent=[46:22 - 46:48] +// CHECK: 46:23: BinaryOperator=&& Extent=[46:23 - 46:47] +// CHECK: 46:23: BinaryOperator=>= Extent=[46:23 - 46:33] +// CHECK: 46:23: UnexposedExpr=c:2:14 Extent=[46:23 - 46:24] // CHECK: 46:23: DeclRefExpr=c:2:14 Extent=[46:23 - 46:24] // CHECK: 46:28: UnexposedExpr= Extent=[46:28 - 46:33] // CHECK: 46:28: IntegerLiteral= Extent=[46:28 - 46:33] -// CHECK: 46:37: BinaryOperator= Extent=[46:37 - 46:47] +// CHECK: 46:37: BinaryOperator=<= Extent=[46:37 - 46:47] +// CHECK: 46:37: UnexposedExpr=c:2:14 Extent=[46:37 - 46:38] // CHECK: 46:37: DeclRefExpr=c:2:14 Extent=[46:37 - 46:38] // CHECK: 46:42: UnexposedExpr= Extent=[46:42 - 46:47] // CHECK: 46:42: IntegerLiteral= Extent=[46:42 - 46:47] -// CHECK: 47:9: BinaryOperator= Extent=[47:9 - 47:33] -// CHECK: 47:9: BinaryOperator= Extent=[47:9 - 47:19] +// CHECK: 47:8: ParenExpr= Extent=[47:8 - 47:34] +// CHECK: 47:9: BinaryOperator=&& Extent=[47:9 - 47:33] +// CHECK: 47:9: BinaryOperator=>= Extent=[47:9 - 47:19] +// CHECK: 47:9: UnexposedExpr=c:2:14 Extent=[47:9 - 47:10] // CHECK: 47:9: DeclRefExpr=c:2:14 Extent=[47:9 - 47:10] // CHECK: 47:14: UnexposedExpr= Extent=[47:14 - 47:19] // CHECK: 47:14: IntegerLiteral= Extent=[47:14 - 47:19] -// CHECK: 47:23: BinaryOperator= Extent=[47:23 - 47:33] +// CHECK: 47:23: BinaryOperator=<= Extent=[47:23 - 47:33] +// CHECK: 47:23: UnexposedExpr=c:2:14 Extent=[47:23 - 47:24] // CHECK: 47:23: DeclRefExpr=c:2:14 Extent=[47:23 - 47:24] // CHECK: 47:28: UnexposedExpr= Extent=[47:28 - 47:33] // CHECK: 47:28: IntegerLiteral= Extent=[47:28 - 47:33] -// CHECK: 48:9: BinaryOperator= Extent=[48:9 - 48:33] -// CHECK: 48:9: BinaryOperator= Extent=[48:9 - 48:19] +// CHECK: 48:8: ParenExpr= Extent=[48:8 - 48:34] +// CHECK: 48:9: BinaryOperator=&& Extent=[48:9 - 48:33] +// CHECK: 48:9: BinaryOperator=>= Extent=[48:9 - 48:19] +// CHECK: 48:9: UnexposedExpr=c:2:14 Extent=[48:9 - 48:10] // CHECK: 48:9: DeclRefExpr=c:2:14 Extent=[48:9 - 48:10] // CHECK: 48:14: UnexposedExpr= Extent=[48:14 - 48:19] // CHECK: 48:14: IntegerLiteral= Extent=[48:14 - 48:19] -// CHECK: 48:23: BinaryOperator= Extent=[48:23 - 48:33] +// CHECK: 48:23: BinaryOperator=<= Extent=[48:23 - 48:33] +// CHECK: 48:23: UnexposedExpr=c:2:14 Extent=[48:23 - 48:24] // CHECK: 48:23: DeclRefExpr=c:2:14 Extent=[48:23 - 48:24] // CHECK: 48:28: UnexposedExpr= Extent=[48:28 - 48:33] // CHECK: 48:28: IntegerLiteral= Extent=[48:28 - 48:33] -// CHECK: 49:9: BinaryOperator= Extent=[49:9 - 49:33] -// CHECK: 49:9: BinaryOperator= Extent=[49:9 - 49:19] +// CHECK: 49:8: ParenExpr= Extent=[49:8 - 49:34] +// CHECK: 49:9: BinaryOperator=&& Extent=[49:9 - 49:33] +// CHECK: 49:9: BinaryOperator=>= Extent=[49:9 - 49:19] +// CHECK: 49:9: UnexposedExpr=c:2:14 Extent=[49:9 - 49:10] // CHECK: 49:9: DeclRefExpr=c:2:14 Extent=[49:9 - 49:10] // CHECK: 49:14: UnexposedExpr= Extent=[49:14 - 49:19] // CHECK: 49:14: IntegerLiteral= Extent=[49:14 - 49:19] -// CHECK: 49:23: BinaryOperator= Extent=[49:23 - 49:33] +// CHECK: 49:23: BinaryOperator=<= Extent=[49:23 - 49:33] +// CHECK: 49:23: UnexposedExpr=c:2:14 Extent=[49:23 - 49:24] // CHECK: 49:23: DeclRefExpr=c:2:14 Extent=[49:23 - 49:24] // CHECK: 49:28: UnexposedExpr= Extent=[49:28 - 49:33] // CHECK: 49:28: IntegerLiteral= Extent=[49:28 - 49:33] -// CHECK: 50:9: BinaryOperator= Extent=[50:9 - 50:33] -// CHECK: 50:9: BinaryOperator= Extent=[50:9 - 50:19] +// CHECK: 50:8: ParenExpr= Extent=[50:8 - 50:34] +// CHECK: 50:9: BinaryOperator=&& Extent=[50:9 - 50:33] +// CHECK: 50:9: BinaryOperator=>= Extent=[50:9 - 50:19] +// CHECK: 50:9: UnexposedExpr=c:2:14 Extent=[50:9 - 50:10] // CHECK: 50:9: DeclRefExpr=c:2:14 Extent=[50:9 - 50:10] // CHECK: 50:14: UnexposedExpr= Extent=[50:14 - 50:19] // CHECK: 50:14: IntegerLiteral= Extent=[50:14 - 50:19] -// CHECK: 50:23: BinaryOperator= Extent=[50:23 - 50:33] +// CHECK: 50:23: BinaryOperator=<= Extent=[50:23 - 50:33] +// CHECK: 50:23: UnexposedExpr=c:2:14 Extent=[50:23 - 50:24] // CHECK: 50:23: DeclRefExpr=c:2:14 Extent=[50:23 - 50:24] // CHECK: 50:28: UnexposedExpr= Extent=[50:28 - 50:33] // CHECK: 50:28: IntegerLiteral= Extent=[50:28 - 50:33] -// CHECK: 51:8: BinaryOperator= Extent=[51:8 - 51:18] +// CHECK: 51:8: BinaryOperator=== Extent=[51:8 - 51:18] +// CHECK: 51:8: UnexposedExpr=c:2:14 Extent=[51:8 - 51:9] // CHECK: 51:8: DeclRefExpr=c:2:14 Extent=[51:8 - 51:9] // CHECK: 51:13: UnexposedExpr= Extent=[51:13 - 51:18] // CHECK: 51:13: IntegerLiteral= Extent=[51:13 - 51:18] -// CHECK: 51:23: BinaryOperator= Extent=[51:23 - 51:47] -// CHECK: 51:23: BinaryOperator= Extent=[51:23 - 51:33] +// CHECK: 51:22: ParenExpr= Extent=[51:22 - 51:48] +// CHECK: 51:23: BinaryOperator=&& Extent=[51:23 - 51:47] +// CHECK: 51:23: BinaryOperator=>= Extent=[51:23 - 51:33] +// CHECK: 51:23: UnexposedExpr=c:2:14 Extent=[51:23 - 51:24] // CHECK: 51:23: DeclRefExpr=c:2:14 Extent=[51:23 - 51:24] // CHECK: 51:28: UnexposedExpr= Extent=[51:28 - 51:33] // CHECK: 51:28: IntegerLiteral= Extent=[51:28 - 51:33] -// CHECK: 51:37: BinaryOperator= Extent=[51:37 - 51:47] +// CHECK: 51:37: BinaryOperator=<= Extent=[51:37 - 51:47] +// CHECK: 51:37: UnexposedExpr=c:2:14 Extent=[51:37 - 51:38] // CHECK: 51:37: DeclRefExpr=c:2:14 Extent=[51:37 - 51:38] // CHECK: 51:42: UnexposedExpr= Extent=[51:42 - 51:47] // CHECK: 51:42: IntegerLiteral= Extent=[51:42 - 51:47] -// CHECK: 52:9: BinaryOperator= Extent=[52:9 - 52:33] -// CHECK: 52:9: BinaryOperator= Extent=[52:9 - 52:19] +// CHECK: 52:8: ParenExpr= Extent=[52:8 - 52:34] +// CHECK: 52:9: BinaryOperator=&& Extent=[52:9 - 52:33] +// CHECK: 52:9: BinaryOperator=>= Extent=[52:9 - 52:19] +// CHECK: 52:9: UnexposedExpr=c:2:14 Extent=[52:9 - 52:10] // CHECK: 52:9: DeclRefExpr=c:2:14 Extent=[52:9 - 52:10] // CHECK: 52:14: UnexposedExpr= Extent=[52:14 - 52:19] // CHECK: 52:14: IntegerLiteral= Extent=[52:14 - 52:19] -// CHECK: 52:23: BinaryOperator= Extent=[52:23 - 52:33] +// CHECK: 52:23: BinaryOperator=<= Extent=[52:23 - 52:33] +// CHECK: 52:23: UnexposedExpr=c:2:14 Extent=[52:23 - 52:24] // CHECK: 52:23: DeclRefExpr=c:2:14 Extent=[52:23 - 52:24] // CHECK: 52:28: UnexposedExpr= Extent=[52:28 - 52:33] // CHECK: 52:28: IntegerLiteral= Extent=[52:28 - 52:33] -// CHECK: 53:9: BinaryOperator= Extent=[53:9 - 53:33] -// CHECK: 53:9: BinaryOperator= Extent=[53:9 - 53:19] +// CHECK: 53:8: ParenExpr= Extent=[53:8 - 53:34] +// CHECK: 53:9: BinaryOperator=&& Extent=[53:9 - 53:33] +// CHECK: 53:9: BinaryOperator=>= Extent=[53:9 - 53:19] +// CHECK: 53:9: UnexposedExpr=c:2:14 Extent=[53:9 - 53:10] // CHECK: 53:9: DeclRefExpr=c:2:14 Extent=[53:9 - 53:10] // CHECK: 53:14: UnexposedExpr= Extent=[53:14 - 53:19] // CHECK: 53:14: IntegerLiteral= Extent=[53:14 - 53:19] -// CHECK: 53:23: BinaryOperator= Extent=[53:23 - 53:33] +// CHECK: 53:23: BinaryOperator=<= Extent=[53:23 - 53:33] +// CHECK: 53:23: UnexposedExpr=c:2:14 Extent=[53:23 - 53:24] // CHECK: 53:23: DeclRefExpr=c:2:14 Extent=[53:23 - 53:24] // CHECK: 53:28: UnexposedExpr= Extent=[53:28 - 53:33] // CHECK: 53:28: IntegerLiteral= Extent=[53:28 - 53:33] -// CHECK: 54:9: BinaryOperator= Extent=[54:9 - 54:33] -// CHECK: 54:9: BinaryOperator= Extent=[54:9 - 54:19] +// CHECK: 54:8: ParenExpr= Extent=[54:8 - 54:34] +// CHECK: 54:9: BinaryOperator=&& Extent=[54:9 - 54:33] +// CHECK: 54:9: BinaryOperator=>= Extent=[54:9 - 54:19] +// CHECK: 54:9: UnexposedExpr=c:2:14 Extent=[54:9 - 54:10] // CHECK: 54:9: DeclRefExpr=c:2:14 Extent=[54:9 - 54:10] // CHECK: 54:14: UnexposedExpr= Extent=[54:14 - 54:19] // CHECK: 54:14: IntegerLiteral= Extent=[54:14 - 54:19] -// CHECK: 54:23: BinaryOperator= Extent=[54:23 - 54:33] +// CHECK: 54:23: BinaryOperator=<= Extent=[54:23 - 54:33] +// CHECK: 54:23: UnexposedExpr=c:2:14 Extent=[54:23 - 54:24] // CHECK: 54:23: DeclRefExpr=c:2:14 Extent=[54:23 - 54:24] // CHECK: 54:28: UnexposedExpr= Extent=[54:28 - 54:33] // CHECK: 54:28: IntegerLiteral= Extent=[54:28 - 54:33] -// CHECK: 55:9: BinaryOperator= Extent=[55:9 - 55:33] -// CHECK: 55:9: BinaryOperator= Extent=[55:9 - 55:19] +// CHECK: 55:8: ParenExpr= Extent=[55:8 - 55:34] +// CHECK: 55:9: BinaryOperator=&& Extent=[55:9 - 55:33] +// CHECK: 55:9: BinaryOperator=>= Extent=[55:9 - 55:19] +// CHECK: 55:9: UnexposedExpr=c:2:14 Extent=[55:9 - 55:10] // CHECK: 55:9: DeclRefExpr=c:2:14 Extent=[55:9 - 55:10] // CHECK: 55:14: UnexposedExpr= Extent=[55:14 - 55:19] // CHECK: 55:14: IntegerLiteral= Extent=[55:14 - 55:19] -// CHECK: 55:23: BinaryOperator= Extent=[55:23 - 55:33] +// CHECK: 55:23: BinaryOperator=<= Extent=[55:23 - 55:33] +// CHECK: 55:23: UnexposedExpr=c:2:14 Extent=[55:23 - 55:24] // CHECK: 55:23: DeclRefExpr=c:2:14 Extent=[55:23 - 55:24] // CHECK: 55:28: UnexposedExpr= Extent=[55:28 - 55:33] // CHECK: 55:28: IntegerLiteral= Extent=[55:28 - 55:33] -// CHECK: 56:9: BinaryOperator= Extent=[56:9 - 56:33] -// CHECK: 56:9: BinaryOperator= Extent=[56:9 - 56:19] +// CHECK: 56:8: ParenExpr= Extent=[56:8 - 56:34] +// CHECK: 56:9: BinaryOperator=&& Extent=[56:9 - 56:33] +// CHECK: 56:9: BinaryOperator=>= Extent=[56:9 - 56:19] +// CHECK: 56:9: UnexposedExpr=c:2:14 Extent=[56:9 - 56:10] // CHECK: 56:9: DeclRefExpr=c:2:14 Extent=[56:9 - 56:10] // CHECK: 56:14: UnexposedExpr= Extent=[56:14 - 56:19] // CHECK: 56:14: IntegerLiteral= Extent=[56:14 - 56:19] -// CHECK: 56:23: BinaryOperator= Extent=[56:23 - 56:33] +// CHECK: 56:23: BinaryOperator=<= Extent=[56:23 - 56:33] +// CHECK: 56:23: UnexposedExpr=c:2:14 Extent=[56:23 - 56:24] // CHECK: 56:23: DeclRefExpr=c:2:14 Extent=[56:23 - 56:24] // CHECK: 56:28: UnexposedExpr= Extent=[56:28 - 56:33] // CHECK: 56:28: IntegerLiteral= Extent=[56:28 - 56:33] -// CHECK: 57:9: BinaryOperator= Extent=[57:9 - 57:33] -// CHECK: 57:9: BinaryOperator= Extent=[57:9 - 57:19] +// CHECK: 57:8: ParenExpr= Extent=[57:8 - 57:34] +// CHECK: 57:9: BinaryOperator=&& Extent=[57:9 - 57:33] +// CHECK: 57:9: BinaryOperator=>= Extent=[57:9 - 57:19] +// CHECK: 57:9: UnexposedExpr=c:2:14 Extent=[57:9 - 57:10] // CHECK: 57:9: DeclRefExpr=c:2:14 Extent=[57:9 - 57:10] // CHECK: 57:14: UnexposedExpr= Extent=[57:14 - 57:19] // CHECK: 57:14: IntegerLiteral= Extent=[57:14 - 57:19] -// CHECK: 57:23: BinaryOperator= Extent=[57:23 - 57:33] +// CHECK: 57:23: BinaryOperator=<= Extent=[57:23 - 57:33] +// CHECK: 57:23: UnexposedExpr=c:2:14 Extent=[57:23 - 57:24] // CHECK: 57:23: DeclRefExpr=c:2:14 Extent=[57:23 - 57:24] // CHECK: 57:28: UnexposedExpr= Extent=[57:28 - 57:33] // CHECK: 57:28: IntegerLiteral= Extent=[57:28 - 57:33] -// CHECK: 58:9: BinaryOperator= Extent=[58:9 - 58:33] -// CHECK: 58:9: BinaryOperator= Extent=[58:9 - 58:19] +// CHECK: 58:8: ParenExpr= Extent=[58:8 - 58:34] +// CHECK: 58:9: BinaryOperator=&& Extent=[58:9 - 58:33] +// CHECK: 58:9: BinaryOperator=>= Extent=[58:9 - 58:19] +// CHECK: 58:9: UnexposedExpr=c:2:14 Extent=[58:9 - 58:10] // CHECK: 58:9: DeclRefExpr=c:2:14 Extent=[58:9 - 58:10] // CHECK: 58:14: UnexposedExpr= Extent=[58:14 - 58:19] // CHECK: 58:14: IntegerLiteral= Extent=[58:14 - 58:19] -// CHECK: 58:23: BinaryOperator= Extent=[58:23 - 58:33] +// CHECK: 58:23: BinaryOperator=<= Extent=[58:23 - 58:33] +// CHECK: 58:23: UnexposedExpr=c:2:14 Extent=[58:23 - 58:24] // CHECK: 58:23: DeclRefExpr=c:2:14 Extent=[58:23 - 58:24] // CHECK: 58:28: UnexposedExpr= Extent=[58:28 - 58:33] // CHECK: 58:28: IntegerLiteral= Extent=[58:28 - 58:33] -// CHECK: 59:9: BinaryOperator= Extent=[59:9 - 59:33] -// CHECK: 59:9: BinaryOperator= Extent=[59:9 - 59:19] +// CHECK: 59:8: ParenExpr= Extent=[59:8 - 59:34] +// CHECK: 59:9: BinaryOperator=&& Extent=[59:9 - 59:33] +// CHECK: 59:9: BinaryOperator=>= Extent=[59:9 - 59:19] +// CHECK: 59:9: UnexposedExpr=c:2:14 Extent=[59:9 - 59:10] // CHECK: 59:9: DeclRefExpr=c:2:14 Extent=[59:9 - 59:10] // CHECK: 59:14: UnexposedExpr= Extent=[59:14 - 59:19] // CHECK: 59:14: IntegerLiteral= Extent=[59:14 - 59:19] -// CHECK: 59:23: BinaryOperator= Extent=[59:23 - 59:33] +// CHECK: 59:23: BinaryOperator=<= Extent=[59:23 - 59:33] +// CHECK: 59:23: UnexposedExpr=c:2:14 Extent=[59:23 - 59:24] // CHECK: 59:23: DeclRefExpr=c:2:14 Extent=[59:23 - 59:24] // CHECK: 59:28: UnexposedExpr= Extent=[59:28 - 59:33] // CHECK: 59:28: IntegerLiteral= Extent=[59:28 - 59:33] -// CHECK: 60:9: BinaryOperator= Extent=[60:9 - 60:33] -// CHECK: 60:9: BinaryOperator= Extent=[60:9 - 60:19] +// CHECK: 60:8: ParenExpr= Extent=[60:8 - 60:34] +// CHECK: 60:9: BinaryOperator=&& Extent=[60:9 - 60:33] +// CHECK: 60:9: BinaryOperator=>= Extent=[60:9 - 60:19] +// CHECK: 60:9: UnexposedExpr=c:2:14 Extent=[60:9 - 60:10] // CHECK: 60:9: DeclRefExpr=c:2:14 Extent=[60:9 - 60:10] // CHECK: 60:14: UnexposedExpr= Extent=[60:14 - 60:19] // CHECK: 60:14: IntegerLiteral= Extent=[60:14 - 60:19] -// CHECK: 60:23: BinaryOperator= Extent=[60:23 - 60:33] +// CHECK: 60:23: BinaryOperator=<= Extent=[60:23 - 60:33] +// CHECK: 60:23: UnexposedExpr=c:2:14 Extent=[60:23 - 60:24] // CHECK: 60:23: DeclRefExpr=c:2:14 Extent=[60:23 - 60:24] // CHECK: 60:28: UnexposedExpr= Extent=[60:28 - 60:33] // CHECK: 60:28: IntegerLiteral= Extent=[60:28 - 60:33] -// CHECK: 61:9: BinaryOperator= Extent=[61:9 - 61:33] -// CHECK: 61:9: BinaryOperator= Extent=[61:9 - 61:19] +// CHECK: 61:8: ParenExpr= Extent=[61:8 - 61:34] +// CHECK: 61:9: BinaryOperator=&& Extent=[61:9 - 61:33] +// CHECK: 61:9: BinaryOperator=>= Extent=[61:9 - 61:19] +// CHECK: 61:9: UnexposedExpr=c:2:14 Extent=[61:9 - 61:10] // CHECK: 61:9: DeclRefExpr=c:2:14 Extent=[61:9 - 61:10] // CHECK: 61:14: UnexposedExpr= Extent=[61:14 - 61:19] // CHECK: 61:14: IntegerLiteral= Extent=[61:14 - 61:19] -// CHECK: 61:23: BinaryOperator= Extent=[61:23 - 61:33] +// CHECK: 61:23: BinaryOperator=<= Extent=[61:23 - 61:33] +// CHECK: 61:23: UnexposedExpr=c:2:14 Extent=[61:23 - 61:24] // CHECK: 61:23: DeclRefExpr=c:2:14 Extent=[61:23 - 61:24] // CHECK: 61:28: UnexposedExpr= Extent=[61:28 - 61:33] // CHECK: 61:28: IntegerLiteral= Extent=[61:28 - 61:33] -// CHECK: 62:9: BinaryOperator= Extent=[62:9 - 62:33] -// CHECK: 62:9: BinaryOperator= Extent=[62:9 - 62:19] +// CHECK: 62:8: ParenExpr= Extent=[62:8 - 62:34] +// CHECK: 62:9: BinaryOperator=&& Extent=[62:9 - 62:33] +// CHECK: 62:9: BinaryOperator=>= Extent=[62:9 - 62:19] +// CHECK: 62:9: UnexposedExpr=c:2:14 Extent=[62:9 - 62:10] // CHECK: 62:9: DeclRefExpr=c:2:14 Extent=[62:9 - 62:10] // CHECK: 62:14: UnexposedExpr= Extent=[62:14 - 62:19] // CHECK: 62:14: IntegerLiteral= Extent=[62:14 - 62:19] -// CHECK: 62:23: BinaryOperator= Extent=[62:23 - 62:33] +// CHECK: 62:23: BinaryOperator=<= Extent=[62:23 - 62:33] +// CHECK: 62:23: UnexposedExpr=c:2:14 Extent=[62:23 - 62:24] // CHECK: 62:23: DeclRefExpr=c:2:14 Extent=[62:23 - 62:24] // CHECK: 62:28: UnexposedExpr= Extent=[62:28 - 62:33] // CHECK: 62:28: IntegerLiteral= Extent=[62:28 - 62:33] -// CHECK: 63:8: BinaryOperator= Extent=[63:8 - 63:18] +// CHECK: 63:8: BinaryOperator=== Extent=[63:8 - 63:18] +// CHECK: 63:8: UnexposedExpr=c:2:14 Extent=[63:8 - 63:9] // CHECK: 63:8: DeclRefExpr=c:2:14 Extent=[63:8 - 63:9] // CHECK: 63:13: UnexposedExpr= Extent=[63:13 - 63:18] // CHECK: 63:13: IntegerLiteral= Extent=[63:13 - 63:18] -// CHECK: 63:23: BinaryOperator= Extent=[63:23 - 63:47] -// CHECK: 63:23: BinaryOperator= Extent=[63:23 - 63:33] +// CHECK: 63:22: ParenExpr= Extent=[63:22 - 63:48] +// CHECK: 63:23: BinaryOperator=&& Extent=[63:23 - 63:47] +// CHECK: 63:23: BinaryOperator=>= Extent=[63:23 - 63:33] +// CHECK: 63:23: UnexposedExpr=c:2:14 Extent=[63:23 - 63:24] // CHECK: 63:23: DeclRefExpr=c:2:14 Extent=[63:23 - 63:24] // CHECK: 63:28: UnexposedExpr= Extent=[63:28 - 63:33] // CHECK: 63:28: IntegerLiteral= Extent=[63:28 - 63:33] -// CHECK: 63:37: BinaryOperator= Extent=[63:37 - 63:47] +// CHECK: 63:37: BinaryOperator=<= Extent=[63:37 - 63:47] +// CHECK: 63:37: UnexposedExpr=c:2:14 Extent=[63:37 - 63:38] // CHECK: 63:37: DeclRefExpr=c:2:14 Extent=[63:37 - 63:38] // CHECK: 63:42: UnexposedExpr= Extent=[63:42 - 63:47] // CHECK: 63:42: IntegerLiteral= Extent=[63:42 - 63:47] -// CHECK: 64:9: BinaryOperator= Extent=[64:9 - 64:33] -// CHECK: 64:9: BinaryOperator= Extent=[64:9 - 64:19] +// CHECK: 64:8: ParenExpr= Extent=[64:8 - 64:34] +// CHECK: 64:9: BinaryOperator=&& Extent=[64:9 - 64:33] +// CHECK: 64:9: BinaryOperator=>= Extent=[64:9 - 64:19] +// CHECK: 64:9: UnexposedExpr=c:2:14 Extent=[64:9 - 64:10] // CHECK: 64:9: DeclRefExpr=c:2:14 Extent=[64:9 - 64:10] // CHECK: 64:14: UnexposedExpr= Extent=[64:14 - 64:19] // CHECK: 64:14: IntegerLiteral= Extent=[64:14 - 64:19] -// CHECK: 64:23: BinaryOperator= Extent=[64:23 - 64:33] +// CHECK: 64:23: BinaryOperator=<= Extent=[64:23 - 64:33] +// CHECK: 64:23: UnexposedExpr=c:2:14 Extent=[64:23 - 64:24] // CHECK: 64:23: DeclRefExpr=c:2:14 Extent=[64:23 - 64:24] // CHECK: 64:28: UnexposedExpr= Extent=[64:28 - 64:33] // CHECK: 64:28: IntegerLiteral= Extent=[64:28 - 64:33] -// CHECK: 65:8: BinaryOperator= Extent=[65:8 - 65:18] +// CHECK: 65:8: BinaryOperator=== Extent=[65:8 - 65:18] +// CHECK: 65:8: UnexposedExpr=c:2:14 Extent=[65:8 - 65:9] // CHECK: 65:8: DeclRefExpr=c:2:14 Extent=[65:8 - 65:9] // CHECK: 65:13: UnexposedExpr= Extent=[65:13 - 65:18] // CHECK: 65:13: IntegerLiteral= Extent=[65:13 - 65:18] -// CHECK: 65:23: BinaryOperator= Extent=[65:23 - 65:47] -// CHECK: 65:23: BinaryOperator= Extent=[65:23 - 65:33] +// CHECK: 65:22: ParenExpr= Extent=[65:22 - 65:48] +// CHECK: 65:23: BinaryOperator=&& Extent=[65:23 - 65:47] +// CHECK: 65:23: BinaryOperator=>= Extent=[65:23 - 65:33] +// CHECK: 65:23: UnexposedExpr=c:2:14 Extent=[65:23 - 65:24] // CHECK: 65:23: DeclRefExpr=c:2:14 Extent=[65:23 - 65:24] // CHECK: 65:28: UnexposedExpr= Extent=[65:28 - 65:33] // CHECK: 65:28: IntegerLiteral= Extent=[65:28 - 65:33] -// CHECK: 65:37: BinaryOperator= Extent=[65:37 - 65:47] +// CHECK: 65:37: BinaryOperator=<= Extent=[65:37 - 65:47] +// CHECK: 65:37: UnexposedExpr=c:2:14 Extent=[65:37 - 65:38] // CHECK: 65:37: DeclRefExpr=c:2:14 Extent=[65:37 - 65:38] // CHECK: 65:42: UnexposedExpr= Extent=[65:42 - 65:47] // CHECK: 65:42: IntegerLiteral= Extent=[65:42 - 65:47] -// CHECK: 66:9: BinaryOperator= Extent=[66:9 - 66:33] -// CHECK: 66:9: BinaryOperator= Extent=[66:9 - 66:19] +// CHECK: 66:8: ParenExpr= Extent=[66:8 - 66:34] +// CHECK: 66:9: BinaryOperator=&& Extent=[66:9 - 66:33] +// CHECK: 66:9: BinaryOperator=>= Extent=[66:9 - 66:19] +// CHECK: 66:9: UnexposedExpr=c:2:14 Extent=[66:9 - 66:10] // CHECK: 66:9: DeclRefExpr=c:2:14 Extent=[66:9 - 66:10] // CHECK: 66:14: UnexposedExpr= Extent=[66:14 - 66:19] // CHECK: 66:14: IntegerLiteral= Extent=[66:14 - 66:19] -// CHECK: 66:23: BinaryOperator= Extent=[66:23 - 66:33] +// CHECK: 66:23: BinaryOperator=<= Extent=[66:23 - 66:33] +// CHECK: 66:23: UnexposedExpr=c:2:14 Extent=[66:23 - 66:24] // CHECK: 66:23: DeclRefExpr=c:2:14 Extent=[66:23 - 66:24] // CHECK: 66:28: UnexposedExpr= Extent=[66:28 - 66:33] // CHECK: 66:28: IntegerLiteral= Extent=[66:28 - 66:33] -// CHECK: 67:9: BinaryOperator= Extent=[67:9 - 67:33] -// CHECK: 67:9: BinaryOperator= Extent=[67:9 - 67:19] +// CHECK: 67:8: ParenExpr= Extent=[67:8 - 67:34] +// CHECK: 67:9: BinaryOperator=&& Extent=[67:9 - 67:33] +// CHECK: 67:9: BinaryOperator=>= Extent=[67:9 - 67:19] +// CHECK: 67:9: UnexposedExpr=c:2:14 Extent=[67:9 - 67:10] // CHECK: 67:9: DeclRefExpr=c:2:14 Extent=[67:9 - 67:10] // CHECK: 67:14: UnexposedExpr= Extent=[67:14 - 67:19] // CHECK: 67:14: IntegerLiteral= Extent=[67:14 - 67:19] -// CHECK: 67:23: BinaryOperator= Extent=[67:23 - 67:33] +// CHECK: 67:23: BinaryOperator=<= Extent=[67:23 - 67:33] +// CHECK: 67:23: UnexposedExpr=c:2:14 Extent=[67:23 - 67:24] // CHECK: 67:23: DeclRefExpr=c:2:14 Extent=[67:23 - 67:24] // CHECK: 67:28: UnexposedExpr= Extent=[67:28 - 67:33] // CHECK: 67:28: IntegerLiteral= Extent=[67:28 - 67:33] -// CHECK: 68:9: BinaryOperator= Extent=[68:9 - 68:33] -// CHECK: 68:9: BinaryOperator= Extent=[68:9 - 68:19] +// CHECK: 68:8: ParenExpr= Extent=[68:8 - 68:34] +// CHECK: 68:9: BinaryOperator=&& Extent=[68:9 - 68:33] +// CHECK: 68:9: BinaryOperator=>= Extent=[68:9 - 68:19] +// CHECK: 68:9: UnexposedExpr=c:2:14 Extent=[68:9 - 68:10] // CHECK: 68:9: DeclRefExpr=c:2:14 Extent=[68:9 - 68:10] // CHECK: 68:14: UnexposedExpr= Extent=[68:14 - 68:19] // CHECK: 68:14: IntegerLiteral= Extent=[68:14 - 68:19] -// CHECK: 68:23: BinaryOperator= Extent=[68:23 - 68:33] +// CHECK: 68:23: BinaryOperator=<= Extent=[68:23 - 68:33] +// CHECK: 68:23: UnexposedExpr=c:2:14 Extent=[68:23 - 68:24] // CHECK: 68:23: DeclRefExpr=c:2:14 Extent=[68:23 - 68:24] // CHECK: 68:28: UnexposedExpr= Extent=[68:28 - 68:33] // CHECK: 68:28: IntegerLiteral= Extent=[68:28 - 68:33] -// CHECK: 69:9: BinaryOperator= Extent=[69:9 - 69:33] -// CHECK: 69:9: BinaryOperator= Extent=[69:9 - 69:19] +// CHECK: 69:8: ParenExpr= Extent=[69:8 - 69:34] +// CHECK: 69:9: BinaryOperator=&& Extent=[69:9 - 69:33] +// CHECK: 69:9: BinaryOperator=>= Extent=[69:9 - 69:19] +// CHECK: 69:9: UnexposedExpr=c:2:14 Extent=[69:9 - 69:10] // CHECK: 69:9: DeclRefExpr=c:2:14 Extent=[69:9 - 69:10] // CHECK: 69:14: UnexposedExpr= Extent=[69:14 - 69:19] // CHECK: 69:14: IntegerLiteral= Extent=[69:14 - 69:19] -// CHECK: 69:23: BinaryOperator= Extent=[69:23 - 69:33] +// CHECK: 69:23: BinaryOperator=<= Extent=[69:23 - 69:33] +// CHECK: 69:23: UnexposedExpr=c:2:14 Extent=[69:23 - 69:24] // CHECK: 69:23: DeclRefExpr=c:2:14 Extent=[69:23 - 69:24] // CHECK: 69:28: UnexposedExpr= Extent=[69:28 - 69:33] // CHECK: 69:28: IntegerLiteral= Extent=[69:28 - 69:33] -// CHECK: 70:8: BinaryOperator= Extent=[70:8 - 70:18] +// CHECK: 70:8: BinaryOperator=== Extent=[70:8 - 70:18] +// CHECK: 70:8: UnexposedExpr=c:2:14 Extent=[70:8 - 70:9] // CHECK: 70:8: DeclRefExpr=c:2:14 Extent=[70:8 - 70:9] // CHECK: 70:13: UnexposedExpr= Extent=[70:13 - 70:18] // CHECK: 70:13: IntegerLiteral= Extent=[70:13 - 70:18] -// CHECK: 70:22: BinaryOperator= Extent=[70:22 - 70:32] +// CHECK: 70:22: BinaryOperator=== Extent=[70:22 - 70:32] +// CHECK: 70:22: UnexposedExpr=c:2:14 Extent=[70:22 - 70:23] // CHECK: 70:22: DeclRefExpr=c:2:14 Extent=[70:22 - 70:23] // CHECK: 70:27: UnexposedExpr= Extent=[70:27 - 70:32] // CHECK: 70:27: IntegerLiteral= Extent=[70:27 - 70:32] -// CHECK: 70:37: BinaryOperator= Extent=[70:37 - 70:61] -// CHECK: 70:37: BinaryOperator= Extent=[70:37 - 70:47] +// CHECK: 70:36: ParenExpr= Extent=[70:36 - 70:62] +// CHECK: 70:37: BinaryOperator=&& Extent=[70:37 - 70:61] +// CHECK: 70:37: BinaryOperator=>= Extent=[70:37 - 70:47] +// CHECK: 70:37: UnexposedExpr=c:2:14 Extent=[70:37 - 70:38] // CHECK: 70:37: DeclRefExpr=c:2:14 Extent=[70:37 - 70:38] // CHECK: 70:42: UnexposedExpr= Extent=[70:42 - 70:47] // CHECK: 70:42: IntegerLiteral= Extent=[70:42 - 70:47] -// CHECK: 70:51: BinaryOperator= Extent=[70:51 - 70:61] +// CHECK: 70:51: BinaryOperator=<= Extent=[70:51 - 70:61] +// CHECK: 70:51: UnexposedExpr=c:2:14 Extent=[70:51 - 70:52] // CHECK: 70:51: DeclRefExpr=c:2:14 Extent=[70:51 - 70:52] // CHECK: 70:56: UnexposedExpr= Extent=[70:56 - 70:61] // CHECK: 70:56: IntegerLiteral= Extent=[70:56 - 70:61] -// CHECK: 71:9: BinaryOperator= Extent=[71:9 - 71:33] -// CHECK: 71:9: BinaryOperator= Extent=[71:9 - 71:19] +// CHECK: 71:8: ParenExpr= Extent=[71:8 - 71:34] +// CHECK: 71:9: BinaryOperator=&& Extent=[71:9 - 71:33] +// CHECK: 71:9: BinaryOperator=>= Extent=[71:9 - 71:19] +// CHECK: 71:9: UnexposedExpr=c:2:14 Extent=[71:9 - 71:10] // CHECK: 71:9: DeclRefExpr=c:2:14 Extent=[71:9 - 71:10] // CHECK: 71:14: UnexposedExpr= Extent=[71:14 - 71:19] // CHECK: 71:14: IntegerLiteral= Extent=[71:14 - 71:19] -// CHECK: 71:23: BinaryOperator= Extent=[71:23 - 71:33] +// CHECK: 71:23: BinaryOperator=<= Extent=[71:23 - 71:33] +// CHECK: 71:23: UnexposedExpr=c:2:14 Extent=[71:23 - 71:24] // CHECK: 71:23: DeclRefExpr=c:2:14 Extent=[71:23 - 71:24] // CHECK: 71:28: UnexposedExpr= Extent=[71:28 - 71:33] // CHECK: 71:28: IntegerLiteral= Extent=[71:28 - 71:33] -// CHECK: 72:9: BinaryOperator= Extent=[72:9 - 72:33] -// CHECK: 72:9: BinaryOperator= Extent=[72:9 - 72:19] +// CHECK: 72:8: ParenExpr= Extent=[72:8 - 72:34] +// CHECK: 72:9: BinaryOperator=&& Extent=[72:9 - 72:33] +// CHECK: 72:9: BinaryOperator=>= Extent=[72:9 - 72:19] +// CHECK: 72:9: UnexposedExpr=c:2:14 Extent=[72:9 - 72:10] // CHECK: 72:9: DeclRefExpr=c:2:14 Extent=[72:9 - 72:10] // CHECK: 72:14: UnexposedExpr= Extent=[72:14 - 72:19] // CHECK: 72:14: IntegerLiteral= Extent=[72:14 - 72:19] -// CHECK: 72:23: BinaryOperator= Extent=[72:23 - 72:33] +// CHECK: 72:23: BinaryOperator=<= Extent=[72:23 - 72:33] +// CHECK: 72:23: UnexposedExpr=c:2:14 Extent=[72:23 - 72:24] // CHECK: 72:23: DeclRefExpr=c:2:14 Extent=[72:23 - 72:24] // CHECK: 72:28: UnexposedExpr= Extent=[72:28 - 72:33] // CHECK: 72:28: IntegerLiteral= Extent=[72:28 - 72:33] -// CHECK: 73:9: BinaryOperator= Extent=[73:9 - 73:33] -// CHECK: 73:9: BinaryOperator= Extent=[73:9 - 73:19] +// CHECK: 73:8: ParenExpr= Extent=[73:8 - 73:34] +// CHECK: 73:9: BinaryOperator=&& Extent=[73:9 - 73:33] +// CHECK: 73:9: BinaryOperator=>= Extent=[73:9 - 73:19] +// CHECK: 73:9: UnexposedExpr=c:2:14 Extent=[73:9 - 73:10] // CHECK: 73:9: DeclRefExpr=c:2:14 Extent=[73:9 - 73:10] // CHECK: 73:14: UnexposedExpr= Extent=[73:14 - 73:19] // CHECK: 73:14: IntegerLiteral= Extent=[73:14 - 73:19] -// CHECK: 73:23: BinaryOperator= Extent=[73:23 - 73:33] +// CHECK: 73:23: BinaryOperator=<= Extent=[73:23 - 73:33] +// CHECK: 73:23: UnexposedExpr=c:2:14 Extent=[73:23 - 73:24] // CHECK: 73:23: DeclRefExpr=c:2:14 Extent=[73:23 - 73:24] // CHECK: 73:28: UnexposedExpr= Extent=[73:28 - 73:33] // CHECK: 73:28: IntegerLiteral= Extent=[73:28 - 73:33] -// CHECK: 74:9: BinaryOperator= Extent=[74:9 - 74:33] -// CHECK: 74:9: BinaryOperator= Extent=[74:9 - 74:19] +// CHECK: 74:8: ParenExpr= Extent=[74:8 - 74:34] +// CHECK: 74:9: BinaryOperator=&& Extent=[74:9 - 74:33] +// CHECK: 74:9: BinaryOperator=>= Extent=[74:9 - 74:19] +// CHECK: 74:9: UnexposedExpr=c:2:14 Extent=[74:9 - 74:10] // CHECK: 74:9: DeclRefExpr=c:2:14 Extent=[74:9 - 74:10] // CHECK: 74:14: UnexposedExpr= Extent=[74:14 - 74:19] // CHECK: 74:14: IntegerLiteral= Extent=[74:14 - 74:19] -// CHECK: 74:23: BinaryOperator= Extent=[74:23 - 74:33] +// CHECK: 74:23: BinaryOperator=<= Extent=[74:23 - 74:33] +// CHECK: 74:23: UnexposedExpr=c:2:14 Extent=[74:23 - 74:24] // CHECK: 74:23: DeclRefExpr=c:2:14 Extent=[74:23 - 74:24] // CHECK: 74:28: UnexposedExpr= Extent=[74:28 - 74:33] // CHECK: 74:28: IntegerLiteral= Extent=[74:28 - 74:33] -// CHECK: 75:9: BinaryOperator= Extent=[75:9 - 75:33] -// CHECK: 75:9: BinaryOperator= Extent=[75:9 - 75:19] +// CHECK: 75:8: ParenExpr= Extent=[75:8 - 75:34] +// CHECK: 75:9: BinaryOperator=&& Extent=[75:9 - 75:33] +// CHECK: 75:9: BinaryOperator=>= Extent=[75:9 - 75:19] +// CHECK: 75:9: UnexposedExpr=c:2:14 Extent=[75:9 - 75:10] // CHECK: 75:9: DeclRefExpr=c:2:14 Extent=[75:9 - 75:10] // CHECK: 75:14: UnexposedExpr= Extent=[75:14 - 75:19] // CHECK: 75:14: IntegerLiteral= Extent=[75:14 - 75:19] -// CHECK: 75:23: BinaryOperator= Extent=[75:23 - 75:33] +// CHECK: 75:23: BinaryOperator=<= Extent=[75:23 - 75:33] +// CHECK: 75:23: UnexposedExpr=c:2:14 Extent=[75:23 - 75:24] // CHECK: 75:23: DeclRefExpr=c:2:14 Extent=[75:23 - 75:24] // CHECK: 75:28: UnexposedExpr= Extent=[75:28 - 75:33] // CHECK: 75:28: IntegerLiteral= Extent=[75:28 - 75:33] -// CHECK: 76:8: BinaryOperator= Extent=[76:8 - 76:18] +// CHECK: 76:8: BinaryOperator=== Extent=[76:8 - 76:18] +// CHECK: 76:8: UnexposedExpr=c:2:14 Extent=[76:8 - 76:9] // CHECK: 76:8: DeclRefExpr=c:2:14 Extent=[76:8 - 76:9] // CHECK: 76:13: UnexposedExpr= Extent=[76:13 - 76:18] // CHECK: 76:13: IntegerLiteral= Extent=[76:13 - 76:18] -// CHECK: 76:23: BinaryOperator= Extent=[76:23 - 76:47] -// CHECK: 76:23: BinaryOperator= Extent=[76:23 - 76:33] +// CHECK: 76:22: ParenExpr= Extent=[76:22 - 76:48] +// CHECK: 76:23: BinaryOperator=&& Extent=[76:23 - 76:47] +// CHECK: 76:23: BinaryOperator=>= Extent=[76:23 - 76:33] +// CHECK: 76:23: UnexposedExpr=c:2:14 Extent=[76:23 - 76:24] // CHECK: 76:23: DeclRefExpr=c:2:14 Extent=[76:23 - 76:24] // CHECK: 76:28: UnexposedExpr= Extent=[76:28 - 76:33] // CHECK: 76:28: IntegerLiteral= Extent=[76:28 - 76:33] -// CHECK: 76:37: BinaryOperator= Extent=[76:37 - 76:47] +// CHECK: 76:37: BinaryOperator=<= Extent=[76:37 - 76:47] +// CHECK: 76:37: UnexposedExpr=c:2:14 Extent=[76:37 - 76:38] // CHECK: 76:37: DeclRefExpr=c:2:14 Extent=[76:37 - 76:38] // CHECK: 76:42: UnexposedExpr= Extent=[76:42 - 76:47] // CHECK: 76:42: IntegerLiteral= Extent=[76:42 - 76:47] -// CHECK: 77:9: BinaryOperator= Extent=[77:9 - 77:33] -// CHECK: 77:9: BinaryOperator= Extent=[77:9 - 77:19] +// CHECK: 77:8: ParenExpr= Extent=[77:8 - 77:34] +// CHECK: 77:9: BinaryOperator=&& Extent=[77:9 - 77:33] +// CHECK: 77:9: BinaryOperator=>= Extent=[77:9 - 77:19] +// CHECK: 77:9: UnexposedExpr=c:2:14 Extent=[77:9 - 77:10] // CHECK: 77:9: DeclRefExpr=c:2:14 Extent=[77:9 - 77:10] // CHECK: 77:14: UnexposedExpr= Extent=[77:14 - 77:19] // CHECK: 77:14: IntegerLiteral= Extent=[77:14 - 77:19] -// CHECK: 77:23: BinaryOperator= Extent=[77:23 - 77:33] +// CHECK: 77:23: BinaryOperator=<= Extent=[77:23 - 77:33] +// CHECK: 77:23: UnexposedExpr=c:2:14 Extent=[77:23 - 77:24] // CHECK: 77:23: DeclRefExpr=c:2:14 Extent=[77:23 - 77:24] // CHECK: 77:28: UnexposedExpr= Extent=[77:28 - 77:33] // CHECK: 77:28: IntegerLiteral= Extent=[77:28 - 77:33] -// CHECK: 78:9: BinaryOperator= Extent=[78:9 - 78:33] -// CHECK: 78:9: BinaryOperator= Extent=[78:9 - 78:19] +// CHECK: 78:8: ParenExpr= Extent=[78:8 - 78:34] +// CHECK: 78:9: BinaryOperator=&& Extent=[78:9 - 78:33] +// CHECK: 78:9: BinaryOperator=>= Extent=[78:9 - 78:19] +// CHECK: 78:9: UnexposedExpr=c:2:14 Extent=[78:9 - 78:10] // CHECK: 78:9: DeclRefExpr=c:2:14 Extent=[78:9 - 78:10] // CHECK: 78:14: UnexposedExpr= Extent=[78:14 - 78:19] // CHECK: 78:14: IntegerLiteral= Extent=[78:14 - 78:19] -// CHECK: 78:23: BinaryOperator= Extent=[78:23 - 78:33] +// CHECK: 78:23: BinaryOperator=<= Extent=[78:23 - 78:33] +// CHECK: 78:23: UnexposedExpr=c:2:14 Extent=[78:23 - 78:24] // CHECK: 78:23: DeclRefExpr=c:2:14 Extent=[78:23 - 78:24] // CHECK: 78:28: UnexposedExpr= Extent=[78:28 - 78:33] // CHECK: 78:28: IntegerLiteral= Extent=[78:28 - 78:33] -// CHECK: 79:9: BinaryOperator= Extent=[79:9 - 79:33] -// CHECK: 79:9: BinaryOperator= Extent=[79:9 - 79:19] +// CHECK: 79:8: ParenExpr= Extent=[79:8 - 79:34] +// CHECK: 79:9: BinaryOperator=&& Extent=[79:9 - 79:33] +// CHECK: 79:9: BinaryOperator=>= Extent=[79:9 - 79:19] +// CHECK: 79:9: UnexposedExpr=c:2:14 Extent=[79:9 - 79:10] // CHECK: 79:9: DeclRefExpr=c:2:14 Extent=[79:9 - 79:10] // CHECK: 79:14: UnexposedExpr= Extent=[79:14 - 79:19] // CHECK: 79:14: IntegerLiteral= Extent=[79:14 - 79:19] -// CHECK: 79:23: BinaryOperator= Extent=[79:23 - 79:33] +// CHECK: 79:23: BinaryOperator=<= Extent=[79:23 - 79:33] +// CHECK: 79:23: UnexposedExpr=c:2:14 Extent=[79:23 - 79:24] // CHECK: 79:23: DeclRefExpr=c:2:14 Extent=[79:23 - 79:24] // CHECK: 79:28: UnexposedExpr= Extent=[79:28 - 79:33] // CHECK: 79:28: IntegerLiteral= Extent=[79:28 - 79:33] -// CHECK: 80:9: BinaryOperator= Extent=[80:9 - 80:33] -// CHECK: 80:9: BinaryOperator= Extent=[80:9 - 80:19] +// CHECK: 80:8: ParenExpr= Extent=[80:8 - 80:34] +// CHECK: 80:9: BinaryOperator=&& Extent=[80:9 - 80:33] +// CHECK: 80:9: BinaryOperator=>= Extent=[80:9 - 80:19] +// CHECK: 80:9: UnexposedExpr=c:2:14 Extent=[80:9 - 80:10] // CHECK: 80:9: DeclRefExpr=c:2:14 Extent=[80:9 - 80:10] // CHECK: 80:14: UnexposedExpr= Extent=[80:14 - 80:19] // CHECK: 80:14: IntegerLiteral= Extent=[80:14 - 80:19] -// CHECK: 80:23: BinaryOperator= Extent=[80:23 - 80:33] +// CHECK: 80:23: BinaryOperator=<= Extent=[80:23 - 80:33] +// CHECK: 80:23: UnexposedExpr=c:2:14 Extent=[80:23 - 80:24] // CHECK: 80:23: DeclRefExpr=c:2:14 Extent=[80:23 - 80:24] // CHECK: 80:28: UnexposedExpr= Extent=[80:28 - 80:33] // CHECK: 80:28: IntegerLiteral= Extent=[80:28 - 80:33] -// CHECK: 81:9: BinaryOperator= Extent=[81:9 - 81:33] -// CHECK: 81:9: BinaryOperator= Extent=[81:9 - 81:19] +// CHECK: 81:8: ParenExpr= Extent=[81:8 - 81:34] +// CHECK: 81:9: BinaryOperator=&& Extent=[81:9 - 81:33] +// CHECK: 81:9: BinaryOperator=>= Extent=[81:9 - 81:19] +// CHECK: 81:9: UnexposedExpr=c:2:14 Extent=[81:9 - 81:10] // CHECK: 81:9: DeclRefExpr=c:2:14 Extent=[81:9 - 81:10] // CHECK: 81:14: UnexposedExpr= Extent=[81:14 - 81:19] // CHECK: 81:14: IntegerLiteral= Extent=[81:14 - 81:19] -// CHECK: 81:23: BinaryOperator= Extent=[81:23 - 81:33] +// CHECK: 81:23: BinaryOperator=<= Extent=[81:23 - 81:33] +// CHECK: 81:23: UnexposedExpr=c:2:14 Extent=[81:23 - 81:24] // CHECK: 81:23: DeclRefExpr=c:2:14 Extent=[81:23 - 81:24] // CHECK: 81:28: UnexposedExpr= Extent=[81:28 - 81:33] // CHECK: 81:28: IntegerLiteral= Extent=[81:28 - 81:33] -// CHECK: 82:8: BinaryOperator= Extent=[82:8 - 82:18] +// CHECK: 82:8: BinaryOperator=== Extent=[82:8 - 82:18] +// CHECK: 82:8: UnexposedExpr=c:2:14 Extent=[82:8 - 82:9] // CHECK: 82:8: DeclRefExpr=c:2:14 Extent=[82:8 - 82:9] // CHECK: 82:13: UnexposedExpr= Extent=[82:13 - 82:18] // CHECK: 82:13: IntegerLiteral= Extent=[82:13 - 82:18] -// CHECK: 82:23: BinaryOperator= Extent=[82:23 - 82:47] -// CHECK: 82:23: BinaryOperator= Extent=[82:23 - 82:33] +// CHECK: 82:22: ParenExpr= Extent=[82:22 - 82:48] +// CHECK: 82:23: BinaryOperator=&& Extent=[82:23 - 82:47] +// CHECK: 82:23: BinaryOperator=>= Extent=[82:23 - 82:33] +// CHECK: 82:23: UnexposedExpr=c:2:14 Extent=[82:23 - 82:24] // CHECK: 82:23: DeclRefExpr=c:2:14 Extent=[82:23 - 82:24] // CHECK: 82:28: UnexposedExpr= Extent=[82:28 - 82:33] // CHECK: 82:28: IntegerLiteral= Extent=[82:28 - 82:33] -// CHECK: 82:37: BinaryOperator= Extent=[82:37 - 82:47] +// CHECK: 82:37: BinaryOperator=<= Extent=[82:37 - 82:47] +// CHECK: 82:37: UnexposedExpr=c:2:14 Extent=[82:37 - 82:38] // CHECK: 82:37: DeclRefExpr=c:2:14 Extent=[82:37 - 82:38] // CHECK: 82:42: UnexposedExpr= Extent=[82:42 - 82:47] // CHECK: 82:42: IntegerLiteral= Extent=[82:42 - 82:47] -// CHECK: 83:9: BinaryOperator= Extent=[83:9 - 83:33] -// CHECK: 83:9: BinaryOperator= Extent=[83:9 - 83:19] +// CHECK: 83:8: ParenExpr= Extent=[83:8 - 83:34] +// CHECK: 83:9: BinaryOperator=&& Extent=[83:9 - 83:33] +// CHECK: 83:9: BinaryOperator=>= Extent=[83:9 - 83:19] +// CHECK: 83:9: UnexposedExpr=c:2:14 Extent=[83:9 - 83:10] // CHECK: 83:9: DeclRefExpr=c:2:14 Extent=[83:9 - 83:10] // CHECK: 83:14: UnexposedExpr= Extent=[83:14 - 83:19] // CHECK: 83:14: IntegerLiteral= Extent=[83:14 - 83:19] -// CHECK: 83:23: BinaryOperator= Extent=[83:23 - 83:33] +// CHECK: 83:23: BinaryOperator=<= Extent=[83:23 - 83:33] +// CHECK: 83:23: UnexposedExpr=c:2:14 Extent=[83:23 - 83:24] // CHECK: 83:23: DeclRefExpr=c:2:14 Extent=[83:23 - 83:24] // CHECK: 83:28: UnexposedExpr= Extent=[83:28 - 83:33] // CHECK: 83:28: IntegerLiteral= Extent=[83:28 - 83:33] -// CHECK: 84:9: BinaryOperator= Extent=[84:9 - 84:33] -// CHECK: 84:9: BinaryOperator= Extent=[84:9 - 84:19] +// CHECK: 84:8: ParenExpr= Extent=[84:8 - 84:34] +// CHECK: 84:9: BinaryOperator=&& Extent=[84:9 - 84:33] +// CHECK: 84:9: BinaryOperator=>= Extent=[84:9 - 84:19] +// CHECK: 84:9: UnexposedExpr=c:2:14 Extent=[84:9 - 84:10] // CHECK: 84:9: DeclRefExpr=c:2:14 Extent=[84:9 - 84:10] // CHECK: 84:14: UnexposedExpr= Extent=[84:14 - 84:19] // CHECK: 84:14: IntegerLiteral= Extent=[84:14 - 84:19] -// CHECK: 84:23: BinaryOperator= Extent=[84:23 - 84:33] +// CHECK: 84:23: BinaryOperator=<= Extent=[84:23 - 84:33] +// CHECK: 84:23: UnexposedExpr=c:2:14 Extent=[84:23 - 84:24] // CHECK: 84:23: DeclRefExpr=c:2:14 Extent=[84:23 - 84:24] // CHECK: 84:28: UnexposedExpr= Extent=[84:28 - 84:33] // CHECK: 84:28: IntegerLiteral= Extent=[84:28 - 84:33] -// CHECK: 85:9: BinaryOperator= Extent=[85:9 - 85:33] -// CHECK: 85:9: BinaryOperator= Extent=[85:9 - 85:19] +// CHECK: 85:8: ParenExpr= Extent=[85:8 - 85:34] +// CHECK: 85:9: BinaryOperator=&& Extent=[85:9 - 85:33] +// CHECK: 85:9: BinaryOperator=>= Extent=[85:9 - 85:19] +// CHECK: 85:9: UnexposedExpr=c:2:14 Extent=[85:9 - 85:10] // CHECK: 85:9: DeclRefExpr=c:2:14 Extent=[85:9 - 85:10] // CHECK: 85:14: UnexposedExpr= Extent=[85:14 - 85:19] // CHECK: 85:14: IntegerLiteral= Extent=[85:14 - 85:19] -// CHECK: 85:23: BinaryOperator= Extent=[85:23 - 85:33] +// CHECK: 85:23: BinaryOperator=<= Extent=[85:23 - 85:33] +// CHECK: 85:23: UnexposedExpr=c:2:14 Extent=[85:23 - 85:24] // CHECK: 85:23: DeclRefExpr=c:2:14 Extent=[85:23 - 85:24] // CHECK: 85:28: UnexposedExpr= Extent=[85:28 - 85:33] // CHECK: 85:28: IntegerLiteral= Extent=[85:28 - 85:33] -// CHECK: 86:9: BinaryOperator= Extent=[86:9 - 86:33] -// CHECK: 86:9: BinaryOperator= Extent=[86:9 - 86:19] +// CHECK: 86:8: ParenExpr= Extent=[86:8 - 86:34] +// CHECK: 86:9: BinaryOperator=&& Extent=[86:9 - 86:33] +// CHECK: 86:9: BinaryOperator=>= Extent=[86:9 - 86:19] +// CHECK: 86:9: UnexposedExpr=c:2:14 Extent=[86:9 - 86:10] // CHECK: 86:9: DeclRefExpr=c:2:14 Extent=[86:9 - 86:10] // CHECK: 86:14: UnexposedExpr= Extent=[86:14 - 86:19] // CHECK: 86:14: IntegerLiteral= Extent=[86:14 - 86:19] -// CHECK: 86:23: BinaryOperator= Extent=[86:23 - 86:33] +// CHECK: 86:23: BinaryOperator=<= Extent=[86:23 - 86:33] +// CHECK: 86:23: UnexposedExpr=c:2:14 Extent=[86:23 - 86:24] // CHECK: 86:23: DeclRefExpr=c:2:14 Extent=[86:23 - 86:24] // CHECK: 86:28: UnexposedExpr= Extent=[86:28 - 86:33] // CHECK: 86:28: IntegerLiteral= Extent=[86:28 - 86:33] -// CHECK: 87:9: BinaryOperator= Extent=[87:9 - 87:33] -// CHECK: 87:9: BinaryOperator= Extent=[87:9 - 87:19] +// CHECK: 87:8: ParenExpr= Extent=[87:8 - 87:34] +// CHECK: 87:9: BinaryOperator=&& Extent=[87:9 - 87:33] +// CHECK: 87:9: BinaryOperator=>= Extent=[87:9 - 87:19] +// CHECK: 87:9: UnexposedExpr=c:2:14 Extent=[87:9 - 87:10] // CHECK: 87:9: DeclRefExpr=c:2:14 Extent=[87:9 - 87:10] // CHECK: 87:14: UnexposedExpr= Extent=[87:14 - 87:19] // CHECK: 87:14: IntegerLiteral= Extent=[87:14 - 87:19] -// CHECK: 87:23: BinaryOperator= Extent=[87:23 - 87:33] +// CHECK: 87:23: BinaryOperator=<= Extent=[87:23 - 87:33] +// CHECK: 87:23: UnexposedExpr=c:2:14 Extent=[87:23 - 87:24] // CHECK: 87:23: DeclRefExpr=c:2:14 Extent=[87:23 - 87:24] // CHECK: 87:28: UnexposedExpr= Extent=[87:28 - 87:33] // CHECK: 87:28: IntegerLiteral= Extent=[87:28 - 87:33] -// CHECK: 88:9: BinaryOperator= Extent=[88:9 - 88:33] -// CHECK: 88:9: BinaryOperator= Extent=[88:9 - 88:19] +// CHECK: 88:8: ParenExpr= Extent=[88:8 - 88:34] +// CHECK: 88:9: BinaryOperator=&& Extent=[88:9 - 88:33] +// CHECK: 88:9: BinaryOperator=>= Extent=[88:9 - 88:19] +// CHECK: 88:9: UnexposedExpr=c:2:14 Extent=[88:9 - 88:10] // CHECK: 88:9: DeclRefExpr=c:2:14 Extent=[88:9 - 88:10] // CHECK: 88:14: UnexposedExpr= Extent=[88:14 - 88:19] // CHECK: 88:14: IntegerLiteral= Extent=[88:14 - 88:19] -// CHECK: 88:23: BinaryOperator= Extent=[88:23 - 88:33] +// CHECK: 88:23: BinaryOperator=<= Extent=[88:23 - 88:33] +// CHECK: 88:23: UnexposedExpr=c:2:14 Extent=[88:23 - 88:24] // CHECK: 88:23: DeclRefExpr=c:2:14 Extent=[88:23 - 88:24] // CHECK: 88:28: UnexposedExpr= Extent=[88:28 - 88:33] // CHECK: 88:28: IntegerLiteral= Extent=[88:28 - 88:33] -// CHECK: 89:9: BinaryOperator= Extent=[89:9 - 89:33] -// CHECK: 89:9: BinaryOperator= Extent=[89:9 - 89:19] +// CHECK: 89:8: ParenExpr= Extent=[89:8 - 89:34] +// CHECK: 89:9: BinaryOperator=&& Extent=[89:9 - 89:33] +// CHECK: 89:9: BinaryOperator=>= Extent=[89:9 - 89:19] +// CHECK: 89:9: UnexposedExpr=c:2:14 Extent=[89:9 - 89:10] // CHECK: 89:9: DeclRefExpr=c:2:14 Extent=[89:9 - 89:10] // CHECK: 89:14: UnexposedExpr= Extent=[89:14 - 89:19] // CHECK: 89:14: IntegerLiteral= Extent=[89:14 - 89:19] -// CHECK: 89:23: BinaryOperator= Extent=[89:23 - 89:33] +// CHECK: 89:23: BinaryOperator=<= Extent=[89:23 - 89:33] +// CHECK: 89:23: UnexposedExpr=c:2:14 Extent=[89:23 - 89:24] // CHECK: 89:23: DeclRefExpr=c:2:14 Extent=[89:23 - 89:24] // CHECK: 89:28: UnexposedExpr= Extent=[89:28 - 89:33] // CHECK: 89:28: IntegerLiteral= Extent=[89:28 - 89:33] -// CHECK: 90:9: BinaryOperator= Extent=[90:9 - 90:33] -// CHECK: 90:9: BinaryOperator= Extent=[90:9 - 90:19] +// CHECK: 90:8: ParenExpr= Extent=[90:8 - 90:34] +// CHECK: 90:9: BinaryOperator=&& Extent=[90:9 - 90:33] +// CHECK: 90:9: BinaryOperator=>= Extent=[90:9 - 90:19] +// CHECK: 90:9: UnexposedExpr=c:2:14 Extent=[90:9 - 90:10] // CHECK: 90:9: DeclRefExpr=c:2:14 Extent=[90:9 - 90:10] // CHECK: 90:14: UnexposedExpr= Extent=[90:14 - 90:19] // CHECK: 90:14: IntegerLiteral= Extent=[90:14 - 90:19] -// CHECK: 90:23: BinaryOperator= Extent=[90:23 - 90:33] +// CHECK: 90:23: BinaryOperator=<= Extent=[90:23 - 90:33] +// CHECK: 90:23: UnexposedExpr=c:2:14 Extent=[90:23 - 90:24] // CHECK: 90:23: DeclRefExpr=c:2:14 Extent=[90:23 - 90:24] // CHECK: 90:28: UnexposedExpr= Extent=[90:28 - 90:33] // CHECK: 90:28: IntegerLiteral= Extent=[90:28 - 90:33] -// CHECK: 91:9: BinaryOperator= Extent=[91:9 - 91:33] -// CHECK: 91:9: BinaryOperator= Extent=[91:9 - 91:19] +// CHECK: 91:8: ParenExpr= Extent=[91:8 - 91:34] +// CHECK: 91:9: BinaryOperator=&& Extent=[91:9 - 91:33] +// CHECK: 91:9: BinaryOperator=>= Extent=[91:9 - 91:19] +// CHECK: 91:9: UnexposedExpr=c:2:14 Extent=[91:9 - 91:10] // CHECK: 91:9: DeclRefExpr=c:2:14 Extent=[91:9 - 91:10] // CHECK: 91:14: UnexposedExpr= Extent=[91:14 - 91:19] // CHECK: 91:14: IntegerLiteral= Extent=[91:14 - 91:19] -// CHECK: 91:23: BinaryOperator= Extent=[91:23 - 91:33] +// CHECK: 91:23: BinaryOperator=<= Extent=[91:23 - 91:33] +// CHECK: 91:23: UnexposedExpr=c:2:14 Extent=[91:23 - 91:24] // CHECK: 91:23: DeclRefExpr=c:2:14 Extent=[91:23 - 91:24] // CHECK: 91:28: UnexposedExpr= Extent=[91:28 - 91:33] // CHECK: 91:28: IntegerLiteral= Extent=[91:28 - 91:33] -// CHECK: 92:9: BinaryOperator= Extent=[92:9 - 92:33] -// CHECK: 92:9: BinaryOperator= Extent=[92:9 - 92:19] +// CHECK: 92:8: ParenExpr= Extent=[92:8 - 92:34] +// CHECK: 92:9: BinaryOperator=&& Extent=[92:9 - 92:33] +// CHECK: 92:9: BinaryOperator=>= Extent=[92:9 - 92:19] +// CHECK: 92:9: UnexposedExpr=c:2:14 Extent=[92:9 - 92:10] // CHECK: 92:9: DeclRefExpr=c:2:14 Extent=[92:9 - 92:10] // CHECK: 92:14: UnexposedExpr= Extent=[92:14 - 92:19] // CHECK: 92:14: IntegerLiteral= Extent=[92:14 - 92:19] -// CHECK: 92:23: BinaryOperator= Extent=[92:23 - 92:33] +// CHECK: 92:23: BinaryOperator=<= Extent=[92:23 - 92:33] +// CHECK: 92:23: UnexposedExpr=c:2:14 Extent=[92:23 - 92:24] // CHECK: 92:23: DeclRefExpr=c:2:14 Extent=[92:23 - 92:24] // CHECK: 92:28: UnexposedExpr= Extent=[92:28 - 92:33] // CHECK: 92:28: IntegerLiteral= Extent=[92:28 - 92:33] -// CHECK: 93:9: BinaryOperator= Extent=[93:9 - 93:33] -// CHECK: 93:9: BinaryOperator= Extent=[93:9 - 93:19] +// CHECK: 93:8: ParenExpr= Extent=[93:8 - 93:34] +// CHECK: 93:9: BinaryOperator=&& Extent=[93:9 - 93:33] +// CHECK: 93:9: BinaryOperator=>= Extent=[93:9 - 93:19] +// CHECK: 93:9: UnexposedExpr=c:2:14 Extent=[93:9 - 93:10] // CHECK: 93:9: DeclRefExpr=c:2:14 Extent=[93:9 - 93:10] // CHECK: 93:14: UnexposedExpr= Extent=[93:14 - 93:19] // CHECK: 93:14: IntegerLiteral= Extent=[93:14 - 93:19] -// CHECK: 93:23: BinaryOperator= Extent=[93:23 - 93:33] +// CHECK: 93:23: BinaryOperator=<= Extent=[93:23 - 93:33] +// CHECK: 93:23: UnexposedExpr=c:2:14 Extent=[93:23 - 93:24] // CHECK: 93:23: DeclRefExpr=c:2:14 Extent=[93:23 - 93:24] // CHECK: 93:28: UnexposedExpr= Extent=[93:28 - 93:33] // CHECK: 93:28: IntegerLiteral= Extent=[93:28 - 93:33] -// CHECK: 94:9: BinaryOperator= Extent=[94:9 - 94:33] -// CHECK: 94:9: BinaryOperator= Extent=[94:9 - 94:19] +// CHECK: 94:8: ParenExpr= Extent=[94:8 - 94:34] +// CHECK: 94:9: BinaryOperator=&& Extent=[94:9 - 94:33] +// CHECK: 94:9: BinaryOperator=>= Extent=[94:9 - 94:19] +// CHECK: 94:9: UnexposedExpr=c:2:14 Extent=[94:9 - 94:10] // CHECK: 94:9: DeclRefExpr=c:2:14 Extent=[94:9 - 94:10] // CHECK: 94:14: UnexposedExpr= Extent=[94:14 - 94:19] // CHECK: 94:14: IntegerLiteral= Extent=[94:14 - 94:19] -// CHECK: 94:23: BinaryOperator= Extent=[94:23 - 94:33] +// CHECK: 94:23: BinaryOperator=<= Extent=[94:23 - 94:33] +// CHECK: 94:23: UnexposedExpr=c:2:14 Extent=[94:23 - 94:24] // CHECK: 94:23: DeclRefExpr=c:2:14 Extent=[94:23 - 94:24] // CHECK: 94:28: UnexposedExpr= Extent=[94:28 - 94:33] // CHECK: 94:28: IntegerLiteral= Extent=[94:28 - 94:33] -// CHECK: 95:9: BinaryOperator= Extent=[95:9 - 95:33] -// CHECK: 95:9: BinaryOperator= Extent=[95:9 - 95:19] +// CHECK: 95:8: ParenExpr= Extent=[95:8 - 95:34] +// CHECK: 95:9: BinaryOperator=&& Extent=[95:9 - 95:33] +// CHECK: 95:9: BinaryOperator=>= Extent=[95:9 - 95:19] +// CHECK: 95:9: UnexposedExpr=c:2:14 Extent=[95:9 - 95:10] // CHECK: 95:9: DeclRefExpr=c:2:14 Extent=[95:9 - 95:10] // CHECK: 95:14: UnexposedExpr= Extent=[95:14 - 95:19] // CHECK: 95:14: IntegerLiteral= Extent=[95:14 - 95:19] -// CHECK: 95:23: BinaryOperator= Extent=[95:23 - 95:33] +// CHECK: 95:23: BinaryOperator=<= Extent=[95:23 - 95:33] +// CHECK: 95:23: UnexposedExpr=c:2:14 Extent=[95:23 - 95:24] // CHECK: 95:23: DeclRefExpr=c:2:14 Extent=[95:23 - 95:24] // CHECK: 95:28: UnexposedExpr= Extent=[95:28 - 95:33] // CHECK: 95:28: IntegerLiteral= Extent=[95:28 - 95:33] -// CHECK: 96:9: BinaryOperator= Extent=[96:9 - 96:33] -// CHECK: 96:9: BinaryOperator= Extent=[96:9 - 96:19] +// CHECK: 96:8: ParenExpr= Extent=[96:8 - 96:34] +// CHECK: 96:9: BinaryOperator=&& Extent=[96:9 - 96:33] +// CHECK: 96:9: BinaryOperator=>= Extent=[96:9 - 96:19] +// CHECK: 96:9: UnexposedExpr=c:2:14 Extent=[96:9 - 96:10] // CHECK: 96:9: DeclRefExpr=c:2:14 Extent=[96:9 - 96:10] // CHECK: 96:14: UnexposedExpr= Extent=[96:14 - 96:19] // CHECK: 96:14: IntegerLiteral= Extent=[96:14 - 96:19] -// CHECK: 96:23: BinaryOperator= Extent=[96:23 - 96:33] +// CHECK: 96:23: BinaryOperator=<= Extent=[96:23 - 96:33] +// CHECK: 96:23: UnexposedExpr=c:2:14 Extent=[96:23 - 96:24] // CHECK: 96:23: DeclRefExpr=c:2:14 Extent=[96:23 - 96:24] // CHECK: 96:28: UnexposedExpr= Extent=[96:28 - 96:33] // CHECK: 96:28: IntegerLiteral= Extent=[96:28 - 96:33] -// CHECK: 97:9: BinaryOperator= Extent=[97:9 - 97:33] -// CHECK: 97:9: BinaryOperator= Extent=[97:9 - 97:19] +// CHECK: 97:8: ParenExpr= Extent=[97:8 - 97:34] +// CHECK: 97:9: BinaryOperator=&& Extent=[97:9 - 97:33] +// CHECK: 97:9: BinaryOperator=>= Extent=[97:9 - 97:19] +// CHECK: 97:9: UnexposedExpr=c:2:14 Extent=[97:9 - 97:10] // CHECK: 97:9: DeclRefExpr=c:2:14 Extent=[97:9 - 97:10] // CHECK: 97:14: UnexposedExpr= Extent=[97:14 - 97:19] // CHECK: 97:14: IntegerLiteral= Extent=[97:14 - 97:19] -// CHECK: 97:23: BinaryOperator= Extent=[97:23 - 97:33] +// CHECK: 97:23: BinaryOperator=<= Extent=[97:23 - 97:33] +// CHECK: 97:23: UnexposedExpr=c:2:14 Extent=[97:23 - 97:24] // CHECK: 97:23: DeclRefExpr=c:2:14 Extent=[97:23 - 97:24] // CHECK: 97:28: UnexposedExpr= Extent=[97:28 - 97:33] // CHECK: 97:28: IntegerLiteral= Extent=[97:28 - 97:33] -// CHECK: 98:8: BinaryOperator= Extent=[98:8 - 98:18] +// CHECK: 98:8: BinaryOperator=== Extent=[98:8 - 98:18] +// CHECK: 98:8: UnexposedExpr=c:2:14 Extent=[98:8 - 98:9] // CHECK: 98:8: DeclRefExpr=c:2:14 Extent=[98:8 - 98:9] // CHECK: 98:13: UnexposedExpr= Extent=[98:13 - 98:18] // CHECK: 98:13: IntegerLiteral= Extent=[98:13 - 98:18] -// CHECK: 98:23: BinaryOperator= Extent=[98:23 - 98:47] -// CHECK: 98:23: BinaryOperator= Extent=[98:23 - 98:33] +// CHECK: 98:22: ParenExpr= Extent=[98:22 - 98:48] +// CHECK: 98:23: BinaryOperator=&& Extent=[98:23 - 98:47] +// CHECK: 98:23: BinaryOperator=>= Extent=[98:23 - 98:33] +// CHECK: 98:23: UnexposedExpr=c:2:14 Extent=[98:23 - 98:24] // CHECK: 98:23: DeclRefExpr=c:2:14 Extent=[98:23 - 98:24] // CHECK: 98:28: UnexposedExpr= Extent=[98:28 - 98:33] // CHECK: 98:28: IntegerLiteral= Extent=[98:28 - 98:33] -// CHECK: 98:37: BinaryOperator= Extent=[98:37 - 98:47] +// CHECK: 98:37: BinaryOperator=<= Extent=[98:37 - 98:47] +// CHECK: 98:37: UnexposedExpr=c:2:14 Extent=[98:37 - 98:38] // CHECK: 98:37: DeclRefExpr=c:2:14 Extent=[98:37 - 98:38] // CHECK: 98:42: UnexposedExpr= Extent=[98:42 - 98:47] // CHECK: 98:42: IntegerLiteral= Extent=[98:42 - 98:47] -// CHECK: 99:9: BinaryOperator= Extent=[99:9 - 99:33] -// CHECK: 99:9: BinaryOperator= Extent=[99:9 - 99:19] +// CHECK: 99:8: ParenExpr= Extent=[99:8 - 99:34] +// CHECK: 99:9: BinaryOperator=&& Extent=[99:9 - 99:33] +// CHECK: 99:9: BinaryOperator=>= Extent=[99:9 - 99:19] +// CHECK: 99:9: UnexposedExpr=c:2:14 Extent=[99:9 - 99:10] // CHECK: 99:9: DeclRefExpr=c:2:14 Extent=[99:9 - 99:10] // CHECK: 99:14: UnexposedExpr= Extent=[99:14 - 99:19] // CHECK: 99:14: IntegerLiteral= Extent=[99:14 - 99:19] -// CHECK: 99:23: BinaryOperator= Extent=[99:23 - 99:33] +// CHECK: 99:23: BinaryOperator=<= Extent=[99:23 - 99:33] +// CHECK: 99:23: UnexposedExpr=c:2:14 Extent=[99:23 - 99:24] // CHECK: 99:23: DeclRefExpr=c:2:14 Extent=[99:23 - 99:24] // CHECK: 99:28: UnexposedExpr= Extent=[99:28 - 99:33] // CHECK: 99:28: IntegerLiteral= Extent=[99:28 - 99:33] -// CHECK: 100:9: BinaryOperator= Extent=[100:9 - 100:33] -// CHECK: 100:9: BinaryOperator= Extent=[100:9 - 100:19] +// CHECK: 100:8: ParenExpr= Extent=[100:8 - 100:34] +// CHECK: 100:9: BinaryOperator=&& Extent=[100:9 - 100:33] +// CHECK: 100:9: BinaryOperator=>= Extent=[100:9 - 100:19] +// CHECK: 100:9: UnexposedExpr=c:2:14 Extent=[100:9 - 100:10] // CHECK: 100:9: DeclRefExpr=c:2:14 Extent=[100:9 - 100:10] // CHECK: 100:14: UnexposedExpr= Extent=[100:14 - 100:19] // CHECK: 100:14: IntegerLiteral= Extent=[100:14 - 100:19] -// CHECK: 100:23: BinaryOperator= Extent=[100:23 - 100:33] +// CHECK: 100:23: BinaryOperator=<= Extent=[100:23 - 100:33] +// CHECK: 100:23: UnexposedExpr=c:2:14 Extent=[100:23 - 100:24] // CHECK: 100:23: DeclRefExpr=c:2:14 Extent=[100:23 - 100:24] // CHECK: 100:28: UnexposedExpr= Extent=[100:28 - 100:33] // CHECK: 100:28: IntegerLiteral= Extent=[100:28 - 100:33] -// CHECK: 101:9: BinaryOperator= Extent=[101:9 - 101:33] -// CHECK: 101:9: BinaryOperator= Extent=[101:9 - 101:19] +// CHECK: 101:8: ParenExpr= Extent=[101:8 - 101:34] +// CHECK: 101:9: BinaryOperator=&& Extent=[101:9 - 101:33] +// CHECK: 101:9: BinaryOperator=>= Extent=[101:9 - 101:19] +// CHECK: 101:9: UnexposedExpr=c:2:14 Extent=[101:9 - 101:10] // CHECK: 101:9: DeclRefExpr=c:2:14 Extent=[101:9 - 101:10] // CHECK: 101:14: UnexposedExpr= Extent=[101:14 - 101:19] // CHECK: 101:14: IntegerLiteral= Extent=[101:14 - 101:19] -// CHECK: 101:23: BinaryOperator= Extent=[101:23 - 101:33] +// CHECK: 101:23: BinaryOperator=<= Extent=[101:23 - 101:33] +// CHECK: 101:23: UnexposedExpr=c:2:14 Extent=[101:23 - 101:24] // CHECK: 101:23: DeclRefExpr=c:2:14 Extent=[101:23 - 101:24] // CHECK: 101:28: UnexposedExpr= Extent=[101:28 - 101:33] // CHECK: 101:28: IntegerLiteral= Extent=[101:28 - 101:33] -// CHECK: 102:9: BinaryOperator= Extent=[102:9 - 102:33] -// CHECK: 102:9: BinaryOperator= Extent=[102:9 - 102:19] +// CHECK: 102:8: ParenExpr= Extent=[102:8 - 102:34] +// CHECK: 102:9: BinaryOperator=&& Extent=[102:9 - 102:33] +// CHECK: 102:9: BinaryOperator=>= Extent=[102:9 - 102:19] +// CHECK: 102:9: UnexposedExpr=c:2:14 Extent=[102:9 - 102:10] // CHECK: 102:9: DeclRefExpr=c:2:14 Extent=[102:9 - 102:10] // CHECK: 102:14: UnexposedExpr= Extent=[102:14 - 102:19] // CHECK: 102:14: IntegerLiteral= Extent=[102:14 - 102:19] -// CHECK: 102:23: BinaryOperator= Extent=[102:23 - 102:33] +// CHECK: 102:23: BinaryOperator=<= Extent=[102:23 - 102:33] +// CHECK: 102:23: UnexposedExpr=c:2:14 Extent=[102:23 - 102:24] // CHECK: 102:23: DeclRefExpr=c:2:14 Extent=[102:23 - 102:24] // CHECK: 102:28: UnexposedExpr= Extent=[102:28 - 102:33] // CHECK: 102:28: IntegerLiteral= Extent=[102:28 - 102:33] -// CHECK: 103:9: BinaryOperator= Extent=[103:9 - 103:33] -// CHECK: 103:9: BinaryOperator= Extent=[103:9 - 103:19] +// CHECK: 103:8: ParenExpr= Extent=[103:8 - 103:34] +// CHECK: 103:9: BinaryOperator=&& Extent=[103:9 - 103:33] +// CHECK: 103:9: BinaryOperator=>= Extent=[103:9 - 103:19] +// CHECK: 103:9: UnexposedExpr=c:2:14 Extent=[103:9 - 103:10] // CHECK: 103:9: DeclRefExpr=c:2:14 Extent=[103:9 - 103:10] // CHECK: 103:14: UnexposedExpr= Extent=[103:14 - 103:19] // CHECK: 103:14: IntegerLiteral= Extent=[103:14 - 103:19] -// CHECK: 103:23: BinaryOperator= Extent=[103:23 - 103:33] +// CHECK: 103:23: BinaryOperator=<= Extent=[103:23 - 103:33] +// CHECK: 103:23: UnexposedExpr=c:2:14 Extent=[103:23 - 103:24] // CHECK: 103:23: DeclRefExpr=c:2:14 Extent=[103:23 - 103:24] // CHECK: 103:28: UnexposedExpr= Extent=[103:28 - 103:33] // CHECK: 103:28: IntegerLiteral= Extent=[103:28 - 103:33] -// CHECK: 104:9: BinaryOperator= Extent=[104:9 - 104:33] -// CHECK: 104:9: BinaryOperator= Extent=[104:9 - 104:19] +// CHECK: 104:8: ParenExpr= Extent=[104:8 - 104:34] +// CHECK: 104:9: BinaryOperator=&& Extent=[104:9 - 104:33] +// CHECK: 104:9: BinaryOperator=>= Extent=[104:9 - 104:19] +// CHECK: 104:9: UnexposedExpr=c:2:14 Extent=[104:9 - 104:10] // CHECK: 104:9: DeclRefExpr=c:2:14 Extent=[104:9 - 104:10] // CHECK: 104:14: UnexposedExpr= Extent=[104:14 - 104:19] // CHECK: 104:14: IntegerLiteral= Extent=[104:14 - 104:19] -// CHECK: 104:23: BinaryOperator= Extent=[104:23 - 104:33] +// CHECK: 104:23: BinaryOperator=<= Extent=[104:23 - 104:33] +// CHECK: 104:23: UnexposedExpr=c:2:14 Extent=[104:23 - 104:24] // CHECK: 104:23: DeclRefExpr=c:2:14 Extent=[104:23 - 104:24] // CHECK: 104:28: UnexposedExpr= Extent=[104:28 - 104:33] // CHECK: 104:28: IntegerLiteral= Extent=[104:28 - 104:33] -// CHECK: 105:8: BinaryOperator= Extent=[105:8 - 105:18] +// CHECK: 105:8: BinaryOperator=== Extent=[105:8 - 105:18] +// CHECK: 105:8: UnexposedExpr=c:2:14 Extent=[105:8 - 105:9] // CHECK: 105:8: DeclRefExpr=c:2:14 Extent=[105:8 - 105:9] // CHECK: 105:13: UnexposedExpr= Extent=[105:13 - 105:18] // CHECK: 105:13: IntegerLiteral= Extent=[105:13 - 105:18] -// CHECK: 105:23: BinaryOperator= Extent=[105:23 - 105:47] -// CHECK: 105:23: BinaryOperator= Extent=[105:23 - 105:33] +// CHECK: 105:22: ParenExpr= Extent=[105:22 - 105:48] +// CHECK: 105:23: BinaryOperator=&& Extent=[105:23 - 105:47] +// CHECK: 105:23: BinaryOperator=>= Extent=[105:23 - 105:33] +// CHECK: 105:23: UnexposedExpr=c:2:14 Extent=[105:23 - 105:24] // CHECK: 105:23: DeclRefExpr=c:2:14 Extent=[105:23 - 105:24] // CHECK: 105:28: UnexposedExpr= Extent=[105:28 - 105:33] // CHECK: 105:28: IntegerLiteral= Extent=[105:28 - 105:33] -// CHECK: 105:37: BinaryOperator= Extent=[105:37 - 105:47] +// CHECK: 105:37: BinaryOperator=<= Extent=[105:37 - 105:47] +// CHECK: 105:37: UnexposedExpr=c:2:14 Extent=[105:37 - 105:38] // CHECK: 105:37: DeclRefExpr=c:2:14 Extent=[105:37 - 105:38] // CHECK: 105:42: UnexposedExpr= Extent=[105:42 - 105:47] // CHECK: 105:42: IntegerLiteral= Extent=[105:42 - 105:47] -// CHECK: 106:9: BinaryOperator= Extent=[106:9 - 106:33] -// CHECK: 106:9: BinaryOperator= Extent=[106:9 - 106:19] +// CHECK: 106:8: ParenExpr= Extent=[106:8 - 106:34] +// CHECK: 106:9: BinaryOperator=&& Extent=[106:9 - 106:33] +// CHECK: 106:9: BinaryOperator=>= Extent=[106:9 - 106:19] +// CHECK: 106:9: UnexposedExpr=c:2:14 Extent=[106:9 - 106:10] // CHECK: 106:9: DeclRefExpr=c:2:14 Extent=[106:9 - 106:10] // CHECK: 106:14: UnexposedExpr= Extent=[106:14 - 106:19] // CHECK: 106:14: IntegerLiteral= Extent=[106:14 - 106:19] -// CHECK: 106:23: BinaryOperator= Extent=[106:23 - 106:33] +// CHECK: 106:23: BinaryOperator=<= Extent=[106:23 - 106:33] +// CHECK: 106:23: UnexposedExpr=c:2:14 Extent=[106:23 - 106:24] // CHECK: 106:23: DeclRefExpr=c:2:14 Extent=[106:23 - 106:24] // CHECK: 106:28: UnexposedExpr= Extent=[106:28 - 106:33] // CHECK: 106:28: IntegerLiteral= Extent=[106:28 - 106:33] -// CHECK: 107:9: BinaryOperator= Extent=[107:9 - 107:33] -// CHECK: 107:9: BinaryOperator= Extent=[107:9 - 107:19] +// CHECK: 107:8: ParenExpr= Extent=[107:8 - 107:34] +// CHECK: 107:9: BinaryOperator=&& Extent=[107:9 - 107:33] +// CHECK: 107:9: BinaryOperator=>= Extent=[107:9 - 107:19] +// CHECK: 107:9: UnexposedExpr=c:2:14 Extent=[107:9 - 107:10] // CHECK: 107:9: DeclRefExpr=c:2:14 Extent=[107:9 - 107:10] // CHECK: 107:14: UnexposedExpr= Extent=[107:14 - 107:19] // CHECK: 107:14: IntegerLiteral= Extent=[107:14 - 107:19] -// CHECK: 107:23: BinaryOperator= Extent=[107:23 - 107:33] +// CHECK: 107:23: BinaryOperator=<= Extent=[107:23 - 107:33] +// CHECK: 107:23: UnexposedExpr=c:2:14 Extent=[107:23 - 107:24] // CHECK: 107:23: DeclRefExpr=c:2:14 Extent=[107:23 - 107:24] // CHECK: 107:28: UnexposedExpr= Extent=[107:28 - 107:33] // CHECK: 107:28: IntegerLiteral= Extent=[107:28 - 107:33] -// CHECK: 108:8: BinaryOperator= Extent=[108:8 - 108:18] +// CHECK: 108:8: BinaryOperator=== Extent=[108:8 - 108:18] +// CHECK: 108:8: UnexposedExpr=c:2:14 Extent=[108:8 - 108:9] // CHECK: 108:8: DeclRefExpr=c:2:14 Extent=[108:8 - 108:9] // CHECK: 108:13: UnexposedExpr= Extent=[108:13 - 108:18] // CHECK: 108:13: IntegerLiteral= Extent=[108:13 - 108:18] -// CHECK: 108:23: BinaryOperator= Extent=[108:23 - 108:47] -// CHECK: 108:23: BinaryOperator= Extent=[108:23 - 108:33] +// CHECK: 108:22: ParenExpr= Extent=[108:22 - 108:48] +// CHECK: 108:23: BinaryOperator=&& Extent=[108:23 - 108:47] +// CHECK: 108:23: BinaryOperator=>= Extent=[108:23 - 108:33] +// CHECK: 108:23: UnexposedExpr=c:2:14 Extent=[108:23 - 108:24] // CHECK: 108:23: DeclRefExpr=c:2:14 Extent=[108:23 - 108:24] // CHECK: 108:28: UnexposedExpr= Extent=[108:28 - 108:33] // CHECK: 108:28: IntegerLiteral= Extent=[108:28 - 108:33] -// CHECK: 108:37: BinaryOperator= Extent=[108:37 - 108:47] +// CHECK: 108:37: BinaryOperator=<= Extent=[108:37 - 108:47] +// CHECK: 108:37: UnexposedExpr=c:2:14 Extent=[108:37 - 108:38] // CHECK: 108:37: DeclRefExpr=c:2:14 Extent=[108:37 - 108:38] // CHECK: 108:42: UnexposedExpr= Extent=[108:42 - 108:47] // CHECK: 108:42: IntegerLiteral= Extent=[108:42 - 108:47] -// CHECK: 109:8: BinaryOperator= Extent=[109:8 - 109:18] +// CHECK: 109:8: BinaryOperator=== Extent=[109:8 - 109:18] +// CHECK: 109:8: UnexposedExpr=c:2:14 Extent=[109:8 - 109:9] // CHECK: 109:8: DeclRefExpr=c:2:14 Extent=[109:8 - 109:9] // CHECK: 109:13: UnexposedExpr= Extent=[109:13 - 109:18] // CHECK: 109:13: IntegerLiteral= Extent=[109:13 - 109:18] -// CHECK: 109:22: BinaryOperator= Extent=[109:22 - 109:32] +// CHECK: 109:22: BinaryOperator=== Extent=[109:22 - 109:32] +// CHECK: 109:22: UnexposedExpr=c:2:14 Extent=[109:22 - 109:23] // CHECK: 109:22: DeclRefExpr=c:2:14 Extent=[109:22 - 109:23] // CHECK: 109:27: UnexposedExpr= Extent=[109:27 - 109:32] // CHECK: 109:27: IntegerLiteral= Extent=[109:27 - 109:32] -// CHECK: 109:37: BinaryOperator= Extent=[109:37 - 109:61] -// CHECK: 109:37: BinaryOperator= Extent=[109:37 - 109:47] +// CHECK: 109:36: ParenExpr= Extent=[109:36 - 109:62] +// CHECK: 109:37: BinaryOperator=&& Extent=[109:37 - 109:61] +// CHECK: 109:37: BinaryOperator=>= Extent=[109:37 - 109:47] +// CHECK: 109:37: UnexposedExpr=c:2:14 Extent=[109:37 - 109:38] // CHECK: 109:37: DeclRefExpr=c:2:14 Extent=[109:37 - 109:38] // CHECK: 109:42: UnexposedExpr= Extent=[109:42 - 109:47] // CHECK: 109:42: IntegerLiteral= Extent=[109:42 - 109:47] -// CHECK: 109:51: BinaryOperator= Extent=[109:51 - 109:61] +// CHECK: 109:51: BinaryOperator=<= Extent=[109:51 - 109:61] +// CHECK: 109:51: UnexposedExpr=c:2:14 Extent=[109:51 - 109:52] // CHECK: 109:51: DeclRefExpr=c:2:14 Extent=[109:51 - 109:52] // CHECK: 109:56: UnexposedExpr= Extent=[109:56 - 109:61] // CHECK: 109:56: IntegerLiteral= Extent=[109:56 - 109:61] -// CHECK: 110:9: BinaryOperator= Extent=[110:9 - 110:33] -// CHECK: 110:9: BinaryOperator= Extent=[110:9 - 110:19] +// CHECK: 110:8: ParenExpr= Extent=[110:8 - 110:34] +// CHECK: 110:9: BinaryOperator=&& Extent=[110:9 - 110:33] +// CHECK: 110:9: BinaryOperator=>= Extent=[110:9 - 110:19] +// CHECK: 110:9: UnexposedExpr=c:2:14 Extent=[110:9 - 110:10] // CHECK: 110:9: DeclRefExpr=c:2:14 Extent=[110:9 - 110:10] // CHECK: 110:14: UnexposedExpr= Extent=[110:14 - 110:19] // CHECK: 110:14: IntegerLiteral= Extent=[110:14 - 110:19] -// CHECK: 110:23: BinaryOperator= Extent=[110:23 - 110:33] +// CHECK: 110:23: BinaryOperator=<= Extent=[110:23 - 110:33] +// CHECK: 110:23: UnexposedExpr=c:2:14 Extent=[110:23 - 110:24] // CHECK: 110:23: DeclRefExpr=c:2:14 Extent=[110:23 - 110:24] // CHECK: 110:28: UnexposedExpr= Extent=[110:28 - 110:33] // CHECK: 110:28: IntegerLiteral= Extent=[110:28 - 110:33] -// CHECK: 111:9: BinaryOperator= Extent=[111:9 - 111:33] -// CHECK: 111:9: BinaryOperator= Extent=[111:9 - 111:19] +// CHECK: 111:8: ParenExpr= Extent=[111:8 - 111:34] +// CHECK: 111:9: BinaryOperator=&& Extent=[111:9 - 111:33] +// CHECK: 111:9: BinaryOperator=>= Extent=[111:9 - 111:19] +// CHECK: 111:9: UnexposedExpr=c:2:14 Extent=[111:9 - 111:10] // CHECK: 111:9: DeclRefExpr=c:2:14 Extent=[111:9 - 111:10] // CHECK: 111:14: UnexposedExpr= Extent=[111:14 - 111:19] // CHECK: 111:14: IntegerLiteral= Extent=[111:14 - 111:19] -// CHECK: 111:23: BinaryOperator= Extent=[111:23 - 111:33] +// CHECK: 111:23: BinaryOperator=<= Extent=[111:23 - 111:33] +// CHECK: 111:23: UnexposedExpr=c:2:14 Extent=[111:23 - 111:24] // CHECK: 111:23: DeclRefExpr=c:2:14 Extent=[111:23 - 111:24] // CHECK: 111:28: UnexposedExpr= Extent=[111:28 - 111:33] // CHECK: 111:28: IntegerLiteral= Extent=[111:28 - 111:33] -// CHECK: 112:8: BinaryOperator= Extent=[112:8 - 112:18] +// CHECK: 112:8: BinaryOperator=== Extent=[112:8 - 112:18] +// CHECK: 112:8: UnexposedExpr=c:2:14 Extent=[112:8 - 112:9] // CHECK: 112:8: DeclRefExpr=c:2:14 Extent=[112:8 - 112:9] // CHECK: 112:13: UnexposedExpr= Extent=[112:13 - 112:18] // CHECK: 112:13: IntegerLiteral= Extent=[112:13 - 112:18] -// CHECK: 112:22: BinaryOperator= Extent=[112:22 - 112:32] +// CHECK: 112:22: BinaryOperator=== Extent=[112:22 - 112:32] +// CHECK: 112:22: UnexposedExpr=c:2:14 Extent=[112:22 - 112:23] // CHECK: 112:22: DeclRefExpr=c:2:14 Extent=[112:22 - 112:23] // CHECK: 112:27: UnexposedExpr= Extent=[112:27 - 112:32] // CHECK: 112:27: IntegerLiteral= Extent=[112:27 - 112:32] -// CHECK: 112:37: BinaryOperator= Extent=[112:37 - 112:61] -// CHECK: 112:37: BinaryOperator= Extent=[112:37 - 112:47] +// CHECK: 112:36: ParenExpr= Extent=[112:36 - 112:62] +// CHECK: 112:37: BinaryOperator=&& Extent=[112:37 - 112:61] +// CHECK: 112:37: BinaryOperator=>= Extent=[112:37 - 112:47] +// CHECK: 112:37: UnexposedExpr=c:2:14 Extent=[112:37 - 112:38] // CHECK: 112:37: DeclRefExpr=c:2:14 Extent=[112:37 - 112:38] // CHECK: 112:42: UnexposedExpr= Extent=[112:42 - 112:47] // CHECK: 112:42: IntegerLiteral= Extent=[112:42 - 112:47] -// CHECK: 112:51: BinaryOperator= Extent=[112:51 - 112:61] +// CHECK: 112:51: BinaryOperator=<= Extent=[112:51 - 112:61] +// CHECK: 112:51: UnexposedExpr=c:2:14 Extent=[112:51 - 112:52] // CHECK: 112:51: DeclRefExpr=c:2:14 Extent=[112:51 - 112:52] // CHECK: 112:56: UnexposedExpr= Extent=[112:56 - 112:61] // CHECK: 112:56: IntegerLiteral= Extent=[112:56 - 112:61] -// CHECK: 113:9: BinaryOperator= Extent=[113:9 - 113:33] -// CHECK: 113:9: BinaryOperator= Extent=[113:9 - 113:19] +// CHECK: 113:8: ParenExpr= Extent=[113:8 - 113:34] +// CHECK: 113:9: BinaryOperator=&& Extent=[113:9 - 113:33] +// CHECK: 113:9: BinaryOperator=>= Extent=[113:9 - 113:19] +// CHECK: 113:9: UnexposedExpr=c:2:14 Extent=[113:9 - 113:10] // CHECK: 113:9: DeclRefExpr=c:2:14 Extent=[113:9 - 113:10] // CHECK: 113:14: UnexposedExpr= Extent=[113:14 - 113:19] // CHECK: 113:14: IntegerLiteral= Extent=[113:14 - 113:19] -// CHECK: 113:23: BinaryOperator= Extent=[113:23 - 113:33] +// CHECK: 113:23: BinaryOperator=<= Extent=[113:23 - 113:33] +// CHECK: 113:23: UnexposedExpr=c:2:14 Extent=[113:23 - 113:24] // CHECK: 113:23: DeclRefExpr=c:2:14 Extent=[113:23 - 113:24] // CHECK: 113:28: UnexposedExpr= Extent=[113:28 - 113:33] // CHECK: 113:28: IntegerLiteral= Extent=[113:28 - 113:33] -// CHECK: 114:8: BinaryOperator= Extent=[114:8 - 114:18] +// CHECK: 114:8: BinaryOperator=== Extent=[114:8 - 114:18] +// CHECK: 114:8: UnexposedExpr=c:2:14 Extent=[114:8 - 114:9] // CHECK: 114:8: DeclRefExpr=c:2:14 Extent=[114:8 - 114:9] // CHECK: 114:13: UnexposedExpr= Extent=[114:13 - 114:18] // CHECK: 114:13: IntegerLiteral= Extent=[114:13 - 114:18] -// CHECK: 114:23: BinaryOperator= Extent=[114:23 - 114:47] -// CHECK: 114:23: BinaryOperator= Extent=[114:23 - 114:33] +// CHECK: 114:22: ParenExpr= Extent=[114:22 - 114:48] +// CHECK: 114:23: BinaryOperator=&& Extent=[114:23 - 114:47] +// CHECK: 114:23: BinaryOperator=>= Extent=[114:23 - 114:33] +// CHECK: 114:23: UnexposedExpr=c:2:14 Extent=[114:23 - 114:24] // CHECK: 114:23: DeclRefExpr=c:2:14 Extent=[114:23 - 114:24] // CHECK: 114:28: UnexposedExpr= Extent=[114:28 - 114:33] // CHECK: 114:28: IntegerLiteral= Extent=[114:28 - 114:33] -// CHECK: 114:37: BinaryOperator= Extent=[114:37 - 114:47] +// CHECK: 114:37: BinaryOperator=<= Extent=[114:37 - 114:47] +// CHECK: 114:37: UnexposedExpr=c:2:14 Extent=[114:37 - 114:38] // CHECK: 114:37: DeclRefExpr=c:2:14 Extent=[114:37 - 114:38] // CHECK: 114:42: UnexposedExpr= Extent=[114:42 - 114:47] // CHECK: 114:42: IntegerLiteral= Extent=[114:42 - 114:47] -// CHECK: 115:8: BinaryOperator= Extent=[115:8 - 115:18] +// CHECK: 115:8: BinaryOperator=== Extent=[115:8 - 115:18] +// CHECK: 115:8: UnexposedExpr=c:2:14 Extent=[115:8 - 115:9] // CHECK: 115:8: DeclRefExpr=c:2:14 Extent=[115:8 - 115:9] // CHECK: 115:13: UnexposedExpr= Extent=[115:13 - 115:18] // CHECK: 115:13: IntegerLiteral= Extent=[115:13 - 115:18] -// CHECK: 115:23: BinaryOperator= Extent=[115:23 - 115:47] -// CHECK: 115:23: BinaryOperator= Extent=[115:23 - 115:33] +// CHECK: 115:22: ParenExpr= Extent=[115:22 - 115:48] +// CHECK: 115:23: BinaryOperator=&& Extent=[115:23 - 115:47] +// CHECK: 115:23: BinaryOperator=>= Extent=[115:23 - 115:33] +// CHECK: 115:23: UnexposedExpr=c:2:14 Extent=[115:23 - 115:24] // CHECK: 115:23: DeclRefExpr=c:2:14 Extent=[115:23 - 115:24] // CHECK: 115:28: UnexposedExpr= Extent=[115:28 - 115:33] // CHECK: 115:28: IntegerLiteral= Extent=[115:28 - 115:33] -// CHECK: 115:37: BinaryOperator= Extent=[115:37 - 115:47] +// CHECK: 115:37: BinaryOperator=<= Extent=[115:37 - 115:47] +// CHECK: 115:37: UnexposedExpr=c:2:14 Extent=[115:37 - 115:38] // CHECK: 115:37: DeclRefExpr=c:2:14 Extent=[115:37 - 115:38] // CHECK: 115:42: UnexposedExpr= Extent=[115:42 - 115:47] // CHECK: 115:42: IntegerLiteral= Extent=[115:42 - 115:47] -// CHECK: 116:9: BinaryOperator= Extent=[116:9 - 116:33] -// CHECK: 116:9: BinaryOperator= Extent=[116:9 - 116:19] +// CHECK: 116:8: ParenExpr= Extent=[116:8 - 116:34] +// CHECK: 116:9: BinaryOperator=&& Extent=[116:9 - 116:33] +// CHECK: 116:9: BinaryOperator=>= Extent=[116:9 - 116:19] +// CHECK: 116:9: UnexposedExpr=c:2:14 Extent=[116:9 - 116:10] // CHECK: 116:9: DeclRefExpr=c:2:14 Extent=[116:9 - 116:10] // CHECK: 116:14: UnexposedExpr= Extent=[116:14 - 116:19] // CHECK: 116:14: IntegerLiteral= Extent=[116:14 - 116:19] -// CHECK: 116:23: BinaryOperator= Extent=[116:23 - 116:33] +// CHECK: 116:23: BinaryOperator=<= Extent=[116:23 - 116:33] +// CHECK: 116:23: UnexposedExpr=c:2:14 Extent=[116:23 - 116:24] // CHECK: 116:23: DeclRefExpr=c:2:14 Extent=[116:23 - 116:24] // CHECK: 116:28: UnexposedExpr= Extent=[116:28 - 116:33] // CHECK: 116:28: IntegerLiteral= Extent=[116:28 - 116:33] -// CHECK: 117:9: BinaryOperator= Extent=[117:9 - 117:33] -// CHECK: 117:9: BinaryOperator= Extent=[117:9 - 117:19] +// CHECK: 117:8: ParenExpr= Extent=[117:8 - 117:34] +// CHECK: 117:9: BinaryOperator=&& Extent=[117:9 - 117:33] +// CHECK: 117:9: BinaryOperator=>= Extent=[117:9 - 117:19] +// CHECK: 117:9: UnexposedExpr=c:2:14 Extent=[117:9 - 117:10] // CHECK: 117:9: DeclRefExpr=c:2:14 Extent=[117:9 - 117:10] // CHECK: 117:14: UnexposedExpr= Extent=[117:14 - 117:19] // CHECK: 117:14: IntegerLiteral= Extent=[117:14 - 117:19] -// CHECK: 117:23: BinaryOperator= Extent=[117:23 - 117:33] +// CHECK: 117:23: BinaryOperator=<= Extent=[117:23 - 117:33] +// CHECK: 117:23: UnexposedExpr=c:2:14 Extent=[117:23 - 117:24] // CHECK: 117:23: DeclRefExpr=c:2:14 Extent=[117:23 - 117:24] // CHECK: 117:28: UnexposedExpr= Extent=[117:28 - 117:33] // CHECK: 117:28: IntegerLiteral= Extent=[117:28 - 117:33] -// CHECK: 118:9: BinaryOperator= Extent=[118:9 - 118:35] -// CHECK: 118:9: BinaryOperator= Extent=[118:9 - 118:20] +// CHECK: 118:8: ParenExpr= Extent=[118:8 - 118:36] +// CHECK: 118:9: BinaryOperator=&& Extent=[118:9 - 118:35] +// CHECK: 118:9: BinaryOperator=>= Extent=[118:9 - 118:20] +// CHECK: 118:9: UnexposedExpr=c:2:14 Extent=[118:9 - 118:10] // CHECK: 118:9: DeclRefExpr=c:2:14 Extent=[118:9 - 118:10] // CHECK: 118:14: UnexposedExpr= Extent=[118:14 - 118:20] // CHECK: 118:14: IntegerLiteral= Extent=[118:14 - 118:20] -// CHECK: 118:24: BinaryOperator= Extent=[118:24 - 118:35] +// CHECK: 118:24: BinaryOperator=<= Extent=[118:24 - 118:35] +// CHECK: 118:24: UnexposedExpr=c:2:14 Extent=[118:24 - 118:25] // CHECK: 118:24: DeclRefExpr=c:2:14 Extent=[118:24 - 118:25] // CHECK: 118:29: UnexposedExpr= Extent=[118:29 - 118:35] // CHECK: 118:29: IntegerLiteral= Extent=[118:29 - 118:35] -// CHECK: 119:9: BinaryOperator= Extent=[119:9 - 119:35] -// CHECK: 119:9: BinaryOperator= Extent=[119:9 - 119:20] +// CHECK: 119:8: ParenExpr= Extent=[119:8 - 119:36] +// CHECK: 119:9: BinaryOperator=&& Extent=[119:9 - 119:35] +// CHECK: 119:9: BinaryOperator=>= Extent=[119:9 - 119:20] +// CHECK: 119:9: UnexposedExpr=c:2:14 Extent=[119:9 - 119:10] // CHECK: 119:9: DeclRefExpr=c:2:14 Extent=[119:9 - 119:10] // CHECK: 119:14: UnexposedExpr= Extent=[119:14 - 119:20] // CHECK: 119:14: IntegerLiteral= Extent=[119:14 - 119:20] -// CHECK: 119:24: BinaryOperator= Extent=[119:24 - 119:35] +// CHECK: 119:24: BinaryOperator=<= Extent=[119:24 - 119:35] +// CHECK: 119:24: UnexposedExpr=c:2:14 Extent=[119:24 - 119:25] // CHECK: 119:24: DeclRefExpr=c:2:14 Extent=[119:24 - 119:25] // CHECK: 119:29: UnexposedExpr= Extent=[119:29 - 119:35] // CHECK: 119:29: IntegerLiteral= Extent=[119:29 - 119:35] -// CHECK: 120:8: BinaryOperator= Extent=[120:8 - 120:19] +// CHECK: 120:8: BinaryOperator=== Extent=[120:8 - 120:19] +// CHECK: 120:8: UnexposedExpr=c:2:14 Extent=[120:8 - 120:9] // CHECK: 120:8: DeclRefExpr=c:2:14 Extent=[120:8 - 120:9] // CHECK: 120:13: UnexposedExpr= Extent=[120:13 - 120:19] // CHECK: 120:13: IntegerLiteral= Extent=[120:13 - 120:19] -// CHECK: 120:24: BinaryOperator= Extent=[120:24 - 120:50] -// CHECK: 120:24: BinaryOperator= Extent=[120:24 - 120:35] +// CHECK: 120:23: ParenExpr= Extent=[120:23 - 120:51] +// CHECK: 120:24: BinaryOperator=&& Extent=[120:24 - 120:50] +// CHECK: 120:24: BinaryOperator=>= Extent=[120:24 - 120:35] +// CHECK: 120:24: UnexposedExpr=c:2:14 Extent=[120:24 - 120:25] // CHECK: 120:24: DeclRefExpr=c:2:14 Extent=[120:24 - 120:25] // CHECK: 120:29: UnexposedExpr= Extent=[120:29 - 120:35] // CHECK: 120:29: IntegerLiteral= Extent=[120:29 - 120:35] -// CHECK: 120:39: BinaryOperator= Extent=[120:39 - 120:50] +// CHECK: 120:39: BinaryOperator=<= Extent=[120:39 - 120:50] +// CHECK: 120:39: UnexposedExpr=c:2:14 Extent=[120:39 - 120:40] // CHECK: 120:39: DeclRefExpr=c:2:14 Extent=[120:39 - 120:40] // CHECK: 120:44: UnexposedExpr= Extent=[120:44 - 120:50] // CHECK: 120:44: IntegerLiteral= Extent=[120:44 - 120:50] -// CHECK: 121:9: BinaryOperator= Extent=[121:9 - 121:35] -// CHECK: 121:9: BinaryOperator= Extent=[121:9 - 121:20] +// CHECK: 121:8: ParenExpr= Extent=[121:8 - 121:36] +// CHECK: 121:9: BinaryOperator=&& Extent=[121:9 - 121:35] +// CHECK: 121:9: BinaryOperator=>= Extent=[121:9 - 121:20] +// CHECK: 121:9: UnexposedExpr=c:2:14 Extent=[121:9 - 121:10] // CHECK: 121:9: DeclRefExpr=c:2:14 Extent=[121:9 - 121:10] // CHECK: 121:14: UnexposedExpr= Extent=[121:14 - 121:20] // CHECK: 121:14: IntegerLiteral= Extent=[121:14 - 121:20] -// CHECK: 121:24: BinaryOperator= Extent=[121:24 - 121:35] +// CHECK: 121:24: BinaryOperator=<= Extent=[121:24 - 121:35] +// CHECK: 121:24: UnexposedExpr=c:2:14 Extent=[121:24 - 121:25] // CHECK: 121:24: DeclRefExpr=c:2:14 Extent=[121:24 - 121:25] // CHECK: 121:29: UnexposedExpr= Extent=[121:29 - 121:35] // CHECK: 121:29: IntegerLiteral= Extent=[121:29 - 121:35] -// CHECK: 122:8: BinaryOperator= Extent=[122:8 - 122:19] +// CHECK: 122:8: BinaryOperator=== Extent=[122:8 - 122:19] +// CHECK: 122:8: UnexposedExpr=c:2:14 Extent=[122:8 - 122:9] // CHECK: 122:8: DeclRefExpr=c:2:14 Extent=[122:8 - 122:9] // CHECK: 122:13: UnexposedExpr= Extent=[122:13 - 122:19] // CHECK: 122:13: IntegerLiteral= Extent=[122:13 - 122:19] -// CHECK: 122:24: BinaryOperator= Extent=[122:24 - 122:50] -// CHECK: 122:24: BinaryOperator= Extent=[122:24 - 122:35] +// CHECK: 122:23: ParenExpr= Extent=[122:23 - 122:51] +// CHECK: 122:24: BinaryOperator=&& Extent=[122:24 - 122:50] +// CHECK: 122:24: BinaryOperator=>= Extent=[122:24 - 122:35] +// CHECK: 122:24: UnexposedExpr=c:2:14 Extent=[122:24 - 122:25] // CHECK: 122:24: DeclRefExpr=c:2:14 Extent=[122:24 - 122:25] // CHECK: 122:29: UnexposedExpr= Extent=[122:29 - 122:35] // CHECK: 122:29: IntegerLiteral= Extent=[122:29 - 122:35] -// CHECK: 122:39: BinaryOperator= Extent=[122:39 - 122:50] +// CHECK: 122:39: BinaryOperator=<= Extent=[122:39 - 122:50] +// CHECK: 122:39: UnexposedExpr=c:2:14 Extent=[122:39 - 122:40] // CHECK: 122:39: DeclRefExpr=c:2:14 Extent=[122:39 - 122:40] // CHECK: 122:44: UnexposedExpr= Extent=[122:44 - 122:50] // CHECK: 122:44: IntegerLiteral= Extent=[122:44 - 122:50] -// CHECK: 123:9: BinaryOperator= Extent=[123:9 - 123:35] -// CHECK: 123:9: BinaryOperator= Extent=[123:9 - 123:20] +// CHECK: 123:8: ParenExpr= Extent=[123:8 - 123:36] +// CHECK: 123:9: BinaryOperator=&& Extent=[123:9 - 123:35] +// CHECK: 123:9: BinaryOperator=>= Extent=[123:9 - 123:20] +// CHECK: 123:9: UnexposedExpr=c:2:14 Extent=[123:9 - 123:10] // CHECK: 123:9: DeclRefExpr=c:2:14 Extent=[123:9 - 123:10] // CHECK: 123:14: UnexposedExpr= Extent=[123:14 - 123:20] // CHECK: 123:14: IntegerLiteral= Extent=[123:14 - 123:20] -// CHECK: 123:24: BinaryOperator= Extent=[123:24 - 123:35] +// CHECK: 123:24: BinaryOperator=<= Extent=[123:24 - 123:35] +// CHECK: 123:24: UnexposedExpr=c:2:14 Extent=[123:24 - 123:25] // CHECK: 123:24: DeclRefExpr=c:2:14 Extent=[123:24 - 123:25] // CHECK: 123:29: UnexposedExpr= Extent=[123:29 - 123:35] // CHECK: 123:29: IntegerLiteral= Extent=[123:29 - 123:35] -// CHECK: 124:8: BinaryOperator= Extent=[124:8 - 124:19] +// CHECK: 124:8: BinaryOperator=== Extent=[124:8 - 124:19] +// CHECK: 124:8: UnexposedExpr=c:2:14 Extent=[124:8 - 124:9] // CHECK: 124:8: DeclRefExpr=c:2:14 Extent=[124:8 - 124:9] // CHECK: 124:13: UnexposedExpr= Extent=[124:13 - 124:19] // CHECK: 124:13: IntegerLiteral= Extent=[124:13 - 124:19] -// CHECK: 124:23: BinaryOperator= Extent=[124:23 - 124:34] +// CHECK: 124:23: BinaryOperator=== Extent=[124:23 - 124:34] +// CHECK: 124:23: UnexposedExpr=c:2:14 Extent=[124:23 - 124:24] // CHECK: 124:23: DeclRefExpr=c:2:14 Extent=[124:23 - 124:24] // CHECK: 124:28: UnexposedExpr= Extent=[124:28 - 124:34] // CHECK: 124:28: IntegerLiteral= Extent=[124:28 - 124:34] -// CHECK: 124:38: BinaryOperator= Extent=[124:38 - 124:49] +// CHECK: 124:38: BinaryOperator=== Extent=[124:38 - 124:49] +// CHECK: 124:38: UnexposedExpr=c:2:14 Extent=[124:38 - 124:39] // CHECK: 124:38: DeclRefExpr=c:2:14 Extent=[124:38 - 124:39] // CHECK: 124:43: UnexposedExpr= Extent=[124:43 - 124:49] // CHECK: 124:43: IntegerLiteral= Extent=[124:43 - 124:49] -// CHECK: 124:53: BinaryOperator= Extent=[124:53 - 124:64] +// CHECK: 124:53: BinaryOperator=== Extent=[124:53 - 124:64] +// CHECK: 124:53: UnexposedExpr=c:2:14 Extent=[124:53 - 124:54] // CHECK: 124:53: DeclRefExpr=c:2:14 Extent=[124:53 - 124:54] // CHECK: 124:58: UnexposedExpr= Extent=[124:58 - 124:64] // CHECK: 124:58: IntegerLiteral= Extent=[124:58 - 124:64] -// CHECK: 125:5: BinaryOperator= Extent=[125:5 - 125:16] +// CHECK: 125:5: BinaryOperator=== Extent=[125:5 - 125:16] +// CHECK: 125:5: UnexposedExpr=c:2:14 Extent=[125:5 - 125:6] // CHECK: 125:5: DeclRefExpr=c:2:14 Extent=[125:5 - 125:6] // CHECK: 125:10: UnexposedExpr= Extent=[125:10 - 125:16] // CHECK: 125:10: IntegerLiteral= Extent=[125:10 - 125:16] -// CHECK: 125:20: BinaryOperator= Extent=[125:20 - 125:31] +// CHECK: 125:20: BinaryOperator=== Extent=[125:20 - 125:31] +// CHECK: 125:20: UnexposedExpr=c:2:14 Extent=[125:20 - 125:21] // CHECK: 125:20: DeclRefExpr=c:2:14 Extent=[125:20 - 125:21] // CHECK: 125:25: UnexposedExpr= Extent=[125:25 - 125:31] // CHECK: 125:25: IntegerLiteral= Extent=[125:25 - 125:31] -// CHECK: 125:36: BinaryOperator= Extent=[125:36 - 125:62] -// CHECK: 125:36: BinaryOperator= Extent=[125:36 - 125:47] +// CHECK: 125:35: ParenExpr= Extent=[125:35 - 125:63] +// CHECK: 125:36: BinaryOperator=&& Extent=[125:36 - 125:62] +// CHECK: 125:36: BinaryOperator=>= Extent=[125:36 - 125:47] +// CHECK: 125:36: UnexposedExpr=c:2:14 Extent=[125:36 - 125:37] // CHECK: 125:36: DeclRefExpr=c:2:14 Extent=[125:36 - 125:37] // CHECK: 125:41: UnexposedExpr= Extent=[125:41 - 125:47] // CHECK: 125:41: IntegerLiteral= Extent=[125:41 - 125:47] -// CHECK: 125:51: BinaryOperator= Extent=[125:51 - 125:62] +// CHECK: 125:51: BinaryOperator=<= Extent=[125:51 - 125:62] +// CHECK: 125:51: UnexposedExpr=c:2:14 Extent=[125:51 - 125:52] // CHECK: 125:51: DeclRefExpr=c:2:14 Extent=[125:51 - 125:52] // CHECK: 125:56: UnexposedExpr= Extent=[125:56 - 125:62] // CHECK: 125:56: IntegerLiteral= Extent=[125:56 - 125:62] -// CHECK: 126:8: BinaryOperator= Extent=[126:8 - 126:19] +// CHECK: 126:8: BinaryOperator=== Extent=[126:8 - 126:19] +// CHECK: 126:8: UnexposedExpr=c:2:14 Extent=[126:8 - 126:9] // CHECK: 126:8: DeclRefExpr=c:2:14 Extent=[126:8 - 126:9] // CHECK: 126:13: UnexposedExpr= Extent=[126:13 - 126:19] // CHECK: 126:13: IntegerLiteral= Extent=[126:13 - 126:19] -// CHECK: 126:24: BinaryOperator= Extent=[126:24 - 126:50] -// CHECK: 126:24: BinaryOperator= Extent=[126:24 - 126:35] +// CHECK: 126:23: ParenExpr= Extent=[126:23 - 126:51] +// CHECK: 126:24: BinaryOperator=&& Extent=[126:24 - 126:50] +// CHECK: 126:24: BinaryOperator=>= Extent=[126:24 - 126:35] +// CHECK: 126:24: UnexposedExpr=c:2:14 Extent=[126:24 - 126:25] // CHECK: 126:24: DeclRefExpr=c:2:14 Extent=[126:24 - 126:25] // CHECK: 126:29: UnexposedExpr= Extent=[126:29 - 126:35] // CHECK: 126:29: IntegerLiteral= Extent=[126:29 - 126:35] -// CHECK: 126:39: BinaryOperator= Extent=[126:39 - 126:50] +// CHECK: 126:39: BinaryOperator=<= Extent=[126:39 - 126:50] +// CHECK: 126:39: UnexposedExpr=c:2:14 Extent=[126:39 - 126:40] // CHECK: 126:39: DeclRefExpr=c:2:14 Extent=[126:39 - 126:40] // CHECK: 126:44: UnexposedExpr= Extent=[126:44 - 126:50] // CHECK: 126:44: IntegerLiteral= Extent=[126:44 - 126:50] -// CHECK: 127:8: BinaryOperator= Extent=[127:8 - 127:19] +// CHECK: 127:8: BinaryOperator=== Extent=[127:8 - 127:19] +// CHECK: 127:8: UnexposedExpr=c:2:14 Extent=[127:8 - 127:9] // CHECK: 127:8: DeclRefExpr=c:2:14 Extent=[127:8 - 127:9] // CHECK: 127:13: UnexposedExpr= Extent=[127:13 - 127:19] // CHECK: 127:13: IntegerLiteral= Extent=[127:13 - 127:19] -// CHECK: 127:23: BinaryOperator= Extent=[127:23 - 127:34] +// CHECK: 127:23: BinaryOperator=== Extent=[127:23 - 127:34] +// CHECK: 127:23: UnexposedExpr=c:2:14 Extent=[127:23 - 127:24] // CHECK: 127:23: DeclRefExpr=c:2:14 Extent=[127:23 - 127:24] // CHECK: 127:28: UnexposedExpr= Extent=[127:28 - 127:34] // CHECK: 127:28: IntegerLiteral= Extent=[127:28 - 127:34] -// CHECK: 127:38: BinaryOperator= Extent=[127:38 - 127:49] +// CHECK: 127:38: BinaryOperator=== Extent=[127:38 - 127:49] +// CHECK: 127:38: UnexposedExpr=c:2:14 Extent=[127:38 - 127:39] // CHECK: 127:38: DeclRefExpr=c:2:14 Extent=[127:38 - 127:39] // CHECK: 127:43: UnexposedExpr= Extent=[127:43 - 127:49] // CHECK: 127:43: IntegerLiteral= Extent=[127:43 - 127:49] -// CHECK: 127:53: BinaryOperator= Extent=[127:53 - 127:64] +// CHECK: 127:53: BinaryOperator=== Extent=[127:53 - 127:64] +// CHECK: 127:53: UnexposedExpr=c:2:14 Extent=[127:53 - 127:54] // CHECK: 127:53: DeclRefExpr=c:2:14 Extent=[127:53 - 127:54] // CHECK: 127:58: UnexposedExpr= Extent=[127:58 - 127:64] // CHECK: 127:58: IntegerLiteral= Extent=[127:58 - 127:64] -// CHECK: 128:6: BinaryOperator= Extent=[128:6 - 128:32] -// CHECK: 128:6: BinaryOperator= Extent=[128:6 - 128:17] +// CHECK: 128:5: ParenExpr= Extent=[128:5 - 128:33] +// CHECK: 128:6: BinaryOperator=&& Extent=[128:6 - 128:32] +// CHECK: 128:6: BinaryOperator=>= Extent=[128:6 - 128:17] +// CHECK: 128:6: UnexposedExpr=c:2:14 Extent=[128:6 - 128:7] // CHECK: 128:6: DeclRefExpr=c:2:14 Extent=[128:6 - 128:7] // CHECK: 128:11: UnexposedExpr= Extent=[128:11 - 128:17] // CHECK: 128:11: IntegerLiteral= Extent=[128:11 - 128:17] -// CHECK: 128:21: BinaryOperator= Extent=[128:21 - 128:32] +// CHECK: 128:21: BinaryOperator=<= Extent=[128:21 - 128:32] +// CHECK: 128:21: UnexposedExpr=c:2:14 Extent=[128:21 - 128:22] // CHECK: 128:21: DeclRefExpr=c:2:14 Extent=[128:21 - 128:22] // CHECK: 128:26: UnexposedExpr= Extent=[128:26 - 128:32] // CHECK: 128:26: IntegerLiteral= Extent=[128:26 - 128:32] -// CHECK: 129:9: BinaryOperator= Extent=[129:9 - 129:35] -// CHECK: 129:9: BinaryOperator= Extent=[129:9 - 129:20] +// CHECK: 129:8: ParenExpr= Extent=[129:8 - 129:36] +// CHECK: 129:9: BinaryOperator=&& Extent=[129:9 - 129:35] +// CHECK: 129:9: BinaryOperator=>= Extent=[129:9 - 129:20] +// CHECK: 129:9: UnexposedExpr=c:2:14 Extent=[129:9 - 129:10] // CHECK: 129:9: DeclRefExpr=c:2:14 Extent=[129:9 - 129:10] // CHECK: 129:14: UnexposedExpr= Extent=[129:14 - 129:20] // CHECK: 129:14: IntegerLiteral= Extent=[129:14 - 129:20] -// CHECK: 129:24: BinaryOperator= Extent=[129:24 - 129:35] +// CHECK: 129:24: BinaryOperator=<= Extent=[129:24 - 129:35] +// CHECK: 129:24: UnexposedExpr=c:2:14 Extent=[129:24 - 129:25] // CHECK: 129:24: DeclRefExpr=c:2:14 Extent=[129:24 - 129:25] // CHECK: 129:29: UnexposedExpr= Extent=[129:29 - 129:35] // CHECK: 129:29: IntegerLiteral= Extent=[129:29 - 129:35] -// CHECK: 130:8: BinaryOperator= Extent=[130:8 - 130:19] +// CHECK: 130:8: BinaryOperator=== Extent=[130:8 - 130:19] +// CHECK: 130:8: UnexposedExpr=c:2:14 Extent=[130:8 - 130:9] // CHECK: 130:8: DeclRefExpr=c:2:14 Extent=[130:8 - 130:9] // CHECK: 130:13: UnexposedExpr= Extent=[130:13 - 130:19] // CHECK: 130:13: IntegerLiteral= Extent=[130:13 - 130:19] -// CHECK: 130:23: BinaryOperator= Extent=[130:23 - 130:34] +// CHECK: 130:23: BinaryOperator=== Extent=[130:23 - 130:34] +// CHECK: 130:23: UnexposedExpr=c:2:14 Extent=[130:23 - 130:24] // CHECK: 130:23: DeclRefExpr=c:2:14 Extent=[130:23 - 130:24] // CHECK: 130:28: UnexposedExpr= Extent=[130:28 - 130:34] // CHECK: 130:28: IntegerLiteral= Extent=[130:28 - 130:34] -// CHECK: 130:38: BinaryOperator= Extent=[130:38 - 130:49] +// CHECK: 130:38: BinaryOperator=== Extent=[130:38 - 130:49] +// CHECK: 130:38: UnexposedExpr=c:2:14 Extent=[130:38 - 130:39] // CHECK: 130:38: DeclRefExpr=c:2:14 Extent=[130:38 - 130:39] // CHECK: 130:43: UnexposedExpr= Extent=[130:43 - 130:49] // CHECK: 130:43: IntegerLiteral= Extent=[130:43 - 130:49] -// CHECK: 130:53: BinaryOperator= Extent=[130:53 - 130:64] +// CHECK: 130:53: BinaryOperator=== Extent=[130:53 - 130:64] +// CHECK: 130:53: UnexposedExpr=c:2:14 Extent=[130:53 - 130:54] // CHECK: 130:53: DeclRefExpr=c:2:14 Extent=[130:53 - 130:54] // CHECK: 130:58: UnexposedExpr= Extent=[130:58 - 130:64] // CHECK: 130:58: IntegerLiteral= Extent=[130:58 - 130:64] -// CHECK: 131:6: BinaryOperator= Extent=[131:6 - 131:32] -// CHECK: 131:6: BinaryOperator= Extent=[131:6 - 131:17] +// CHECK: 131:5: ParenExpr= Extent=[131:5 - 131:33] +// CHECK: 131:6: BinaryOperator=&& Extent=[131:6 - 131:32] +// CHECK: 131:6: BinaryOperator=>= Extent=[131:6 - 131:17] +// CHECK: 131:6: UnexposedExpr=c:2:14 Extent=[131:6 - 131:7] // CHECK: 131:6: DeclRefExpr=c:2:14 Extent=[131:6 - 131:7] // CHECK: 131:11: UnexposedExpr= Extent=[131:11 - 131:17] // CHECK: 131:11: IntegerLiteral= Extent=[131:11 - 131:17] -// CHECK: 131:21: BinaryOperator= Extent=[131:21 - 131:32] +// CHECK: 131:21: BinaryOperator=<= Extent=[131:21 - 131:32] +// CHECK: 131:21: UnexposedExpr=c:2:14 Extent=[131:21 - 131:22] // CHECK: 131:21: DeclRefExpr=c:2:14 Extent=[131:21 - 131:22] // CHECK: 131:26: UnexposedExpr= Extent=[131:26 - 131:32] // CHECK: 131:26: IntegerLiteral= Extent=[131:26 - 131:32] -// CHECK: 132:9: BinaryOperator= Extent=[132:9 - 132:35] -// CHECK: 132:9: BinaryOperator= Extent=[132:9 - 132:20] +// CHECK: 132:8: ParenExpr= Extent=[132:8 - 132:36] +// CHECK: 132:9: BinaryOperator=&& Extent=[132:9 - 132:35] +// CHECK: 132:9: BinaryOperator=>= Extent=[132:9 - 132:20] +// CHECK: 132:9: UnexposedExpr=c:2:14 Extent=[132:9 - 132:10] // CHECK: 132:9: DeclRefExpr=c:2:14 Extent=[132:9 - 132:10] // CHECK: 132:14: UnexposedExpr= Extent=[132:14 - 132:20] // CHECK: 132:14: IntegerLiteral= Extent=[132:14 - 132:20] -// CHECK: 132:24: BinaryOperator= Extent=[132:24 - 132:35] +// CHECK: 132:24: BinaryOperator=<= Extent=[132:24 - 132:35] +// CHECK: 132:24: UnexposedExpr=c:2:14 Extent=[132:24 - 132:25] // CHECK: 132:24: DeclRefExpr=c:2:14 Extent=[132:24 - 132:25] // CHECK: 132:29: UnexposedExpr= Extent=[132:29 - 132:35] // CHECK: 132:29: IntegerLiteral= Extent=[132:29 - 132:35] -// CHECK: 133:8: BinaryOperator= Extent=[133:8 - 133:19] +// CHECK: 133:8: BinaryOperator=== Extent=[133:8 - 133:19] +// CHECK: 133:8: UnexposedExpr=c:2:14 Extent=[133:8 - 133:9] // CHECK: 133:8: DeclRefExpr=c:2:14 Extent=[133:8 - 133:9] // CHECK: 133:13: UnexposedExpr= Extent=[133:13 - 133:19] // CHECK: 133:13: IntegerLiteral= Extent=[133:13 - 133:19] -// CHECK: 133:24: BinaryOperator= Extent=[133:24 - 133:50] -// CHECK: 133:24: BinaryOperator= Extent=[133:24 - 133:35] +// CHECK: 133:23: ParenExpr= Extent=[133:23 - 133:51] +// CHECK: 133:24: BinaryOperator=&& Extent=[133:24 - 133:50] +// CHECK: 133:24: BinaryOperator=>= Extent=[133:24 - 133:35] +// CHECK: 133:24: UnexposedExpr=c:2:14 Extent=[133:24 - 133:25] // CHECK: 133:24: DeclRefExpr=c:2:14 Extent=[133:24 - 133:25] // CHECK: 133:29: UnexposedExpr= Extent=[133:29 - 133:35] // CHECK: 133:29: IntegerLiteral= Extent=[133:29 - 133:35] -// CHECK: 133:39: BinaryOperator= Extent=[133:39 - 133:50] +// CHECK: 133:39: BinaryOperator=<= Extent=[133:39 - 133:50] +// CHECK: 133:39: UnexposedExpr=c:2:14 Extent=[133:39 - 133:40] // CHECK: 133:39: DeclRefExpr=c:2:14 Extent=[133:39 - 133:40] // CHECK: 133:44: UnexposedExpr= Extent=[133:44 - 133:50] // CHECK: 133:44: IntegerLiteral= Extent=[133:44 - 133:50] -// CHECK: 134:8: BinaryOperator= Extent=[134:8 - 134:19] +// CHECK: 134:8: BinaryOperator=== Extent=[134:8 - 134:19] +// CHECK: 134:8: UnexposedExpr=c:2:14 Extent=[134:8 - 134:9] // CHECK: 134:8: DeclRefExpr=c:2:14 Extent=[134:8 - 134:9] // CHECK: 134:13: UnexposedExpr= Extent=[134:13 - 134:19] // CHECK: 134:13: IntegerLiteral= Extent=[134:13 - 134:19] -// CHECK: 134:23: BinaryOperator= Extent=[134:23 - 134:34] +// CHECK: 134:23: BinaryOperator=== Extent=[134:23 - 134:34] +// CHECK: 134:23: UnexposedExpr=c:2:14 Extent=[134:23 - 134:24] // CHECK: 134:23: DeclRefExpr=c:2:14 Extent=[134:23 - 134:24] // CHECK: 134:28: UnexposedExpr= Extent=[134:28 - 134:34] // CHECK: 134:28: IntegerLiteral= Extent=[134:28 - 134:34] -// CHECK: 134:38: BinaryOperator= Extent=[134:38 - 134:49] +// CHECK: 134:38: BinaryOperator=== Extent=[134:38 - 134:49] +// CHECK: 134:38: UnexposedExpr=c:2:14 Extent=[134:38 - 134:39] // CHECK: 134:38: DeclRefExpr=c:2:14 Extent=[134:38 - 134:39] // CHECK: 134:43: UnexposedExpr= Extent=[134:43 - 134:49] // CHECK: 134:43: IntegerLiteral= Extent=[134:43 - 134:49] -// CHECK: 134:54: BinaryOperator= Extent=[134:54 - 134:80] -// CHECK: 134:54: BinaryOperator= Extent=[134:54 - 134:65] +// CHECK: 134:53: ParenExpr= Extent=[134:53 - 134:81] +// CHECK: 134:54: BinaryOperator=&& Extent=[134:54 - 134:80] +// CHECK: 134:54: BinaryOperator=>= Extent=[134:54 - 134:65] +// CHECK: 134:54: UnexposedExpr=c:2:14 Extent=[134:54 - 134:55] // CHECK: 134:54: DeclRefExpr=c:2:14 Extent=[134:54 - 134:55] // CHECK: 134:59: UnexposedExpr= Extent=[134:59 - 134:65] // CHECK: 134:59: IntegerLiteral= Extent=[134:59 - 134:65] -// CHECK: 134:69: BinaryOperator= Extent=[134:69 - 134:80] +// CHECK: 134:69: BinaryOperator=<= Extent=[134:69 - 134:80] +// CHECK: 134:69: UnexposedExpr=c:2:14 Extent=[134:69 - 134:70] // CHECK: 134:69: DeclRefExpr=c:2:14 Extent=[134:69 - 134:70] // CHECK: 134:74: UnexposedExpr= Extent=[134:74 - 134:80] // CHECK: 134:74: IntegerLiteral= Extent=[134:74 - 134:80] -// CHECK: 135:9: BinaryOperator= Extent=[135:9 - 135:35] -// CHECK: 135:9: BinaryOperator= Extent=[135:9 - 135:20] +// CHECK: 135:8: ParenExpr= Extent=[135:8 - 135:36] +// CHECK: 135:9: BinaryOperator=&& Extent=[135:9 - 135:35] +// CHECK: 135:9: BinaryOperator=>= Extent=[135:9 - 135:20] +// CHECK: 135:9: UnexposedExpr=c:2:14 Extent=[135:9 - 135:10] // CHECK: 135:9: DeclRefExpr=c:2:14 Extent=[135:9 - 135:10] // CHECK: 135:14: UnexposedExpr= Extent=[135:14 - 135:20] // CHECK: 135:14: IntegerLiteral= Extent=[135:14 - 135:20] -// CHECK: 135:24: BinaryOperator= Extent=[135:24 - 135:35] +// CHECK: 135:24: BinaryOperator=<= Extent=[135:24 - 135:35] +// CHECK: 135:24: UnexposedExpr=c:2:14 Extent=[135:24 - 135:25] // CHECK: 135:24: DeclRefExpr=c:2:14 Extent=[135:24 - 135:25] // CHECK: 135:29: UnexposedExpr= Extent=[135:29 - 135:35] // CHECK: 135:29: IntegerLiteral= Extent=[135:29 - 135:35] -// CHECK: 136:9: BinaryOperator= Extent=[136:9 - 136:35] -// CHECK: 136:9: BinaryOperator= Extent=[136:9 - 136:20] +// CHECK: 136:8: ParenExpr= Extent=[136:8 - 136:36] +// CHECK: 136:9: BinaryOperator=&& Extent=[136:9 - 136:35] +// CHECK: 136:9: BinaryOperator=>= Extent=[136:9 - 136:20] +// CHECK: 136:9: UnexposedExpr=c:2:14 Extent=[136:9 - 136:10] // CHECK: 136:9: DeclRefExpr=c:2:14 Extent=[136:9 - 136:10] // CHECK: 136:14: UnexposedExpr= Extent=[136:14 - 136:20] // CHECK: 136:14: IntegerLiteral= Extent=[136:14 - 136:20] -// CHECK: 136:24: BinaryOperator= Extent=[136:24 - 136:35] +// CHECK: 136:24: BinaryOperator=<= Extent=[136:24 - 136:35] +// CHECK: 136:24: UnexposedExpr=c:2:14 Extent=[136:24 - 136:25] // CHECK: 136:24: DeclRefExpr=c:2:14 Extent=[136:24 - 136:25] // CHECK: 136:29: UnexposedExpr= Extent=[136:29 - 136:35] // CHECK: 136:29: IntegerLiteral= Extent=[136:29 - 136:35] -// CHECK: 137:9: BinaryOperator= Extent=[137:9 - 137:35] -// CHECK: 137:9: BinaryOperator= Extent=[137:9 - 137:20] +// CHECK: 137:8: ParenExpr= Extent=[137:8 - 137:36] +// CHECK: 137:9: BinaryOperator=&& Extent=[137:9 - 137:35] +// CHECK: 137:9: BinaryOperator=>= Extent=[137:9 - 137:20] +// CHECK: 137:9: UnexposedExpr=c:2:14 Extent=[137:9 - 137:10] // CHECK: 137:9: DeclRefExpr=c:2:14 Extent=[137:9 - 137:10] // CHECK: 137:14: UnexposedExpr= Extent=[137:14 - 137:20] // CHECK: 137:14: IntegerLiteral= Extent=[137:14 - 137:20] -// CHECK: 137:24: BinaryOperator= Extent=[137:24 - 137:35] +// CHECK: 137:24: BinaryOperator=<= Extent=[137:24 - 137:35] +// CHECK: 137:24: UnexposedExpr=c:2:14 Extent=[137:24 - 137:25] // CHECK: 137:24: DeclRefExpr=c:2:14 Extent=[137:24 - 137:25] // CHECK: 137:29: UnexposedExpr= Extent=[137:29 - 137:35] // CHECK: 137:29: IntegerLiteral= Extent=[137:29 - 137:35] -// CHECK: 138:9: BinaryOperator= Extent=[138:9 - 138:35] -// CHECK: 138:9: BinaryOperator= Extent=[138:9 - 138:20] +// CHECK: 138:8: ParenExpr= Extent=[138:8 - 138:36] +// CHECK: 138:9: BinaryOperator=&& Extent=[138:9 - 138:35] +// CHECK: 138:9: BinaryOperator=>= Extent=[138:9 - 138:20] +// CHECK: 138:9: UnexposedExpr=c:2:14 Extent=[138:9 - 138:10] // CHECK: 138:9: DeclRefExpr=c:2:14 Extent=[138:9 - 138:10] // CHECK: 138:14: UnexposedExpr= Extent=[138:14 - 138:20] // CHECK: 138:14: IntegerLiteral= Extent=[138:14 - 138:20] -// CHECK: 138:24: BinaryOperator= Extent=[138:24 - 138:35] +// CHECK: 138:24: BinaryOperator=<= Extent=[138:24 - 138:35] +// CHECK: 138:24: UnexposedExpr=c:2:14 Extent=[138:24 - 138:25] // CHECK: 138:24: DeclRefExpr=c:2:14 Extent=[138:24 - 138:25] // CHECK: 138:29: UnexposedExpr= Extent=[138:29 - 138:35] // CHECK: 138:29: IntegerLiteral= Extent=[138:29 - 138:35] -// CHECK: 139:9: BinaryOperator= Extent=[139:9 - 139:35] -// CHECK: 139:9: BinaryOperator= Extent=[139:9 - 139:20] +// CHECK: 139:8: ParenExpr= Extent=[139:8 - 139:36] +// CHECK: 139:9: BinaryOperator=&& Extent=[139:9 - 139:35] +// CHECK: 139:9: BinaryOperator=>= Extent=[139:9 - 139:20] +// CHECK: 139:9: UnexposedExpr=c:2:14 Extent=[139:9 - 139:10] // CHECK: 139:9: DeclRefExpr=c:2:14 Extent=[139:9 - 139:10] // CHECK: 139:14: UnexposedExpr= Extent=[139:14 - 139:20] // CHECK: 139:14: IntegerLiteral= Extent=[139:14 - 139:20] -// CHECK: 139:24: BinaryOperator= Extent=[139:24 - 139:35] +// CHECK: 139:24: BinaryOperator=<= Extent=[139:24 - 139:35] +// CHECK: 139:24: UnexposedExpr=c:2:14 Extent=[139:24 - 139:25] // CHECK: 139:24: DeclRefExpr=c:2:14 Extent=[139:24 - 139:25] // CHECK: 139:29: UnexposedExpr= Extent=[139:29 - 139:35] // CHECK: 139:29: IntegerLiteral= Extent=[139:29 - 139:35] -// CHECK: 140:9: BinaryOperator= Extent=[140:9 - 140:35] -// CHECK: 140:9: BinaryOperator= Extent=[140:9 - 140:20] +// CHECK: 140:8: ParenExpr= Extent=[140:8 - 140:36] +// CHECK: 140:9: BinaryOperator=&& Extent=[140:9 - 140:35] +// CHECK: 140:9: BinaryOperator=>= Extent=[140:9 - 140:20] +// CHECK: 140:9: UnexposedExpr=c:2:14 Extent=[140:9 - 140:10] // CHECK: 140:9: DeclRefExpr=c:2:14 Extent=[140:9 - 140:10] // CHECK: 140:14: UnexposedExpr= Extent=[140:14 - 140:20] // CHECK: 140:14: IntegerLiteral= Extent=[140:14 - 140:20] -// CHECK: 140:24: BinaryOperator= Extent=[140:24 - 140:35] +// CHECK: 140:24: BinaryOperator=<= Extent=[140:24 - 140:35] +// CHECK: 140:24: UnexposedExpr=c:2:14 Extent=[140:24 - 140:25] // CHECK: 140:24: DeclRefExpr=c:2:14 Extent=[140:24 - 140:25] // CHECK: 140:29: UnexposedExpr= Extent=[140:29 - 140:35] // CHECK: 140:29: IntegerLiteral= Extent=[140:29 - 140:35] -// CHECK: 141:8: BinaryOperator= Extent=[141:8 - 141:19] +// CHECK: 141:8: BinaryOperator=== Extent=[141:8 - 141:19] +// CHECK: 141:8: UnexposedExpr=c:2:14 Extent=[141:8 - 141:9] // CHECK: 141:8: DeclRefExpr=c:2:14 Extent=[141:8 - 141:9] // CHECK: 141:13: UnexposedExpr= Extent=[141:13 - 141:19] // CHECK: 141:13: IntegerLiteral= Extent=[141:13 - 141:19] -// CHECK: 141:23: BinaryOperator= Extent=[141:23 - 141:34] +// CHECK: 141:23: BinaryOperator=== Extent=[141:23 - 141:34] +// CHECK: 141:23: UnexposedExpr=c:2:14 Extent=[141:23 - 141:24] // CHECK: 141:23: DeclRefExpr=c:2:14 Extent=[141:23 - 141:24] // CHECK: 141:28: UnexposedExpr= Extent=[141:28 - 141:34] // CHECK: 141:28: IntegerLiteral= Extent=[141:28 - 141:34] -// CHECK: 141:38: BinaryOperator= Extent=[141:38 - 141:49] +// CHECK: 141:38: BinaryOperator=== Extent=[141:38 - 141:49] +// CHECK: 141:38: UnexposedExpr=c:2:14 Extent=[141:38 - 141:39] // CHECK: 141:38: DeclRefExpr=c:2:14 Extent=[141:38 - 141:39] // CHECK: 141:43: UnexposedExpr= Extent=[141:43 - 141:49] // CHECK: 141:43: IntegerLiteral= Extent=[141:43 - 141:49] -// CHECK: 141:54: BinaryOperator= Extent=[141:54 - 141:80] -// CHECK: 141:54: BinaryOperator= Extent=[141:54 - 141:65] +// CHECK: 141:53: ParenExpr= Extent=[141:53 - 141:81] +// CHECK: 141:54: BinaryOperator=&& Extent=[141:54 - 141:80] +// CHECK: 141:54: BinaryOperator=>= Extent=[141:54 - 141:65] +// CHECK: 141:54: UnexposedExpr=c:2:14 Extent=[141:54 - 141:55] // CHECK: 141:54: DeclRefExpr=c:2:14 Extent=[141:54 - 141:55] // CHECK: 141:59: UnexposedExpr= Extent=[141:59 - 141:65] // CHECK: 141:59: IntegerLiteral= Extent=[141:59 - 141:65] -// CHECK: 141:69: BinaryOperator= Extent=[141:69 - 141:80] +// CHECK: 141:69: BinaryOperator=<= Extent=[141:69 - 141:80] +// CHECK: 141:69: UnexposedExpr=c:2:14 Extent=[141:69 - 141:70] // CHECK: 141:69: DeclRefExpr=c:2:14 Extent=[141:69 - 141:70] // CHECK: 141:74: UnexposedExpr= Extent=[141:74 - 141:80] // CHECK: 141:74: IntegerLiteral= Extent=[141:74 - 141:80] -// CHECK: 142:9: BinaryOperator= Extent=[142:9 - 142:35] -// CHECK: 142:9: BinaryOperator= Extent=[142:9 - 142:20] +// CHECK: 142:8: ParenExpr= Extent=[142:8 - 142:36] +// CHECK: 142:9: BinaryOperator=&& Extent=[142:9 - 142:35] +// CHECK: 142:9: BinaryOperator=>= Extent=[142:9 - 142:20] +// CHECK: 142:9: UnexposedExpr=c:2:14 Extent=[142:9 - 142:10] // CHECK: 142:9: DeclRefExpr=c:2:14 Extent=[142:9 - 142:10] // CHECK: 142:14: UnexposedExpr= Extent=[142:14 - 142:20] // CHECK: 142:14: IntegerLiteral= Extent=[142:14 - 142:20] -// CHECK: 142:24: BinaryOperator= Extent=[142:24 - 142:35] +// CHECK: 142:24: BinaryOperator=<= Extent=[142:24 - 142:35] +// CHECK: 142:24: UnexposedExpr=c:2:14 Extent=[142:24 - 142:25] // CHECK: 142:24: DeclRefExpr=c:2:14 Extent=[142:24 - 142:25] // CHECK: 142:29: UnexposedExpr= Extent=[142:29 - 142:35] // CHECK: 142:29: IntegerLiteral= Extent=[142:29 - 142:35] -// CHECK: 143:9: BinaryOperator= Extent=[143:9 - 143:35] -// CHECK: 143:9: BinaryOperator= Extent=[143:9 - 143:20] +// CHECK: 143:8: ParenExpr= Extent=[143:8 - 143:36] +// CHECK: 143:9: BinaryOperator=&& Extent=[143:9 - 143:35] +// CHECK: 143:9: BinaryOperator=>= Extent=[143:9 - 143:20] +// CHECK: 143:9: UnexposedExpr=c:2:14 Extent=[143:9 - 143:10] // CHECK: 143:9: DeclRefExpr=c:2:14 Extent=[143:9 - 143:10] // CHECK: 143:14: UnexposedExpr= Extent=[143:14 - 143:20] // CHECK: 143:14: IntegerLiteral= Extent=[143:14 - 143:20] -// CHECK: 143:24: BinaryOperator= Extent=[143:24 - 143:35] +// CHECK: 143:24: BinaryOperator=<= Extent=[143:24 - 143:35] +// CHECK: 143:24: UnexposedExpr=c:2:14 Extent=[143:24 - 143:25] // CHECK: 143:24: DeclRefExpr=c:2:14 Extent=[143:24 - 143:25] // CHECK: 143:29: UnexposedExpr= Extent=[143:29 - 143:35] // CHECK: 143:29: IntegerLiteral= Extent=[143:29 - 143:35] -// CHECK: 144:8: BinaryOperator= Extent=[144:8 - 144:19] +// CHECK: 144:8: BinaryOperator=== Extent=[144:8 - 144:19] +// CHECK: 144:8: UnexposedExpr=c:2:14 Extent=[144:8 - 144:9] // CHECK: 144:8: DeclRefExpr=c:2:14 Extent=[144:8 - 144:9] // CHECK: 144:13: UnexposedExpr= Extent=[144:13 - 144:19] // CHECK: 144:13: IntegerLiteral= Extent=[144:13 - 144:19] -// CHECK: 144:24: BinaryOperator= Extent=[144:24 - 144:50] -// CHECK: 144:24: BinaryOperator= Extent=[144:24 - 144:35] +// CHECK: 144:23: ParenExpr= Extent=[144:23 - 144:51] +// CHECK: 144:24: BinaryOperator=&& Extent=[144:24 - 144:50] +// CHECK: 144:24: BinaryOperator=>= Extent=[144:24 - 144:35] +// CHECK: 144:24: UnexposedExpr=c:2:14 Extent=[144:24 - 144:25] // CHECK: 144:24: DeclRefExpr=c:2:14 Extent=[144:24 - 144:25] // CHECK: 144:29: UnexposedExpr= Extent=[144:29 - 144:35] // CHECK: 144:29: IntegerLiteral= Extent=[144:29 - 144:35] -// CHECK: 144:39: BinaryOperator= Extent=[144:39 - 144:50] +// CHECK: 144:39: BinaryOperator=<= Extent=[144:39 - 144:50] +// CHECK: 144:39: UnexposedExpr=c:2:14 Extent=[144:39 - 144:40] // CHECK: 144:39: DeclRefExpr=c:2:14 Extent=[144:39 - 144:40] // CHECK: 144:44: UnexposedExpr= Extent=[144:44 - 144:50] // CHECK: 144:44: IntegerLiteral= Extent=[144:44 - 144:50] -// CHECK: 145:9: BinaryOperator= Extent=[145:9 - 145:35] -// CHECK: 145:9: BinaryOperator= Extent=[145:9 - 145:20] +// CHECK: 145:8: ParenExpr= Extent=[145:8 - 145:36] +// CHECK: 145:9: BinaryOperator=&& Extent=[145:9 - 145:35] +// CHECK: 145:9: BinaryOperator=>= Extent=[145:9 - 145:20] +// CHECK: 145:9: UnexposedExpr=c:2:14 Extent=[145:9 - 145:10] // CHECK: 145:9: DeclRefExpr=c:2:14 Extent=[145:9 - 145:10] // CHECK: 145:14: UnexposedExpr= Extent=[145:14 - 145:20] // CHECK: 145:14: IntegerLiteral= Extent=[145:14 - 145:20] -// CHECK: 145:24: BinaryOperator= Extent=[145:24 - 145:35] +// CHECK: 145:24: BinaryOperator=<= Extent=[145:24 - 145:35] +// CHECK: 145:24: UnexposedExpr=c:2:14 Extent=[145:24 - 145:25] // CHECK: 145:24: DeclRefExpr=c:2:14 Extent=[145:24 - 145:25] // CHECK: 145:29: UnexposedExpr= Extent=[145:29 - 145:35] // CHECK: 145:29: IntegerLiteral= Extent=[145:29 - 145:35] -// CHECK: 146:9: BinaryOperator= Extent=[146:9 - 146:35] -// CHECK: 146:9: BinaryOperator= Extent=[146:9 - 146:20] +// CHECK: 146:8: ParenExpr= Extent=[146:8 - 146:36] +// CHECK: 146:9: BinaryOperator=&& Extent=[146:9 - 146:35] +// CHECK: 146:9: BinaryOperator=>= Extent=[146:9 - 146:20] +// CHECK: 146:9: UnexposedExpr=c:2:14 Extent=[146:9 - 146:10] // CHECK: 146:9: DeclRefExpr=c:2:14 Extent=[146:9 - 146:10] // CHECK: 146:14: UnexposedExpr= Extent=[146:14 - 146:20] // CHECK: 146:14: IntegerLiteral= Extent=[146:14 - 146:20] -// CHECK: 146:24: BinaryOperator= Extent=[146:24 - 146:35] +// CHECK: 146:24: BinaryOperator=<= Extent=[146:24 - 146:35] +// CHECK: 146:24: UnexposedExpr=c:2:14 Extent=[146:24 - 146:25] // CHECK: 146:24: DeclRefExpr=c:2:14 Extent=[146:24 - 146:25] // CHECK: 146:29: UnexposedExpr= Extent=[146:29 - 146:35] // CHECK: 146:29: IntegerLiteral= Extent=[146:29 - 146:35] -// CHECK: 147:9: BinaryOperator= Extent=[147:9 - 147:35] -// CHECK: 147:9: BinaryOperator= Extent=[147:9 - 147:20] +// CHECK: 147:8: ParenExpr= Extent=[147:8 - 147:36] +// CHECK: 147:9: BinaryOperator=&& Extent=[147:9 - 147:35] +// CHECK: 147:9: BinaryOperator=>= Extent=[147:9 - 147:20] +// CHECK: 147:9: UnexposedExpr=c:2:14 Extent=[147:9 - 147:10] // CHECK: 147:9: DeclRefExpr=c:2:14 Extent=[147:9 - 147:10] // CHECK: 147:14: UnexposedExpr= Extent=[147:14 - 147:20] // CHECK: 147:14: IntegerLiteral= Extent=[147:14 - 147:20] -// CHECK: 147:24: BinaryOperator= Extent=[147:24 - 147:35] +// CHECK: 147:24: BinaryOperator=<= Extent=[147:24 - 147:35] +// CHECK: 147:24: UnexposedExpr=c:2:14 Extent=[147:24 - 147:25] // CHECK: 147:24: DeclRefExpr=c:2:14 Extent=[147:24 - 147:25] // CHECK: 147:29: UnexposedExpr= Extent=[147:29 - 147:35] // CHECK: 147:29: IntegerLiteral= Extent=[147:29 - 147:35] -// CHECK: 148:9: BinaryOperator= Extent=[148:9 - 148:35] -// CHECK: 148:9: BinaryOperator= Extent=[148:9 - 148:20] +// CHECK: 148:8: ParenExpr= Extent=[148:8 - 148:36] +// CHECK: 148:9: BinaryOperator=&& Extent=[148:9 - 148:35] +// CHECK: 148:9: BinaryOperator=>= Extent=[148:9 - 148:20] +// CHECK: 148:9: UnexposedExpr=c:2:14 Extent=[148:9 - 148:10] // CHECK: 148:9: DeclRefExpr=c:2:14 Extent=[148:9 - 148:10] // CHECK: 148:14: UnexposedExpr= Extent=[148:14 - 148:20] // CHECK: 148:14: IntegerLiteral= Extent=[148:14 - 148:20] -// CHECK: 148:24: BinaryOperator= Extent=[148:24 - 148:35] +// CHECK: 148:24: BinaryOperator=<= Extent=[148:24 - 148:35] +// CHECK: 148:24: UnexposedExpr=c:2:14 Extent=[148:24 - 148:25] // CHECK: 148:24: DeclRefExpr=c:2:14 Extent=[148:24 - 148:25] // CHECK: 148:29: UnexposedExpr= Extent=[148:29 - 148:35] // CHECK: 148:29: IntegerLiteral= Extent=[148:29 - 148:35] -// CHECK: 149:9: BinaryOperator= Extent=[149:9 - 149:35] -// CHECK: 149:9: BinaryOperator= Extent=[149:9 - 149:20] +// CHECK: 149:8: ParenExpr= Extent=[149:8 - 149:36] +// CHECK: 149:9: BinaryOperator=&& Extent=[149:9 - 149:35] +// CHECK: 149:9: BinaryOperator=>= Extent=[149:9 - 149:20] +// CHECK: 149:9: UnexposedExpr=c:2:14 Extent=[149:9 - 149:10] // CHECK: 149:9: DeclRefExpr=c:2:14 Extent=[149:9 - 149:10] // CHECK: 149:14: UnexposedExpr= Extent=[149:14 - 149:20] // CHECK: 149:14: IntegerLiteral= Extent=[149:14 - 149:20] -// CHECK: 149:24: BinaryOperator= Extent=[149:24 - 149:35] +// CHECK: 149:24: BinaryOperator=<= Extent=[149:24 - 149:35] +// CHECK: 149:24: UnexposedExpr=c:2:14 Extent=[149:24 - 149:25] // CHECK: 149:24: DeclRefExpr=c:2:14 Extent=[149:24 - 149:25] // CHECK: 149:29: UnexposedExpr= Extent=[149:29 - 149:35] // CHECK: 149:29: IntegerLiteral= Extent=[149:29 - 149:35] -// CHECK: 150:9: BinaryOperator= Extent=[150:9 - 150:35] -// CHECK: 150:9: BinaryOperator= Extent=[150:9 - 150:20] +// CHECK: 150:8: ParenExpr= Extent=[150:8 - 150:36] +// CHECK: 150:9: BinaryOperator=&& Extent=[150:9 - 150:35] +// CHECK: 150:9: BinaryOperator=>= Extent=[150:9 - 150:20] +// CHECK: 150:9: UnexposedExpr=c:2:14 Extent=[150:9 - 150:10] // CHECK: 150:9: DeclRefExpr=c:2:14 Extent=[150:9 - 150:10] // CHECK: 150:14: UnexposedExpr= Extent=[150:14 - 150:20] // CHECK: 150:14: IntegerLiteral= Extent=[150:14 - 150:20] -// CHECK: 150:24: BinaryOperator= Extent=[150:24 - 150:35] +// CHECK: 150:24: BinaryOperator=<= Extent=[150:24 - 150:35] +// CHECK: 150:24: UnexposedExpr=c:2:14 Extent=[150:24 - 150:25] // CHECK: 150:24: DeclRefExpr=c:2:14 Extent=[150:24 - 150:25] // CHECK: 150:29: UnexposedExpr= Extent=[150:29 - 150:35] // CHECK: 150:29: IntegerLiteral= Extent=[150:29 - 150:35] -// CHECK: 151:8: BinaryOperator= Extent=[151:8 - 151:19] +// CHECK: 151:8: BinaryOperator=== Extent=[151:8 - 151:19] +// CHECK: 151:8: UnexposedExpr=c:2:14 Extent=[151:8 - 151:9] // CHECK: 151:8: DeclRefExpr=c:2:14 Extent=[151:8 - 151:9] // CHECK: 151:13: UnexposedExpr= Extent=[151:13 - 151:19] // CHECK: 151:13: IntegerLiteral= Extent=[151:13 - 151:19] -// CHECK: 151:24: BinaryOperator= Extent=[151:24 - 151:50] -// CHECK: 151:24: BinaryOperator= Extent=[151:24 - 151:35] +// CHECK: 151:23: ParenExpr= Extent=[151:23 - 151:51] +// CHECK: 151:24: BinaryOperator=&& Extent=[151:24 - 151:50] +// CHECK: 151:24: BinaryOperator=>= Extent=[151:24 - 151:35] +// CHECK: 151:24: UnexposedExpr=c:2:14 Extent=[151:24 - 151:25] // CHECK: 151:24: DeclRefExpr=c:2:14 Extent=[151:24 - 151:25] // CHECK: 151:29: UnexposedExpr= Extent=[151:29 - 151:35] // CHECK: 151:29: IntegerLiteral= Extent=[151:29 - 151:35] -// CHECK: 151:39: BinaryOperator= Extent=[151:39 - 151:50] +// CHECK: 151:39: BinaryOperator=<= Extent=[151:39 - 151:50] +// CHECK: 151:39: UnexposedExpr=c:2:14 Extent=[151:39 - 151:40] // CHECK: 151:39: DeclRefExpr=c:2:14 Extent=[151:39 - 151:40] // CHECK: 151:44: UnexposedExpr= Extent=[151:44 - 151:50] // CHECK: 151:44: IntegerLiteral= Extent=[151:44 - 151:50] -// CHECK: 152:8: BinaryOperator= Extent=[152:8 - 152:19] +// CHECK: 152:8: BinaryOperator=== Extent=[152:8 - 152:19] +// CHECK: 152:8: UnexposedExpr=c:2:14 Extent=[152:8 - 152:9] // CHECK: 152:8: DeclRefExpr=c:2:14 Extent=[152:8 - 152:9] // CHECK: 152:13: UnexposedExpr= Extent=[152:13 - 152:19] // CHECK: 152:13: IntegerLiteral= Extent=[152:13 - 152:19] -// CHECK: 152:24: BinaryOperator= Extent=[152:24 - 152:50] -// CHECK: 152:24: BinaryOperator= Extent=[152:24 - 152:35] +// CHECK: 152:23: ParenExpr= Extent=[152:23 - 152:51] +// CHECK: 152:24: BinaryOperator=&& Extent=[152:24 - 152:50] +// CHECK: 152:24: BinaryOperator=>= Extent=[152:24 - 152:35] +// CHECK: 152:24: UnexposedExpr=c:2:14 Extent=[152:24 - 152:25] // CHECK: 152:24: DeclRefExpr=c:2:14 Extent=[152:24 - 152:25] // CHECK: 152:29: UnexposedExpr= Extent=[152:29 - 152:35] // CHECK: 152:29: IntegerLiteral= Extent=[152:29 - 152:35] -// CHECK: 152:39: BinaryOperator= Extent=[152:39 - 152:50] +// CHECK: 152:39: BinaryOperator=<= Extent=[152:39 - 152:50] +// CHECK: 152:39: UnexposedExpr=c:2:14 Extent=[152:39 - 152:40] // CHECK: 152:39: DeclRefExpr=c:2:14 Extent=[152:39 - 152:40] // CHECK: 152:44: UnexposedExpr= Extent=[152:44 - 152:50] // CHECK: 152:44: IntegerLiteral= Extent=[152:44 - 152:50] -// CHECK: 153:9: BinaryOperator= Extent=[153:9 - 153:35] -// CHECK: 153:9: BinaryOperator= Extent=[153:9 - 153:20] +// CHECK: 153:8: ParenExpr= Extent=[153:8 - 153:36] +// CHECK: 153:9: BinaryOperator=&& Extent=[153:9 - 153:35] +// CHECK: 153:9: BinaryOperator=>= Extent=[153:9 - 153:20] +// CHECK: 153:9: UnexposedExpr=c:2:14 Extent=[153:9 - 153:10] // CHECK: 153:9: DeclRefExpr=c:2:14 Extent=[153:9 - 153:10] // CHECK: 153:14: UnexposedExpr= Extent=[153:14 - 153:20] // CHECK: 153:14: IntegerLiteral= Extent=[153:14 - 153:20] -// CHECK: 153:24: BinaryOperator= Extent=[153:24 - 153:35] +// CHECK: 153:24: BinaryOperator=<= Extent=[153:24 - 153:35] +// CHECK: 153:24: UnexposedExpr=c:2:14 Extent=[153:24 - 153:25] // CHECK: 153:24: DeclRefExpr=c:2:14 Extent=[153:24 - 153:25] // CHECK: 153:29: UnexposedExpr= Extent=[153:29 - 153:35] // CHECK: 153:29: IntegerLiteral= Extent=[153:29 - 153:35] -// CHECK: 154:9: BinaryOperator= Extent=[154:9 - 154:35] -// CHECK: 154:9: BinaryOperator= Extent=[154:9 - 154:20] +// CHECK: 154:8: ParenExpr= Extent=[154:8 - 154:36] +// CHECK: 154:9: BinaryOperator=&& Extent=[154:9 - 154:35] +// CHECK: 154:9: BinaryOperator=>= Extent=[154:9 - 154:20] +// CHECK: 154:9: UnexposedExpr=c:2:14 Extent=[154:9 - 154:10] // CHECK: 154:9: DeclRefExpr=c:2:14 Extent=[154:9 - 154:10] // CHECK: 154:14: UnexposedExpr= Extent=[154:14 - 154:20] // CHECK: 154:14: IntegerLiteral= Extent=[154:14 - 154:20] -// CHECK: 154:24: BinaryOperator= Extent=[154:24 - 154:35] +// CHECK: 154:24: BinaryOperator=<= Extent=[154:24 - 154:35] +// CHECK: 154:24: UnexposedExpr=c:2:14 Extent=[154:24 - 154:25] // CHECK: 154:24: DeclRefExpr=c:2:14 Extent=[154:24 - 154:25] // CHECK: 154:29: UnexposedExpr= Extent=[154:29 - 154:35] // CHECK: 154:29: IntegerLiteral= Extent=[154:29 - 154:35] -// CHECK: 155:9: BinaryOperator= Extent=[155:9 - 155:35] -// CHECK: 155:9: BinaryOperator= Extent=[155:9 - 155:20] +// CHECK: 155:8: ParenExpr= Extent=[155:8 - 155:36] +// CHECK: 155:9: BinaryOperator=&& Extent=[155:9 - 155:35] +// CHECK: 155:9: BinaryOperator=>= Extent=[155:9 - 155:20] +// CHECK: 155:9: UnexposedExpr=c:2:14 Extent=[155:9 - 155:10] // CHECK: 155:9: DeclRefExpr=c:2:14 Extent=[155:9 - 155:10] // CHECK: 155:14: UnexposedExpr= Extent=[155:14 - 155:20] // CHECK: 155:14: IntegerLiteral= Extent=[155:14 - 155:20] -// CHECK: 155:24: BinaryOperator= Extent=[155:24 - 155:35] +// CHECK: 155:24: BinaryOperator=<= Extent=[155:24 - 155:35] +// CHECK: 155:24: UnexposedExpr=c:2:14 Extent=[155:24 - 155:25] // CHECK: 155:24: DeclRefExpr=c:2:14 Extent=[155:24 - 155:25] // CHECK: 155:29: UnexposedExpr= Extent=[155:29 - 155:35] // CHECK: 155:29: IntegerLiteral= Extent=[155:29 - 155:35] -// CHECK: 156:9: BinaryOperator= Extent=[156:9 - 156:35] -// CHECK: 156:9: BinaryOperator= Extent=[156:9 - 156:20] +// CHECK: 156:8: ParenExpr= Extent=[156:8 - 156:36] +// CHECK: 156:9: BinaryOperator=&& Extent=[156:9 - 156:35] +// CHECK: 156:9: BinaryOperator=>= Extent=[156:9 - 156:20] +// CHECK: 156:9: UnexposedExpr=c:2:14 Extent=[156:9 - 156:10] // CHECK: 156:9: DeclRefExpr=c:2:14 Extent=[156:9 - 156:10] // CHECK: 156:14: UnexposedExpr= Extent=[156:14 - 156:20] // CHECK: 156:14: IntegerLiteral= Extent=[156:14 - 156:20] -// CHECK: 156:24: BinaryOperator= Extent=[156:24 - 156:35] +// CHECK: 156:24: BinaryOperator=<= Extent=[156:24 - 156:35] +// CHECK: 156:24: UnexposedExpr=c:2:14 Extent=[156:24 - 156:25] // CHECK: 156:24: DeclRefExpr=c:2:14 Extent=[156:24 - 156:25] // CHECK: 156:29: UnexposedExpr= Extent=[156:29 - 156:35] // CHECK: 156:29: IntegerLiteral= Extent=[156:29 - 156:35] -// CHECK: 157:9: BinaryOperator= Extent=[157:9 - 157:35] -// CHECK: 157:9: BinaryOperator= Extent=[157:9 - 157:20] +// CHECK: 157:8: ParenExpr= Extent=[157:8 - 157:36] +// CHECK: 157:9: BinaryOperator=&& Extent=[157:9 - 157:35] +// CHECK: 157:9: BinaryOperator=>= Extent=[157:9 - 157:20] +// CHECK: 157:9: UnexposedExpr=c:2:14 Extent=[157:9 - 157:10] // CHECK: 157:9: DeclRefExpr=c:2:14 Extent=[157:9 - 157:10] // CHECK: 157:14: UnexposedExpr= Extent=[157:14 - 157:20] // CHECK: 157:14: IntegerLiteral= Extent=[157:14 - 157:20] -// CHECK: 157:24: BinaryOperator= Extent=[157:24 - 157:35] +// CHECK: 157:24: BinaryOperator=<= Extent=[157:24 - 157:35] +// CHECK: 157:24: UnexposedExpr=c:2:14 Extent=[157:24 - 157:25] // CHECK: 157:24: DeclRefExpr=c:2:14 Extent=[157:24 - 157:25] // CHECK: 157:29: UnexposedExpr= Extent=[157:29 - 157:35] // CHECK: 157:29: IntegerLiteral= Extent=[157:29 - 157:35] -// CHECK: 158:8: BinaryOperator= Extent=[158:8 - 158:19] +// CHECK: 158:8: BinaryOperator=== Extent=[158:8 - 158:19] +// CHECK: 158:8: UnexposedExpr=c:2:14 Extent=[158:8 - 158:9] // CHECK: 158:8: DeclRefExpr=c:2:14 Extent=[158:8 - 158:9] // CHECK: 158:13: UnexposedExpr= Extent=[158:13 - 158:19] // CHECK: 158:13: IntegerLiteral= Extent=[158:13 - 158:19] -// CHECK: 158:24: BinaryOperator= Extent=[158:24 - 158:50] -// CHECK: 158:24: BinaryOperator= Extent=[158:24 - 158:35] +// CHECK: 158:23: ParenExpr= Extent=[158:23 - 158:51] +// CHECK: 158:24: BinaryOperator=&& Extent=[158:24 - 158:50] +// CHECK: 158:24: BinaryOperator=>= Extent=[158:24 - 158:35] +// CHECK: 158:24: UnexposedExpr=c:2:14 Extent=[158:24 - 158:25] // CHECK: 158:24: DeclRefExpr=c:2:14 Extent=[158:24 - 158:25] // CHECK: 158:29: UnexposedExpr= Extent=[158:29 - 158:35] // CHECK: 158:29: IntegerLiteral= Extent=[158:29 - 158:35] -// CHECK: 158:39: BinaryOperator= Extent=[158:39 - 158:50] +// CHECK: 158:39: BinaryOperator=<= Extent=[158:39 - 158:50] +// CHECK: 158:39: UnexposedExpr=c:2:14 Extent=[158:39 - 158:40] // CHECK: 158:39: DeclRefExpr=c:2:14 Extent=[158:39 - 158:40] // CHECK: 158:44: UnexposedExpr= Extent=[158:44 - 158:50] // CHECK: 158:44: IntegerLiteral= Extent=[158:44 - 158:50] -// CHECK: 159:9: BinaryOperator= Extent=[159:9 - 159:35] -// CHECK: 159:9: BinaryOperator= Extent=[159:9 - 159:20] +// CHECK: 159:8: ParenExpr= Extent=[159:8 - 159:36] +// CHECK: 159:9: BinaryOperator=&& Extent=[159:9 - 159:35] +// CHECK: 159:9: BinaryOperator=>= Extent=[159:9 - 159:20] +// CHECK: 159:9: UnexposedExpr=c:2:14 Extent=[159:9 - 159:10] // CHECK: 159:9: DeclRefExpr=c:2:14 Extent=[159:9 - 159:10] // CHECK: 159:14: UnexposedExpr= Extent=[159:14 - 159:20] // CHECK: 159:14: IntegerLiteral= Extent=[159:14 - 159:20] -// CHECK: 159:24: BinaryOperator= Extent=[159:24 - 159:35] +// CHECK: 159:24: BinaryOperator=<= Extent=[159:24 - 159:35] +// CHECK: 159:24: UnexposedExpr=c:2:14 Extent=[159:24 - 159:25] // CHECK: 159:24: DeclRefExpr=c:2:14 Extent=[159:24 - 159:25] // CHECK: 159:29: UnexposedExpr= Extent=[159:29 - 159:35] // CHECK: 159:29: IntegerLiteral= Extent=[159:29 - 159:35] -// CHECK: 160:8: BinaryOperator= Extent=[160:8 - 160:19] +// CHECK: 160:8: BinaryOperator=== Extent=[160:8 - 160:19] +// CHECK: 160:8: UnexposedExpr=c:2:14 Extent=[160:8 - 160:9] // CHECK: 160:8: DeclRefExpr=c:2:14 Extent=[160:8 - 160:9] // CHECK: 160:13: UnexposedExpr= Extent=[160:13 - 160:19] // CHECK: 160:13: IntegerLiteral= Extent=[160:13 - 160:19] // CHECK: 160:23: ParenExpr= Extent=[160:23 - 160:51] -// CHECK: 160:24: BinaryOperator= Extent=[160:24 - 160:50] -// CHECK: 160:24: BinaryOperator= Extent=[160:24 - 160:35] +// CHECK: 160:24: BinaryOperator=&& Extent=[160:24 - 160:50] +// CHECK: 160:24: BinaryOperator=>= Extent=[160:24 - 160:35] +// CHECK: 160:24: UnexposedExpr=c:2:14 Extent=[160:24 - 160:25] // CHECK: 160:24: DeclRefExpr=c:2:14 Extent=[160:24 - 160:25] // CHECK: 160:29: UnexposedExpr= Extent=[160:29 - 160:35] // CHECK: 160:29: IntegerLiteral= Extent=[160:29 - 160:35] -// CHECK: 160:39: BinaryOperator= Extent=[160:39 - 160:50] +// CHECK: 160:39: BinaryOperator=<= Extent=[160:39 - 160:50] +// CHECK: 160:39: UnexposedExpr=c:2:14 Extent=[160:39 - 160:40] // CHECK: 160:39: DeclRefExpr=c:2:14 Extent=[160:39 - 160:40] // CHECK: 160:44: UnexposedExpr= Extent=[160:44 - 160:50] // CHECK: 160:44: IntegerLiteral= Extent=[160:44 - 160:50] - diff --git a/clang/test/Index/preamble.c b/clang/test/Index/preamble.c --- a/clang/test/Index/preamble.c +++ b/clang/test/Index/preamble.c @@ -14,7 +14,7 @@ // RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 local -I %S/Inputs -include %t %s -Wunused-macros 2> %t.stderr.txt | FileCheck %s // RUN: FileCheck -check-prefix CHECK-DIAG %s < %t.stderr.txt // CHECK: preamble.h:1:12: FunctionDecl=bar:1:12 (Definition) Extent=[1:1 - 6:2] -// CHECK: preamble.h:4:3: BinaryOperator= Extent=[4:3 - 4:13] +// CHECK: preamble.h:4:3: BinaryOperator== Extent=[4:3 - 4:13] // CHECK: preamble.h:4:3: DeclRefExpr=ptr:2:8 Extent=[4:3 - 4:6] // CHECK: preamble.h:4:9: UnexposedExpr=ptr1:3:10 Extent=[4:9 - 4:13] // CHECK: preamble.h:4:9: DeclRefExpr=ptr1:3:10 Extent=[4:9 - 4:13] diff --git a/clang/test/Index/print-type.c b/clang/test/Index/print-type.c --- a/clang/test/Index/print-type.c +++ b/clang/test/Index/print-type.c @@ -49,8 +49,8 @@ // CHECK: TypeRef=FooType:1:13 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1] // CHECK: DeclRefExpr=z:3:33 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1] // CHECK: ReturnStmt= [type=] [typekind=Invalid] [isPOD=0] -// CHECK: BinaryOperator= [type=int *] [typekind=Pointer] [isPOD=1] [pointeetype=int] [pointeekind=Int] -// CHECK: BinaryOperator= [type=int *] [typekind=Pointer] [isPOD=1] [pointeetype=int] [pointeekind=Int] +// CHECK: BinaryOperator=+ [type=int *] [typekind=Pointer] [isPOD=1] [pointeetype=int] [pointeekind=Int] +// CHECK: BinaryOperator=+ [type=int *] [typekind=Pointer] [isPOD=1] [pointeetype=int] [pointeekind=Int] // CHECK: DeclRefExpr=p:3:13 [type=int *] [typekind=Pointer] [isPOD=1] [pointeetype=int] [pointeekind=Int] // CHECK: DeclRefExpr=z:3:33 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1] // CHECK: ArraySubscriptExpr= [type=int] [typekind=Int] [isPOD=1] diff --git a/clang/test/Index/print-type.cpp b/clang/test/Index/print-type.cpp --- a/clang/test/Index/print-type.cpp +++ b/clang/test/Index/print-type.cpp @@ -124,7 +124,7 @@ // CHECK: UnexposedExpr=z:22:35 [type=outer::inner::Bar::FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1] // CHECK: DeclRefExpr=z:22:35 [type=outer::inner::Bar::FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1] // CHECK: ReturnStmt= [type=] [typekind=Invalid] [isPOD=0] -// CHECK: BinaryOperator= [type=int *] [typekind=Pointer] [isPOD=1] [pointeetype=int] [pointeekind=Int] +// CHECK: BinaryOperator=+ [type=int *] [typekind=Pointer] [isPOD=1] [pointeetype=int] [pointeekind=Int] // CHECK: UnexposedExpr=p:22:15 [type=int *] [typekind=Pointer] [isPOD=1] [pointeetype=int] [pointeekind=Int] // CHECK: DeclRefExpr=p:22:15 [type=int *] [typekind=Pointer] [isPOD=1] [pointeetype=int] [pointeekind=Int] // CHECK: UnexposedExpr=z:22:35 [type=outer::inner::Bar::FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1] diff --git a/clang/test/Index/recursive-cxx-member-calls.cpp b/clang/test/Index/recursive-cxx-member-calls.cpp --- a/clang/test/Index/recursive-cxx-member-calls.cpp +++ b/clang/test/Index/recursive-cxx-member-calls.cpp @@ -21,7 +21,7 @@ AT_noinline, AT_no_instrument_function, AT_nonnull, AT_noreturn, AT_nothrow, AT_nsobject, AT_objc_exception, AT_override, AT_cf_returns_not_retained, AT_cf_returns_retained, - AT_ns_returns_not_retained, AT_ns_returns_retained, AT_objc_gc, + AT_ns_returns_not_retained, AT_ns_returns_retained, AT_objc_gc, AT_overloadable, AT_ownership_holds, AT_ownership_returns, AT_ownership_takes, AT_packed, AT_pascal, AT_pure, AT_regparm, AT_section, AT_sentinel, AT_stdcall, AT_thiscall, AT_transparent_union, @@ -467,7 +467,7 @@ // CHECK-tokens: Punctuation: "{" [45:41 - 45:42] CompoundStmt= // CHECK-tokens: Keyword: "return" [45:43 - 45:49] ReturnStmt= // CHECK-tokens: Identifier: "a" [45:50 - 45:51] DeclRefExpr=a:45:28 -// CHECK-tokens: Punctuation: "<" [45:52 - 45:53] BinaryOperator= +// CHECK-tokens: Punctuation: "<" [45:52 - 45:53] BinaryOperator=< // CHECK-tokens: Identifier: "b" [45:54 - 45:55] DeclRefExpr=b:45:38 // CHECK-tokens: Punctuation: "?" [45:56 - 45:57] ConditionalOperator= // CHECK-tokens: Identifier: "a" [45:58 - 45:59] DeclRefExpr=a:45:28 @@ -566,11 +566,11 @@ // CHECK-tokens: Punctuation: "{" [52:43 - 52:44] CompoundStmt= // CHECK-tokens: Keyword: "return" [53:5 - 53:11] ReturnStmt= // CHECK-tokens: Identifier: "Length" [53:12 - 53:18] MemberRefExpr=Length:44:10 -// CHECK-tokens: Punctuation: ">=" [53:19 - 53:21] BinaryOperator= +// CHECK-tokens: Punctuation: ">=" [53:19 - 53:21] BinaryOperator=>= // CHECK-tokens: Identifier: "Prefix" [53:22 - 53:28] DeclRefExpr=Prefix:52:29 // CHECK-tokens: Punctuation: "." [53:28 - 53:29] MemberRefExpr=Length:44:10 // CHECK-tokens: Identifier: "Length" [53:29 - 53:35] MemberRefExpr=Length:44:10 -// CHECK-tokens: Punctuation: "&&" [53:36 - 53:38] BinaryOperator= +// CHECK-tokens: Punctuation: "&&" [53:36 - 53:38] BinaryOperator=&& // CHECK-tokens: Identifier: "memcmp" [54:11 - 54:17] DeclRefExpr=memcmp:7:7 // CHECK-tokens: Punctuation: "(" [54:17 - 54:18] CallExpr=memcmp:7:7 // CHECK-tokens: Identifier: "Data" [54:18 - 54:22] MemberRefExpr=Data:43:15 @@ -583,7 +583,7 @@ // CHECK-tokens: Punctuation: "." [54:43 - 54:44] MemberRefExpr=Length:44:10 // CHECK-tokens: Identifier: "Length" [54:44 - 54:50] MemberRefExpr=Length:44:10 // CHECK-tokens: Punctuation: ")" [54:50 - 54:51] CallExpr=memcmp:7:7 -// CHECK-tokens: Punctuation: "==" [54:52 - 54:54] BinaryOperator= +// CHECK-tokens: Punctuation: "==" [54:52 - 54:54] BinaryOperator=== // CHECK-tokens: Literal: "0" [54:55 - 54:56] IntegerLiteral= // CHECK-tokens: Punctuation: ";" [54:56 - 54:57] CompoundStmt= // CHECK-tokens: Punctuation: "}" [55:3 - 55:4] CompoundStmt= @@ -597,17 +597,17 @@ // CHECK-tokens: Punctuation: "{" [56:41 - 56:42] CompoundStmt= // CHECK-tokens: Keyword: "return" [57:5 - 57:11] ReturnStmt= // CHECK-tokens: Identifier: "Length" [57:12 - 57:18] MemberRefExpr=Length:44:10 -// CHECK-tokens: Punctuation: ">=" [57:19 - 57:21] BinaryOperator= +// CHECK-tokens: Punctuation: ">=" [57:19 - 57:21] BinaryOperator=>= // CHECK-tokens: Identifier: "Suffix" [57:22 - 57:28] DeclRefExpr=Suffix:56:27 // CHECK-tokens: Punctuation: "." [57:28 - 57:29] MemberRefExpr=Length:44:10 // CHECK-tokens: Identifier: "Length" [57:29 - 57:35] MemberRefExpr=Length:44:10 -// CHECK-tokens: Punctuation: "&&" [57:36 - 57:38] BinaryOperator= +// CHECK-tokens: Punctuation: "&&" [57:36 - 57:38] BinaryOperator=&& // CHECK-tokens: Identifier: "memcmp" [58:7 - 58:13] DeclRefExpr=memcmp:7:7 // CHECK-tokens: Punctuation: "(" [58:13 - 58:14] CallExpr=memcmp:7:7 // CHECK-tokens: Identifier: "end" [58:14 - 58:17] MemberRefExpr=end:50:12 // CHECK-tokens: Punctuation: "(" [58:17 - 58:18] CallExpr=end:50:12 // CHECK-tokens: Punctuation: ")" [58:18 - 58:19] CallExpr=end:50:12 -// CHECK-tokens: Punctuation: "-" [58:20 - 58:21] BinaryOperator= +// CHECK-tokens: Punctuation: "-" [58:20 - 58:21] BinaryOperator=- // CHECK-tokens: Identifier: "Suffix" [58:22 - 58:28] DeclRefExpr=Suffix:56:27 // CHECK-tokens: Punctuation: "." [58:28 - 58:29] MemberRefExpr=Length:44:10 // CHECK-tokens: Identifier: "Length" [58:29 - 58:35] MemberRefExpr=Length:44:10 @@ -620,7 +620,7 @@ // CHECK-tokens: Punctuation: "." [58:56 - 58:57] MemberRefExpr=Length:44:10 // CHECK-tokens: Identifier: "Length" [58:57 - 58:63] MemberRefExpr=Length:44:10 // CHECK-tokens: Punctuation: ")" [58:63 - 58:64] CallExpr=memcmp:7:7 -// CHECK-tokens: Punctuation: "==" [58:65 - 58:67] BinaryOperator= +// CHECK-tokens: Punctuation: "==" [58:65 - 58:67] BinaryOperator=== // CHECK-tokens: Literal: "0" [58:68 - 58:69] IntegerLiteral= // CHECK-tokens: Punctuation: ";" [58:69 - 58:70] CompoundStmt= // CHECK-tokens: Punctuation: "}" [59:3 - 59:4] CompoundStmt= @@ -641,7 +641,7 @@ // CHECK-tokens: Identifier: "StringRef" [61:12 - 61:21] TypeRef=class llvm::StringRef:38:7 // CHECK-tokens: Punctuation: "(" [61:21 - 61:22] CallExpr=StringRef:49:3 // CHECK-tokens: Identifier: "Data" [61:22 - 61:26] MemberRefExpr=Data:43:15 -// CHECK-tokens: Punctuation: "+" [61:27 - 61:28] BinaryOperator= +// CHECK-tokens: Punctuation: "+" [61:27 - 61:28] BinaryOperator=+ // CHECK-tokens: Identifier: "Start" [61:29 - 61:34] DeclRefExpr=Start:60:27 // CHECK-tokens: Punctuation: "," [61:34 - 61:35] CallExpr=StringRef:49:3 // CHECK-tokens: Identifier: "min" [61:36 - 61:39] DeclRefExpr=min:45:17 @@ -649,7 +649,7 @@ // CHECK-tokens: Identifier: "N" [61:40 - 61:41] DeclRefExpr=N:60:41 // CHECK-tokens: Punctuation: "," [61:41 - 61:42] CallExpr=min:45:17 // CHECK-tokens: Identifier: "Length" [61:43 - 61:49] MemberRefExpr=Length:44:10 -// CHECK-tokens: Punctuation: "-" [61:50 - 61:51] BinaryOperator= +// CHECK-tokens: Punctuation: "-" [61:50 - 61:51] BinaryOperator=- // CHECK-tokens: Identifier: "Start" [61:52 - 61:57] DeclRefExpr=Start:60:27 // CHECK-tokens: Punctuation: ")" [61:57 - 61:58] CallExpr=min:45:17 // CHECK-tokens: Punctuation: ")" [61:58 - 61:59] CallExpr=StringRef:49:3 @@ -738,7 +738,7 @@ // CHECK-tokens: Punctuation: ")" [74:47 - 74:48] ParenExpr= // CHECK-tokens: Punctuation: "->" [74:48 - 74:50] MemberRefExpr=second:4:55 // CHECK-tokens: Identifier: "second" [74:50 - 74:56] MemberRefExpr=second:4:55 -// CHECK-tokens: Punctuation: "-" [74:57 - 74:58] BinaryOperator= +// CHECK-tokens: Punctuation: "-" [74:57 - 74:58] BinaryOperator=- // CHECK-tokens: Literal: "2" [74:59 - 74:60] IntegerLiteral= // CHECK-tokens: Punctuation: ";" [74:60 - 74:61] DeclStmt= // CHECK-tokens: Keyword: "return" [75:5 - 75:11] ReturnStmt= @@ -752,7 +752,7 @@ // CHECK-tokens: Literal: "0" [75:27 - 75:28] IntegerLiteral= // CHECK-tokens: Punctuation: "]" [75:28 - 75:29] ArraySubscriptExpr= // CHECK-tokens: Punctuation: ")" [75:29 - 75:30] ParenExpr= -// CHECK-tokens: Punctuation: "|" [75:31 - 75:32] BinaryOperator= +// CHECK-tokens: Punctuation: "|" [75:31 - 75:32] BinaryOperator=| // CHECK-tokens: Punctuation: "(" [75:33 - 75:34] ParenExpr= // CHECK-tokens: Punctuation: "(" [75:34 - 75:35] ParenExpr= // CHECK-tokens: Punctuation: "(" [75:35 - 75:36] CStyleCastExpr= @@ -763,11 +763,11 @@ // CHECK-tokens: Literal: "1" [75:48 - 75:49] IntegerLiteral= // CHECK-tokens: Punctuation: "]" [75:49 - 75:50] ArraySubscriptExpr= // CHECK-tokens: Punctuation: ")" [75:50 - 75:51] ParenExpr= -// CHECK-tokens: Punctuation: "<<" [75:52 - 75:54] BinaryOperator= +// CHECK-tokens: Punctuation: "<<" [75:52 - 75:54] BinaryOperator=<< // CHECK-tokens: Literal: "8" [75:55 - 75:56] IntegerLiteral= // CHECK-tokens: Punctuation: ")" [75:56 - 75:57] ParenExpr= // CHECK-tokens: Punctuation: ")" [75:57 - 75:58] ParenExpr= -// CHECK-tokens: Punctuation: "-" [75:59 - 75:60] BinaryOperator= +// CHECK-tokens: Punctuation: "-" [75:59 - 75:60] BinaryOperator=- // CHECK-tokens: Literal: "1" [75:61 - 75:62] IntegerLiteral= // CHECK-tokens: Punctuation: ";" [75:62 - 75:63] CompoundStmt= // CHECK-tokens: Punctuation: "}" [76:3 - 76:4] CompoundStmt= @@ -924,7 +924,7 @@ // CHECK-tokens: Punctuation: "(" [102:26 - 102:27] CallExpr=startswith:52:8 // CHECK-tokens: Literal: ""__"" [102:27 - 102:31] StringLiteral= // CHECK-tokens: Punctuation: ")" [102:31 - 102:32] CallExpr=startswith:52:8 -// CHECK-tokens: Punctuation: "&&" [102:33 - 102:35] BinaryOperator= +// CHECK-tokens: Punctuation: "&&" [102:33 - 102:35] BinaryOperator=&& // CHECK-tokens: Identifier: "AttrName" [102:36 - 102:44] DeclRefExpr=AttrName:101:19 // CHECK-tokens: Punctuation: "." [102:44 - 102:45] MemberRefExpr=endswith:56:8 // CHECK-tokens: Identifier: "endswith" [102:45 - 102:53] MemberRefExpr=endswith:56:8 @@ -945,7 +945,7 @@ // CHECK-tokens: Identifier: "size" [103:44 - 103:48] MemberRefExpr=size:51:10 // CHECK-tokens: Punctuation: "(" [103:48 - 103:49] CallExpr=size:51:10 // CHECK-tokens: Punctuation: ")" [103:49 - 103:50] CallExpr=size:51:10 -// CHECK-tokens: Punctuation: "-" [103:51 - 103:52] BinaryOperator= +// CHECK-tokens: Punctuation: "-" [103:51 - 103:52] BinaryOperator=- // CHECK-tokens: Literal: "4" [103:53 - 103:54] IntegerLiteral= // CHECK-tokens: Punctuation: ")" [103:54 - 103:55] CallExpr=substr:60:13 // CHECK-tokens: Punctuation: ";" [103:55 - 103:56] CompoundStmt= @@ -1647,7 +1647,7 @@ // CHECK: 45:41: CompoundStmt= Extent=[45:41 - 45:66] // CHECK: 45:43: ReturnStmt= Extent=[45:43 - 45:63] // CHECK: 45:50: ConditionalOperator= Extent=[45:50 - 45:63] -// CHECK: 45:50: BinaryOperator= Extent=[45:50 - 45:55] +// CHECK: 45:50: BinaryOperator=< Extent=[45:50 - 45:55] // CHECK: 45:50: DeclRefExpr=a:45:28 Extent=[45:50 - 45:51] // CHECK: 45:54: DeclRefExpr=b:45:38 Extent=[45:54 - 45:55] // CHECK: 45:58: DeclRefExpr=a:45:28 Extent=[45:58 - 45:59] @@ -1695,13 +1695,13 @@ // CHECK: 52:19: TypeRef=class llvm::StringRef:38:7 Extent=[52:19 - 52:28] // CHECK: 52:43: CompoundStmt= Extent=[52:43 - 55:4] // CHECK: 53:5: ReturnStmt= Extent=[53:5 - 54:56] -// CHECK: 53:12: BinaryOperator= Extent=[53:12 - 54:56] -// CHECK: 53:12: BinaryOperator= Extent=[53:12 - 53:35] +// CHECK: 53:12: BinaryOperator=&& Extent=[53:12 - 54:56] +// CHECK: 53:12: BinaryOperator=>= Extent=[53:12 - 53:35] // CHECK: 53:12: UnexposedExpr=Length:44:10 Extent=[53:12 - 53:18] // CHECK: 53:12: MemberRefExpr=Length:44:10 Extent=[53:12 - 53:18] // CHECK: 53:29: MemberRefExpr=Length:44:10 SingleRefName=[53:29 - 53:35] RefName=[53:29 - 53:35] Extent=[53:22 - 53:35] // CHECK: 53:22: DeclRefExpr=Prefix:52:29 Extent=[53:22 - 53:28] -// CHECK: 54:11: BinaryOperator= Extent=[54:11 - 54:56] +// CHECK: 54:11: BinaryOperator=== Extent=[54:11 - 54:56] // CHECK: 54:11: CallExpr=memcmp:7:7 Extent=[54:11 - 54:51] // CHECK: 54:11: UnexposedExpr=memcmp:7:7 Extent=[54:11 - 54:17] // CHECK: 54:11: DeclRefExpr=memcmp:7:7 Extent=[54:11 - 54:17] @@ -1718,18 +1718,18 @@ // CHECK: 56:17: TypeRef=class llvm::StringRef:38:7 Extent=[56:17 - 56:26] // CHECK: 56:41: CompoundStmt= Extent=[56:41 - 59:4] // CHECK: 57:5: ReturnStmt= Extent=[57:5 - 58:69] -// CHECK: 57:12: BinaryOperator= Extent=[57:12 - 58:69] -// CHECK: 57:12: BinaryOperator= Extent=[57:12 - 57:35] +// CHECK: 57:12: BinaryOperator=&& Extent=[57:12 - 58:69] +// CHECK: 57:12: BinaryOperator=>= Extent=[57:12 - 57:35] // CHECK: 57:12: UnexposedExpr=Length:44:10 Extent=[57:12 - 57:18] // CHECK: 57:12: MemberRefExpr=Length:44:10 Extent=[57:12 - 57:18] // CHECK: 57:29: MemberRefExpr=Length:44:10 SingleRefName=[57:29 - 57:35] RefName=[57:29 - 57:35] Extent=[57:22 - 57:35] // CHECK: 57:22: DeclRefExpr=Suffix:56:27 Extent=[57:22 - 57:28] -// CHECK: 58:7: BinaryOperator= Extent=[58:7 - 58:69] +// CHECK: 58:7: BinaryOperator=== Extent=[58:7 - 58:69] // CHECK: 58:7: CallExpr=memcmp:7:7 Extent=[58:7 - 58:64] // CHECK: 58:7: UnexposedExpr=memcmp:7:7 Extent=[58:7 - 58:13] // CHECK: 58:7: DeclRefExpr=memcmp:7:7 Extent=[58:7 - 58:13] // CHECK: 58:14: UnexposedExpr= Extent=[58:14 - 58:35] -// CHECK: 58:14: BinaryOperator= Extent=[58:14 - 58:35] +// CHECK: 58:14: BinaryOperator=- Extent=[58:14 - 58:35] // CHECK: 58:14: CallExpr=end:50:12 Extent=[58:14 - 58:19] // CHECK: 58:14: MemberRefExpr=end:50:12 Extent=[58:14 - 58:17] // CHECK: 58:29: MemberRefExpr=Length:44:10 SingleRefName=[58:29 - 58:35] RefName=[58:29 - 58:35] Extent=[58:22 - 58:35] @@ -1753,7 +1753,7 @@ // CHECK: 61:12: UnexposedExpr=StringRef:49:3 Extent=[61:12 - 61:59] // CHECK: 61:12: CallExpr=StringRef:49:3 Extent=[61:12 - 61:59] // CHECK: 61:12: TypeRef=class llvm::StringRef:38:7 Extent=[61:12 - 61:21] -// CHECK: 61:22: BinaryOperator= Extent=[61:22 - 61:34] +// CHECK: 61:22: BinaryOperator=+ Extent=[61:22 - 61:34] // CHECK: 61:22: UnexposedExpr=Data:43:15 Extent=[61:22 - 61:26] // CHECK: 61:22: MemberRefExpr=Data:43:15 Extent=[61:22 - 61:26] // CHECK: 61:29: DeclRefExpr=Start:60:27 Extent=[61:29 - 61:34] @@ -1761,7 +1761,7 @@ // CHECK: 61:36: UnexposedExpr=min:45:17 Extent=[61:36 - 61:39] // CHECK: 61:36: DeclRefExpr=min:45:17 Extent=[61:36 - 61:39] // CHECK: 61:40: DeclRefExpr=N:60:41 Extent=[61:40 - 61:41] -// CHECK: 61:43: BinaryOperator= Extent=[61:43 - 61:57] +// CHECK: 61:43: BinaryOperator=- Extent=[61:43 - 61:57] // CHECK: 61:43: UnexposedExpr=Length:44:10 Extent=[61:43 - 61:49] // CHECK: 61:43: MemberRefExpr=Length:44:10 Extent=[61:43 - 61:49] // CHECK: 61:52: DeclRefExpr=Start:60:27 Extent=[61:52 - 61:57] @@ -1789,7 +1789,7 @@ // CHECK: 73:25: TypeRef=class clang::IdentifierInfo:66:7 Extent=[73:25 - 73:39] // CHECK: 74:5: DeclStmt= Extent=[74:5 - 74:61] // CHECK: 74:17: VarDecl=p:74:17 (Definition) Extent=[74:5 - 74:60] -// CHECK: 74:21: BinaryOperator= Extent=[74:21 - 74:60] +// CHECK: 74:21: BinaryOperator=- Extent=[74:21 - 74:60] // CHECK: 74:50: UnexposedExpr=second:4:55 Extent=[74:21 - 74:56] // CHECK: 74:50: MemberRefExpr=second:4:55 SingleRefName=[74:50 - 74:56] RefName=[74:50 - 74:56] Extent=[74:21 - 74:56] // CHECK: 74:21: ParenExpr= Extent=[74:21 - 74:48] @@ -1798,9 +1798,9 @@ // CHECK: 74:43: CXXThisExpr= Extent=[74:43 - 74:47] // CHECK: 74:59: IntegerLiteral= Extent=[74:59 - 74:60] // CHECK: 75:5: ReturnStmt= Extent=[75:5 - 75:62] -// CHECK: 75:12: BinaryOperator= Extent=[75:12 - 75:62] +// CHECK: 75:12: BinaryOperator=- Extent=[75:12 - 75:62] // CHECK: 75:12: ParenExpr= Extent=[75:12 - 75:58] -// CHECK: 75:13: BinaryOperator= Extent=[75:13 - 75:57] +// CHECK: 75:13: BinaryOperator=| Extent=[75:13 - 75:57] // CHECK: 75:13: ParenExpr= Extent=[75:13 - 75:30] // CHECK: 75:14: CStyleCastExpr= Extent=[75:14 - 75:29] // CHECK: 75:25: UnexposedExpr= Extent=[75:25 - 75:29] @@ -1809,7 +1809,7 @@ // CHECK: 75:25: DeclRefExpr=p:74:17 Extent=[75:25 - 75:26] // CHECK: 75:27: IntegerLiteral= Extent=[75:27 - 75:28] // CHECK: 75:33: ParenExpr= Extent=[75:33 - 75:57] -// CHECK: 75:34: BinaryOperator= Extent=[75:34 - 75:56] +// CHECK: 75:34: BinaryOperator=<< Extent=[75:34 - 75:56] // CHECK: 75:34: ParenExpr= Extent=[75:34 - 75:51] // CHECK: 75:35: CStyleCastExpr= Extent=[75:35 - 75:50] // CHECK: 75:46: UnexposedExpr= Extent=[75:46 - 75:50] @@ -1878,7 +1878,7 @@ // CHECK: 101:36: MemberRefExpr=getName:77:19 SingleRefName=[101:36 - 101:43] RefName=[101:36 - 101:43] Extent=[101:30 - 101:43] // CHECK: 101:30: DeclRefExpr=Name:100:67 Extent=[101:30 - 101:34] // CHECK: 102:3: IfStmt= Extent=[102:3 - 103:55] -// CHECK: 102:7: BinaryOperator= Extent=[102:7 - 102:59] +// CHECK: 102:7: BinaryOperator=&& Extent=[102:7 - 102:59] // CHECK: 102:7: CallExpr=startswith:52:8 Extent=[102:7 - 102:32] // CHECK: 102:16: MemberRefExpr=startswith:52:8 SingleRefName=[102:16 - 102:26] RefName=[102:16 - 102:26] Extent=[102:7 - 102:26] // CHECK: 102:7: UnexposedExpr=AttrName:101:19 Extent=[102:7 - 102:15] @@ -1910,7 +1910,7 @@ // CHECK: 103:16: DeclRefExpr=AttrName:101:19 Extent=[103:16 - 103:24] // CHECK: 103:32: UnexposedExpr= Extent=[103:32 - 103:33] // CHECK: 103:32: IntegerLiteral= Extent=[103:32 - 103:33] -// CHECK: 103:35: BinaryOperator= Extent=[103:35 - 103:54] +// CHECK: 103:35: BinaryOperator=- Extent=[103:35 - 103:54] // CHECK: 103:35: CallExpr=size:51:10 Extent=[103:35 - 103:50] // CHECK: 103:44: MemberRefExpr=size:51:10 SingleRefName=[103:44 - 103:48] RefName=[103:44 - 103:48] Extent=[103:35 - 103:48] // CHECK: 103:35: UnexposedExpr=AttrName:101:19 Extent=[103:35 - 103:43] diff --git a/clang/test/Index/remap-load.c b/clang/test/Index/remap-load.c --- a/clang/test/Index/remap-load.c +++ b/clang/test/Index/remap-load.c @@ -4,7 +4,7 @@ // CHECK: remap-load.c:1:13: ParmDecl=parm1:1:13 (Definition) Extent=[1:9 - 1:18] // CHECK: remap-load.c:1:26: ParmDecl=parm2:1:26 (Definition) Extent=[1:20 - 1:31] // CHECK: remap-load.c:2:10: UnexposedExpr= Extent=[2:10 - 2:23] -// CHECK: remap-load.c:2:10: BinaryOperator= Extent=[2:10 - 2:23] +// CHECK: remap-load.c:2:10: BinaryOperator=+ Extent=[2:10 - 2:23] // CHECK: remap-load.c:2:10: UnexposedExpr=parm1:1:13 Extent=[2:10 - 2:15] // CHECK: remap-load.c:2:10: DeclRefExpr=parm1:1:13 Extent=[2:10 - 2:15] // CHECK: remap-load.c:2:18: DeclRefExpr=parm2:1:26 Extent=[2:18 - 2:23] diff --git a/clang/test/Index/usrs.m b/clang/test/Index/usrs.m --- a/clang/test/Index/usrs.m +++ b/clang/test/Index/usrs.m @@ -182,7 +182,7 @@ // CHECK-source: usrs.m:3:40: ParmDecl=y:3:40 (Definition) Extent=[3:36 - 3:41] // CHECK-source: usrs.m:3:43: CompoundStmt= Extent=[3:43 - 3:60] // CHECK-source: usrs.m:3:45: ReturnStmt= Extent=[3:45 - 3:57] -// CHECK-source: usrs.m:3:52: BinaryOperator= Extent=[3:52 - 3:57] +// CHECK-source: usrs.m:3:52: BinaryOperator=+ Extent=[3:52 - 3:57] // CHECK-source: usrs.m:3:52: DeclRefExpr=x:3:33 Extent=[3:52 - 3:53] // CHECK-source: usrs.m:3:56: DeclRefExpr=y:3:40 Extent=[3:56 - 3:57] // CHECK-source: usrs.m:5:1: EnumDecl=:5:1 (Definition) Extent=[5:1 - 8:2] diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -1767,6 +1767,22 @@ return CXChildVisit_Recurse; } +static enum CXChildVisitResult PrintBinOps(CXCursor C, CXCursor p, + CXClientData d) { + enum CXCursorKind ck = clang_getCursorKind(C); + enum CX_BinaryOperatorKind bok; + CXString opstr; + if (ck != CXCursor_BinaryOperator && ck != CXCursor_CompoundAssignOperator) + return CXChildVisit_Recurse; + + PrintCursor(C, NULL); + bok = clang_Cursor_getBinaryOpcode(C); + opstr = clang_Cursor_getBinaryOpcodeStr(bok); + printf(" BinOp=%s %d\n", clang_getCString(opstr), bok); + + return CXChildVisit_Recurse; +} + /******************************************************************************/ /* Mangling testing. */ /******************************************************************************/ @@ -4911,6 +4927,8 @@ else if (argc > 2 && strcmp(argv[1], "-test-print-bitwidth") == 0) return perform_test_load_source(argc - 2, argv + 2, "all", PrintBitWidth, 0); + else if (argc > 2 && strcmp(argv[1], "-test-print-binops") == 0) + return perform_test_load_source(argc - 2, argv + 2, "all", PrintBinOps, 0); else if (argc > 2 && strcmp(argv[1], "-test-print-mangle") == 0) return perform_test_load_tu(argv[2], "all", NULL, PrintMangledName, NULL); else if (argc > 2 && strcmp(argv[1], "-test-print-manglings") == 0) diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -196,7 +196,7 @@ assert(0 && "Invalid declaration cursor"); return true; // abort. } - + // Ignore implicit declarations, unless it's an objc method because // currently we should report implicit methods for properties when indexing. if (D->isImplicit() && !isa(D)) @@ -235,7 +235,7 @@ CursorVisitor &Visitor) { SourceManager &SM = Visitor.getASTUnit()->getSourceManager(); FileID FID; - + if (!Visitor.shouldVisitIncludedEntities()) { // If the begin/end of the range lie in the same FileID, do the optimization // where we skip preprocessed entities that do not come from the same FileID. @@ -255,10 +255,11 @@ ASTUnit *Unit = cxtu::getASTUnit(TU); SourceManager &SM = Unit->getSourceManager(); - - std::pair - Begin = SM.getDecomposedLoc(SM.getFileLoc(RegionOfInterest.getBegin())), - End = SM.getDecomposedLoc(SM.getFileLoc(RegionOfInterest.getEnd())); + + std::pair Begin = SM.getDecomposedLoc( + SM.getFileLoc(RegionOfInterest.getBegin())), + End = SM.getDecomposedLoc( + SM.getFileLoc(RegionOfInterest.getEnd())); if (End.first != Begin.first) { // If the end does not reside in the same file, try to recover by @@ -270,7 +271,7 @@ assert(Begin.first == End.first); if (Begin.second > End.second) return false; - + FileID File = Begin.first; unsigned Offset = Begin.second; unsigned Length = End.second - Begin.second; @@ -402,7 +403,7 @@ PreprocessingRecord &PPRec = *AU->getPreprocessor().getPreprocessingRecord(); SourceManager &SM = AU->getSourceManager(); - + if (RegionOfInterest.isValid()) { SourceRange MappedRange = AU->mapRangeToPreamble(RegionOfInterest); SourceLocation B = MappedRange.getBegin(); @@ -432,9 +433,8 @@ return visitPreprocessedEntitiesInRange(SourceRange(B, E), PPRec, *this); } - bool OnlyLocalDecls - = !AU->isMainFileAST() && AU->getOnlyLocalDecls(); - + bool OnlyLocalDecls = !AU->isMainFileAST() && AU->getOnlyLocalDecls(); + if (OnlyLocalDecls) return visitPreprocessedEntities(PPRec.local_begin(), PPRec.local_end(), PPRec); @@ -468,11 +468,11 @@ continue; } - + if (InclusionDirective *ID = dyn_cast(PPE)) { if (Visit(MakeInclusionDirectiveCursor(ID, TU))) return true; - + continue; } } @@ -481,11 +481,11 @@ } /// Visit the children of the given cursor. -/// +/// /// \returns true if the visitation should be aborted, false if it /// should continue. bool CursorVisitor::VisitChildren(CXCursor Cursor) { - if (clang_isReference(Cursor.kind) && + if (clang_isReference(Cursor.kind) && Cursor.kind != CXCursor_CXXBaseSpecifier) { // By definition, references have no children. return false; @@ -520,7 +520,7 @@ if (clang_isTranslationUnit(Cursor.kind)) { CXTranslationUnit TU = getCursorTU(Cursor); ASTUnit *CXXUnit = cxtu::getASTUnit(TU); - + int VisitOrder[2] = { VisitPreprocessorLast, !VisitPreprocessorLast }; for (unsigned I = 0; I != 2; ++I) { if (VisitOrder[I]) { @@ -544,7 +544,7 @@ if (CXXUnit->getPreprocessor().getPreprocessingRecord()) visitPreprocessedEntitiesInRegion(); } - + return false; } @@ -599,7 +599,7 @@ SourceRange Range = getFullCursorExtent(Cursor, AU->getSourceManager()); if (Range.isInvalid()) return None; - + switch (CompareRegionOfInterest(Range)) { case RangeBefore: // This declaration comes before the region of interest; skip it. @@ -715,16 +715,16 @@ case TSK_ImplicitInstantiation: // Nothing to visit return false; - + case TSK_ExplicitInstantiationDeclaration: case TSK_ExplicitInstantiationDefinition: break; - + case TSK_ExplicitSpecialization: ShouldVisitBody = true; break; } - + // Visit the template arguments used in the specialization. if (TypeSourceInfo *SpecType = D->getTypeAsWritten()) { TypeLoc TL = SpecType->getTypeLoc(); @@ -752,7 +752,7 @@ for (unsigned I = 0, N = Info->NumTemplateArgs; I != N; ++I) if (VisitTemplateArgumentLoc(TemplateArgs[I])) return true; - + return VisitCXXRecordDecl(D); } @@ -762,7 +762,7 @@ if (TypeSourceInfo *DefArg = D->getDefaultArgumentInfo()) if (Visit(DefArg->getTypeLoc())) return true; - + return false; } @@ -822,7 +822,7 @@ TypeLoc TL = TSInfo->getTypeLoc().IgnoreParens(); FunctionTypeLoc FTL = TL.getAs(); const bool HasTrailingRT = HasTrailingReturnType(ND); - + // If we have a function declared directly (without the use of a typedef), // visit just the return type. Otherwise, just visit the function's type // now. @@ -835,14 +835,14 @@ if (NestedNameSpecifierLoc QualifierLoc = ND->getQualifierLoc()) if (VisitNestedNameSpecifierLoc(QualifierLoc)) return true; - + // Visit the declaration name. if (!isa(ND)) if (VisitDeclarationNameInfo(ND->getNameInfo())) return true; - + // FIXME: Visit explicitly-specified template arguments! - + // Visit the function parameters, if we have a function type. if (FTL && VisitFunctionTypeLoc(FTL, true)) return true; @@ -853,7 +853,7 @@ // FIXME: Attributes? } - + if (ND->doesThisDeclarationHaveABody() && !ND->isLateTemplateParsed()) { if (CXXConstructorDecl *Constructor = dyn_cast(ND)) { // Find the initializers that were written in the source. @@ -861,14 +861,14 @@ for (auto *I : Constructor->inits()) { if (!I->isWritten()) continue; - + WrittenInits.push_back(I); } - + // Sort the initializers in source order llvm::array_pod_sort(WrittenInits.begin(), WrittenInits.end(), &CompareCXXCtorInitializers); - + // Visit the initializers in source order for (unsigned I = 0, N = WrittenInits.size(); I != N; ++I) { CXXCtorInitializer *Init = WrittenInits[I]; @@ -880,14 +880,14 @@ if (Visit(TInfo->getTypeLoc())) return true; } - + // Visit the initializer value. if (Expr *Initializer = Init->getInit()) if (Visit(MakeCXCursor(Initializer, ND, TU, RegionOfInterest))) return true; - } + } } - + if (Visit(MakeCXCursor(ND->getBody(), StmtParent, TU, RegionOfInterest))) return true; } @@ -921,12 +921,12 @@ bool CursorVisitor::VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D) { if (VisitDeclaratorDecl(D)) return true; - + if (D->hasDefaultArgument() && !D->defaultArgumentWasInherited()) if (Expr *DefArg = D->getDefaultArgument()) return Visit(MakeCXCursor(DefArg, StmtParent, TU, RegionOfInterest)); - - return false; + + return false; } bool CursorVisitor::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) { @@ -934,7 +934,7 @@ // before visiting these template parameters. if (VisitTemplateParameters(D->getTemplateParameters())) return true; - + auto* FD = D->getTemplatedDecl(); return VisitAttributes(FD) || VisitFunctionDecl(FD); } @@ -944,7 +944,7 @@ // before visiting these template parameters. if (VisitTemplateParameters(D->getTemplateParameters())) return true; - + auto* CD = D->getTemplatedDecl(); return VisitAttributes(CD) || VisitCXXRecordDecl(CD); } @@ -952,11 +952,11 @@ bool CursorVisitor::VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D) { if (VisitTemplateParameters(D->getTemplateParameters())) return true; - + if (D->hasDefaultArgument() && !D->defaultArgumentWasInherited() && VisitTemplateArgumentLoc(D->getDefaultArgument())) return true; - + return false; } @@ -1090,7 +1090,7 @@ bool CursorVisitor::VisitObjCProtocolDecl(ObjCProtocolDecl *PID) { if (!PID->isThisDeclarationADefinition()) return Visit(MakeCursorObjCProtocolRef(PID, PID->getLocation(), TU)); - + ObjCProtocolDecl::protocol_loc_iterator PL = PID->protocol_loc_begin(); for (ObjCProtocolDecl::protocol_iterator I = PID->protocol_begin(), E = PID->protocol_end(); I != E; ++I, ++PL) @@ -1212,7 +1212,7 @@ if (ObjCIvarDecl *Ivar = PD->getPropertyIvarDecl()) if (PD->isIvarNameSpecified()) return Visit(MakeCursorMemberRef(Ivar, PD->getPropertyIvarDeclLoc(), TU)); - + return false; } @@ -1225,8 +1225,8 @@ if (NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc()) if (VisitNestedNameSpecifierLoc(QualifierLoc)) return true; - - return Visit(MakeCursorNamespaceRef(D->getAliasedNamespace(), + + return Visit(MakeCursorNamespaceRef(D->getAliasedNamespace(), D->getTargetNameLoc(), TU)); } @@ -1236,10 +1236,10 @@ if (VisitNestedNameSpecifierLoc(QualifierLoc)) return true; } - + if (Visit(MakeCursorOverloadedDeclRef(D, D->getLocation(), TU))) return true; - + return VisitDeclarationNameInfo(D->getNameInfo()); } @@ -1269,7 +1269,7 @@ if (NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc()) if (VisitNestedNameSpecifierLoc(QualifierLoc)) return true; - + return false; } @@ -1319,7 +1319,7 @@ llvm_unreachable("Invalid DeclarationName::Kind!"); } -bool CursorVisitor::VisitNestedNameSpecifier(NestedNameSpecifier *NNS, +bool CursorVisitor::VisitNestedNameSpecifier(NestedNameSpecifier *NNS, SourceRange Range) { // FIXME: This whole routine is a hack to work around the lack of proper // source information in nested-name-specifiers (PR5791). Since we do have @@ -1327,18 +1327,18 @@ // nested-name-specifier, if it's a single-token component. if (!NNS) return false; - + // Get the first component in the nested-name-specifier. while (NestedNameSpecifier *Prefix = NNS->getPrefix()) NNS = Prefix; - + switch (NNS->getKind()) { case NestedNameSpecifier::Namespace: return Visit(MakeCursorNamespaceRef(NNS->getAsNamespace(), Range.getBegin(), TU)); case NestedNameSpecifier::NamespaceAlias: - return Visit(MakeCursorNamespaceRef(NNS->getAsNamespaceAlias(), + return Visit(MakeCursorNamespaceRef(NNS->getAsNamespaceAlias(), Range.getBegin(), TU)); case NestedNameSpecifier::TypeSpec: { @@ -1355,57 +1355,55 @@ return VisitTemplateName(TST->getTemplateName(), Range.getBegin()); break; } - + case NestedNameSpecifier::TypeSpecWithTemplate: case NestedNameSpecifier::Global: case NestedNameSpecifier::Identifier: case NestedNameSpecifier::Super: - break; + break; } - + return false; } -bool -CursorVisitor::VisitNestedNameSpecifierLoc(NestedNameSpecifierLoc Qualifier) { +bool CursorVisitor::VisitNestedNameSpecifierLoc( + NestedNameSpecifierLoc Qualifier) { SmallVector Qualifiers; for (; Qualifier; Qualifier = Qualifier.getPrefix()) Qualifiers.push_back(Qualifier); - + while (!Qualifiers.empty()) { NestedNameSpecifierLoc Q = Qualifiers.pop_back_val(); NestedNameSpecifier *NNS = Q.getNestedNameSpecifier(); switch (NNS->getKind()) { case NestedNameSpecifier::Namespace: - if (Visit(MakeCursorNamespaceRef(NNS->getAsNamespace(), - Q.getLocalBeginLoc(), - TU))) + if (Visit(MakeCursorNamespaceRef(NNS->getAsNamespace(), + Q.getLocalBeginLoc(), TU))) return true; - + break; - + case NestedNameSpecifier::NamespaceAlias: - if (Visit(MakeCursorNamespaceRef(NNS->getAsNamespaceAlias(), - Q.getLocalBeginLoc(), - TU))) + if (Visit(MakeCursorNamespaceRef(NNS->getAsNamespaceAlias(), + Q.getLocalBeginLoc(), TU))) return true; - + break; - + case NestedNameSpecifier::TypeSpec: case NestedNameSpecifier::TypeSpecWithTemplate: if (Visit(Q.getTypeLoc())) return true; - + break; - + case NestedNameSpecifier::Global: case NestedNameSpecifier::Identifier: case NestedNameSpecifier::Super: - break; + break; } } - + return false; } @@ -1413,14 +1411,14 @@ const TemplateParameterList *Params) { if (!Params) return false; - + for (TemplateParameterList::const_iterator P = Params->begin(), PEnd = Params->end(); P != PEnd; ++P) { if (Visit(MakeCXCursor(*P, TU, RegionOfInterest))) return true; } - + return false; } @@ -1443,18 +1441,17 @@ case TemplateName::DependentTemplate: // FIXME: Visit nested-name-specifier. return false; - + case TemplateName::QualifiedTemplate: // FIXME: Visit nested-name-specifier. return Visit(MakeCursorTemplateRef( - Name.getAsQualifiedTemplateName()->getDecl(), - Loc, TU)); + Name.getAsQualifiedTemplateName()->getDecl(), Loc, TU)); case TemplateName::SubstTemplateTemplateParm: return Visit(MakeCursorTemplateRef( Name.getAsSubstTemplateTemplateParm()->getParameter(), Loc, TU)); - + case TemplateName::SubstTemplateTemplateParmPack: return Visit(MakeCursorTemplateRef( Name.getAsSubstTemplateTemplateParmPack()->getParameterPack(), @@ -1470,12 +1467,12 @@ case TemplateArgument::Integral: case TemplateArgument::Pack: return false; - + case TemplateArgument::Type: if (TypeSourceInfo *TSInfo = TAL.getTypeSourceInfo()) return Visit(TSInfo->getTypeLoc()); return false; - + case TemplateArgument::Declaration: if (Expr *E = TAL.getSourceDeclExpression()) return Visit(MakeCXCursor(E, StmtParent, TU, RegionOfInterest)); @@ -1490,13 +1487,13 @@ if (Expr *E = TAL.getSourceExpression()) return Visit(MakeCXCursor(E, StmtParent, TU, RegionOfInterest)); return false; - + case TemplateArgument::Template: case TemplateArgument::TemplateExpansion: if (VisitNestedNameSpecifierLoc(TAL.getTemplateQualifierLoc())) return true; - - return VisitTemplateName(TAL.getArgument().getAsTemplateOrTemplatePattern(), + + return VisitTemplateName(TAL.getArgument().getAsTemplateOrTemplatePattern(), TAL.getTemplateNameLoc()); } @@ -1655,7 +1652,7 @@ return Visit(TL.getModifiedLoc()); } -bool CursorVisitor::VisitFunctionTypeLoc(FunctionTypeLoc TL, +bool CursorVisitor::VisitFunctionTypeLoc(FunctionTypeLoc TL, bool SkipResultType) { if (!SkipResultType && Visit(TL.getReturnLoc())) return true; @@ -1688,25 +1685,25 @@ bool CursorVisitor::VisitDeducedTemplateSpecializationTypeLoc( DeducedTemplateSpecializationTypeLoc TL) { - if (VisitTemplateName(TL.getTypePtr()->getTemplateName(), + if (VisitTemplateName(TL.getTypePtr()->getTemplateName(), TL.getTemplateNameLoc())) return true; - + return false; } bool CursorVisitor::VisitTemplateSpecializationTypeLoc( TemplateSpecializationTypeLoc TL) { // Visit the template name. - if (VisitTemplateName(TL.getTypePtr()->getTemplateName(), + if (VisitTemplateName(TL.getTypePtr()->getTemplateName(), TL.getTemplateNameLoc())) return true; - + // Visit the template arguments. for (unsigned I = 0, N = TL.getNumArgs(); I != N; ++I) if (VisitTemplateArgumentLoc(TL.getArgLoc(I))) return true; - + return false; } @@ -1738,7 +1735,7 @@ if (TL.getQualifierLoc() && VisitNestedNameSpecifierLoc(TL.getQualifierLoc())) return true; - + // Visit the template arguments. for (unsigned I = 0, N = TL.getNumArgs(); I != N; ++I) if (VisitTemplateArgumentLoc(TL.getArgLoc(I))) @@ -1750,7 +1747,7 @@ bool CursorVisitor::VisitElaboratedTypeLoc(ElaboratedTypeLoc TL) { if (VisitNestedNameSpecifierLoc(TL.getQualifierLoc())) return true; - + return Visit(TL.getNamedTypeLoc()); } @@ -1886,7 +1883,7 @@ return VJ->getKind() == TypeLocVisitKind; } - TypeLoc get() const { + TypeLoc get() const { QualType T = QualType::getFromOpaquePtr(data[0]); return TypeLoc(T, const_cast(data[1])); } @@ -1897,28 +1894,29 @@ LabelRefVisit(LabelDecl *LD, SourceLocation labelLoc, CXCursor parent) : VisitorJob(parent, VisitorJob::LabelRefVisitKind, LD, labelLoc.getPtrEncoding()) {} - + static bool classof(const VisitorJob *VJ) { return VJ->getKind() == VisitorJob::LabelRefVisitKind; } const LabelDecl *get() const { return static_cast(data[0]); } - SourceLocation getLoc() const { - return SourceLocation::getFromPtrEncoding(data[1]); } + SourceLocation getLoc() const { + return SourceLocation::getFromPtrEncoding(data[1]); + } }; - + class NestedNameSpecifierLocVisit : public VisitorJob { public: NestedNameSpecifierLocVisit(NestedNameSpecifierLoc Qualifier, CXCursor parent) : VisitorJob(parent, VisitorJob::NestedNameSpecifierLocVisitKind, Qualifier.getNestedNameSpecifier(), Qualifier.getOpaqueData()) { } - + static bool classof(const VisitorJob *VJ) { return VJ->getKind() == VisitorJob::NestedNameSpecifierLocVisitKind; } - + NestedNameSpecifierLoc get() const { return NestedNameSpecifierLoc( const_cast( @@ -1926,7 +1924,7 @@ const_cast(data[1])); } }; - + class DeclarationNameInfoVisit : public VisitorJob { public: DeclarationNameInfoVisit(const Stmt *S, CXCursor parent) @@ -2105,8 +2103,8 @@ WL.push_back(DeclarationNameInfoVisit(S, Parent)); } -void -EnqueueVisitor::AddNestedNameSpecifierLoc(NestedNameSpecifierLoc Qualifier) { +void EnqueueVisitor::AddNestedNameSpecifierLoc( + NestedNameSpecifierLoc Qualifier) { if (Qualifier) WL.push_back(NestedNameSpecifierLocVisit(Qualifier, Parent)); } @@ -2638,7 +2636,7 @@ } void EnqueueVisitor::VisitMemberExpr(const MemberExpr *M) { WL.push_back(MemberExprParts(M, Parent)); - + // If the base of the member access expression is an implicit 'this', don't // visit it. // FIXME: If we ever want to show these implicit accesses, this will be @@ -2856,8 +2854,8 @@ VisitOMPExecutableDirective(D); } -void EnqueueVisitor::VisitOMPTargetDataDirective(const - OMPTargetDataDirective *D) { +void EnqueueVisitor::VisitOMPTargetDataDirective( + const OMPTargetDataDirective *D) { VisitOMPExecutableDirective(D); } @@ -3018,7 +3016,7 @@ // Set the Parent field, then back to its old value once we're done. SetParentRAII SetParent(Parent, StmtParent, LI.getParent()); - + switch (LI.getKind()) { case VisitorJob::DeclVisitKind: { const Decl *D = cast(&LI)->get(); @@ -3063,7 +3061,7 @@ return true; continue; } - + case VisitorJob::DeclarationNameInfoVisitKind: { if (VisitDeclarationNameInfo(cast(&LI) ->get())) @@ -3099,16 +3097,16 @@ case VisitorJob::MemberExprPartsKind: { // Handle the other pieces in the MemberExpr besides the base. const MemberExpr *M = cast(&LI)->get(); - + // Visit the nested-name-specifier if (NestedNameSpecifierLoc QualifierLoc = M->getQualifierLoc()) if (VisitNestedNameSpecifierLoc(QualifierLoc)) return true; - + // Visit the declaration name. if (VisitDeclarationNameInfo(M->getMemberNameInfo())) return true; - + // Visit the explicitly-specified template arguments, if any. if (M->hasExplicitTemplateArgs()) { for (const TemplateArgumentLoc *Arg = M->getTemplateArgs(), @@ -3152,23 +3150,23 @@ if (Visit(MakeCursorTypeRef(cast(Pack), E->getPackLoc(), TU))) return true; - + continue; } - + if (isa(Pack)) { if (Visit(MakeCursorTemplateRef(cast(Pack), E->getPackLoc(), TU))) return true; - + continue; } - + // Non-type template parameter packs and function parameter packs are // treated like DeclRefExpr cursors. continue; } - + case VisitorJob::LambdaExprPartsKind: { // Visit non-init captures. const LambdaExpr *E = cast(&LI)->get(); @@ -3188,7 +3186,7 @@ if (Visit(InitExpr)) return true; } - + TypeLoc TL = E->getCallOperator()->getTypeSourceInfo()->getTypeLoc(); // Visit parameters and return type, if present. if (FunctionTypeLoc Proto = TL.getAs()) { @@ -3241,14 +3239,14 @@ const bool WantQualifier = NameFlags & CXNameRange_WantQualifier; const bool WantTemplateArgs = NameFlags & CXNameRange_WantTemplateArgs; const bool WantSinglePiece = NameFlags & CXNameRange_WantSinglePiece; - + const DeclarationName::NameKind Kind = NI.getName().getNameKind(); - + RefNamePieces Pieces; if (WantQualifier && QLoc.isValid()) Pieces.push_back(QLoc); - + if (Kind != DeclarationName::CXXOperatorName || IsMemberRefExpr) Pieces.push_back(NI.getLoc()); @@ -3261,20 +3259,20 @@ Pieces.push_back(SourceLocation::getFromRawEncoding( NI.getInfo().CXXOperatorName.EndOpNameLoc)); } - + if (WantSinglePiece) { SourceRange R(Pieces.front().getBegin(), Pieces.back().getEnd()); Pieces.clear(); Pieces.push_back(R); - } + } - return Pieces; + return Pieces; } } //===----------------------------------------------------------------------===// // Misc. API hooks. -//===----------------------------------------------------------------------===// +//===----------------------------------------------------------------------===// namespace { struct RegisterFatalErrorHandler { @@ -3392,7 +3390,7 @@ } unsigned clang_defaultEditingTranslationUnitOptions() { - return CXTranslationUnit_PrecompiledPreamble | + return CXTranslationUnit_PrecompiledPreamble | CXTranslationUnit_CacheCompletionResults; } @@ -3490,7 +3488,7 @@ // Since the Clang C library is primarily used by batch tools dealing with // (often very broken) source code, where spell-checking can have a - // significant negative impact on performance (particularly when + // significant negative impact on performance (particularly when // precompiled headers are involved), we disable it by default. // Only do this if we haven't found a spell-checking-related argument. bool FoundSpellCheckingArgument = false; @@ -3999,7 +3997,7 @@ } unsigned clang_defaultSaveOptions(CXTranslationUnit TU) { return CXSaveTranslationUnit_None; -} +} static CXSaveError clang_saveTranslationUnit_Impl(CXTranslationUnit TU, const char *FileName, @@ -4367,7 +4365,7 @@ if (const OpaqueValueExpr *OVE = dyn_cast(E)) if (Expr *Src = OVE->getSourceExpr()) return getDeclFromExpr(Src); - + if (const CallExpr *CE = dyn_cast(E)) return getDeclFromExpr(CE->getCallee()); if (const CXXConstructExpr *CE = dyn_cast(E)) @@ -4385,7 +4383,7 @@ = dyn_cast(E)) return NTTP->getParameterPack(); if (const SizeOfPackExpr *SizeOfPack = dyn_cast(E)) - if (isa(SizeOfPack->getPack()) || + if (isa(SizeOfPack->getPack()) || isa(SizeOfPack->getPack())) return SizeOfPack->getPack(); @@ -4426,8 +4424,8 @@ #define __has_feature(x) 0 #endif #if __has_feature(blocks) -typedef enum CXChildVisitResult - (^CXCursorVisitorBlock)(CXCursor cursor, CXCursor parent); +typedef enum CXChildVisitResult (^CXCursorVisitorBlock)(CXCursor cursor, + CXCursor parent); static enum CXChildVisitResult visitWithBlock(CXCursor cursor, CXCursor parent, CXClientData client_data) { @@ -4436,7 +4434,7 @@ } #else // If we are compiled with a compiler that doesn't have native blocks support, -// define and call the block manually, so the +// define and call the block manually, so the typedef struct _CXChildVisitResult { void *isa; @@ -4469,14 +4467,14 @@ dyn_cast(D)) if (ObjCPropertyDecl *Property = PropImpl->getPropertyDecl()) return cxstring::createDup(Property->getIdentifier()->getName()); - + if (const ImportDecl *ImportD = dyn_cast(D)) if (Module *Mod = ImportD->getImportedModule()) return cxstring::createDup(Mod->getFullModuleName()); return cxstring::createEmpty(); } - + if (const ObjCMethodDecl *OMD = dyn_cast(ND)) return cxstring::createDup(OMD->getSelector().getAsString()); @@ -4488,11 +4486,11 @@ if (isa(D)) return cxstring::createEmpty(); - + SmallString<1024> S; llvm::raw_svector_ostream os(S); ND->printName(os); - + return cxstring::createDup(os.str()); } @@ -4529,28 +4527,28 @@ case CXCursor_TemplateRef: { const TemplateDecl *Template = getCursorTemplateRef(C).first; assert(Template && "Missing template decl"); - + return cxstring::createDup(Template->getNameAsString()); } - + case CXCursor_NamespaceRef: { const NamedDecl *NS = getCursorNamespaceRef(C).first; assert(NS && "Missing namespace decl"); - + return cxstring::createDup(NS->getNameAsString()); } case CXCursor_MemberRef: { const FieldDecl *Field = getCursorMemberRef(C).first; assert(Field && "Missing member decl"); - + return cxstring::createDup(Field->getNameAsString()); } case CXCursor_LabelRef: { const LabelStmt *Label = getCursorLabelRef(C).first; assert(Label && "Missing label"); - + return cxstring::createRef(Label->getName()); } @@ -4569,14 +4567,14 @@ return cxstring::createEmpty(); return cxstring::createDup((*Ovl->begin())->getNameAsString()); } - + case CXCursor_VariableRef: { const VarDecl *Var = getCursorVariableRef(C).first; assert(Var && "Missing variable decl"); - + return cxstring::createDup(Var->getNameAsString()); } - + default: return cxstring::createRef(""); } @@ -4599,6 +4597,11 @@ return cxstring::createDup(OS.str()); } + if (C.kind == CXCursor_BinaryOperator || + C.kind == CXCursor_CompoundAssignOperator) { + return clang_Cursor_getBinaryOpcodeStr(clang_Cursor_getBinaryOpcode(C)); + } + const Decl *D = getDeclFromExpr(getCursorExpr(C)); if (D) return getDeclSpelling(D); @@ -4612,7 +4615,7 @@ return cxstring::createEmpty(); } - + if (C.kind == CXCursor_MacroExpansion) return cxstring::createRef(getCursorMacroExpansion(C).getName() ->getNameStart()); @@ -4623,7 +4626,7 @@ if (C.kind == CXCursor_InclusionDirective) return cxstring::createDup(getCursorInclusionDirective(C)->getFileName()); - + if (clang_isDeclaration(C.kind)) return getDeclSpelling(getCursorDecl(C)); @@ -4986,7 +4989,7 @@ CXString clang_getCursorDisplayName(CXCursor C) { if (!clang_isDeclaration(C.kind)) return clang_getCursorSpelling(C); - + const Decl *D = getCursorDecl(C); if (!D) return cxstring::createEmpty(); @@ -4994,7 +4997,7 @@ PrintingPolicy Policy = getCursorContext(C).getPrintingPolicy(); if (const FunctionTemplateDecl *FunTmpl = dyn_cast(D)) D = FunTmpl->getTemplatedDecl(); - + if (const FunctionDecl *Function = dyn_cast(D)) { SmallString<64> Str; llvm::raw_svector_ostream OS(Str); @@ -5007,7 +5010,7 @@ OS << ", "; OS << Function->getParamDecl(I)->getType().getAsString(Policy); } - + if (Function->isVariadic()) { if (Function->getNumParams()) OS << ", "; @@ -5016,7 +5019,7 @@ OS << ")"; return cxstring::createDup(OS.str()); } - + if (const ClassTemplateDecl *ClassTemplate = dyn_cast(D)) { SmallString<64> Str; llvm::raw_svector_ostream OS(Str); @@ -5026,13 +5029,13 @@ for (unsigned I = 0, N = Params->size(); I != N; ++I) { if (I) OS << ", "; - + NamedDecl *Param = Params->getParam(I); if (Param->getIdentifier()) { OS << Param->getIdentifier()->getName(); continue; } - + // There is no parameter name, which makes this tricky. Try to come up // with something useful that isn't too long. if (TemplateTypeParmDecl *TTP = dyn_cast(Param)) @@ -5043,11 +5046,11 @@ else OS << "template<...> class"; } - + OS << ">"; return cxstring::createDup(OS.str()); } - + if (const ClassTemplateSpecializationDecl *ClassSpec = dyn_cast(D)) { // If the type was explicitly written, use that. @@ -5061,10 +5064,10 @@ Policy); return cxstring::createDup(OS.str()); } - + return clang_getCursorSpelling(C); } - + CXString clang_getCursorKindSpelling(enum CXCursorKind Kind) { switch (Kind) { case CXCursor_FunctionDecl: @@ -5581,7 +5584,7 @@ // cursor. if (cursor.kind == CXCursor_MacroExpansion && Data->PointsAtMacroArgExpansion) return CXChildVisit_Recurse; - + if (clang_isDeclaration(cursor.kind)) { // Avoid having the implicit methods override the property decls. if (const ObjCMethodDecl *MD @@ -5649,8 +5652,8 @@ } } - // If our current best cursor is the construction of a temporary object, - // don't replace that cursor with a type reference, because we want + // If our current best cursor is the construction of a temporary object, + // don't replace that cursor with a type reference, because we want // clang_getCursor() to point at the constructor. if (clang_isExpression(BestCursor->kind) && isa(getCursorExpr(*BestCursor)) && @@ -5709,7 +5712,7 @@ clang_disposeString(ResultFileName); clang_disposeString(KindSpelling); clang_disposeString(USR); - + CXCursor Definition = clang_getCursorDefinition(Result); if (!clang_equalCursors(Definition, clang_getNullCursor())) { CXSourceLocation DefinitionLoc = clang_getCursorLocation(Definition); @@ -5756,7 +5759,7 @@ unsigned Index = 0; if (clang_isExpression(C.kind) || clang_isStatement(C.kind)) Index = 1; - + return llvm::DenseMapInfo >::getHashValue( std::make_pair(C.kind, C.data[Index])); } @@ -5802,7 +5805,7 @@ unsigned clang_isPreprocessing(enum CXCursorKind K) { return K >= CXCursor_FirstPreprocessing && K <= CXCursor_LastPreprocessing; } - + unsigned clang_isUnexposed(enum CXCursorKind K) { switch (K) { case CXCursor_UnexposedDecl: @@ -5870,7 +5873,7 @@ const CXXBaseSpecifier *BaseSpec = getCursorCXXBaseSpecifier(C); if (!BaseSpec) return clang_getNullLocation(); - + if (TypeSourceInfo *TSInfo = BaseSpec->getTypeSourceInfo()) return cxloc::translateSourceLocation(getCursorContext(C), TSInfo->getTypeLoc().getBeginLoc()); @@ -5971,12 +5974,12 @@ // the token under the cursor. SLoc = Lexer::GetBeginningOfToken(SLoc, CXXUnit->getSourceManager(), CXXUnit->getASTContext().getLangOpts()); - + CXCursor Result = MakeCXCursorInvalid(CXCursor_NoDeclFound); if (SLoc.isValid()) { GetCursorData ResultData(CXXUnit->getSourceManager(), SLoc, Result); CursorVisitor CursorVis(TU, GetCursorVisitor, &ResultData, - /*VisitPreprocessorLast=*/true, + /*VisitPreprocessorLast=*/true, /*VisitIncludedEntities=*/false, SourceLocation(SLoc)); CursorVis.visitFileRegion(); @@ -6020,7 +6023,7 @@ case CXCursor_VariableRef: return getCursorVariableRef(C).second; - + default: // FIXME: Need a way to enumerate all non-reference cases. llvm_unreachable("Missed a reference kind"); @@ -6120,9 +6123,9 @@ R.setBegin(VD->getLocation()); } - return R; + return R; } - + return getRawCursorExtent(C); } @@ -6149,10 +6152,10 @@ dyn_cast(D)) if (ObjCPropertyDecl *Property = PropImpl->getPropertyDecl()) return MakeCXCursor(Property, tu); - + return C; } - + if (clang_isExpression(C.kind)) { const Expr *E = getCursorExpr(C); const Decl *D = getDeclFromExpr(E); @@ -6162,10 +6165,10 @@ declCursor); return declCursor; } - + if (const OverloadExpr *Ovl = dyn_cast_or_null(E)) return MakeCursorOverloadedDeclRef(Ovl, tu); - + return clang_getNullCursor(); } @@ -6236,7 +6239,7 @@ case CXCursor_OverloadedDeclRef: return C; - + case CXCursor_VariableRef: return MakeCXCursor(getCursorVariableRef(C).first, tu); @@ -6387,8 +6390,8 @@ } case Decl::Using: - return MakeCursorOverloadedDeclRef(cast(D), - D->getLocation(), TU); + return MakeCursorOverloadedDeclRef(cast(D), D->getLocation(), + TU); case Decl::UsingShadow: case Decl::ConstructorUsingShadow: @@ -6478,7 +6481,7 @@ CXCursor clang_getCanonicalCursor(CXCursor C) { if (!clang_isDeclaration(C.kind)) return C; - + if (const Decl *D = getCursorDecl(C)) { if (const ObjCCategoryImplDecl *CatImplD = dyn_cast(D)) if (ObjCCategoryDecl *CatD = CatImplD->getCategoryDecl()) @@ -6490,30 +6493,30 @@ return MakeCXCursor(D->getCanonicalDecl(), getCursorTU(C)); } - + return C; } int clang_Cursor_getObjCSelectorIndex(CXCursor cursor) { return cxcursor::getSelectorIdentifierIndexAndLoc(cursor).first; } - + unsigned clang_getNumOverloadedDecls(CXCursor C) { if (C.kind != CXCursor_OverloadedDeclRef) return 0; - + OverloadedDeclRefStorage Storage = getCursorOverloadedDeclRef(C).first; if (const OverloadExpr *E = Storage.dyn_cast()) return E->getNumDecls(); - + if (OverloadedTemplateStorage *S = Storage.dyn_cast()) return S->size(); - + const Decl *D = Storage.get(); if (const UsingDecl *Using = dyn_cast(D)) return Using->shadow_size(); - + return 0; } @@ -6523,16 +6526,16 @@ if (index >= clang_getNumOverloadedDecls(cursor)) return clang_getNullCursor(); - + CXTranslationUnit TU = getCursorTU(cursor); OverloadedDeclRefStorage Storage = getCursorOverloadedDeclRef(cursor).first; if (const OverloadExpr *E = Storage.dyn_cast()) return MakeCXCursor(E->decls_begin()[index], TU); - + if (OverloadedTemplateStorage *S = Storage.dyn_cast()) return MakeCXCursor(S->begin()[index], TU); - + const Decl *D = Storage.get(); if (const UsingDecl *Using = dyn_cast(D)) { // FIXME: This is, unfortunately, linear time. @@ -6540,10 +6543,10 @@ std::advance(Pos, index); return MakeCXCursor(cast(*Pos)->getTargetDecl(), TU); } - + return clang_getNullCursor(); } - + void clang_getDefinitionSpellingAndExtent(CXCursor C, const char **startBuf, const char **endBuf, @@ -6568,14 +6571,14 @@ CXSourceRange clang_getCursorReferenceNameRange(CXCursor C, unsigned NameFlags, unsigned PieceIndex) { RefNamePieces Pieces; - + switch (C.kind) { case CXCursor_MemberRefExpr: if (const MemberExpr *E = dyn_cast(getCursorExpr(C))) Pieces = buildPieces(NameFlags, true, E->getMemberNameInfo(), E->getQualifierLoc().getSourceRange()); break; - + case CXCursor_DeclRefExpr: if (const DeclRefExpr *E = dyn_cast(getCursorExpr(C))) { SourceRange TemplateArgLoc(E->getLAngleLoc(), E->getRAngleLoc()); @@ -6584,10 +6587,10 @@ E->getQualifierLoc().getSourceRange(), &TemplateArgLoc); } break; - + case CXCursor_CallExpr: - if (const CXXOperatorCallExpr *OCE = - dyn_cast(getCursorExpr(C))) { + if (const CXXOperatorCallExpr *OCE = + dyn_cast(getCursorExpr(C))) { const Expr *Callee = OCE->getCallee(); if (const ImplicitCastExpr *ICE = dyn_cast(Callee)) Callee = ICE->getSubExpr(); @@ -6597,7 +6600,7 @@ DRE->getQualifierLoc().getSourceRange()); } break; - + default: break; } @@ -6610,7 +6613,7 @@ if (R.isValid()) return cxloc::translateSourceRange(getCursorContext(C), R); } - + return clang_getNullRange(); } @@ -6730,7 +6733,7 @@ = SourceMgr.getBufferData(BeginLocInfo.first, &Invalid); if (Invalid) return; - + Lexer Lex(SourceMgr.getLocForStartOfFile(BeginLocInfo.first), CXXUnit->getASTContext().getLangOpts(), Buffer.begin(), Buffer.data() + BeginLocInfo.second, Buffer.end()); @@ -6841,7 +6844,7 @@ return; ASTUnit::ConcurrencyCheck Check(*CXXUnit); - + SourceRange R = cxloc::translateCXSourceRange(Range); if (R.isInvalid()) return; @@ -6949,8 +6952,8 @@ void HandlePostPonedChildCursor(CXCursor Cursor, unsigned StartTokenIndex); void AnnotateTokens(); - - /// Determine whether the annotator saw any cursors that have + + /// Determine whether the annotator saw any cursors that have /// context-sensitive keywords. bool hasContextSensitiveKeywords() const { return HasContextSensitiveKeywords; @@ -7080,7 +7083,7 @@ // annotated by a subsequent annotation try. bool atLeastOneCompFail = false; - + unsigned I = NextToken(); for (; I < NumTokens && isFunctionMacroToken(I); ++I) { SourceLocation TokLoc = getFunctionMacroTokenLoc(I); @@ -7100,8 +7103,8 @@ return true; } -enum CXChildVisitResult -AnnotateTokensWorker::Visit(CXCursor cursor, CXCursor parent) { +enum CXChildVisitResult AnnotateTokensWorker::Visit(CXCursor cursor, + CXCursor parent) { SourceRange cursorRange = getRawCursorExtent(cursor); if (cursorRange.isInvalid()) return CXChildVisit_Recurse; @@ -7132,7 +7135,7 @@ } } } - } + } // C++ methods can have context-sensitive keywords. else if (cursor.kind == CXCursor_CXXMethod) { if (const CXXMethodDecl *Method @@ -7156,8 +7159,8 @@ if (cursor.kind == CXCursor_ObjCInstanceMethodDecl && parent.kind == CXCursor_ObjCPropertyDecl) return CXChildVisit_Continue; - - if (clang_isPreprocessing(cursor.kind)) { + + if (clang_isPreprocessing(cursor.kind)) { // Items in the preprocessing record are kept separate from items in // declarations, so we keep a separate token index. unsigned SavedTokIdx = TokIdx; @@ -7178,7 +7181,7 @@ } break; } - + // Look at all of the tokens within this range. while (MoreTokens()) { const unsigned I = NextToken(); @@ -7368,7 +7371,7 @@ CXToken *Tokens; unsigned NumTokens; unsigned CurIdx; - + public: MarkMacroArgTokensVisitor(SourceManager &SM, CXToken *tokens, unsigned numTokens) @@ -7387,7 +7390,7 @@ macroRange.getBegin())) break; } - + if (CurIdx == NumTokens) return CXChildVisit_Break; @@ -7475,7 +7478,7 @@ Buffer.begin(), Buffer.data() + BeginLocInfo.second, Buffer.end()); Lex.SetCommentRetentionState(true); - + unsigned NextIdx = 0; // Lex tokens in raw mode until we hit the end of the range, to avoid // entering #includes or expanding macros. @@ -7486,7 +7489,7 @@ unsigned TokIdx = NextIdx-1; assert(Tok.getLocation() == SourceLocation::getFromRawEncoding(Tokens[TokIdx].int_data[1])); - + reprocess: if (Tok.is(tok::hash) && Tok.isAtStartOfLine()) { // We have found a preprocessing directive. Annotate the tokens @@ -7542,7 +7545,7 @@ for (; TokIdx <= LastIdx; ++TokIdx) updateCursorAnnotation(Cursors[TokIdx], Cursor); - + if (finished) break; goto reprocess; @@ -7591,11 +7594,11 @@ RegionOfInterest); MacroArgMarker.visitPreprocessedEntitiesInRegion(); } - + // Annotate all of the source locations in the region of interest that map to // a specific cursor. AnnotateTokensWorker W(Tokens, Cursors, NumTokens, TU, RegionOfInterest); - + // FIXME: We use a ridiculous stack size here because the data-recursion // algorithm uses a large stack frame than the non-data recursive version, // and AnnotationTokensWorker currently transforms the data-recursion @@ -7609,7 +7612,7 @@ for (unsigned I = 0; I != NumTokens; ++I) { if (clang_getTokenKind(Tokens[I]) != CXToken_Identifier) continue; - + if (Cursors[I].kind == CXCursor_ObjCPropertyDecl) { IdentifierInfo *II = static_cast(Tokens[I].ptr_data); if (const ObjCPropertyDecl *Property @@ -7634,7 +7637,7 @@ } continue; } - + if (Cursors[I].kind == CXCursor_ObjCInstanceMethodDecl || Cursors[I].kind == CXCursor_ObjCClassMethodDecl) { IdentifierInfo *II = static_cast(Tokens[I].ptr_data); @@ -7797,7 +7800,7 @@ static CXAvailabilityKind getCursorAvailabilityForDecl(const Decl *D) { if (isa(D) && cast(D)->isDeleted()) return CXAvailability_NotAvailable; - + switch (D->getAvailability()) { case AR_Available: case AR_NotYetIntroduced: @@ -7830,7 +7833,7 @@ return Out; Out.Major = In.getMajor(); - + Optional Minor = In.getMinor(); if (Minor.hasValue()) Out.Minor = *Minor; @@ -7840,7 +7843,7 @@ Optional Subminor = In.getSubminor(); if (Subminor.hasValue()) Out.Subminor = *Subminor; - + return Out; } @@ -8066,16 +8069,16 @@ if (!DC) return clang_getNullCursor(); - return MakeCXCursor(maybeGetTemplateCursor(cast(DC)), + return MakeCXCursor(maybeGetTemplateCursor(cast(DC)), getCursorTU(cursor)); } } - + if (clang_isStatement(cursor.kind) || clang_isExpression(cursor.kind)) { if (const Decl *D = getCursorDecl(cursor)) return MakeCXCursor(D, getCursorTU(cursor)); } - + return clang_getNullCursor(); } @@ -8086,12 +8089,12 @@ if (!DC) return clang_getNullCursor(); - return MakeCXCursor(maybeGetTemplateCursor(cast(DC)), + return MakeCXCursor(maybeGetTemplateCursor(cast(DC)), getCursorTU(cursor)); } } - // FIXME: Note that we can't easily compute the lexical context of a + // FIXME: Note that we can't easily compute the lexical context of a // statement or expression, so we return nothing. return clang_getNullCursor(); } @@ -8228,6 +8231,36 @@ return 0; } +enum CX_BinaryOperatorKind clang_Cursor_getBinaryOpcode(CXCursor C) { + if (C.kind != CXCursor_BinaryOperator && + C.kind != CXCursor_CompoundAssignOperator) { + return CX_BO_Invalid; + } + + const Expr *D = getCursorExpr(C); + if (const BinaryOperator *BinOp = dyn_cast(D)) { + switch (BinOp->getOpcode()) { + default: + return CX_BO_Invalid; +#define BINARY_OPERATION(Name, Spelling) \ + case BO_##Name: \ + return CX_BO_##Name; +#include "clang/AST/OperationKinds.def" + } + } + + return CX_BO_Invalid; +} + +CXString clang_Cursor_getBinaryOpcodeStr(enum CX_BinaryOperatorKind Op) { + if (Op > CX_BO_LAST) { + return cxstring::createEmpty(); + } + + return cxstring::createDup( + BinaryOperator::getOpcodeStr(static_cast(Op - 1))); +} + CXSourceRange clang_Cursor_getCommentRange(CXCursor C) { if (!clang_isDeclaration(C.kind)) return clang_getNullRange(); @@ -8293,11 +8326,11 @@ if (!File) return nullptr; FileEntry *FE = static_cast(File); - + ASTUnit &Unit = *cxtu::getASTUnit(TU); HeaderSearch &HS = Unit.getPreprocessor().getHeaderSearchInfo(); ModuleMap::KnownHeader Header = HS.findModuleForHeader(FE); - + return Header.getModule(); } @@ -8456,7 +8489,7 @@ unsigned clang_CXXMethod_isStatic(CXCursor C) { if (!clang_isDeclaration(C.kind)) return 0; - + const Decl *D = cxcursor::getCursorDecl(C); const CXXMethodDecl *Method = D ? dyn_cast_or_null(D->getAsFunction()) : nullptr; @@ -8466,7 +8499,7 @@ unsigned clang_CXXMethod_isVirtual(CXCursor C) { if (!clang_isDeclaration(C.kind)) return 0; - + const Decl *D = cxcursor::getCursorDecl(C); const CXXMethodDecl *Method = D ? dyn_cast_or_null(D->getAsFunction()) : nullptr; @@ -8500,11 +8533,11 @@ CXType clang_getIBOutletCollectionType(CXCursor C) { if (C.kind != CXCursor_IBOutletCollectionAttr) return cxtype::MakeCXType(QualType(), cxcursor::getCursorTU(C)); - + const IBOutletCollectionAttr *A = cast(cxcursor::getCursorAttr(C)); - - return cxtype::MakeCXType(A->getInterface(), cxcursor::getCursorTU(C)); + + return cxtype::MakeCXType(A->getInterface(), cxcursor::getCursorTU(C)); } //===----------------------------------------------------------------------===// @@ -8524,7 +8557,7 @@ const char *str = ""; switch (kind) { case CXTUResourceUsage_AST: - str = "ASTContext: expressions, declarations, and types"; + str = "ASTContext: expressions, declarations, and types"; break; case CXTUResourceUsage_Identifiers: str = "ASTContext: identifiers"; @@ -8575,11 +8608,11 @@ CXTUResourceUsage usage = { (void*) nullptr, 0, nullptr }; return usage; } - + ASTUnit *astUnit = cxtu::getASTUnit(TU); std::unique_ptr entries(new MemUsageEntries()); ASTContext &astContext = astUnit->getASTContext(); - + // How much memory is used by AST nodes and types? createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_AST, (unsigned long) astContext.getASTAllocatedMemory()); @@ -8591,11 +8624,11 @@ // How much memory is used for selectors? createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_Selectors, (unsigned long) astContext.Selectors.getTotalMemory()); - + // How much memory is used by ASTContext's side tables? createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_AST_SideTables, (unsigned long) astContext.getSideTableAllocatedMemory()); - + // How much memory is used for caching global code completion results? unsigned long completionBytes = 0; if (GlobalCodeCompletionAllocator *completionAllocator = @@ -8605,16 +8638,16 @@ createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_GlobalCompletionResults, completionBytes); - + // How much memory is being used by SourceManager's content cache? createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_SourceManagerContentCache, (unsigned long) astContext.getSourceManager().getContentCacheSize()); - + // How much memory is being used by the MemoryBuffer's in SourceManager? const SourceManager::MemoryBufferSizes &srcBufs = astUnit->getSourceManager().getMemoryBufferSizes(); - + createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_SourceManager_Membuffer_Malloc, (unsigned long) srcBufs.malloc_bytes); @@ -8625,12 +8658,12 @@ CXTUResourceUsage_SourceManager_DataStructures, (unsigned long) astContext.getSourceManager() .getDataStructureSizes()); - + // How much memory is being used by the ExternalASTSource? if (ExternalASTSource *esrc = astContext.getExternalSource()) { const ExternalASTSource::MemoryBufferSizes &sizes = esrc->getMemoryBufferSizes(); - + createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc, (unsigned long) sizes.malloc_bytes); @@ -8638,19 +8671,19 @@ CXTUResourceUsage_ExternalASTSource_Membuffer_MMap, (unsigned long) sizes.mmap_bytes); } - + // How much memory is being used by the Preprocessor? Preprocessor &pp = astUnit->getPreprocessor(); createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_Preprocessor, pp.getTotalMemory()); - + if (PreprocessingRecord *pRec = pp.getPreprocessingRecord()) { createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_PreprocessingRecord, - pRec->getTotalMemory()); + pRec->getTotalMemory()); } - + createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_Preprocessor_HeaderSearch, pp.getHeaderSearchInfo().getTotalMemory()); @@ -8718,7 +8751,7 @@ LOG_BAD_TU(TU); return skipped; } - + ASTUnit *astUnit = cxtu::getASTUnit(TU); PreprocessingRecord *ppRec = astUnit->getPreprocessor().getPreprocessingRecord(); if (!ppRec) @@ -8746,10 +8779,10 @@ void clang::PrintLibclangResourceUsage(CXTranslationUnit TU) { CXTUResourceUsage Usage = clang_getCXTUResourceUsage(TU); for (unsigned I = 0; I != Usage.numEntries; ++I) - fprintf(stderr, " %s: %lu\n", + fprintf(stderr, " %s: %lu\n", clang_getTUResourceUsageName(Usage.entries[I].kind), Usage.entries[I].amount); - + clang_disposeCXTUResourceUsage(Usage); } @@ -8794,8 +8827,8 @@ if (!Unit) return; - for (ASTUnit::stored_diag_iterator D = Unit->stored_diag_begin(), - DEnd = Unit->stored_diag_end(); + for (ASTUnit::stored_diag_iterator D = Unit->stored_diag_begin(), + DEnd = Unit->stored_diag_end(); D != DEnd; ++D) { CXStoredDiagnostic Diag(*D, Unit->getLangOpts()); CXString Msg = clang_formatDiagnostic(&Diag, diff --git a/clang/tools/libclang/libclang.exports b/clang/tools/libclang/libclang.exports --- a/clang/tools/libclang/libclang.exports +++ b/clang/tools/libclang/libclang.exports @@ -22,6 +22,8 @@ clang_Cursor_getTemplateArgumentValue clang_Cursor_getTemplateArgumentUnsignedValue clang_Cursor_getBriefCommentText +clang_Cursor_getBinaryOpcode +clang_Cursor_getBinaryOpcodeStr clang_Cursor_getCommentRange clang_Cursor_getCXXManglings clang_Cursor_getMangling