aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/lib.rs
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-02-28 19:56:16 +0000
committerGitHub <[email protected]>2021-02-28 19:56:16 +0000
commit23d7dbfa5e7ba2cebf8c3f79b5d31285d79c1527 (patch)
treec99eee1f422e009f039bc5c1fd68120bc217d417 /crates/hir_ty/src/lib.rs
parent2fc137b70f9d455676cc99a1a5c7e6e10c3e7cc2 (diff)
parenta3fd2faba5b0736fd51c7b94cae55e0a9609cdb0 (diff)
Merge #7814
7814: Turn Ty::Tuple variant into a tuple-variant r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
Diffstat (limited to 'crates/hir_ty/src/lib.rs')
-rw-r--r--crates/hir_ty/src/lib.rs21
1 files changed, 8 insertions, 13 deletions
diff --git a/crates/hir_ty/src/lib.rs b/crates/hir_ty/src/lib.rs
index 117d69f01..4c0ebcfe3 100644
--- a/crates/hir_ty/src/lib.rs
+++ b/crates/hir_ty/src/lib.rs
@@ -120,7 +120,7 @@ pub enum Ty {
120 Scalar(Scalar), 120 Scalar(Scalar),
121 121
122 /// A tuple type. For example, `(i32, bool)`. 122 /// A tuple type. For example, `(i32, bool)`.
123 Tuple { cardinality: u16, substs: Substs }, 123 Tuple(usize, Substs),
124 124
125 /// An array with the given length. Written as `[T; n]`. 125 /// An array with the given length. Written as `[T; n]`.
126 Array(Substs), 126 Array(Substs),
@@ -169,7 +169,7 @@ pub enum Ty {
169 Closure { def: DefWithBodyId, expr: ExprId, substs: Substs }, 169 Closure { def: DefWithBodyId, expr: ExprId, substs: Substs },
170 170
171 /// Represents a foreign type declared in external blocks. 171 /// Represents a foreign type declared in external blocks.
172 ForeignType(TypeAliasId, Substs), 172 ForeignType(TypeAliasId),
173 173
174 /// A pointer to a function. Written as `fn() -> i32`. 174 /// A pointer to a function. Written as `fn() -> i32`.
175 /// 175 ///
@@ -582,7 +582,7 @@ impl TypeWalk for FnSig {
582 582
583impl Ty { 583impl Ty {
584 pub fn unit() -> Self { 584 pub fn unit() -> Self {
585 Ty::Tuple { cardinality: 0, substs: Substs::empty() } 585 Ty::Tuple(0, Substs::empty())
586 } 586 }
587 587
588 pub fn fn_ptr(sig: FnSig) -> Self { 588 pub fn fn_ptr(sig: FnSig) -> Self {
@@ -642,7 +642,7 @@ impl Ty {
642 642
643 pub fn as_tuple(&self) -> Option<&Substs> { 643 pub fn as_tuple(&self) -> Option<&Substs> {
644 match self { 644 match self {
645 Ty::Tuple { substs: parameters, .. } => Some(parameters), 645 Ty::Tuple(_, substs) => Some(substs),
646 _ => None, 646 _ => None,
647 } 647 }
648 } 648 }
@@ -684,9 +684,7 @@ impl Ty {
684 Ty::FnPtr { num_args, is_varargs, .. }, 684 Ty::FnPtr { num_args, is_varargs, .. },
685 Ty::FnPtr { num_args: num_args2, is_varargs: is_varargs2, .. }, 685 Ty::FnPtr { num_args: num_args2, is_varargs: is_varargs2, .. },
686 ) => num_args == num_args2 && is_varargs == is_varargs2, 686 ) => num_args == num_args2 && is_varargs == is_varargs2,
687 (Ty::Tuple { cardinality, .. }, Ty::Tuple { cardinality: cardinality2, .. }) => { 687 (Ty::Tuple(cardinality, _), Ty::Tuple(cardinality2, _)) => cardinality == cardinality2,
688 cardinality == cardinality2
689 }
690 (Ty::Str, Ty::Str) | (Ty::Never, Ty::Never) => true, 688 (Ty::Str, Ty::Str) | (Ty::Never, Ty::Never) => true,
691 (Ty::Scalar(scalar), Ty::Scalar(scalar2)) => scalar == scalar2, 689 (Ty::Scalar(scalar), Ty::Scalar(scalar2)) => scalar == scalar2,
692 _ => false, 690 _ => false,
@@ -754,10 +752,9 @@ impl Ty {
754 | Ty::Ref(_, substs) 752 | Ty::Ref(_, substs)
755 | Ty::FnDef(_, substs) 753 | Ty::FnDef(_, substs)
756 | Ty::FnPtr { substs, .. } 754 | Ty::FnPtr { substs, .. }
757 | Ty::Tuple { substs, .. } 755 | Ty::Tuple(_, substs)
758 | Ty::OpaqueType(_, substs) 756 | Ty::OpaqueType(_, substs)
759 | Ty::AssociatedType(_, substs) 757 | Ty::AssociatedType(_, substs)
760 | Ty::ForeignType(_, substs)
761 | Ty::Closure { substs, .. } => { 758 | Ty::Closure { substs, .. } => {
762 assert_eq!(substs.len(), new_substs.len()); 759 assert_eq!(substs.len(), new_substs.len());
763 *substs = new_substs; 760 *substs = new_substs;
@@ -778,10 +775,9 @@ impl Ty {
778 | Ty::Ref(_, substs) 775 | Ty::Ref(_, substs)
779 | Ty::FnDef(_, substs) 776 | Ty::FnDef(_, substs)
780 | Ty::FnPtr { substs, .. } 777 | Ty::FnPtr { substs, .. }
781 | Ty::Tuple { substs, .. } 778 | Ty::Tuple(_, substs)
782 | Ty::OpaqueType(_, substs) 779 | Ty::OpaqueType(_, substs)
783 | Ty::AssociatedType(_, substs) 780 | Ty::AssociatedType(_, substs)
784 | Ty::ForeignType(_, substs)
785 | Ty::Closure { substs, .. } => Some(substs), 781 | Ty::Closure { substs, .. } => Some(substs),
786 _ => None, 782 _ => None,
787 } 783 }
@@ -796,10 +792,9 @@ impl Ty {
796 | Ty::Ref(_, substs) 792 | Ty::Ref(_, substs)
797 | Ty::FnDef(_, substs) 793 | Ty::FnDef(_, substs)
798 | Ty::FnPtr { substs, .. } 794 | Ty::FnPtr { substs, .. }
799 | Ty::Tuple { substs, .. } 795 | Ty::Tuple(_, substs)
800 | Ty::OpaqueType(_, substs) 796 | Ty::OpaqueType(_, substs)
801 | Ty::AssociatedType(_, substs) 797 | Ty::AssociatedType(_, substs)
802 | Ty::ForeignType(_, substs)
803 | Ty::Closure { substs, .. } => Some(substs), 798 | Ty::Closure { substs, .. } => Some(substs),
804 _ => None, 799 _ => None,
805 } 800 }