fix(codegen): Discard type defaults from impl generics

This commit is contained in:
David Tolnay
2016-04-13 23:51:04 -07:00
parent 808b06940e
commit fd3c15fb68
4 changed files with 50 additions and 3 deletions
+30
View File
@@ -1,3 +1,4 @@
use std::marker::PhantomData;
use token::{Token, assert_tokens, assert_ser_tokens, assert_de_tokens};
/*
@@ -143,6 +144,19 @@ pub enum GenericEnum<T, U> {
Map { x: T, y: U },
}
trait AssociatedType {
type X;
}
impl AssociatedType for i32 {
type X = i32;
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
struct DefaultTyParam<T: AssociatedType<X=i32> = i32> {
phantom: PhantomData<T>
}
#[test]
fn test_named_unit() {
assert_tokens(
@@ -601,3 +615,19 @@ fn test_generic_enum_map() {
]
);
}
#[test]
fn test_default_ty_param() {
assert_tokens(
&DefaultTyParam::<i32> { phantom: PhantomData },
vec![
Token::StructStart("DefaultTyParam", Some(1)),
Token::StructSep,
Token::Str("phantom"),
Token::UnitStruct("PhantomData"),
Token::StructEnd,
]
);
}