error: this opening tag has no corresponding closing tag
  --> tests/html_macro/component-fail.rs:43:13
   |
43 |     html! { <Child> };
   |             ^^^^^^^

error: unexpected end of input, expected identifier
  --> tests/html_macro/component-fail.rs:44:13
   |
44 |     html! { <Child:: /> };
   |             ^^^^^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:45:20
   |
45 |     html! { <Child with /> };
   |                    ^^^^

error: expected base props expression after `..`
  --> tests/html_macro/component-fail.rs:46:20
   |
46 |     html! { <Child .. /> };
   |                    ^^

error: unexpected end of input, expected an expression
  --> tests/html_macro/component-fail.rs:46:13
   |
46 |     html! { <Child .. /> };
   |             ^^^^^^^^^^^^

error: expected base props expression after `..`
  --> tests/html_macro/component-fail.rs:47:20
   |
47 |     html! { <Child ..{ 5 + } /> };
   |                    ^^

error: unexpected end of input, expected an expression
  --> tests/html_macro/component-fail.rs:47:28
   |
47 |     html! { <Child ..{ 5 + } /> };
   |                            ^

error: `props` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:48:20
   |
48 |     html! { <Child props /> };
   |                    ^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:49:20
   |
49 |     html! { <Child with props > };
   |                    ^^^^

error: this opening tag has no corresponding closing tag
  --> tests/html_macro/component-fail.rs:50:13
   |
50 |     html! { <Child ..props > };
   |             ^^^^^^^^^^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:52:20
   |
52 |     html! { <Child with p1 with p2 /> };
   |                    ^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:54:20
   |
54 |     html! { <Child with props ref={()} ref={()} /> };
   |                    ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:55:20
   |
55 |     html! { <Child ..props ref={()} ref={()} /> };
   |                    ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:56:20
   |
56 |     html! { <Child with props ref={()} ref={()} value=1 /> };
   |                    ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:57:20
   |
57 |     html! { <Child ..props ref={()} ref={()} value=1 /> };
   |                    ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:58:20
   |
58 |     html! { <Child with props ref={()} value=1 ref={()} /> };
   |                    ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:59:20
   |
59 |     html! { <Child ..props ref={()} value=1 ref={()} /> };
   |                    ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:60:20
   |
60 |     html! { <Child with props value=1 ref={()}  ref={()} /> };
   |                    ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:61:20
   |
61 |     html! { <Child ..props value=1 ref={()}  ref={()} /> };
   |                    ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:62:28
   |
62 |     html! { <Child value=1 with props  ref={()}  ref={()} /> };
   |                            ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:63:28
   |
63 |     html! { <Child value=1 ..props  ref={()}  ref={()} /> };
   |                            ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:64:37
   |
64 |     html! { <Child value=1 ref={()} with props ref={()} /> };
   |                                     ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:65:37
   |
65 |     html! { <Child value=1 ref={()} ..props ref={()} /> };
   |                                     ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:66:47
   |
66 |     html! { <Child ref={()} ref={()} value=1  with props  /> };
   |                                               ^^^^

error: `ref` can only be specified once
  --> tests/html_macro/component-fail.rs:67:29
   |
67 |     html! { <Child ref={()} ref={()} value=1 ..props  /> };
   |                             ^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:68:20
   |
68 |     html! { <Child with props r#ref={()} r#ref={()} /> };
   |                    ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:69:20
   |
69 |     html! { <Child ..props r#ref={()} r#ref={()} /> };
   |                    ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:70:20
   |
70 |     html! { <Child with props r#ref={()} r#ref={()} value=1 /> };
   |                    ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:71:20
   |
71 |     html! { <Child ..props r#ref={()} r#ref={()} value=1 /> };
   |                    ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:72:20
   |
72 |     html! { <Child with props r#ref={()} value=1 r#ref={()} /> };
   |                    ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:73:20
   |
73 |     html! { <Child ..props r#ref={()} value=1 r#ref={()} /> };
   |                    ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:74:20
   |
74 |     html! { <Child with props value=1 r#ref={()}  r#ref={()} /> };
   |                    ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:75:20
   |
75 |     html! { <Child ..props value=1 r#ref={()}  r#ref={()} /> };
   |                    ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:76:28
   |
76 |     html! { <Child value=1 with props  r#ref={()}  r#ref={()} /> };
   |                            ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:77:28
   |
77 |     html! { <Child value=1 ..props  r#ref={()}  r#ref={()} /> };
   |                            ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:78:39
   |
78 |     html! { <Child value=1 r#ref={()} with props r#ref={()} /> };
   |                                       ^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:79:39
   |
79 |     html! { <Child value=1 r#ref={()} ..props r#ref={()} /> };
   |                                       ^^^^^^^

error: `with` doesn't have a value. (hint: set the value to `true` or `false` for boolean attributes)
  --> tests/html_macro/component-fail.rs:80:51
   |
80 |     html! { <Child r#ref={()} r#ref={()} value=1  with props  /> };
   |                                                   ^^^^

error: `r#ref` can only be specified once but is given here again
  --> tests/html_macro/component-fail.rs:81:31
   |
81 |     html! { <Child r#ref={()} r#ref={()} value=1 ..props  /> };
   |                               ^^^^^

error: base props expression must appear last in list of props
  --> tests/html_macro/component-fail.rs:84:20
   |
84 |     html! { <Child .. props value=1 /> };
   |                    ^^^^^^^^

error: expected identifier, found keyword `type`
  --> tests/html_macro/component-fail.rs:85:20
   |
85 |     html! { <Child type=0 /> };
   |                    ^^^^ expected identifier, found keyword
   |
help: escape `type` to use it as an identifier
   |
85 |     html! { <Child r#type=0 /> };
   |                    ++

error: the property value must be either a literal or enclosed in braces. Consider adding braces around your expression.: Expr::Tuple {
           attrs: [],
           paren_token: Paren,
           elems: [],
       }
  --> tests/html_macro/component-fail.rs:86:24
   |
86 |     html! { <Child ref=() /> };
   |                        ^^

error: expected a valid Rust identifier
  --> tests/html_macro/component-fail.rs:87:20
   |
87 |     html! { <Child invalid-prop-name=0 /> };
   |                    ^^^^^^^^^^^^^^^^^

error: expected an expression following this equals sign
  --> tests/html_macro/component-fail.rs:89:26
   |
89 |     html! { <Child string= /> };
   |                          ^

error: `int` can only be specified once but is given here again
  --> tests/html_macro/component-fail.rs:90:26
   |
90 |     html! { <Child int=1 int=2 int=3 /> };
   |                          ^^^

error: `int` can only be specified once but is given here again
  --> tests/html_macro/component-fail.rs:90:32
   |
90 |     html! { <Child int=1 int=2 int=3 /> };
   |                                ^^^

error: cannot use `ref` with components. If you want to specify a property, use `r#ref` here instead.
  --> tests/html_macro/component-fail.rs:94:26
   |
94 |     html! { <Child int=1 ref={()} /> };
   |                          ^^^

error: `ref` can only be specified once
  --> tests/html_macro/component-fail.rs:95:35
   |
95 |     html! { <Child int=1 ref={()} ref={()} /> };
   |                                   ^^^

error: `r#ref` can only be specified once but is given here again
  --> tests/html_macro/component-fail.rs:97:37
   |
97 |     html! { <Child int=1 r#ref={()} r#ref={()} /> };
   |                                     ^^^^^

error: this closing tag has no corresponding opening tag
   --> tests/html_macro/component-fail.rs:100:13
    |
100 |     html! { </Child> };
    |             ^^^^^^^^

error: this opening tag has no corresponding closing tag
   --> tests/html_macro/component-fail.rs:101:13
    |
101 |     html! { <Child><Child></Child> };
    |             ^^^^^^^

error: only one root html element is allowed (hint: you can wrap multiple html elements in a fragment `<></>`)
   --> tests/html_macro/component-fail.rs:102:28
    |
102 |     html! { <Child></Child><Child></Child> };
    |                            ^^^^^^^^^^^^^^^

error: the property value must be either a literal or enclosed in braces. Consider adding braces around your expression.: Expr::Path {
           attrs: [],
           qself: None,
           path: Path {
               leading_colon: None,
               segments: [
                   PathSegment {
                       ident: Ident {
                           ident: "num",
                           span: #0 bytes(3894..3897),
                       },
                       arguments: PathArguments::None,
                   },
               ],
           },
       }
   --> tests/html_macro/component-fail.rs:106:24
    |
106 |     html! { <Child int=num ..props /> };
    |                        ^^^

error: cannot specify the `children` prop when the component already has children
   --> tests/html_macro/component-fail.rs:124:26
    |
124 |         <ChildContainer {children}>
    |                          ^^^^^^^^

error: only one root html element is allowed (hint: you can wrap multiple html elements in a fragment `<></>`)
   --> tests/html_macro/component-fail.rs:131:9
    |
131 |         <span>{ 2 }</span>
    |         ^^^^^^^^^^^^^^^^^^

error: only simple identifiers are allowed in the shorthand property syntax
   --> tests/html_macro/component-fail.rs:134:21
    |
134 |     html! { <Child {std::f64::consts::PI} /> };
    |                     ^^^^^^^^^^^^^^^^^^^^

error: missing label for property value. If trying to use the shorthand property syntax, only identifiers may be used
   --> tests/html_macro/component-fail.rs:135:21
    |
135 |     html! { <Child {7 + 6} /> };
    |                     ^^^^^

error: missing label for property value. If trying to use the shorthand property syntax, only identifiers may be used
   --> tests/html_macro/component-fail.rs:136:21
    |
136 |     html! { <Child {children.len()} /> };
    |                     ^^^^^^^^^^^^^^

error: only an expression may be assigned as a property
   --> tests/html_macro/component-fail.rs:147:34
    |
147 |     html! { <HtmlInProps header={macro_rules! declare { }} /> };
    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^

error: mismatched closing tags: expected `A`, found `B`
   --> tests/html_macro/component-fail.rs:177:22
    |
177 |     let _ = html! { <A></B> };
    |                      ^^^^^

error: expected a valid closing tag for component
       note: found opening tag `<A>`
       help: try `</A>`
   --> tests/html_macro/component-fail.rs:178:24
    |
178 |     let _ = html! { <A></> };
    |                        ^^^

error[E0425]: cannot find value `blah` in this scope
  --> tests/html_macro/component-fail.rs:82:22
   |
82 |     html! { <Child ..blah /> };
   |                      ^^^^ not found in this scope

error[E0425]: cannot find value `props` in this scope
  --> tests/html_macro/component-fail.rs:83:30
   |
83 |     html! { <Child value=1 ..props /> };
   |                              ^^^^^ not found in this scope

error[E0308]: mismatched types
  --> tests/html_macro/component-fail.rs:53:22
   |
53 |     html! { <Child ..p1 ..p2 /> };
   |              -----   ^^^^^^^ expected `ChildProperties`, found `Range<_>`
   |              |
   |              expected due to this
   |
   = note: expected struct `ChildProperties`
              found struct `std::ops::Range<_>`

error[E0609]: no field `value` on type `ChildProperties`
  --> tests/html_macro/component-fail.rs:83:20
   |
83 |     html! { <Child value=1 ..props /> };
   |                    ^^^^^ unknown field
   |
   = note: available fields are: `string`, `int`

error[E0609]: no field `r#type` on type `ChildProperties`
  --> tests/html_macro/component-fail.rs:85:20
   |
85 |     html! { <Child type=0 /> };
   |                    ^^^^ unknown field
   |
   = note: available fields are: `string`, `int`

error[E0599]: no method named `r#type` found for struct `ChildPropertiesBuilder` in the current scope
  --> tests/html_macro/component-fail.rs:85:20
   |
4  | #[derive(Clone, Properties, PartialEq)]
   |                 ---------- method `r#type` not found for this struct
...
85 |     html! { <Child type=0 /> };
   |                    ^^^^
   |
help: there is a method `type_id` with a similar name, but with different arguments
  --> $RUST/core/src/any.rs

error[E0609]: no field `unknown` on type `ChildProperties`
  --> tests/html_macro/component-fail.rs:88:20
   |
88 |     html! { <Child unknown="unknown" /> };
   |                    ^^^^^^^ unknown field
   |
   = note: available fields are: `string`, `int`

error[E0599]: no method named `unknown` found for struct `ChildPropertiesBuilder` in the current scope
  --> tests/html_macro/component-fail.rs:88:20
   |
4  | #[derive(Clone, Properties, PartialEq)]
   |                 ---------- method `unknown` not found for this struct
...
88 |     html! { <Child unknown="unknown" /> };
   |                    ^^^^^^^ method not found in `ChildPropertiesBuilder`

error[E0277]: the trait bound `(): IntoPropValue<String>` is not satisfied
  --> tests/html_macro/component-fail.rs:91:33
   |
91 |     html! { <Child int=1 string={} /> };
   |                          ------ ^^ the trait `IntoPropValue<String>` is not implemented for `()`
   |                          |
   |                          required by a bound introduced by this call
   |
   = help: the trait `IntoPropValue<VNode>` is implemented for `()`
   = help: for that trait implementation, expected `VNode`, found `String`
note: required by a bound in `ChildPropertiesBuilder::string`
  --> tests/html_macro/component-fail.rs:4:17
   |
4  | #[derive(Clone, Properties, PartialEq)]
   |                 ^^^^^^^^^^ required by this bound in `ChildPropertiesBuilder::string`
...
7  |     pub string: String,
   |         ------ required by a bound in this associated function
   = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `{integer}: IntoPropValue<String>` is not satisfied
  --> tests/html_macro/component-fail.rs:92:33
   |
92 |     html! { <Child int=1 string=3 /> };
   |                          ------ ^ the trait `IntoPropValue<String>` is not implemented for `{integer}`
   |                          |
   |                          required by a bound introduced by this call
   |
   = help: the following other types implement trait `IntoPropValue<T>`:
             isize
             i8
             i16
             i32
             i64
             i128
             usize
             u8
           and $N others
note: required by a bound in `ChildPropertiesBuilder::string`
  --> tests/html_macro/component-fail.rs:4:17
   |
4  | #[derive(Clone, Properties, PartialEq)]
   |                 ^^^^^^^^^^ required by this bound in `ChildPropertiesBuilder::string`
...
7  |     pub string: String,
   |         ------ required by a bound in this associated function
   = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `{integer}: IntoPropValue<String>` is not satisfied
  --> tests/html_macro/component-fail.rs:93:34
   |
93 |     html! { <Child int=1 string={3} /> };
   |                          ------  ^ the trait `IntoPropValue<String>` is not implemented for `{integer}`
   |                          |
   |                          required by a bound introduced by this call
   |
   = help: the following other types implement trait `IntoPropValue<T>`:
             isize
             i8
             i16
             i32
             i64
             i128
             usize
             u8
           and $N others
note: required by a bound in `ChildPropertiesBuilder::string`
  --> tests/html_macro/component-fail.rs:4:17
   |
4  | #[derive(Clone, Properties, PartialEq)]
   |                 ^^^^^^^^^^ required by this bound in `ChildPropertiesBuilder::string`
...
7  |     pub string: String,
   |         ------ required by a bound in this associated function
   = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0609]: no field `r#ref` on type `ChildProperties`
  --> tests/html_macro/component-fail.rs:96:26
   |
96 |     html! { <Child int=1 r#ref={()} /> };
   |                          ^^^^^ unknown field
   |
   = note: available fields are: `string`, `int`

error[E0599]: no method named `r#ref` found for struct `ChildPropertiesBuilder` in the current scope
  --> tests/html_macro/component-fail.rs:96:26
   |
4  | #[derive(Clone, Properties, PartialEq)]
   |                 ---------- method `r#ref` not found for this struct
...
96 |     html! { <Child int=1 r#ref={()} /> };
   |                          ^^^^^ method not found in `ChildPropertiesBuilder`

error[E0277]: the trait bound `u32: IntoPropValue<i32>` is not satisfied
  --> tests/html_macro/component-fail.rs:98:24
   |
98 |     html! { <Child int=0u32 /> };
   |                    --- ^^^^ the trait `IntoPropValue<i32>` is not implemented for `u32`
   |                    |
   |                    required by a bound introduced by this call
   |
   = help: the trait `IntoPropValue<VNode>` is implemented for `u32`
   = help: for that trait implementation, expected `VNode`, found `i32`
note: required by a bound in `ChildPropertiesBuilder::int`
  --> tests/html_macro/component-fail.rs:4:17
   |
4  | #[derive(Clone, Properties, PartialEq)]
   |                 ^^^^^^^^^^ required by this bound in `ChildPropertiesBuilder::int`
...
8  |     pub int: i32,
   |         --- required by a bound in this associated function
   = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: not all required properties have been provided
  --> tests/html_macro/component-fail.rs:99:14
   |
99 |     html! { <Child string="abc" /> };
   |              ^^^^^ missing required properties for this component
   |
   = help: the trait `HasProp<int, _>` is not implemented for `AssertAllProps`, which is required by `AssertAllProps: AllPropsFor<ChildPropertiesBuilder, _>`
note: required for `CheckChildPropertiesAll<AssertAllProps>` to implement `HasAllProps<ChildProperties, (_,)>`
  --> tests/html_macro/component-fail.rs:4:17
   |
4  | #[derive(Clone, Properties, PartialEq)]
   |                 ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
   = note: required for `AssertAllProps` to implement `AllPropsFor<ChildPropertiesBuilder, (_,)>`
note: required by a bound in `yew::html::component::properties::__macro::PreBuild::<Token, B>::build`
  --> $WORKSPACE/packages/yew/src/html/component/properties.rs
   |
   |         pub fn build<How>(self) -> B::Output
   |                ----- required by a bound in this associated function
   |         where
   |             Token: AllPropsFor<B, How>,
   |                    ^^^^^^^^^^^^^^^^^^^ required by this bound in `PreBuild::<Token, B>::build`
   = note: this error originates in the macro `html` which comes from the expansion of the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0609]: no field `children` on type `ChildProperties`
   --> tests/html_macro/component-fail.rs:103:14
    |
103 |     html! { <Child>{ "Not allowed" }</Child> };
    |              ^^^^^ unknown field
    |
    = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0599]: no method named `children` found for struct `ChildPropertiesBuilder` in the current scope
   --> tests/html_macro/component-fail.rs:103:14
    |
4   | #[derive(Clone, Properties, PartialEq)]
    |                 ---------- method `children` not found for this struct
...
103 |     html! { <Child>{ "Not allowed" }</Child> };
    |              ^^^^^ method not found in `ChildPropertiesBuilder`
    |
    = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0609]: no field `children` on type `ChildProperties`
   --> tests/html_macro/component-fail.rs:110:10
    |
110 |         <Child ..ChildProperties { string: "hello".to_owned(), int: 5 }>
    |          ^^^^^ unknown field
    |
    = note: this error originates in the macro `html` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: not all required properties have been provided
   --> tests/html_macro/component-fail.rs:115:14
    |
115 |     html! { <ChildContainer /> };
    |              ^^^^^^^^^^^^^^ missing required properties for this component
    |
    = help: the trait `HasProp<_ChildContainerProperties::children, _>` is not implemented for `AssertAllProps`, which is required by `AssertAllProps: AllPropsFor<ChildContainerPropertiesBuilder, _>`
note: required for `CheckChildContainerPropertiesAll<AssertAllProps>` to implement `HasAllProps<ChildContainerProperties, (_,)>`
   --> tests/html_macro/component-fail.rs:24:17
    |
24  | #[derive(Clone, Properties, PartialEq)]
    |                 ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
    = note: required for `AssertAllProps` to implement `AllPropsFor<ChildContainerPropertiesBuilder, (_,)>`
note: required by a bound in `yew::html::component::properties::__macro::PreBuild::<Token, B>::build`
   --> $WORKSPACE/packages/yew/src/html/component/properties.rs
    |
    |         pub fn build<How>(self) -> B::Output
    |                ----- required by a bound in this associated function
    |         where
    |             Token: AllPropsFor<B, How>,
    |                    ^^^^^^^^^^^^^^^^^^^ required by this bound in `PreBuild::<Token, B>::build`
    = note: this error originates in the macro `html` which comes from the expansion of the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: not all required properties have been provided
   --> tests/html_macro/component-fail.rs:116:14
    |
116 |     html! { <ChildContainer></ChildContainer> };
    |              ^^^^^^^^^^^^^^ missing required properties for this component
    |
    = help: the trait `HasProp<_ChildContainerProperties::children, _>` is not implemented for `AssertAllProps`, which is required by `AssertAllProps: AllPropsFor<ChildContainerPropertiesBuilder, _>`
note: required for `CheckChildContainerPropertiesAll<AssertAllProps>` to implement `HasAllProps<ChildContainerProperties, (_,)>`
   --> tests/html_macro/component-fail.rs:24:17
    |
24  | #[derive(Clone, Properties, PartialEq)]
    |                 ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro
    = note: required for `AssertAllProps` to implement `AllPropsFor<ChildContainerPropertiesBuilder, (_,)>`
note: required by a bound in `yew::html::component::properties::__macro::PreBuild::<Token, B>::build`
   --> $WORKSPACE/packages/yew/src/html/component/properties.rs
    |
    |         pub fn build<How>(self) -> B::Output
    |                ----- required by a bound in this associated function
    |         where
    |             Token: AllPropsFor<B, How>,
    |                    ^^^^^^^^^^^^^^^^^^^ required by this bound in `PreBuild::<Token, B>::build`
    = note: this error originates in the macro `html` which comes from the expansion of the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `yew::virtual_dom::VText: IntoPropValue<ChildrenRenderer<VChild<Child>>>` is not satisfied
   --> tests/html_macro/component-fail.rs:117:31
    |
117 |     html! { <ChildContainer>{ "Not allowed" }</ChildContainer> };
    |              --------------   ^^^^^^^^^^^^^ the trait `IntoPropValue<ChildrenRenderer<VChild<Child>>>` is not implemented for `yew::virtual_dom::VText`
    |              |
    |              required by a bound introduced by this call
    |
    = help: the following other types implement trait `IntoPropValue<T>`:
              <yew::virtual_dom::VText as IntoPropValue<ChildrenRenderer<VNode>>>
              <yew::virtual_dom::VText as IntoPropValue<VNode>>
note: required by a bound in `ChildContainerPropertiesBuilder::children`
   --> tests/html_macro/component-fail.rs:24:17
    |
24  | #[derive(Clone, Properties, PartialEq)]
    |                 ^^^^^^^^^^ required by this bound in `ChildContainerPropertiesBuilder::children`
25  | pub struct ChildContainerProperties {
26  |     pub children: ChildrenWithProps<Child>,
    |         -------- required by a bound in this associated function
    = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `VChild<Child>: From<yew::virtual_dom::VList>` is not satisfied
   --> tests/html_macro/component-fail.rs:118:29
    |
118 |     html! { <ChildContainer><></></ChildContainer> };
    |                             ^ the trait `From<yew::virtual_dom::VList>` is not implemented for `VChild<Child>`, which is required by `yew::virtual_dom::VList: Into<_>`
    |
    = note: required for `yew::virtual_dom::VList` to implement `Into<VChild<Child>>`

error[E0277]: the trait bound `VNode: IntoPropValue<ChildrenRenderer<VChild<Child>>>` is not satisfied
   --> tests/html_macro/component-fail.rs:119:30
    |
119 |     html! { <ChildContainer><other /></ChildContainer> };
    |              --------------  ^^^^^ the trait `IntoPropValue<ChildrenRenderer<VChild<Child>>>` is not implemented for `VNode`
    |              |
    |              required by a bound introduced by this call
    |
    = help: the trait `IntoPropValue<ChildrenRenderer<VNode>>` is implemented for `VNode`
    = help: for that trait implementation, expected `VNode`, found `VChild<Child>`
note: required by a bound in `ChildContainerPropertiesBuilder::children`
   --> tests/html_macro/component-fail.rs:24:17
    |
24  | #[derive(Clone, Properties, PartialEq)]
    |                 ^^^^^^^^^^ required by this bound in `ChildContainerPropertiesBuilder::children`
25  | pub struct ChildContainerProperties {
26  |     pub children: ChildrenWithProps<Child>,
    |         -------- required by a bound in this associated function
    = note: this error originates in the derive macro `Properties` (in Nightly builds, run with -Z macro-backtrace for more info)

warning: unused variable: `props`
   --> tests/html_macro/component-fail.rs:144:16
    |
144 | fn HtmlInProps(props: &HtmlInPropsProperties) -> Html { let _ = (); unimplemented!() }
    |                ^^^^^ help: if this is intentional, prefix it with an underscore: `_props`
    |
    = note: `#[warn(unused_variables)]` on by default
