diff options
| author | Bastian Kauschke <bastian_kauschke@hotmail.de> | 2020-05-13 11:52:22 +0200 |
|---|---|---|
| committer | Bastian Kauschke <bastian_kauschke@hotmail.de> | 2020-05-20 09:16:08 +0200 |
| commit | ea47fdf78538e615eb7824ff5c194b6af4565b7f (patch) | |
| tree | 63124f2fb7f34746cabeb955d0ae871f62f3f938 | |
| parent | 5a5017ec634cef0ff11b40dd08fdd4572d605d01 (diff) | |
| download | rust-ea47fdf78538e615eb7824ff5c194b6af4565b7f.tar.gz rust-ea47fdf78538e615eb7824ff5c194b6af4565b7f.zip | |
comment return sites
| -rw-r--r-- | src/librustc_trait_selection/traits/structural_match.rs | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/librustc_trait_selection/traits/structural_match.rs b/src/librustc_trait_selection/traits/structural_match.rs index 71fa46ccded..b877049fcf6 100644 --- a/src/librustc_trait_selection/traits/structural_match.rs +++ b/src/librustc_trait_selection/traits/structural_match.rs @@ -149,19 +149,19 @@ impl<'a, 'tcx> TypeVisitor<'tcx> for Search<'a, 'tcx> { } ty::Foreign(_) => { self.found = Some(NonStructuralMatchTy::Foreign); - return true; // Stop visiting + return true; // Stop visiting. } ty::Opaque(..) => { self.found = Some(NonStructuralMatchTy::Opaque); - return true; + return true; // Stop visiting. } ty::Projection(..) => { self.found = Some(NonStructuralMatchTy::Projection); - return true; + return true; // Stop visiting. } ty::Generator(..) | ty::GeneratorWitness(..) => { self.found = Some(NonStructuralMatchTy::Generator); - return true; + return true; // Stop visiting. } ty::RawPtr(..) => { // structural-match ignores substructure of @@ -179,14 +179,14 @@ impl<'a, 'tcx> TypeVisitor<'tcx> for Search<'a, 'tcx> { // structural equality on `T` does not recur into the raw // pointer. Therefore, one can still use `C` in a pattern. - // (But still tell caller to continue search.) + // (But still tell the caller to continue search.) return false; } ty::FnDef(..) | ty::FnPtr(..) => { // Types of formals and return in `fn(_) -> _` are also irrelevant; // so we do not recur into them via `super_visit_with` // - // (But still tell caller to continue search.) + // (But still tell the caller to continue search.) return false; } ty::Array(_, n) @@ -194,16 +194,21 @@ impl<'a, 'tcx> TypeVisitor<'tcx> for Search<'a, 'tcx> { { // rust-lang/rust#62336: ignore type of contents // for empty array. + // + // (But still tell the caller to continue search.) return false; } ty::Bool | ty::Char | ty::Int(_) | ty::Uint(_) | ty::Float(_) | ty::Str | ty::Never => { // These primitive types are always structural match. // // `Never` is kind of special here, but as it is not inhabitable, this should be fine. + // + // (But still tell the caller to continue search.) return false; } ty::Array(..) | ty::Slice(_) | ty::Ref(..) | ty::Tuple(..) => { + // First check all contained types and then tell the caller to continue searching. ty.super_visit_with(self); return false; } @@ -214,13 +219,15 @@ impl<'a, 'tcx> TypeVisitor<'tcx> for Search<'a, 'tcx> { self.tcx().sess.delay_span_bug(self.span, "ty::Error in structural-match check"); // We still want to check other types after encountering an error, // as this may still emit relevant errors. + // + // So we continue searching here. return false; } }; if !self.seen.insert(adt_def.did) { debug!("Search already seen adt_def: {:?}", adt_def); - // let caller continue its search + // Let caller continue its search. return false; } |
