Support derive(Default) on structs
diff --git a/syntax/check.rs b/syntax/check.rs
index 85db2480..725105d 100644
--- a/syntax/check.rs
+++ b/syntax/check.rs
@@ -3,7 +3,7 @@
use crate::syntax::types::TrivialReason;
use crate::syntax::{
error, ident, Api, Array, Enum, ExternFn, ExternType, Impl, Lang, Receiver, Ref, Signature,
- SliceRef, Struct, Ty1, Type, Types,
+ SliceRef, Struct, Trait, Ty1, Type, Types,
};
use proc_macro2::{Delimiter, Group, Ident, TokenStream};
use quote::{quote, ToTokens};
@@ -256,6 +256,15 @@
"explicit #[repr(...)] is required for enum without any variants",
);
}
+
+ for derive in &enm.derives {
+ if derive.what == Trait::Default {
+ cx.error(
+ derive,
+ "derive(Default) on shared enums is not supported yet",
+ );
+ }
+ }
}
fn check_api_type(cx: &mut Check, ety: &ExternType) {
diff --git a/syntax/derive.rs b/syntax/derive.rs
index 813cf26..a8b6bde 100644
--- a/syntax/derive.rs
+++ b/syntax/derive.rs
@@ -11,6 +11,7 @@
Clone,
Copy,
Debug,
+ Default,
Eq,
Ord,
PartialEq,
@@ -23,6 +24,7 @@
"Clone" => Trait::Clone,
"Copy" => Trait::Copy,
"Debug" => Trait::Debug,
+ "Default" => Trait::Default,
"Eq" => Trait::Eq,
"Ord" => Trait::Ord,
"PartialEq" => Trait::PartialEq,
@@ -46,6 +48,7 @@
Trait::Clone => "Clone",
Trait::Copy => "Copy",
Trait::Debug => "Debug",
+ Trait::Default => "Default",
Trait::Eq => "Eq",
Trait::Ord => "Ord",
Trait::PartialEq => "PartialEq",