From 68bc949bbe9c900b94933ae1e92f0497ff3b997d Mon Sep 17 00:00:00 2001 From: konstin Date: Mon, 26 Jun 2023 11:31:33 +0200 Subject: [PATCH 1/3] impl Ranged for &T where T: Ranged --- ast/src/ranged.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ast/src/ranged.rs b/ast/src/ranged.rs index f01c15a7..1dd1c495 100644 --- a/ast/src/ranged.rs +++ b/ast/src/ranged.rs @@ -14,4 +14,10 @@ pub trait Ranged { } } +impl Ranged for &T where T: Ranged { + fn range(&self) -> TextRange { + self.range() + } +} + include!("gen/ranged.rs"); From aa670162ef578375499037beedfbfb634f62228b Mon Sep 17 00:00:00 2001 From: konstin Date: Mon, 26 Jun 2023 12:18:28 +0200 Subject: [PATCH 2/3] rustfmt --- ast/src/ranged.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ast/src/ranged.rs b/ast/src/ranged.rs index 1dd1c495..c9542f5f 100644 --- a/ast/src/ranged.rs +++ b/ast/src/ranged.rs @@ -14,7 +14,10 @@ pub trait Ranged { } } -impl Ranged for &T where T: Ranged { +impl Ranged for &T +where + T: Ranged, +{ fn range(&self) -> TextRange { self.range() } From aeaa8caa6b9790dbbb54ba4e35d688a8b3badcc2 Mon Sep 17 00:00:00 2001 From: konstin Date: Mon, 26 Jun 2023 12:29:54 +0200 Subject: [PATCH 3/3] Remove accidental infinite recursion This needs explicit dispatch or the recursive version takes precedence --- ast/src/ranged.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ast/src/ranged.rs b/ast/src/ranged.rs index c9542f5f..b20d7114 100644 --- a/ast/src/ranged.rs +++ b/ast/src/ranged.rs @@ -19,7 +19,7 @@ where T: Ranged, { fn range(&self) -> TextRange { - self.range() + T::range(self) } }