From c2fa1c02c1f668dc741c156bc85f67da75bae54b Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Tue, 4 Jun 2024 20:32:09 +0800 Subject: [PATCH] feat: more --- .../src/library/codegen/generator/misc/mod.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/frb_codegen/src/library/codegen/generator/misc/mod.rs b/frb_codegen/src/library/codegen/generator/misc/mod.rs index ea38634073..51346488b3 100644 --- a/frb_codegen/src/library/codegen/generator/misc/mod.rs +++ b/frb_codegen/src/library/codegen/generator/misc/mod.rs @@ -50,6 +50,14 @@ impl PathText { pub(crate) fn new(path: PathBuf, text: String) -> Self { Self { path, text } } + + pub(crate) fn merge(&self, other: &Self) -> Self { + assert_eq!(self.path, other.path); + Self { + path: self.path.clone(), + text: self.text.clone() + other.text, + } + } } #[derive(Clone)] @@ -59,7 +67,15 @@ impl Add for PathTexts { type Output = Self; fn add(self, rhs: Self) -> Self::Output { - Self([self.0, rhs.0].concat()) + Self( + [self.0, rhs.0] + .concat() + .into_iter() + .into_group_map_by(|x| x.path.clone()) + .into_iter() + .map(|(_, v)| v.into_iter().reduce(|a, b| a.merge(b)).unwrap()) + .collect_vec(), + ) } }