[INFO] updating cached repository krolli/vk-parse [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/krolli/vk-parse [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/krolli/vk-parse" "work/ex/clippy-test-run/sources/stable/gh/krolli/vk-parse"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/krolli/vk-parse'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/krolli/vk-parse" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/krolli/vk-parse"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/krolli/vk-parse'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d421a3bdbf8632530c549a58ab4146b89fd0d82d [INFO] sha for GitHub repo krolli/vk-parse: d421a3bdbf8632530c549a58ab4146b89fd0d82d [INFO] validating manifest of krolli/vk-parse on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of krolli/vk-parse on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing krolli/vk-parse [INFO] finished frobbing krolli/vk-parse [INFO] frobbed toml for krolli/vk-parse written to work/ex/clippy-test-run/sources/stable/gh/krolli/vk-parse/Cargo.toml [INFO] started frobbing krolli/vk-parse [INFO] finished frobbing krolli/vk-parse [INFO] frobbed toml for krolli/vk-parse written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/krolli/vk-parse/Cargo.toml [INFO] crate krolli/vk-parse has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on the registry index [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting krolli/vk-parse against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/krolli/vk-parse:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] bb865fcee887eec7819af5fe5947495d1bd45e1877950c814f7ea99d587c9e6f [INFO] running `"docker" "start" "-a" "bb865fcee887eec7819af5fe5947495d1bd45e1877950c814f7ea99d587c9e6f"` [INFO] [stderr] Compiling serde v1.0.78 [INFO] [stderr] Compiling openssl-sys v0.9.35 [INFO] [stderr] Checking tokio-executor v0.1.4 [INFO] [stderr] Checking tokio-service v0.1.0 [INFO] [stderr] Checking relay v0.1.1 [INFO] [stderr] Checking futures-cpupool v0.1.8 [INFO] [stderr] Checking mio v0.6.16 [INFO] [stderr] Checking want v0.0.4 [INFO] [stderr] Checking tokio-io v0.1.8 [INFO] [stderr] Compiling syn v0.15.3 [INFO] [stderr] Checking tokio-timer v0.2.6 [INFO] [stderr] Checking tokio-current-thread v0.1.1 [INFO] [stderr] Checking parking_lot v0.6.4 [INFO] [stderr] Checking tokio-threadpool v0.1.6 [INFO] [stderr] Compiling openssl v0.9.24 [INFO] [stderr] Checking tokio-codec v0.1.0 [INFO] [stderr] Checking tokio-fs v0.1.3 [INFO] [stderr] Checking tokio-reactor v0.1.5 [INFO] [stderr] Checking mio-uds v0.6.7 [INFO] [stderr] Checking tokio-uds v0.2.1 [INFO] [stderr] Checking tokio-udp v0.1.2 [INFO] [stderr] Checking tokio-tcp v0.1.1 [INFO] [stderr] Checking native-tls v0.1.5 [INFO] [stderr] Checking tokio v0.1.8 [INFO] [stderr] Compiling serde_derive v1.0.78 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking tokio-tls v0.1.4 [INFO] [stderr] Checking hyper v0.11.27 [INFO] [stderr] Checking hyper-tls v0.1.4 [INFO] [stderr] Checking serde_json v1.0.27 [INFO] [stderr] Checking ron v0.4.0 [INFO] [stderr] Checking serde_urlencoded v0.5.3 [INFO] [stderr] Checking vkxml v0.3.1 [INFO] [stderr] Checking reqwest v0.8.8 [INFO] [stderr] Checking vk-parse v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/c.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/parse.rs:960:12 [INFO] [stderr] | [INFO] [stderr] 960 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 961 | | if let Ok(val) = i64::from_str_radix(text, 10) { [INFO] [stderr] 962 | | val [INFO] [stderr] 963 | | } else { [INFO] [stderr] 964 | | panic!("Couldn't parse integer from {:?}", text); [INFO] [stderr] 965 | | } [INFO] [stderr] 966 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 960 | } else if let Ok(val) = i64::from_str_radix(text, 10) { [INFO] [stderr] 961 | val [INFO] [stderr] 962 | } else { [INFO] [stderr] 963 | panic!("Couldn't parse integer from {:?}", text); [INFO] [stderr] 964 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:222:25 [INFO] [stderr] | [INFO] [stderr] 222 | return Some(vkxml::DefinitionsElement::Include(include)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Include(include))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:250:25 [INFO] [stderr] | [INFO] [stderr] 250 | return Some(vkxml::DefinitionsElement::Define(define)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Define(define))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:270:25 [INFO] [stderr] | [INFO] [stderr] 270 | return Some(vkxml::DefinitionsElement::Typedef(typedef)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Typedef(typedef))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:294:25 [INFO] [stderr] | [INFO] [stderr] 294 | return Some(vkxml::DefinitionsElement::Bitmask(bitmask)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Bitmask(bitmask))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:326:25 [INFO] [stderr] | [INFO] [stderr] 326 | return Some(vkxml::DefinitionsElement::Handle(handle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Handle(handle))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:333:25 [INFO] [stderr] | [INFO] [stderr] 333 | / return Some(vkxml::DefinitionsElement::Enumeration( [INFO] [stderr] 334 | | vkxml::EnumerationDeclaration { [INFO] [stderr] 335 | | name: t.name.unwrap_or(String::new()), [INFO] [stderr] 336 | | notation: t.comment, [INFO] [stderr] 337 | | }, [INFO] [stderr] 338 | | )); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 333 | Some(vkxml::DefinitionsElement::Enumeration( [INFO] [stderr] 334 | vkxml::EnumerationDeclaration { [INFO] [stderr] 335 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] 336 | notation: t.comment, [INFO] [stderr] 337 | }, [INFO] [stderr] 338 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:354:25 [INFO] [stderr] | [INFO] [stderr] 354 | return Some(vkxml::DefinitionsElement::FuncPtr(fnptr)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::FuncPtr(fnptr))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:375:25 [INFO] [stderr] | [INFO] [stderr] 375 | return Some(vkxml::DefinitionsElement::Struct(s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Struct(s))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:403:25 [INFO] [stderr] | [INFO] [stderr] 403 | return Some(vkxml::DefinitionsElement::Union(u)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Union(u))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/c.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 27 [INFO] [stderr] --> src/parse.rs:152:1 [INFO] [stderr] | [INFO] [stderr] 152 | / fn parse_registry(events: &mut XmlEvents) -> Registry { [INFO] [stderr] 153 | | let mut registry = Registry(Vec::new()); [INFO] [stderr] 154 | | [INFO] [stderr] 155 | | match_elements!{attributes in events, [INFO] [stderr] ... | [INFO] [stderr] 252 | | registry [INFO] [stderr] 253 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:470:18 [INFO] [stderr] | [INFO] [stderr] 470 | spec: if members.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!members.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:472:19 [INFO] [stderr] | [INFO] [stderr] 472 | } else if code.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!code.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:562:20 [INFO] [stderr] | [INFO] [stderr] 562 | if params.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!params.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/c.rs:303:36 [INFO] [stderr] | [INFO] [stderr] 303 | } else if 'a' <= c && c <= 'z' { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 304 | | true [INFO] [stderr] 305 | | } else if 'A' <= c && c <= 'Z' { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/c.rs:301:29 [INFO] [stderr] | [INFO] [stderr] 301 | if '0' <= c && c <= '9' { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 302 | | true [INFO] [stderr] 303 | | } else if 'a' <= c && c <= 'z' { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/c.rs:307:12 [INFO] [stderr] | [INFO] [stderr] 307 | } else if c == '_' { [INFO] [stderr] | ____________^ [INFO] [stderr] 308 | | true [INFO] [stderr] 309 | | } else { [INFO] [stderr] 310 | | false [INFO] [stderr] 311 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `c == '_'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:113:35 [INFO] [stderr] | [INFO] [stderr] 113 | name: e.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `e.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:182:36 [INFO] [stderr] | [INFO] [stderr] 182 | let name = t.name.unwrap_or(String::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:194:35 [INFO] [stderr] | [INFO] [stderr] 194 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:200:25 [INFO] [stderr] | [INFO] [stderr] 200 | / match t.spec { [INFO] [stderr] 201 | | TypeSpec::Code(TypeCode { code, markup }) => { [INFO] [stderr] 202 | | let mut iter = code.split_whitespace(); [INFO] [stderr] 203 | | let token = iter.next().unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 218 | | _ => (), [INFO] [stderr] 219 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 200 | if let TypeSpec::Code(TypeCode { code, markup }) = t.spec { [INFO] [stderr] 201 | let mut iter = code.split_whitespace(); [INFO] [stderr] 202 | let token = iter.next().unwrap(); [INFO] [stderr] 203 | if token != "#include" { [INFO] [stderr] 204 | panic!("Unexpected token {:?}", token); [INFO] [stderr] 205 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:212:37 [INFO] [stderr] | [INFO] [stderr] 212 | / match tag { [INFO] [stderr] 213 | | TypeCodeMarkup::Name(name) => include.name = name, [INFO] [stderr] 214 | | _ => (), [INFO] [stderr] 215 | | } [INFO] [stderr] | |_____________________________________^ help: try this: `if let TypeCodeMarkup::Name(name) = tag { include.name = name }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:227:35 [INFO] [stderr] | [INFO] [stderr] 227 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:335:39 [INFO] [stderr] | [INFO] [stderr] 335 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:362:35 [INFO] [stderr] | [INFO] [stderr] 362 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:364:40 [INFO] [stderr] | [INFO] [stderr] 364 | is_return: t.returnedonly.unwrap_or(String::new()).as_str() == "true", [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.returnedonly.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:380:35 [INFO] [stderr] | [INFO] [stderr] 380 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:429:17 [INFO] [stderr] | [INFO] [stderr] 429 | / match def.len { [INFO] [stderr] 430 | | Some(mut value) => { [INFO] [stderr] 431 | | let null_terminated_part = ",null-terminated"; [INFO] [stderr] 432 | | if value.as_str().ends_with(null_terminated_part) { [INFO] [stderr] ... | [INFO] [stderr] 445 | | None => (), [INFO] [stderr] 446 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 429 | if let Some(mut value) = def.len { [INFO] [stderr] 430 | let null_terminated_part = ",null-terminated"; [INFO] [stderr] 431 | if value.as_str().ends_with(null_terminated_part) { [INFO] [stderr] 432 | field.null_terminate = true; [INFO] [stderr] 433 | let start = value.len() - null_terminated_part.len(); [INFO] [stderr] 434 | value.drain(start..); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/convert.rs:461:1 [INFO] [stderr] | [INFO] [stderr] 461 | / fn process_define_code(r: &mut vkxml::Define, code: String) { [INFO] [stderr] 462 | | fn consume_whitespace(chars: &mut std::str::Chars, mut current: Option) -> Option { [INFO] [stderr] 463 | | while let Some(c) = current { [INFO] [stderr] 464 | | if !c.is_whitespace() { [INFO] [stderr] ... | [INFO] [stderr] 680 | | } [INFO] [stderr] 681 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/convert.rs:667:24 [INFO] [stderr] | [INFO] [stderr] 667 | if r.defref.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!r.defref.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:831:20 [INFO] [stderr] | [INFO] [stderr] 831 | "*" => match r.reference { [INFO] [stderr] | ____________________^ [INFO] [stderr] 832 | | None => r.reference = Some(vkxml::ReferenceType::Pointer), [INFO] [stderr] 833 | | _ => (), [INFO] [stderr] 834 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let None = r.reference { r.reference = Some(vkxml::ReferenceType::Pointer) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:942:9 [INFO] [stderr] | [INFO] [stderr] 942 | / match supported { [INFO] [stderr] 943 | | Some(text) => { [INFO] [stderr] 944 | | if text == "disabled" { [INFO] [stderr] 945 | | disabled = true; [INFO] [stderr] ... | [INFO] [stderr] 950 | | None => (), [INFO] [stderr] 951 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 942 | if let Some(text) = supported { [INFO] [stderr] 943 | if text == "disabled" { [INFO] [stderr] 944 | disabled = true; [INFO] [stderr] 945 | } else { [INFO] [stderr] 946 | match_api = Some(text); [INFO] [stderr] 947 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:1230:17 [INFO] [stderr] | [INFO] [stderr] 1230 | / match def.proto.type_name { [INFO] [stderr] 1231 | | Some(type_name) => r.return_type.basetype = type_name, [INFO] [stderr] 1232 | | None => (), [INFO] [stderr] 1233 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Some(type_name) = def.proto.type_name { r.return_type.basetype = type_name }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/convert.rs:1295:41 [INFO] [stderr] | [INFO] [stderr] 1295 | while let Some(token) = tokens.next() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `for token in tokens { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/types.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | Type(Type), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 87 | Type(Box), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/types.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | Definition(CommandDefinition), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 241 | Definition(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/parse.rs:960:12 [INFO] [stderr] | [INFO] [stderr] 960 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 961 | | if let Ok(val) = i64::from_str_radix(text, 10) { [INFO] [stderr] 962 | | val [INFO] [stderr] 963 | | } else { [INFO] [stderr] 964 | | panic!("Couldn't parse integer from {:?}", text); [INFO] [stderr] 965 | | } [INFO] [stderr] 966 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 960 | } else if let Ok(val) = i64::from_str_radix(text, 10) { [INFO] [stderr] 961 | val [INFO] [stderr] 962 | } else { [INFO] [stderr] 963 | panic!("Couldn't parse integer from {:?}", text); [INFO] [stderr] 964 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:222:25 [INFO] [stderr] | [INFO] [stderr] 222 | return Some(vkxml::DefinitionsElement::Include(include)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Include(include))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:250:25 [INFO] [stderr] | [INFO] [stderr] 250 | return Some(vkxml::DefinitionsElement::Define(define)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Define(define))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:270:25 [INFO] [stderr] | [INFO] [stderr] 270 | return Some(vkxml::DefinitionsElement::Typedef(typedef)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Typedef(typedef))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:294:25 [INFO] [stderr] | [INFO] [stderr] 294 | return Some(vkxml::DefinitionsElement::Bitmask(bitmask)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Bitmask(bitmask))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:326:25 [INFO] [stderr] | [INFO] [stderr] 326 | return Some(vkxml::DefinitionsElement::Handle(handle)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Handle(handle))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:333:25 [INFO] [stderr] | [INFO] [stderr] 333 | / return Some(vkxml::DefinitionsElement::Enumeration( [INFO] [stderr] 334 | | vkxml::EnumerationDeclaration { [INFO] [stderr] 335 | | name: t.name.unwrap_or(String::new()), [INFO] [stderr] 336 | | notation: t.comment, [INFO] [stderr] 337 | | }, [INFO] [stderr] 338 | | )); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 333 | Some(vkxml::DefinitionsElement::Enumeration( [INFO] [stderr] 334 | vkxml::EnumerationDeclaration { [INFO] [stderr] 335 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] 336 | notation: t.comment, [INFO] [stderr] 337 | }, [INFO] [stderr] 338 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:354:25 [INFO] [stderr] | [INFO] [stderr] 354 | return Some(vkxml::DefinitionsElement::FuncPtr(fnptr)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::FuncPtr(fnptr))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:375:25 [INFO] [stderr] | [INFO] [stderr] 375 | return Some(vkxml::DefinitionsElement::Struct(s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Struct(s))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/convert.rs:403:25 [INFO] [stderr] | [INFO] [stderr] 403 | return Some(vkxml::DefinitionsElement::Union(u)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(vkxml::DefinitionsElement::Union(u))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `vk-parse`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: the function has a cyclomatic complexity of 27 [INFO] [stderr] --> src/parse.rs:152:1 [INFO] [stderr] | [INFO] [stderr] 152 | / fn parse_registry(events: &mut XmlEvents) -> Registry { [INFO] [stderr] 153 | | let mut registry = Registry(Vec::new()); [INFO] [stderr] 154 | | [INFO] [stderr] 155 | | match_elements!{attributes in events, [INFO] [stderr] ... | [INFO] [stderr] 252 | | registry [INFO] [stderr] 253 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:470:18 [INFO] [stderr] | [INFO] [stderr] 470 | spec: if members.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!members.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:472:19 [INFO] [stderr] | [INFO] [stderr] 472 | } else if code.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!code.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse.rs:562:20 [INFO] [stderr] | [INFO] [stderr] 562 | if params.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!params.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/c.rs:303:36 [INFO] [stderr] | [INFO] [stderr] 303 | } else if 'a' <= c && c <= 'z' { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 304 | | true [INFO] [stderr] 305 | | } else if 'A' <= c && c <= 'Z' { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/c.rs:301:29 [INFO] [stderr] | [INFO] [stderr] 301 | if '0' <= c && c <= '9' { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 302 | | true [INFO] [stderr] 303 | | } else if 'a' <= c && c <= 'z' { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/c.rs:307:12 [INFO] [stderr] | [INFO] [stderr] 307 | } else if c == '_' { [INFO] [stderr] | ____________^ [INFO] [stderr] 308 | | true [INFO] [stderr] 309 | | } else { [INFO] [stderr] 310 | | false [INFO] [stderr] 311 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `c == '_'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:113:35 [INFO] [stderr] | [INFO] [stderr] 113 | name: e.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `e.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:182:36 [INFO] [stderr] | [INFO] [stderr] 182 | let name = t.name.unwrap_or(String::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:194:35 [INFO] [stderr] | [INFO] [stderr] 194 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:200:25 [INFO] [stderr] | [INFO] [stderr] 200 | / match t.spec { [INFO] [stderr] 201 | | TypeSpec::Code(TypeCode { code, markup }) => { [INFO] [stderr] 202 | | let mut iter = code.split_whitespace(); [INFO] [stderr] 203 | | let token = iter.next().unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 218 | | _ => (), [INFO] [stderr] 219 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 200 | if let TypeSpec::Code(TypeCode { code, markup }) = t.spec { [INFO] [stderr] 201 | let mut iter = code.split_whitespace(); [INFO] [stderr] 202 | let token = iter.next().unwrap(); [INFO] [stderr] 203 | if token != "#include" { [INFO] [stderr] 204 | panic!("Unexpected token {:?}", token); [INFO] [stderr] 205 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:212:37 [INFO] [stderr] | [INFO] [stderr] 212 | / match tag { [INFO] [stderr] 213 | | TypeCodeMarkup::Name(name) => include.name = name, [INFO] [stderr] 214 | | _ => (), [INFO] [stderr] 215 | | } [INFO] [stderr] | |_____________________________________^ help: try this: `if let TypeCodeMarkup::Name(name) = tag { include.name = name }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:227:35 [INFO] [stderr] | [INFO] [stderr] 227 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:335:39 [INFO] [stderr] | [INFO] [stderr] 335 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:362:35 [INFO] [stderr] | [INFO] [stderr] 362 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:364:40 [INFO] [stderr] | [INFO] [stderr] 364 | is_return: t.returnedonly.unwrap_or(String::new()).as_str() == "true", [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.returnedonly.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/convert.rs:380:35 [INFO] [stderr] | [INFO] [stderr] 380 | name: t.name.unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `t.name.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:429:17 [INFO] [stderr] | [INFO] [stderr] 429 | / match def.len { [INFO] [stderr] 430 | | Some(mut value) => { [INFO] [stderr] 431 | | let null_terminated_part = ",null-terminated"; [INFO] [stderr] 432 | | if value.as_str().ends_with(null_terminated_part) { [INFO] [stderr] ... | [INFO] [stderr] 445 | | None => (), [INFO] [stderr] 446 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 429 | if let Some(mut value) = def.len { [INFO] [stderr] 430 | let null_terminated_part = ",null-terminated"; [INFO] [stderr] 431 | if value.as_str().ends_with(null_terminated_part) { [INFO] [stderr] 432 | field.null_terminate = true; [INFO] [stderr] 433 | let start = value.len() - null_terminated_part.len(); [INFO] [stderr] 434 | value.drain(start..); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/convert.rs:461:1 [INFO] [stderr] | [INFO] [stderr] 461 | / fn process_define_code(r: &mut vkxml::Define, code: String) { [INFO] [stderr] 462 | | fn consume_whitespace(chars: &mut std::str::Chars, mut current: Option) -> Option { [INFO] [stderr] 463 | | while let Some(c) = current { [INFO] [stderr] 464 | | if !c.is_whitespace() { [INFO] [stderr] ... | [INFO] [stderr] 680 | | } [INFO] [stderr] 681 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/convert.rs:667:24 [INFO] [stderr] | [INFO] [stderr] 667 | if r.defref.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!r.defref.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:831:20 [INFO] [stderr] | [INFO] [stderr] 831 | "*" => match r.reference { [INFO] [stderr] | ____________________^ [INFO] [stderr] 832 | | None => r.reference = Some(vkxml::ReferenceType::Pointer), [INFO] [stderr] 833 | | _ => (), [INFO] [stderr] 834 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let None = r.reference { r.reference = Some(vkxml::ReferenceType::Pointer) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:942:9 [INFO] [stderr] | [INFO] [stderr] 942 | / match supported { [INFO] [stderr] 943 | | Some(text) => { [INFO] [stderr] 944 | | if text == "disabled" { [INFO] [stderr] 945 | | disabled = true; [INFO] [stderr] ... | [INFO] [stderr] 950 | | None => (), [INFO] [stderr] 951 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 942 | if let Some(text) = supported { [INFO] [stderr] 943 | if text == "disabled" { [INFO] [stderr] 944 | disabled = true; [INFO] [stderr] 945 | } else { [INFO] [stderr] 946 | match_api = Some(text); [INFO] [stderr] 947 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/convert.rs:1230:17 [INFO] [stderr] | [INFO] [stderr] 1230 | / match def.proto.type_name { [INFO] [stderr] 1231 | | Some(type_name) => r.return_type.basetype = type_name, [INFO] [stderr] 1232 | | None => (), [INFO] [stderr] 1233 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Some(type_name) = def.proto.type_name { r.return_type.basetype = type_name }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/convert.rs:1295:41 [INFO] [stderr] | [INFO] [stderr] 1295 | while let Some(token) = tokens.next() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `for token in tokens { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/types.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | Type(Type), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 87 | Type(Box), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/types.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | Definition(CommandDefinition), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 241 | Definition(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `vk-parse`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "bb865fcee887eec7819af5fe5947495d1bd45e1877950c814f7ea99d587c9e6f"` [INFO] running `"docker" "rm" "-f" "bb865fcee887eec7819af5fe5947495d1bd45e1877950c814f7ea99d587c9e6f"` [INFO] [stdout] bb865fcee887eec7819af5fe5947495d1bd45e1877950c814f7ea99d587c9e6f