summaryrefslogtreecommitdiffstats
path: root/vendor/wasm-bindgen-macro
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/wasm-bindgen-macro')
-rw-r--r--vendor/wasm-bindgen-macro/.cargo-checksum.json1
-rw-r--r--vendor/wasm-bindgen-macro/Cargo.toml47
-rw-r--r--vendor/wasm-bindgen-macro/LICENSE-APACHE201
-rw-r--r--vendor/wasm-bindgen-macro/LICENSE-MIT25
-rw-r--r--vendor/wasm-bindgen-macro/README.md28
-rw-r--r--vendor/wasm-bindgen-macro/src/lib.rs32
-rw-r--r--vendor/wasm-bindgen-macro/tests/ui.rs5
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/async-errors.rs40
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/async-errors.stderr68
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.rs6
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.stderr5
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/bad-signatures.rs13
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/bad-signatures.stderr17
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/import-local.rs13
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/import-local.stderr11
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-attr.rs15
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-attr.stderr17
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-enums.rs21
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-enums.stderr23
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-imports.rs41
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-imports.stderr71
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-items.rs33
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-items.stderr59
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-methods.rs42
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-methods.stderr61
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-setter.rs18
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/invalid-setter.stderr5
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/missing-catch.rs9
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/missing-catch.stderr17
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/non-public-function.rs6
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/non-public-function.stderr5
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.rs8
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.stderr12
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/start-function.rs33
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/start-function.stderr71
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/structural-and-final.rs11
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/structural-and-final.stderr5
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.rs11
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.stderr18
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.rs10
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.stderr7
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/unused-attributes.rs32
-rw-r--r--vendor/wasm-bindgen-macro/ui-tests/unused-attributes.stderr41
-rwxr-xr-xvendor/wasm-bindgen-macro/ui-tests/update-all-references.sh23
-rwxr-xr-xvendor/wasm-bindgen-macro/ui-tests/update-references.sh42
45 files changed, 1279 insertions, 0 deletions
diff --git a/vendor/wasm-bindgen-macro/.cargo-checksum.json b/vendor/wasm-bindgen-macro/.cargo-checksum.json
new file mode 100644
index 000000000..b28610651
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"377c6fe534700370a86f95dffbd82e3cad703a69286dd927afac58bc8b9afc57","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ef5ffff199bf75993b81c3c1de8dbe19babb22b89170763323fa11a85c62f045","src/lib.rs":"2b63b3cf46acde23d9822773c231c110ffa1edf9697e308c90d2eb1bb41464f4","tests/ui.rs":"aed1b0f4e8c99b06657c54f3a74de4b3535ce567fb20e4d2fc6911b361c3d934","ui-tests/async-errors.rs":"f3ab249b3741b38c6213651a5cd36f8b9873bad34bd49d13b780d21bed47272b","ui-tests/async-errors.stderr":"68a547c3b7107c0ddcab4f15729752dee3af781203126daa3b350f2047093faf","ui-tests/attribute-fails-to-parse.rs":"c21c2a250534ca7e80fc462804efc0db8a71b6b0cdb0c57c5cab444d081f68de","ui-tests/attribute-fails-to-parse.stderr":"3bc77befbbe7e2d0744dd81067a75cb70c3f2d8bd9c60ec5bcb2dfb65fc1a593","ui-tests/bad-signatures.rs":"96b53e9327cc75747510b548b97cff86429532d5cdf65cc991211bca5646abc2","ui-tests/bad-signatures.stderr":"931e934ccbc43e4cee41a46ecaa3953c3ccdef69450519a838b9af428f75fa72","ui-tests/import-local.rs":"783ef9ebb792111ec7fd335cbc4f684381609c86c0af660fd5ab35cf04cacbf4","ui-tests/import-local.stderr":"6e90ad05c3783d7c69ff4e156458c63ee45ceb7ea8ebc38e1ca52e7f46e8bcf8","ui-tests/invalid-attr.rs":"603cf0bcb95a42a35e535a7d9577dc8c5e6175af4cd27d83fdf77cd6b67acf48","ui-tests/invalid-attr.stderr":"e1fd9450e16f1d672cb708bcbaf99a07f916c48d3e961c1dd1e92bd835d3ec53","ui-tests/invalid-enums.rs":"bf473e1bbafbcde82c946311e824d97bd1f941cfc5c1495025d8a7a513b90a19","ui-tests/invalid-enums.stderr":"ecd549ab69e7d7d645922857e2a83b7171f97a276afeb9f113407a4181b2b9e2","ui-tests/invalid-imports.rs":"452e9df87229ebea5442f384b0bd27a2c082d731a3b99fc7617e9a583392cf3a","ui-tests/invalid-imports.stderr":"4f59f109ec9d5acacf5f22f1467dca7d81e6dbabde95e7bd025ef330c275774a","ui-tests/invalid-items.rs":"ca919f7fe6c0d9fd4218ec43c85d7b43f478ed3042959479eb42adc23f4edf02","ui-tests/invalid-items.stderr":"a7392f1b918cac6eda3cefa5244dc555e4b6332836cab0bbd341b992672cd064","ui-tests/invalid-methods.rs":"c463bee9962d936ef2aeb4051ebc5558c0b7fefe6e459f3a325482763746969f","ui-tests/invalid-methods.stderr":"9666dcd88bc3824b7f7e75093f16a298cb3ba726cc67bc7bd70d698648201fe4","ui-tests/invalid-setter.rs":"db9666df889b58246a51ebc7d753e41ac4382475257a589499a4e886e6fbc45f","ui-tests/invalid-setter.stderr":"d1629836ec39727bfa4737538e9f991cda6fbaeb1c0f8c878cb13757e66daac5","ui-tests/missing-catch.rs":"705bf784db641b30131510b5c47192014e19aeeeb6f73ede1d5356ad2c29915c","ui-tests/missing-catch.stderr":"c51f9c535cfadc603f23fad5e96bb22d7733f0d063c0b365ae5f4a97e84c8ef1","ui-tests/non-public-function.rs":"0fe075b32c211870bcde0f7dce0eceaffb61a4f8a6ffbd90946a59d7d220343c","ui-tests/non-public-function.stderr":"c9f6f5123b6c3462b8952d6e468ed13c566635d4939b98c9098d2a713f5aa2df","ui-tests/pub-not-copy.rs":"1e50f0b63a6e6363b0926cf947b0492a9803ddb35370f32e733a32506df9b556","ui-tests/pub-not-copy.stderr":"1090980d08622552b82c13da82b4c26ce309314b6062f0c5443a65eff5255d00","ui-tests/start-function.rs":"479cb4389545ccf7c155677fe629c135e3374a3f622aab3c17a4db63abca1a55","ui-tests/start-function.stderr":"36b0ca2c38742bb6b999d8d1c302229c5b6176afedd73c3fc4a9da57c480613a","ui-tests/structural-and-final.rs":"1571b078a9d0be6c96ab97be10f1bf369dbb740f04fa312834f49a64130f8d30","ui-tests/structural-and-final.stderr":"cf21dec2851d3f667b93a317ba9e4657a623c49e8b779ea64669452297ba0a17","ui-tests/traits-not-implemented.rs":"3445e15b9c61f84a1f8d703a3a4fe2d2e2d85960ff6b2ac718644d97bf1564e1","ui-tests/traits-not-implemented.stderr":"cb291d21f427a1beee469cc32ea8704d58415272ac52f5b90c76c4f2bb823679","ui-tests/unknown-type-in-import.rs":"7fbc95bb82d0d60568b8daf27236418219c57447d1dc2e2e384e5f907bac3e3e","ui-tests/unknown-type-in-import.stderr":"2d213673be2dfcb6b56b9efacea9e968c5ae4faab9fabd6c5c66495008d5fe20","ui-tests/unused-attributes.rs":"7c20441c30e53376c9e72fcf82da0cc6e7462eec3087f9eb74f9682eaf7fb3e6","ui-tests/unused-attributes.stderr":"d4557e356289d0775d29b64797079c623e6d7db1ce319ee59cafb0de6d6a32eb","ui-tests/update-all-references.sh":"8b8dbf31e7ada1314956db7a20ab14b13af3ae246a6295afdc7dc96af8ec3773","ui-tests/update-references.sh":"65375c25981646e08e8589449a06be4505b1a2c9e10d35f650be4b1b495dff22"},"package":"052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"} \ No newline at end of file
diff --git a/vendor/wasm-bindgen-macro/Cargo.toml b/vendor/wasm-bindgen-macro/Cargo.toml
new file mode 100644
index 000000000..99d0e52a5
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/Cargo.toml
@@ -0,0 +1,47 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+name = "wasm-bindgen-macro"
+version = "0.2.83"
+authors = ["The wasm-bindgen Developers"]
+description = """
+Definition of the `#[wasm_bindgen]` attribute, an internal dependency
+"""
+homepage = "https://rustwasm.github.io/wasm-bindgen/"
+documentation = "https://docs.rs/wasm-bindgen"
+readme = "README.md"
+license = "MIT/Apache-2.0"
+repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro"
+
+[lib]
+proc-macro = true
+
+[dependencies.quote]
+version = "1.0"
+
+[dependencies.wasm-bindgen-macro-support]
+version = "=0.2.83"
+
+[dev-dependencies.trybuild]
+version = "1.0"
+
+[dev-dependencies.wasm-bindgen]
+version = "0.2.83"
+
+[dev-dependencies.wasm-bindgen-futures]
+version = "0.4.33"
+
+[features]
+spans = ["wasm-bindgen-macro-support/spans"]
+strict-macro = ["wasm-bindgen-macro-support/strict-macro"]
+xxx_debug_only_print_generated_code = []
diff --git a/vendor/wasm-bindgen-macro/LICENSE-APACHE b/vendor/wasm-bindgen-macro/LICENSE-APACHE
new file mode 100644
index 000000000..16fe87b06
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/LICENSE-APACHE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/vendor/wasm-bindgen-macro/LICENSE-MIT b/vendor/wasm-bindgen-macro/LICENSE-MIT
new file mode 100644
index 000000000..39e0ed660
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/LICENSE-MIT
@@ -0,0 +1,25 @@
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/vendor/wasm-bindgen-macro/README.md b/vendor/wasm-bindgen-macro/README.md
new file mode 100644
index 000000000..353829869
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/README.md
@@ -0,0 +1,28 @@
+# `wasm-bindgen-macro`
+
+Implementation of the `#[wasm_bindgen]` attribute. See the `wasm-bindgen`
+documentation for more information about what this macro does.
+
+## Testing
+
+Testing of this macro is done through "ui tests" in the `ui-tests` subdirectory
+of this crate. Each Rust file in this folder is compiled with the `wasm_bindgen`
+crate, and the `*.stderr` file sitting next to it is the asserted output of the
+compiler. If the output matches, the test passes, and if the output doesn't
+match the test fails. Note that it is also considered a failure if a test
+actually compiles successfully.
+
+To add a test:
+
+* Create `ui-tests/my-awesome-test.rs`
+* Write an invalid `#[wasm_bindgen]` invocation, testing the error you're
+ generating
+* Execute `cargo test -p ui-tests`, the test will fail
+* From within the `ui-tests` folder, execute `./update-all-references.sh`. This
+ should create a `my-awesome-test.stderr` file.
+* Inspect `my-awesome-test.stderr` to make sure it looks ok
+* Rerun `cargo test -p ui-tests` and your tests should pass!
+
+Testing here is a work in progress, see
+[#601](https://github.com/rustwasm/wasm-bindgen/issues/601) for more
+information.
diff --git a/vendor/wasm-bindgen-macro/src/lib.rs b/vendor/wasm-bindgen-macro/src/lib.rs
new file mode 100644
index 000000000..c677aaf24
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/src/lib.rs
@@ -0,0 +1,32 @@
+#![doc(html_root_url = "https://docs.rs/wasm-bindgen-macro/0.2")]
+
+extern crate proc_macro;
+
+use proc_macro::TokenStream;
+use quote::quote;
+
+#[proc_macro_attribute]
+pub fn wasm_bindgen(attr: TokenStream, input: TokenStream) -> TokenStream {
+ match wasm_bindgen_macro_support::expand(attr.into(), input.into()) {
+ Ok(tokens) => {
+ if cfg!(feature = "xxx_debug_only_print_generated_code") {
+ println!("{}", tokens);
+ }
+ tokens.into()
+ }
+ Err(diagnostic) => (quote! { #diagnostic }).into(),
+ }
+}
+
+#[proc_macro_attribute]
+pub fn __wasm_bindgen_class_marker(attr: TokenStream, input: TokenStream) -> TokenStream {
+ match wasm_bindgen_macro_support::expand_class_marker(attr.into(), input.into()) {
+ Ok(tokens) => {
+ if cfg!(feature = "xxx_debug_only_print_generated_code") {
+ println!("{}", tokens);
+ }
+ tokens.into()
+ }
+ Err(diagnostic) => (quote! { #diagnostic }).into(),
+ }
+}
diff --git a/vendor/wasm-bindgen-macro/tests/ui.rs b/vendor/wasm-bindgen-macro/tests/ui.rs
new file mode 100644
index 000000000..da15c9214
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/tests/ui.rs
@@ -0,0 +1,5 @@
+#[test]
+fn ui() {
+ let t = trybuild::TestCases::new();
+ t.compile_fail("ui-tests/*.rs");
+}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/async-errors.rs b/vendor/wasm-bindgen-macro/ui-tests/async-errors.rs
new file mode 100644
index 000000000..22c5107e4
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/async-errors.rs
@@ -0,0 +1,40 @@
+#![allow(unreachable_code)]
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+pub struct MyType;
+
+#[wasm_bindgen]
+pub async fn good1() { loop {} }
+#[wasm_bindgen]
+pub async fn good2() -> JsValue { loop {} }
+#[wasm_bindgen]
+pub async fn good3() -> u32 { loop {} }
+#[wasm_bindgen]
+pub async fn good4() -> MyType { loop {} }
+#[wasm_bindgen]
+pub async fn good5() -> Result<(), JsValue> { loop {} }
+#[wasm_bindgen]
+pub async fn good6() -> Result<JsValue, JsValue> { loop {} }
+#[wasm_bindgen]
+pub async fn good7() -> Result<u32, JsValue> { loop {} }
+#[wasm_bindgen]
+pub async fn good8() -> Result<MyType, JsValue> { loop {} }
+#[wasm_bindgen]
+pub async fn good9() -> Result<MyType, u32> { loop {} }
+#[wasm_bindgen]
+pub async fn good10() -> Result<MyType, MyType> { loop {} }
+
+pub struct BadType;
+
+#[wasm_bindgen]
+pub async fn bad1() -> Result<(), ()> { loop {} }
+#[wasm_bindgen]
+pub async fn bad2() -> Result<(), BadType> { loop {} }
+#[wasm_bindgen]
+pub async fn bad3() -> BadType { loop {} }
+#[wasm_bindgen]
+pub async fn bad4() -> Result<BadType, JsValue> { loop {} }
+
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/async-errors.stderr b/vendor/wasm-bindgen-macro/ui-tests/async-errors.stderr
new file mode 100644
index 000000000..492492a18
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/async-errors.stderr
@@ -0,0 +1,68 @@
+error[E0277]: the trait bound `Result<(), ()>: IntoJsResult` is not satisfied
+ --> ui-tests/async-errors.rs:30:1
+ |
+30 | #[wasm_bindgen]
+ | ^^^^^^^^^^^^^^^ the trait `IntoJsResult` is not implemented for `Result<(), ()>`
+ |
+ = help: the following implementations were found:
+ <Result<(), E> as IntoJsResult>
+ <Result<T, E> as IntoJsResult>
+note: required by `into_js_result`
+ --> $WORKSPACE/src/lib.rs
+ |
+ | fn into_js_result(self) -> Result<JsValue, JsValue>;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Result<(), BadType>: IntoJsResult` is not satisfied
+ --> ui-tests/async-errors.rs:32:1
+ |
+32 | #[wasm_bindgen]
+ | ^^^^^^^^^^^^^^^ the trait `IntoJsResult` is not implemented for `Result<(), BadType>`
+ |
+ = help: the following implementations were found:
+ <Result<(), E> as IntoJsResult>
+ <Result<T, E> as IntoJsResult>
+note: required by `into_js_result`
+ --> $WORKSPACE/src/lib.rs
+ |
+ | fn into_js_result(self) -> Result<JsValue, JsValue>;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `wasm_bindgen::JsValue: From<BadType>` is not satisfied
+ --> ui-tests/async-errors.rs:34:1
+ |
+34 | #[wasm_bindgen]
+ | ^^^^^^^^^^^^^^^ the trait `From<BadType>` is not implemented for `wasm_bindgen::JsValue`
+ |
+ = help: the following implementations were found:
+ <wasm_bindgen::JsValue as From<&'a String>>
+ <wasm_bindgen::JsValue as From<&'a T>>
+ <wasm_bindgen::JsValue as From<&'a str>>
+ <wasm_bindgen::JsValue as From<JsError>>
+ and 73 others
+ = note: required because of the requirements on the impl of `Into<wasm_bindgen::JsValue>` for `BadType`
+ = note: required because of the requirements on the impl of `IntoJsResult` for `BadType`
+note: required by `into_js_result`
+ --> $WORKSPACE/src/lib.rs
+ |
+ | fn into_js_result(self) -> Result<JsValue, JsValue>;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Result<BadType, wasm_bindgen::JsValue>: IntoJsResult` is not satisfied
+ --> ui-tests/async-errors.rs:36:1
+ |
+36 | #[wasm_bindgen]
+ | ^^^^^^^^^^^^^^^ the trait `IntoJsResult` is not implemented for `Result<BadType, wasm_bindgen::JsValue>`
+ |
+ = help: the following implementations were found:
+ <Result<(), E> as IntoJsResult>
+ <Result<T, E> as IntoJsResult>
+note: required by `into_js_result`
+ --> $WORKSPACE/src/lib.rs
+ |
+ | fn into_js_result(self) -> Result<JsValue, JsValue>;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.rs b/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.rs
new file mode 100644
index 000000000..2d5b34bce
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.rs
@@ -0,0 +1,6 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen(nonsense)]
+pub fn foo() {}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.stderr b/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.stderr
new file mode 100644
index 000000000..dfe9ecf0e
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.stderr
@@ -0,0 +1,5 @@
+error: unknown attribute
+ --> $DIR/attribute-fails-to-parse.rs:3:16
+ |
+3 | #[wasm_bindgen(nonsense)]
+ | ^^^^^^^^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.rs b/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.rs
new file mode 100644
index 000000000..de2c0e156
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.rs
@@ -0,0 +1,13 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+pub fn foo() -> &u32 {}
+
+#[wasm_bindgen]
+extern "C" {
+ fn foo(Foo(x): Foo);
+
+ fn foo() -> &u32;
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.stderr b/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.stderr
new file mode 100644
index 000000000..48d8d40dd
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.stderr
@@ -0,0 +1,17 @@
+error: cannot return a borrowed ref with #[wasm_bindgen]
+ --> $DIR/bad-signatures.rs:4:17
+ |
+4 | pub fn foo() -> &u32 {}
+ | ^^^^
+
+error: unsupported pattern in #[wasm_bindgen] imported function
+ --> $DIR/bad-signatures.rs:8:12
+ |
+8 | fn foo(Foo(x): Foo);
+ | ^^^^^^
+
+error: cannot return references in #[wasm_bindgen] imports yet
+ --> $DIR/bad-signatures.rs:10:17
+ |
+10 | fn foo() -> &u32;
+ | ^^^^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/import-local.rs b/vendor/wasm-bindgen-macro/ui-tests/import-local.rs
new file mode 100644
index 000000000..ff86375bb
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/import-local.rs
@@ -0,0 +1,13 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen(module = "./foo.js")]
+extern {
+ fn wut();
+}
+
+#[wasm_bindgen(module = "../foo.js")]
+extern {
+ fn wut2();
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/import-local.stderr b/vendor/wasm-bindgen-macro/ui-tests/import-local.stderr
new file mode 100644
index 000000000..707b30fcc
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/import-local.stderr
@@ -0,0 +1,11 @@
+error: relative module paths aren't supported yet
+ --> $DIR/import-local.rs:3:25
+ |
+3 | #[wasm_bindgen(module = "./foo.js")]
+ | ^^^^^^^^^^
+
+error: relative module paths aren't supported yet
+ --> $DIR/import-local.rs:8:25
+ |
+8 | #[wasm_bindgen(module = "../foo.js")]
+ | ^^^^^^^^^^^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.rs
new file mode 100644
index 000000000..188a1c833
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.rs
@@ -0,0 +1,15 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen(x)]
+pub fn foo() {}
+
+#[wasm_bindgen]
+extern "C" {
+ #[wasm_bindgen(y)]
+ fn bar();
+
+ #[wasm_bindgen { }]
+ fn bar();
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.stderr
new file mode 100644
index 000000000..47264acd3
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.stderr
@@ -0,0 +1,17 @@
+error: unknown attribute
+ --> $DIR/invalid-attr.rs:3:16
+ |
+3 | #[wasm_bindgen(x)]
+ | ^
+
+error: unknown attribute
+ --> $DIR/invalid-attr.rs:8:20
+ |
+8 | #[wasm_bindgen(y)]
+ | ^
+
+error: malformed #[wasm_bindgen] attribute
+ --> $DIR/invalid-attr.rs:11:5
+ |
+11 | #[wasm_bindgen { }]
+ | ^^^^^^^^^^^^^^^^^^^^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.rs
new file mode 100644
index 000000000..abea3fa67
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.rs
@@ -0,0 +1,21 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+enum A {}
+
+#[wasm_bindgen]
+pub enum B {
+ D(u32),
+}
+
+#[wasm_bindgen]
+pub enum C {
+ X = 1 + 3,
+}
+
+#[wasm_bindgen]
+pub enum D {
+ X = 4294967296,
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.stderr
new file mode 100644
index 000000000..7ad51f9a5
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.stderr
@@ -0,0 +1,23 @@
+error: cannot export empty enums to JS
+ --> $DIR/invalid-enums.rs:4:1
+ |
+4 | enum A {}
+ | ^^^^^^^^^
+
+error: only C-Style enums allowed with #[wasm_bindgen]
+ --> $DIR/invalid-enums.rs:8:6
+ |
+8 | D(u32),
+ | ^^^^^
+
+error: enums with #[wasm_bindgen] may only have number literal values
+ --> $DIR/invalid-enums.rs:13:9
+ |
+13 | X = 1 + 3,
+ | ^^^^^
+
+error: enums with #[wasm_bindgen] can only support numbers that can be represented as u32
+ --> $DIR/invalid-enums.rs:18:9
+ |
+18 | X = 4294967296,
+ | ^^^^^^^^^^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.rs
new file mode 100644
index 000000000..ecd223b70
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.rs
@@ -0,0 +1,41 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+extern "C" {
+ type A;
+
+ fn f() -> &'static u32;
+
+ #[wasm_bindgen(method)]
+ fn f1();
+ #[wasm_bindgen(method)]
+ fn f2(x: u32);
+ #[wasm_bindgen(method)]
+ fn f3(x: &&u32);
+ #[wasm_bindgen(method)]
+ fn f4(x: &foo::Bar);
+ #[wasm_bindgen(method)]
+ fn f4(x: &::Bar);
+ #[wasm_bindgen(method)]
+ fn f4(x: &Bar<T>);
+ #[wasm_bindgen(method)]
+ fn f4(x: &Fn(T));
+
+ #[wasm_bindgen(constructor)]
+ fn f();
+ #[wasm_bindgen(constructor)]
+ fn f() -> ::Bar;
+ #[wasm_bindgen(constructor)]
+ fn f() -> &Bar;
+
+ #[wasm_bindgen(catch)]
+ fn f() -> u32;
+ #[wasm_bindgen(catch)]
+ fn f() -> &u32;
+ #[wasm_bindgen(catch)]
+ fn f() -> Result<>;
+ #[wasm_bindgen(catch)]
+ fn f() -> Result<'a>;
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.stderr
new file mode 100644
index 000000000..aeb09c574
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.stderr
@@ -0,0 +1,71 @@
+error: it is currently not sound to use lifetimes in function signatures
+ --> $DIR/invalid-imports.rs:7:16
+ |
+7 | fn f() -> &'static u32;
+ | ^^^^^^^
+
+error: imported methods must have at least one argument
+ --> $DIR/invalid-imports.rs:10:5
+ |
+10 | fn f1();
+ | ^^^^^^^^
+
+error: first argument of method must be a shared reference
+ --> $DIR/invalid-imports.rs:12:14
+ |
+12 | fn f2(x: u32);
+ | ^^^
+
+error: first argument of method must be a path
+ --> $DIR/invalid-imports.rs:14:14
+ |
+14 | fn f3(x: &&u32);
+ | ^^^^^
+
+error: paths with type parameters are not supported yet
+ --> $DIR/invalid-imports.rs:20:15
+ |
+20 | fn f4(x: &Bar<T>);
+ | ^^^^^^
+
+error: paths with type parameters are not supported yet
+ --> $DIR/invalid-imports.rs:22:15
+ |
+22 | fn f4(x: &Fn(T));
+ | ^^^^^
+
+error: constructor returns must be bare types
+ --> $DIR/invalid-imports.rs:25:5
+ |
+25 | fn f();
+ | ^^^^^^^
+
+error: return value of constructor must be a bare path
+ --> $DIR/invalid-imports.rs:29:5
+ |
+29 | fn f() -> &Bar;
+ | ^^^^^^^^^^^^^^^
+
+error: must be Result<...>
+ --> $DIR/invalid-imports.rs:32:15
+ |
+32 | fn f() -> u32;
+ | ^^^
+
+error: must be Result<...>
+ --> $DIR/invalid-imports.rs:34:15
+ |
+34 | fn f() -> &u32;
+ | ^^^^
+
+error: must have at least one generic parameter
+ --> $DIR/invalid-imports.rs:36:15
+ |
+36 | fn f() -> Result<>;
+ | ^^^^^^^^
+
+error: it is currently not sound to use lifetimes in function signatures
+ --> $DIR/invalid-imports.rs:38:22
+ |
+38 | fn f() -> Result<'a>;
+ | ^^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-items.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-items.rs
new file mode 100644
index 000000000..f1a356331
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-items.rs
@@ -0,0 +1,33 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+fn foo() {}
+
+#[wasm_bindgen]
+pub const fn foo2() {}
+
+#[wasm_bindgen]
+struct Foo<T>(T);
+
+#[wasm_bindgen]
+extern "C" {
+ static mut FOO: u32;
+
+ pub fn foo3(x: i32, ...);
+}
+
+#[wasm_bindgen]
+extern "system" {
+}
+
+#[wasm_bindgen]
+pub fn foo4<T>() {}
+#[wasm_bindgen]
+pub fn foo5<'a>() {}
+#[wasm_bindgen]
+pub fn foo6<'a, T>() {}
+
+#[wasm_bindgen]
+trait X {}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-items.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-items.stderr
new file mode 100644
index 000000000..1800ade29
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-items.stderr
@@ -0,0 +1,59 @@
+error: can only #[wasm_bindgen] public functions
+ --> $DIR/invalid-items.rs:4:1
+ |
+4 | fn foo() {}
+ | ^^^^^^^^^^^
+
+error: can only #[wasm_bindgen] non-const functions
+ --> $DIR/invalid-items.rs:7:5
+ |
+7 | pub const fn foo2() {}
+ | ^^^^^
+
+error: structs with #[wasm_bindgen] cannot have lifetime or type parameters currently
+ --> $DIR/invalid-items.rs:10:11
+ |
+10 | struct Foo<T>(T);
+ | ^^^
+
+error: cannot import mutable globals yet
+ --> $DIR/invalid-items.rs:14:12
+ |
+14 | static mut FOO: u32;
+ | ^^^
+
+error: can't #[wasm_bindgen] variadic functions
+ --> $DIR/invalid-items.rs:16:25
+ |
+16 | pub fn foo3(x: i32, ...);
+ | ^^^
+
+error: only foreign mods with the `C` ABI are allowed
+ --> $DIR/invalid-items.rs:20:8
+ |
+20 | extern "system" {
+ | ^^^^^^^^
+
+error: can't #[wasm_bindgen] functions with lifetime or type parameters
+ --> $DIR/invalid-items.rs:24:12
+ |
+24 | pub fn foo4<T>() {}
+ | ^^^
+
+error: can't #[wasm_bindgen] functions with lifetime or type parameters
+ --> $DIR/invalid-items.rs:26:12
+ |
+26 | pub fn foo5<'a>() {}
+ | ^^^^
+
+error: can't #[wasm_bindgen] functions with lifetime or type parameters
+ --> $DIR/invalid-items.rs:28:12
+ |
+28 | pub fn foo6<'a, T>() {}
+ | ^^^^^^^
+
+error: #[wasm_bindgen] can only be applied to a function, struct, enum, impl, or extern block
+ --> $DIR/invalid-items.rs:31:1
+ |
+31 | trait X {}
+ | ^^^^^^^^^^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.rs
new file mode 100644
index 000000000..bd69e6d31
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.rs
@@ -0,0 +1,42 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+pub struct A;
+
+#[wasm_bindgen]
+default impl A {
+}
+
+#[wasm_bindgen]
+unsafe impl A {
+}
+
+#[wasm_bindgen]
+impl Clone for A {
+}
+
+#[wasm_bindgen]
+impl<T> A {
+}
+
+#[wasm_bindgen]
+impl &'static A {
+}
+
+macro_rules! x { () => () }
+
+#[wasm_bindgen]
+impl A {
+ const X: u32 = 3;
+ type Y = u32;
+ x!();
+
+ // pub default fn foo() {} // TODO: compiler's pretty printer totally broken
+}
+
+#[wasm_bindgen]
+impl A {
+ pub const fn foo() {}
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.stderr
new file mode 100644
index 000000000..a785fc1ff
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.stderr
@@ -0,0 +1,61 @@
+error: #[wasm_bindgen] default impls are not supported
+ --> $DIR/invalid-methods.rs:7:1
+ |
+7 | default impl A {
+ | ^^^^^^^
+
+error: #[wasm_bindgen] unsafe impls are not supported
+ --> $DIR/invalid-methods.rs:11:1
+ |
+11 | unsafe impl A {
+ | ^^^^^^
+
+error: #[wasm_bindgen] trait impls are not supported
+ --> $DIR/invalid-methods.rs:15:6
+ |
+15 | impl Clone for A {
+ | ^^^^^
+
+error: #[wasm_bindgen] generic impls aren't supported
+ --> $DIR/invalid-methods.rs:19:5
+ |
+19 | impl<T> A {
+ | ^^^
+
+error: unsupported self type in #[wasm_bindgen] impl
+ --> $DIR/invalid-methods.rs:23:6
+ |
+23 | impl &'static A {
+ | ^^^^^^^^^^
+
+error: const definitions aren't supported with #[wasm_bindgen]
+ --> $DIR/invalid-methods.rs:30:5
+ |
+30 | const X: u32 = 3;
+ | ^^^^^^^^^^^^^^^^^
+
+error: type definitions in impls aren't supported with #[wasm_bindgen]
+ --> $DIR/invalid-methods.rs:31:5
+ |
+31 | type Y = u32;
+ | ^^^^^^^^^^^^^
+
+error: macros in impls aren't supported
+ --> $DIR/invalid-methods.rs:32:5
+ |
+32 | x!();
+ | ^^^^^
+
+error: can only #[wasm_bindgen] non-const functions
+ --> $DIR/invalid-methods.rs:39:9
+ |
+39 | pub const fn foo() {}
+ | ^^^^^
+
+warning: unused macro definition
+ --> $DIR/invalid-methods.rs:26:1
+ |
+26 | macro_rules! x { () => () }
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: `#[warn(unused_macros)]` on by default
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.rs
new file mode 100644
index 000000000..42d83879e
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.rs
@@ -0,0 +1,18 @@
+
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+extern "C" {
+ type A;
+
+ #[wasm_bindgen(setter, method)]
+ fn a(this: &A, b: i32);
+
+ #[wasm_bindgen(setter = x, method)]
+ fn b(this: &A, b: i32);
+
+ #[wasm_bindgen(setter, method, js_name = x)]
+ fn c(this: &A, b: i32);
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.stderr
new file mode 100644
index 000000000..77e1509e9
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.stderr
@@ -0,0 +1,5 @@
+error: setters must start with `set_`, found: a
+ --> $DIR/invalid-setter.rs:9:8
+ |
+9 | fn a(this: &A, b: i32);
+ | ^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/missing-catch.rs b/vendor/wasm-bindgen-macro/ui-tests/missing-catch.rs
new file mode 100644
index 000000000..962e2fad1
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/missing-catch.rs
@@ -0,0 +1,9 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+extern "C" {
+ #[wasm_bindgen]
+ pub fn foo() -> Result<JsValue, JsValue>;
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/missing-catch.stderr b/vendor/wasm-bindgen-macro/ui-tests/missing-catch.stderr
new file mode 100644
index 000000000..4c20dbe76
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/missing-catch.stderr
@@ -0,0 +1,17 @@
+error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: FromWasmAbi` is not satisfied
+ --> $DIR/missing-catch.rs:6:9
+ |
+6 | pub fn foo() -> Result<JsValue, JsValue>;
+ | ^^^ the trait `FromWasmAbi` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>`
+ |
+note: required by a bound in `FromWasmAbi`
+ --> $DIR/traits.rs:23:1
+ |
+23 | / pub trait FromWasmAbi: WasmDescribe {
+24 | | /// The wasm ABI type that this converts from when coming back out from the
+25 | | /// ABI boundary.
+26 | | type Abi: WasmAbi;
+... |
+35 | | unsafe fn from_abi(js: Self::Abi) -> Self;
+36 | | }
+ | |_^ required by this bound in `FromWasmAbi`
diff --git a/vendor/wasm-bindgen-macro/ui-tests/non-public-function.rs b/vendor/wasm-bindgen-macro/ui-tests/non-public-function.rs
new file mode 100644
index 000000000..5f2e55874
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/non-public-function.rs
@@ -0,0 +1,6 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+fn foo() {}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/non-public-function.stderr b/vendor/wasm-bindgen-macro/ui-tests/non-public-function.stderr
new file mode 100644
index 000000000..02f2a329f
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/non-public-function.stderr
@@ -0,0 +1,5 @@
+error: can only #[wasm_bindgen] public functions
+ --> $DIR/non-public-function.rs:4:1
+ |
+4 | fn foo() {}
+ | ^^^^^^^^^^^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.rs b/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.rs
new file mode 100644
index 000000000..b5f6b0cfb
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.rs
@@ -0,0 +1,8 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+pub struct A {
+ pub field: String,
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.stderr b/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.stderr
new file mode 100644
index 000000000..0cb088cd1
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.stderr
@@ -0,0 +1,12 @@
+error[E0277]: the trait bound `String: std::marker::Copy` is not satisfied
+ --> $DIR/pub-not-copy.rs:5:16
+ |
+5 | pub field: String,
+ | ^^^^^^ the trait `std::marker::Copy` is not implemented for `String`
+ |
+note: required by a bound in `assert_copy`
+ --> $DIR/pub-not-copy.rs:3:1
+ |
+3 | #[wasm_bindgen]
+ | ^^^^^^^^^^^^^^^ required by this bound in `assert_copy`
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/wasm-bindgen-macro/ui-tests/start-function.rs b/vendor/wasm-bindgen-macro/ui-tests/start-function.rs
new file mode 100644
index 000000000..65ad90bf2
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/start-function.rs
@@ -0,0 +1,33 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen(start)]
+pub fn foo() {}
+
+#[wasm_bindgen(start)]
+pub fn foo2(x: u32) {}
+
+#[wasm_bindgen(start)]
+pub fn foo3<T>() {}
+
+#[wasm_bindgen(start)]
+pub fn foo4() -> Result<(), JsValue> { Ok(()) }
+
+#[wasm_bindgen(start)]
+pub fn foo5() -> Result<JsValue, ()> { Err(()) }
+
+#[wasm_bindgen(start)]
+pub fn foo6() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) }
+
+#[wasm_bindgen(start)]
+pub async fn foo_async1() {}
+
+#[wasm_bindgen(start)]
+pub async fn foo_async2() -> Result<(), JsValue> { Ok(()) }
+
+#[wasm_bindgen(start)]
+pub async fn foo_async3() -> Result<JsValue, ()> { Err(()) }
+
+#[wasm_bindgen(start)]
+pub async fn foo_async4() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) }
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/start-function.stderr b/vendor/wasm-bindgen-macro/ui-tests/start-function.stderr
new file mode 100644
index 000000000..8f459863d
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/start-function.stderr
@@ -0,0 +1,71 @@
+error: the start function cannot have arguments
+ --> ui-tests/start-function.rs:7:13
+ |
+7 | pub fn foo2(x: u32) {}
+ | ^^^^^^
+
+error: the start function cannot have generics
+ --> ui-tests/start-function.rs:10:12
+ |
+10 | pub fn foo3<T>() {}
+ | ^^^
+
+error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, ()>: wasm_bindgen::__rt::Start` is not satisfied
+ --> ui-tests/start-function.rs:15:1
+ |
+15 | #[wasm_bindgen(start)]
+ | ^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, ()>`
+ |
+ = help: the following implementations were found:
+ <Result<(), E> as wasm_bindgen::__rt::Start>
+note: required by `start`
+ --> $WORKSPACE/src/lib.rs
+ |
+ | fn start(self);
+ | ^^^^^^^^^^^^^^^
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: wasm_bindgen::__rt::Start` is not satisfied
+ --> ui-tests/start-function.rs:18:1
+ |
+18 | #[wasm_bindgen(start)]
+ | ^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>`
+ |
+ = help: the following implementations were found:
+ <Result<(), E> as wasm_bindgen::__rt::Start>
+note: required by `start`
+ --> $WORKSPACE/src/lib.rs
+ |
+ | fn start(self);
+ | ^^^^^^^^^^^^^^^
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, ()>: wasm_bindgen::__rt::Start` is not satisfied
+ --> ui-tests/start-function.rs:27:1
+ |
+27 | #[wasm_bindgen(start)]
+ | ^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, ()>`
+ |
+ = help: the following implementations were found:
+ <Result<(), E> as wasm_bindgen::__rt::Start>
+note: required by `start`
+ --> $WORKSPACE/src/lib.rs
+ |
+ | fn start(self);
+ | ^^^^^^^^^^^^^^^
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: wasm_bindgen::__rt::Start` is not satisfied
+ --> ui-tests/start-function.rs:30:1
+ |
+30 | #[wasm_bindgen(start)]
+ | ^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>`
+ |
+ = help: the following implementations were found:
+ <Result<(), E> as wasm_bindgen::__rt::Start>
+note: required by `start`
+ --> $WORKSPACE/src/lib.rs
+ |
+ | fn start(self);
+ | ^^^^^^^^^^^^^^^
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.rs b/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.rs
new file mode 100644
index 000000000..5c5a4ecce
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.rs
@@ -0,0 +1,11 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+extern "C" {
+ type Foo;
+
+ #[wasm_bindgen(method, structural, final)]
+ fn bar(this: &Foo);
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.stderr b/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.stderr
new file mode 100644
index 000000000..8c8a70387
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.stderr
@@ -0,0 +1,5 @@
+error: cannot specify both `structural` and `final`
+ --> $DIR/structural-and-final.rs:7:40
+ |
+7 | #[wasm_bindgen(method, structural, final)]
+ | ^^^^^
diff --git a/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.rs b/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.rs
new file mode 100644
index 000000000..56c5900c0
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.rs
@@ -0,0 +1,11 @@
+use wasm_bindgen::prelude::*;
+
+struct A;
+
+#[wasm_bindgen]
+extern "C" {
+ #[wasm_bindgen]
+ pub fn foo(a: A);
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.stderr b/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.stderr
new file mode 100644
index 000000000..7b0f90f57
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.stderr
@@ -0,0 +1,18 @@
+error[E0277]: the trait bound `A: IntoWasmAbi` is not satisfied
+ --> $DIR/traits-not-implemented.rs:5:1
+ |
+5 | #[wasm_bindgen]
+ | ^^^^^^^^^^^^^^^ the trait `IntoWasmAbi` is not implemented for `A`
+ |
+note: required by a bound in `IntoWasmAbi`
+ --> $DIR/traits.rs:9:1
+ |
+9 | / pub trait IntoWasmAbi: WasmDescribe {
+10 | | /// The wasm ABI type that this converts into when crossing the ABI
+11 | | /// boundary.
+12 | | type Abi: WasmAbi;
+... |
+16 | | fn into_abi(self) -> Self::Abi;
+17 | | }
+ | |_^ required by this bound in `IntoWasmAbi`
+ = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.rs b/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.rs
new file mode 100644
index 000000000..1356a253e
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.rs
@@ -0,0 +1,10 @@
+use wasm_bindgen::prelude::*;
+
+#[wasm_bindgen]
+extern "C" {
+ #[wasm_bindgen]
+ pub fn foo(a: A);
+}
+
+fn main() {}
+
diff --git a/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.stderr b/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.stderr
new file mode 100644
index 000000000..e7bb64c53
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.stderr
@@ -0,0 +1,7 @@
+error[E0412]: cannot find type `A` in this scope
+ --> $DIR/unknown-type-in-import.rs:6:19
+ |
+6 | pub fn foo(a: A);
+ | - ^ not found in this scope
+ | |
+ | help: you might be missing a type parameter: `<A>`
diff --git a/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.rs b/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.rs
new file mode 100644
index 000000000..f517dcc4b
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.rs
@@ -0,0 +1,32 @@
+#![deny(unused_variables)]
+
+use wasm_bindgen::prelude::*;
+
+struct A {}
+
+#[wasm_bindgen]
+impl A {
+ #[wasm_bindgen(method)]
+ pub fn foo() {}
+}
+
+#[wasm_bindgen]
+pub struct MyStruct {
+ hello: String,
+}
+
+#[wasm_bindgen(getter, typescript_custom_section)]
+pub const FOO: &'static str = "FOO";
+
+#[wasm_bindgen(readonly)]
+pub fn bar() {}
+
+#[wasm_bindgen(getter_with_clone, final)]
+impl MyStruct {
+ #[wasm_bindgen(getter, typescript_type = "Thing[]")]
+ pub fn hello(&self) -> String {
+ self.hello.clone()
+ }
+}
+
+fn main() {}
diff --git a/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.stderr b/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.stderr
new file mode 100644
index 000000000..c4ba32f08
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.stderr
@@ -0,0 +1,41 @@
+error: unused variable: `method`
+ --> ui-tests/unused-attributes.rs:9:20
+ |
+9 | #[wasm_bindgen(method)]
+ | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_method`
+ |
+note: the lint level is defined here
+ --> ui-tests/unused-attributes.rs:1:9
+ |
+1 | #![deny(unused_variables)]
+ | ^^^^^^^^^^^^^^^^
+
+error: unused variable: `getter`
+ --> ui-tests/unused-attributes.rs:18:16
+ |
+18 | #[wasm_bindgen(getter, typescript_custom_section)]
+ | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_getter`
+
+error: unused variable: `readonly`
+ --> ui-tests/unused-attributes.rs:21:16
+ |
+21 | #[wasm_bindgen(readonly)]
+ | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_readonly`
+
+error: unused variable: `getter_with_clone`
+ --> ui-tests/unused-attributes.rs:24:16
+ |
+24 | #[wasm_bindgen(getter_with_clone, final)]
+ | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_getter_with_clone`
+
+error: unused variable: `final`
+ --> ui-tests/unused-attributes.rs:24:35
+ |
+24 | #[wasm_bindgen(getter_with_clone, final)]
+ | ^^^^^ help: if this is intentional, prefix it with an underscore: `_final`
+
+error: unused variable: `typescript_type`
+ --> ui-tests/unused-attributes.rs:26:28
+ |
+26 | #[wasm_bindgen(getter, typescript_type = "Thing[]")]
+ | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typescript_type`
diff --git a/vendor/wasm-bindgen-macro/ui-tests/update-all-references.sh b/vendor/wasm-bindgen-macro/ui-tests/update-all-references.sh
new file mode 100755
index 000000000..7b757a479
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/update-all-references.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+#
+# Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+# file at the top-level directory of this distribution and at
+# http://rust-lang.org/COPYRIGHT.
+#
+# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+# option. This file may not be copied, modified, or distributed
+# except according to those terms.
+
+# A script to update the references for all tests. The idea is that
+# you do a run, which will generate files in the build directory
+# containing the (normalized) actual output of the compiler. You then
+# run this script, which will copy those files over. If you find
+# yourself manually editing a foo.stderr file, you're doing it wrong.
+#
+# See all `update-references.sh`, if you just want to update a single test.
+
+MY_DIR=$(dirname $0)
+cd $MY_DIR
+find . -name '*.rs' | xargs ./update-references.sh
diff --git a/vendor/wasm-bindgen-macro/ui-tests/update-references.sh b/vendor/wasm-bindgen-macro/ui-tests/update-references.sh
new file mode 100755
index 000000000..19a6d4888
--- /dev/null
+++ b/vendor/wasm-bindgen-macro/ui-tests/update-references.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+#
+# Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+# file at the top-level directory of this distribution and at
+# http://rust-lang.org/COPYRIGHT.
+#
+# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+# option. This file may not be copied, modified, or distributed
+# except according to those terms.
+
+# A script to update the references for particular tests. The idea is
+# that you do a run, which will generate files in the build directory
+# containing the (normalized) actual output of the compiler. This
+# script will then copy that output and replace the "expected output"
+# files. You can then commit the changes.
+#
+# If you find yourself manually editing a foo.stderr file, you're
+# doing it wrong.
+
+MYDIR=$(dirname $0)
+
+BUILD_DIR="../../../target/tests/ui"
+
+while [[ "$1" != "" ]]; do
+ STDERR_NAME="${1/%.rs/.stderr}"
+ STDOUT_NAME="${1/%.rs/.stdout}"
+ shift
+ if [ -f $BUILD_DIR/$STDOUT_NAME ] && \
+ ! (diff $BUILD_DIR/$STDOUT_NAME $MYDIR/$STDOUT_NAME >& /dev/null); then
+ echo updating $MYDIR/$STDOUT_NAME
+ cp $BUILD_DIR/$STDOUT_NAME $MYDIR/$STDOUT_NAME
+ fi
+ if [ -f $BUILD_DIR/$STDERR_NAME ] && \
+ ! (diff $BUILD_DIR/$STDERR_NAME $MYDIR/$STDERR_NAME >& /dev/null); then
+ echo updating $MYDIR/$STDERR_NAME
+ cp $BUILD_DIR/$STDERR_NAME $MYDIR/$STDERR_NAME
+ fi
+done
+
+