diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-06-17 17:22:32 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2021-06-17 17:22:32 +0100 |
commit | ce926aebc4461e38535047958c0b6f72b7a0c0ea (patch) | |
tree | 4b844e0681b459836bac22c34bee43e4dfa3dc5f /crates/hir_ty/src/op.rs | |
parent | 3ae0c5911ab50ee209179ee4329b0551abe6fc48 (diff) | |
parent | 02d25ab60d2701ce71fe2dfaca36627ad902e229 (diff) |
Merge #9315
9315: Nest all the or-patterns! r=Veykril a=Veykril
`cargo +nightly clippy --fix -Z unstable-options --allow-dirty -- -A clippy::all -D clippy::unnested_or_patterns`
Co-authored-by: Lukas Wirth <[email protected]>
Diffstat (limited to 'crates/hir_ty/src/op.rs')
-rw-r--r-- | crates/hir_ty/src/op.rs | 38 |
1 files changed, 15 insertions, 23 deletions
diff --git a/crates/hir_ty/src/op.rs b/crates/hir_ty/src/op.rs index 0222de2bc..5ef6342d5 100644 --- a/crates/hir_ty/src/op.rs +++ b/crates/hir_ty/src/op.rs | |||
@@ -8,17 +8,15 @@ pub(super) fn binary_op_return_ty(op: BinaryOp, lhs_ty: Ty, rhs_ty: Ty) -> Ty { | |||
8 | match op { | 8 | match op { |
9 | BinaryOp::LogicOp(_) | BinaryOp::CmpOp(_) => TyKind::Scalar(Scalar::Bool).intern(&Interner), | 9 | BinaryOp::LogicOp(_) | BinaryOp::CmpOp(_) => TyKind::Scalar(Scalar::Bool).intern(&Interner), |
10 | BinaryOp::Assignment { .. } => TyBuilder::unit(), | 10 | BinaryOp::Assignment { .. } => TyBuilder::unit(), |
11 | BinaryOp::ArithOp(ArithOp::Shl) | BinaryOp::ArithOp(ArithOp::Shr) => { | 11 | BinaryOp::ArithOp(ArithOp::Shl | ArithOp::Shr) => { |
12 | // all integer combinations are valid here | 12 | // all integer combinations are valid here |
13 | if matches!( | 13 | if matches!( |
14 | lhs_ty.kind(&Interner), | 14 | lhs_ty.kind(&Interner), |
15 | TyKind::Scalar(Scalar::Int(_)) | 15 | TyKind::Scalar(Scalar::Int(_) | Scalar::Uint(_)) |
16 | | TyKind::Scalar(Scalar::Uint(_)) | ||
17 | | TyKind::InferenceVar(_, TyVariableKind::Integer) | 16 | | TyKind::InferenceVar(_, TyVariableKind::Integer) |
18 | ) && matches!( | 17 | ) && matches!( |
19 | rhs_ty.kind(&Interner), | 18 | rhs_ty.kind(&Interner), |
20 | TyKind::Scalar(Scalar::Int(_)) | 19 | TyKind::Scalar(Scalar::Int(_) | Scalar::Uint(_)) |
21 | | TyKind::Scalar(Scalar::Uint(_)) | ||
22 | | TyKind::InferenceVar(_, TyVariableKind::Integer) | 20 | | TyKind::InferenceVar(_, TyVariableKind::Integer) |
23 | ) { | 21 | ) { |
24 | lhs_ty | 22 | lhs_ty |
@@ -32,15 +30,15 @@ pub(super) fn binary_op_return_ty(op: BinaryOp, lhs_ty: Ty, rhs_ty: Ty) -> Ty { | |||
32 | | (TyKind::Scalar(Scalar::Uint(_)), TyKind::Scalar(Scalar::Uint(_))) | 30 | | (TyKind::Scalar(Scalar::Uint(_)), TyKind::Scalar(Scalar::Uint(_))) |
33 | | (TyKind::Scalar(Scalar::Float(_)), TyKind::Scalar(Scalar::Float(_))) => rhs_ty, | 31 | | (TyKind::Scalar(Scalar::Float(_)), TyKind::Scalar(Scalar::Float(_))) => rhs_ty, |
34 | // ({int}, int) | ({int}, uint) | 32 | // ({int}, int) | ({int}, uint) |
35 | (TyKind::InferenceVar(_, TyVariableKind::Integer), TyKind::Scalar(Scalar::Int(_))) | 33 | ( |
36 | | (TyKind::InferenceVar(_, TyVariableKind::Integer), TyKind::Scalar(Scalar::Uint(_))) => { | 34 | TyKind::InferenceVar(_, TyVariableKind::Integer), |
37 | rhs_ty | 35 | TyKind::Scalar(Scalar::Int(_) | Scalar::Uint(_)), |
38 | } | 36 | ) => rhs_ty, |
39 | // (int, {int}) | (uint, {int}) | 37 | // (int, {int}) | (uint, {int}) |
40 | (TyKind::Scalar(Scalar::Int(_)), TyKind::InferenceVar(_, TyVariableKind::Integer)) | 38 | ( |
41 | | (TyKind::Scalar(Scalar::Uint(_)), TyKind::InferenceVar(_, TyVariableKind::Integer)) => { | 39 | TyKind::Scalar(Scalar::Int(_) | Scalar::Uint(_)), |
42 | lhs_ty | 40 | TyKind::InferenceVar(_, TyVariableKind::Integer), |
43 | } | 41 | ) => lhs_ty, |
44 | // ({float} | float) | 42 | // ({float} | float) |
45 | (TyKind::InferenceVar(_, TyVariableKind::Float), TyKind::Scalar(Scalar::Float(_))) => { | 43 | (TyKind::InferenceVar(_, TyVariableKind::Float), TyKind::Scalar(Scalar::Float(_))) => { |
46 | rhs_ty | 44 | rhs_ty |
@@ -69,21 +67,15 @@ pub(super) fn binary_op_rhs_expectation(op: BinaryOp, lhs_ty: Ty) -> Ty { | |||
69 | BinaryOp::Assignment { op: None } => lhs_ty, | 67 | BinaryOp::Assignment { op: None } => lhs_ty, |
70 | BinaryOp::CmpOp(CmpOp::Eq { .. }) => match lhs_ty.kind(&Interner) { | 68 | BinaryOp::CmpOp(CmpOp::Eq { .. }) => match lhs_ty.kind(&Interner) { |
71 | TyKind::Scalar(_) | TyKind::Str => lhs_ty, | 69 | TyKind::Scalar(_) | TyKind::Str => lhs_ty, |
72 | TyKind::InferenceVar(_, TyVariableKind::Integer) | 70 | TyKind::InferenceVar(_, TyVariableKind::Integer | TyVariableKind::Float) => lhs_ty, |
73 | | TyKind::InferenceVar(_, TyVariableKind::Float) => lhs_ty, | ||
74 | _ => TyKind::Error.intern(&Interner), | 71 | _ => TyKind::Error.intern(&Interner), |
75 | }, | 72 | }, |
76 | BinaryOp::ArithOp(ArithOp::Shl) | BinaryOp::ArithOp(ArithOp::Shr) => { | 73 | BinaryOp::ArithOp(ArithOp::Shl | ArithOp::Shr) => TyKind::Error.intern(&Interner), |
77 | TyKind::Error.intern(&Interner) | ||
78 | } | ||
79 | BinaryOp::CmpOp(CmpOp::Ord { .. }) | 74 | BinaryOp::CmpOp(CmpOp::Ord { .. }) |
80 | | BinaryOp::Assignment { op: Some(_) } | 75 | | BinaryOp::Assignment { op: Some(_) } |
81 | | BinaryOp::ArithOp(_) => match lhs_ty.kind(&Interner) { | 76 | | BinaryOp::ArithOp(_) => match lhs_ty.kind(&Interner) { |
82 | TyKind::Scalar(Scalar::Int(_)) | 77 | TyKind::Scalar(Scalar::Int(_) | Scalar::Uint(_) | Scalar::Float(_)) => lhs_ty, |
83 | | TyKind::Scalar(Scalar::Uint(_)) | 78 | TyKind::InferenceVar(_, TyVariableKind::Integer | TyVariableKind::Float) => lhs_ty, |
84 | | TyKind::Scalar(Scalar::Float(_)) => lhs_ty, | ||
85 | TyKind::InferenceVar(_, TyVariableKind::Integer) | ||
86 | | TyKind::InferenceVar(_, TyVariableKind::Float) => lhs_ty, | ||
87 | _ => TyKind::Error.intern(&Interner), | 79 | _ => TyKind::Error.intern(&Interner), |
88 | }, | 80 | }, |
89 | } | 81 | } |