Lines Matching defs:unboxedL

284     Type *const unboxedL = ETSBuiltinTypeAsPrimitiveType(left);
287 if (unboxedL == nullptr || unboxedR == nullptr) {
291 if (!unboxedL->HasTypeFlag(test) || !unboxedR->HasTypeFlag(test)) {
295 bool const bothConst = unboxedL->HasTypeFlag(TypeFlag::CONSTANT) && unboxedR->HasTypeFlag(TypeFlag::CONSTANT);
298 auto const numericPromotion = [this, unboxedL, unboxedR, bothConst]() -> std::tuple<checker::Type *, bool> {
299 if (unboxedL->IsDoubleType() || unboxedR->IsDoubleType()) {
303 if (unboxedL->IsFloatType() || unboxedR->IsFloatType()) {
307 if (unboxedL->IsLongType() || unboxedR->IsLongType()) {
311 if (unboxedL->IsCharType() && unboxedR->IsCharType()) {
319 if (unboxedL->HasTypeFlag(TypeFlag::ETS_CONVERTIBLE_TO_NUMERIC) &&
324 if (IsTypeIdenticalTo(unboxedL, unboxedR)) {
325 return {unboxedL, bothConst};
332 std::optional<checker::Type *> CheckLeftRightType(checker::ETSChecker *checker, checker::Type *unboxedL,
335 if (unboxedL->IsDoubleType() || unboxedR->IsDoubleType()) {
338 if (unboxedL->IsFloatType() || unboxedR->IsFloatType()) {
341 if (unboxedL->IsLongType() || unboxedR->IsLongType()) {
344 if (unboxedL->IsIntType() || unboxedR->IsIntType() || unboxedL->IsCharType() || unboxedR->IsCharType()) {
347 if (unboxedL->IsShortType() || unboxedR->IsShortType()) {
350 if (unboxedL->IsByteType() || unboxedR->IsByteType()) {
355 checker::Type *ETSChecker::ApplyConditionalOperatorPromotion(checker::ETSChecker *checker, checker::Type *unboxedL,
358 if ((unboxedL->HasTypeFlag(checker::TypeFlag::CONSTANT) && unboxedL->IsIntType()) ||
360 int value = unboxedL->IsIntType() ? unboxedL->AsIntType()->GetValue() : unboxedR->AsIntType()->GetValue();
361 checker::Type *otherType = !unboxedL->IsIntType() ? unboxedL : unboxedR;
385 auto checkLeftRight = CheckLeftRightType(checker, unboxedL, unboxedR);