Because the toml error only spits out the error for the first thing it runs into it doesn't parse all of the missing fields. We first serialize the data to a generic toml type to check this ourselves. If everything is there we serialize directly to the type we expected. Otherwise we throw an error with all the fields that are missing.master
parent
5c4a68ee52
commit
57e461eaab
@ -0,0 +1,140 @@ |
|||||||
|
[[package]] |
||||||
|
name = "bad-cargo-toml" |
||||||
|
version = "0.1.0" |
||||||
|
dependencies = [ |
||||||
|
"wasm-bindgen 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "dtoa" |
||||||
|
version = "0.4.2" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "fnv" |
||||||
|
version = "1.0.6" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "itoa" |
||||||
|
version = "0.3.4" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "num-traits" |
||||||
|
version = "0.2.1" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "proc-macro2" |
||||||
|
version = "0.2.3" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
dependencies = [ |
||||||
|
"unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "quote" |
||||||
|
version = "0.4.2" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
dependencies = [ |
||||||
|
"proc-macro2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "serde" |
||||||
|
version = "1.0.33" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "serde_derive" |
||||||
|
version = "1.0.33" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
dependencies = [ |
||||||
|
"proc-macro2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"quote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"serde_derive_internals 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"syn 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "serde_derive_internals" |
||||||
|
version = "0.21.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
dependencies = [ |
||||||
|
"proc-macro2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"syn 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "serde_json" |
||||||
|
version = "1.0.11" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
dependencies = [ |
||||||
|
"dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"num-traits 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"serde 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "syn" |
||||||
|
version = "0.12.14" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
dependencies = [ |
||||||
|
"proc-macro2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"quote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "unicode-xid" |
||||||
|
version = "0.1.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "wasm-bindgen" |
||||||
|
version = "0.1.0" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
dependencies = [ |
||||||
|
"wasm-bindgen-macro 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "wasm-bindgen-macro" |
||||||
|
version = "0.1.1" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
dependencies = [ |
||||||
|
"proc-macro2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"quote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"serde_json 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"syn 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"wasm-bindgen-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[[package]] |
||||||
|
name = "wasm-bindgen-shared" |
||||||
|
version = "0.1.1" |
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||||
|
dependencies = [ |
||||||
|
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"serde 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
"serde_derive 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", |
||||||
|
] |
||||||
|
|
||||||
|
[metadata] |
||||||
|
"checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" |
||||||
|
"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" |
||||||
|
"checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c" |
||||||
|
"checksum num-traits 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3c2bd9b9d21e48e956b763c9f37134dc62d9e95da6edb3f672cacb6caf3cd3" |
||||||
|
"checksum proc-macro2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cd07deb3c6d1d9ff827999c7f9b04cdfd66b1b17ae508e14fe47b620f2282ae0" |
||||||
|
"checksum quote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1eca14c727ad12702eb4b6bfb5a232287dcf8385cb8ca83a3eeaf6519c44c408" |
||||||
|
"checksum serde 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe95aa0d46f04ce5c3a88bdcd4114ecd6144ed0b2725ebca2f1127744357807" |
||||||
|
"checksum serde_derive 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "23b163a6ce7e1aa897919f9d8e40bd1f8a6f95342ed57727ae31387a01a7a356" |
||||||
|
"checksum serde_derive_internals 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "370aa477297975243dc914d0b0e1234927520ec311de507a560fbd1c80f7ab8c" |
||||||
|
"checksum serde_json 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "fab6c4d75bedcf880711c85e39ebf8ccc70d0eba259899047ec5d7436643ee17" |
||||||
|
"checksum syn 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)" = "8c5bc2d6ff27891209efa5f63e9de78648d7801f085e4653701a692ce938d6fd" |
||||||
|
"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" |
||||||
|
"checksum wasm-bindgen 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "717507a3c7ef09d740c6d781bda57ba054d7b776f3e27d4478e25a773afd2e4b" |
||||||
|
"checksum wasm-bindgen-macro 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbc1a194a8fe6319f9f326f0c03d2083d61727ace574f9b1df083bad79a314ad" |
||||||
|
"checksum wasm-bindgen-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8b7cf730a826f1ec1ea2143d8582d5d2d27c0775035652daf0e0337225e8566b" |
@ -0,0 +1,7 @@ |
|||||||
|
[package] |
||||||
|
name = "bad-cargo-toml" |
||||||
|
version = "0.1.0" |
||||||
|
authors = ["Michael Gattozzi <mgattozzi@gmail.com>"] |
||||||
|
|
||||||
|
[dependencies] |
||||||
|
wasm-bindgen = "0.1" |
@ -0,0 +1,2 @@ |
|||||||
|
# bad-cargo-toml |
||||||
|
> an example rust -> wasm project |
@ -0,0 +1,15 @@ |
|||||||
|
#![feature(proc_macro)] |
||||||
|
|
||||||
|
extern crate wasm_bindgen; |
||||||
|
|
||||||
|
use wasm_bindgen::prelude::*; |
||||||
|
|
||||||
|
#[wasm_bindgen] |
||||||
|
extern { |
||||||
|
fn alert(s: &str); |
||||||
|
} |
||||||
|
|
||||||
|
#[wasm_bindgen] |
||||||
|
pub fn greet(name: &str) { |
||||||
|
alert(&format!("Hello, {}!", name)); |
||||||
|
} |
Loading…
Reference in new issue