add an readable error when you name a prop key
This commit is contained in:
1 parent
c7963a0344
commit
ad9c59c2b4
1 file changed
+9
-6
@@ -467,7 +467,7 @@ fn type_from_inside_option(ty: &syn::Type, check_option_name: bool) -> Option<&s
|
|||||||
|
|
||||||
mod struct_info {
|
mod struct_info {
|
||||||
use proc_macro2::TokenStream;
|
use proc_macro2::TokenStream;
|
||||||
use quote::quote;
|
use quote::{quote, quote_spanned};
|
||||||
use syn::parse::Error;
|
use syn::parse::Error;
|
||||||
use syn::punctuated::Punctuated;
|
use syn::punctuated::Punctuated;
|
||||||
use syn::Expr;
|
use syn::Expr;
|
||||||
@@ -701,6 +701,14 @@ Finally, call `.build()` to create the instance of `{name}`.
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn field_impl(&self, field: &FieldInfo) -> Result<TokenStream, Error> {
|
pub fn field_impl(&self, field: &FieldInfo) -> Result<TokenStream, Error> {
|
||||||
|
let FieldInfo {
|
||||||
|
name: field_name,
|
||||||
|
ty: field_type,
|
||||||
|
..
|
||||||
|
} = field;
|
||||||
|
if field_name.to_string() == "key" {
|
||||||
|
return Err(Error::new_spanned(field_name, "Naming a prop `key` is not allowed because the name can conflict with the built in key attribute. See https://dioxuslabs.com/learn/0.4/reference/dynamic_rendering#rendering-lists for more information about keys"));
|
||||||
|
}
|
||||||
let StructInfo {
|
let StructInfo {
|
||||||
ref builder_name, ..
|
ref builder_name, ..
|
||||||
} = *self;
|
} = *self;
|
||||||
@@ -715,11 +723,6 @@ Finally, call `.build()` to create the instance of `{name}`.
|
|||||||
});
|
});
|
||||||
let reconstructing = self.included_fields().map(|f| f.name);
|
let reconstructing = self.included_fields().map(|f| f.name);
|
||||||
|
|
||||||
let FieldInfo {
|
|
||||||
name: field_name,
|
|
||||||
ty: field_type,
|
|
||||||
..
|
|
||||||
} = field;
|
|
||||||
let mut ty_generics: Vec<syn::GenericArgument> = self
|
let mut ty_generics: Vec<syn::GenericArgument> = self
|
||||||
.generics
|
.generics
|
||||||
.params
|
.params
|
||||||
|
|||||||
Reference in new issue
Block a user