wasm-bindgen/crates/macro/ui-tests
Alex Crichton c35d6f4b0a Fix conditional #[wasm_bindgen] in impls
Reported in #1191 the fix requires us to get a bit creative I think. The
general gist is that a block like this:

    #[wasm_bindgen]
    impl Foo {
        pub fn foo() {}
    }

was previously expanded all in one go. Now, however, it's expanded into:

    impl Foo {
        #[__wasm_bindgen_class_marker(Foo = "Foo")]
        pub fn foo() {}
    }

    // goop generated by orginal #[wasm_bindgen]

This method of expansion takes advantage of rustc's recursive expansion
feature. It also allows us to expand `impl` blocks and allow inner items
to not be fully expanded yet, such as still having `#[cfg]` attributes
(like in the original bug report).

We use theinternal `__wasm_bindgen_class_marker` to indicate that we're
parsing an `ImplItemMethod` unconditionally, and then generation
proceeds as usual. The only final catch is that when we're expanding in
an `impl` block we have to generate tokens for the `Program`
(wasm-bindgen injected goop like the custom section) inside the body
of the function itself instead of next to it. Otherwise we'd get syntax
errors inside of impl blocks!

Closes #1191
2019-01-28 12:29:01 -08:00
..
attribute-fails-to-parse.rs Update UI tests 2019-01-02 08:35:05 -08:00
attribute-fails-to-parse.stderr Update UI tests 2019-01-02 08:35:05 -08:00
bad-signatures.rs Update UI tests 2019-01-02 08:35:05 -08:00
bad-signatures.stderr Update UI tests 2019-01-02 08:35:05 -08:00
Cargo.toml Assert all attributes are used by default 2018-11-28 11:42:48 -08:00
invalid-attr.rs Update UI tests 2019-01-02 08:35:05 -08:00
invalid-attr.stderr Update UI tests 2019-01-02 08:35:05 -08:00
invalid-enums.rs Update UI tests 2019-01-02 08:35:05 -08:00
invalid-enums.stderr Update UI tests 2019-01-02 08:35:05 -08:00
invalid-imports.rs Update UI tests 2019-01-02 08:35:05 -08:00
invalid-imports.stderr Update UI tests 2019-01-02 08:35:05 -08:00
invalid-items.rs Update UI tests 2019-01-02 08:35:05 -08:00
invalid-items.stderr Update UI tests 2019-01-02 08:35:05 -08:00
invalid-methods.rs Fix conditional #[wasm_bindgen] in impls 2019-01-28 12:29:01 -08:00
invalid-methods.stderr Fix conditional #[wasm_bindgen] in impls 2019-01-28 12:29:01 -08:00
invalid-setter.rs Update UI tests 2019-01-02 08:35:05 -08:00
invalid-setter.stderr Update UI tests 2019-01-02 08:35:05 -08:00
non-public-function.rs Update UI tests 2019-01-02 08:35:05 -08:00
non-public-function.stderr Update UI tests 2019-01-02 08:35:05 -08:00
start-function.rs Update UI tests 2019-01-02 08:35:05 -08:00
start-function.stderr Update UI tests 2019-01-02 08:35:05 -08:00
structural-and-final.rs Update UI tests 2019-01-02 08:35:05 -08:00
structural-and-final.stderr Update UI tests 2019-01-02 08:35:05 -08:00
test.rs Prepare to have targeted error diagnostics (#604) 2018-08-01 17:15:27 -05:00
unused-attributes.rs Fix conditional #[wasm_bindgen] in impls 2019-01-28 12:29:01 -08:00
unused-attributes.stderr Fix conditional #[wasm_bindgen] in impls 2019-01-28 12:29:01 -08:00
update-all-references.sh Prepare to have targeted error diagnostics (#604) 2018-08-01 17:15:27 -05:00
update-references.sh Prepare to have targeted error diagnostics (#604) 2018-08-01 17:15:27 -05:00