yew/packages/yew-macro/tests/html_macro/generic-component-pass.rs
mc1098 4c6da9aab3
Add fully qualified primitives in proc macro (#2037)
* Add primitive shadowing in macro tests

* Fix primitive types to be fully qualified
2021-09-07 09:40:09 +02:00

98 lines
2.8 KiB
Rust

#![no_implicit_prelude]
// Shadow primitives
#[allow(non_camel_case_types)]
pub struct bool;
#[allow(non_camel_case_types)]
pub struct char;
#[allow(non_camel_case_types)]
pub struct f32;
#[allow(non_camel_case_types)]
pub struct f64;
#[allow(non_camel_case_types)]
pub struct i128;
#[allow(non_camel_case_types)]
pub struct i16;
#[allow(non_camel_case_types)]
pub struct i32;
#[allow(non_camel_case_types)]
pub struct i64;
#[allow(non_camel_case_types)]
pub struct i8;
#[allow(non_camel_case_types)]
pub struct isize;
#[allow(non_camel_case_types)]
pub struct str;
#[allow(non_camel_case_types)]
pub struct u128;
#[allow(non_camel_case_types)]
pub struct u16;
#[allow(non_camel_case_types)]
pub struct u32;
#[allow(non_camel_case_types)]
pub struct u64;
#[allow(non_camel_case_types)]
pub struct u8;
#[allow(non_camel_case_types)]
pub struct usize;
pub struct Generic<T> {
marker: ::std::marker::PhantomData<T>,
}
impl<T> ::yew::Component for Generic<T>
where
T: 'static,
{
type Message = ();
type Properties = ();
fn create(_ctx: &::yew::Context<Self>) -> Self {
::std::unimplemented!()
}
fn view(&self, _ctx: &::yew::Context<Self>) -> ::yew::Html {
::std::unimplemented!()
}
}
pub struct Generic2<T1, T2> {
marker: ::std::marker::PhantomData<(T1, T2)>,
}
impl<T1, T2> ::yew::Component for Generic2<T1, T2>
where
T1: 'static,
T2: 'static,
{
type Message = ();
type Properties = ();
fn create(_ctx: &::yew::Context<Self>) -> Self {
::std::unimplemented!()
}
fn view(&self, _ctx: &::yew::Context<Self>) -> ::yew::Html {
::std::unimplemented!()
}
}
fn compile_pass() {
::yew::html! { <Generic<::std::string::String> /> };
::yew::html! { <Generic<::std::string::String> ></Generic<::std::string::String>> };
::yew::html! { <Generic<::std::vec::Vec<::std::string::String>> /> };
::yew::html! { <Generic<::std::vec::Vec<::std::string::String>>></ Generic<::std::vec::Vec<::std::string::String>>> };
::yew::html! { <Generic<::std::primitive::usize> /> };
::yew::html! { <Generic<::std::primitive::usize>></Generic<::std::primitive::usize>> };
::yew::html! { <Generic<::std::string::String, > /> };
::yew::html! { <Generic<::std::string::String, >></Generic<::std::string::String,>> };
::yew::html! { <Generic2<::std::string::String, ::std::string::String> /> };
::yew::html! { <Generic2<::std::string::String, ::std::string::String>></Generic2<::std::string::String, ::std::string::String>> };
::yew::html! { <Generic2<::std::string::String, ::std::string::String, > /> };
::yew::html! { <Generic2<::std::string::String, ::std::string::String, >></Generic2<::std::string::String, ::std::string::String, >> };
}
fn main() {}