13af6ab5fSopenharmony_ci/*
23af6ab5fSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License.
53af6ab5fSopenharmony_ci * You may obtain a copy of the License at
63af6ab5fSopenharmony_ci *
73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
83af6ab5fSopenharmony_ci *
93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
103af6ab5fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and
133af6ab5fSopenharmony_ci * limitations under the License.
143af6ab5fSopenharmony_ci */
153af6ab5fSopenharmony_ci
163af6ab5fSopenharmony_ci
173af6ab5fSopenharmony_cilet i = 1;
183af6ab5fSopenharmony_cilet j = 2;
193af6ab5fSopenharmony_cilet b1 = true;
203af6ab5fSopenharmony_cilet b2 = false;
213af6ab5fSopenharmony_cilet r1 = new Object();
223af6ab5fSopenharmony_cilet r2: Object | null = null;
233af6ab5fSopenharmony_ci
243af6ab5fSopenharmony_ci// nullish
253af6ab5fSopenharmony_cilet r3 = r1 ?? r2;
263af6ab5fSopenharmony_cilet r4 = r1 ?? r2 ?? r3;
273af6ab5fSopenharmony_ci
283af6ab5fSopenharmony_ci// logical (and, or)
293af6ab5fSopenharmony_cilet b01 = b1 && b2;
303af6ab5fSopenharmony_cilet b02 = b1 || b2;
313af6ab5fSopenharmony_cilet b03 = b1 && b2 && b01 && b02;
323af6ab5fSopenharmony_cilet b04 = b1 || b2 || b01 || b02;
333af6ab5fSopenharmony_cilet b05 = b1 && b2 || b01 || b02;
343af6ab5fSopenharmony_cilet b06 = b1 || b2 && b01 && b02;
353af6ab5fSopenharmony_ci
363af6ab5fSopenharmony_ci// bitwise (and, or, xor)
373af6ab5fSopenharmony_cilet i01 = i & j;
383af6ab5fSopenharmony_cilet i02 = i ^ j;
393af6ab5fSopenharmony_cilet i03 = i | j;
403af6ab5fSopenharmony_cilet i04 = i & j ^ i & j | i ^ j;
413af6ab5fSopenharmony_ci
423af6ab5fSopenharmony_ci// equality (eq, neq, strict eq, strict neq)
433af6ab5fSopenharmony_cilet b07 = i != j;
443af6ab5fSopenharmony_cilet b08 = i == j;
453af6ab5fSopenharmony_cilet b09 = r1 !== r2;
463af6ab5fSopenharmony_cilet b10 = r1 === r2;
473af6ab5fSopenharmony_ci
483af6ab5fSopenharmony_ci// relational (less, greater, less eq, greater eq), instanceof
493af6ab5fSopenharmony_cilet b12 = i < j;
503af6ab5fSopenharmony_cilet b13 = i > j;
513af6ab5fSopenharmony_cilet b14 = i <= j;
523af6ab5fSopenharmony_cilet b15 = i >= j;
533af6ab5fSopenharmony_cilet b16 = r1 instanceof Object;
543af6ab5fSopenharmony_ci
553af6ab5fSopenharmony_ci// shift (left, right, unsigned right)
563af6ab5fSopenharmony_cilet b17 = i >> j;
573af6ab5fSopenharmony_cilet b18 = i << j;
583af6ab5fSopenharmony_cilet b19 = i >>> j;
593af6ab5fSopenharmony_cilet b20 = i >> j << i >>> j;
603af6ab5fSopenharmony_ci
613af6ab5fSopenharmony_ci// additive (add, sub)
623af6ab5fSopenharmony_cilet i05 = i + j;
633af6ab5fSopenharmony_cilet i06 = i - j;
643af6ab5fSopenharmony_cilet i07 = i + j - i + j;
653af6ab5fSopenharmony_ci
663af6ab5fSopenharmony_ci// multiplicative (mul, div, mod)
673af6ab5fSopenharmony_cilet i08 = i * j;
683af6ab5fSopenharmony_cilet i09 = i / j;
693af6ab5fSopenharmony_cilet i10 = i % j;
703af6ab5fSopenharmony_cilet i11 = i * j / i % j * i / j;
713af6ab5fSopenharmony_ci
723af6ab5fSopenharmony_ci// mixed, precedence
733af6ab5fSopenharmony_cilet b21 = i * j >>> i - j;
743af6ab5fSopenharmony_cilet b22 = i > j && b1 || b2;
753af6ab5fSopenharmony_cilet b23 = i * j + i >> j < i != b1 & b2 ^ b1 | b2 && b1 || b2;
763af6ab5fSopenharmony_cilet b24 = b1 || b2 && b1 | b2 ^ b1 & b2 == i >= j << i - j % i;
773af6ab5fSopenharmony_cilet b25 = r1 ?? b1 != b2 | i <= j;
78