-
Notifications
You must be signed in to change notification settings - Fork 287
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2011 from fzyzcjy/feat/12119
Support overriding things in third party crate (part 1)
- Loading branch information
Showing
32 changed files
with
311 additions
and
149 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 2 additions & 0 deletions
2
frb_codegen/src/library/codegen/ir/hir/hierarchical/crates.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,11 @@ | ||
// This file is named `crates` not `crate`, because the latter is a Rust keyword | ||
|
||
use crate::codegen::ir::hir::hierarchical::module::HirModule; | ||
use crate::utils::crate_name::CrateName; | ||
|
||
/// Represents a crate, including a map of its modules, imports, structs and enums. | ||
#[derive(Debug, Clone, serde::Serialize)] | ||
pub struct HirCrate { | ||
pub(crate) name: CrateName, | ||
pub(crate) root_module: HirModule, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,13 @@ | ||
use crate::codegen::ir::hir::hierarchical::crates::HirCrate; | ||
use crate::utils::crate_name::CrateName; | ||
use std::collections::HashMap; | ||
|
||
#[derive(Debug, Clone, serde::Serialize)] | ||
pub struct HirPack { | ||
pub(crate) crates: HashMap<CrateName, HirCrate>, | ||
pub(crate) crates: Vec<HirCrate>, | ||
} | ||
|
||
impl HirPack { | ||
pub(crate) fn get_mut_crate(&mut self, name: &CrateName) -> Option<&mut HirCrate> { | ||
(self.crates.iter_mut()).find(|x| x.name.namespace() == name.namespace()) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 24 additions & 0 deletions
24
frb_codegen/src/library/codegen/ir/hir/hierarchical/syn_item_struct_or_enum.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
use syn::*; | ||
|
||
pub(crate) trait SynItemStructOrEnum: Clone { | ||
fn attrs(&self) -> &[Attribute]; | ||
|
||
fn attrs_mut(&mut self) -> &mut Vec<Attribute>; | ||
} | ||
|
||
macro_rules! impl_trait { | ||
($name:ident) => { | ||
impl SynItemStructOrEnum for $name { | ||
fn attrs(&self) -> &[syn::Attribute] { | ||
&self.attrs | ||
} | ||
|
||
fn attrs_mut(&mut self) -> &mut Vec<syn::Attribute> { | ||
&mut self.attrs | ||
} | ||
} | ||
}; | ||
} | ||
|
||
impl_trait!(ItemStruct); | ||
impl_trait!(ItemEnum); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
// This file is named `crates` not `crate`, because the latter is a Rust keyword | ||
|
||
use crate::utils::crate_name::CrateName; | ||
|
||
#[derive(Debug, Clone)] | ||
pub struct HirRawCrate { | ||
pub(crate) name: CrateName, | ||
pub(crate) syn_file: syn::File, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,2 @@ | ||
use crate::utils::crate_name::CrateName; | ||
use std::collections::HashMap; | ||
|
||
pub(crate) struct HirRawPack { | ||
pub crates: HashMap<CrateName, syn::File>, | ||
} | ||
pub(crate) mod crates; | ||
pub(crate) mod pack; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
use crate::codegen::ir::hir::raw::crates::HirRawCrate; | ||
|
||
pub(crate) struct HirRawPack { | ||
pub crates: Vec<HirRawCrate>, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 0 additions & 1 deletion
1
frb_codegen/src/library/codegen/parser/hir/hierarchical/pub_use.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.