Skip to content

Commit

Permalink
Separate tests for BTreeMap with zero-sized values
Browse files Browse the repository at this point in the history
  • Loading branch information
korrat committed Dec 9, 2020
1 parent 4e2bfa2 commit a71a13c
Show file tree
Hide file tree
Showing 4 changed files with 190 additions and 25 deletions.
68 changes: 68 additions & 0 deletions tests/ui/zero_sized_btreemap_values.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#![warn(clippy::zero_sized_map_values)]
use std::collections::BTreeMap;

const CONST_OK: Option<BTreeMap<String, usize>> = None;
const CONST_NOT_OK: Option<BTreeMap<String, ()>> = None;

static STATIC_OK: Option<BTreeMap<String, usize>> = None;
static STATIC_NOT_OK: Option<BTreeMap<String, ()>> = None;

type OkMap = BTreeMap<String, usize>;
type NotOkMap = BTreeMap<String, ()>;

enum TestEnum {
Ok(BTreeMap<String, usize>),
NotOk(BTreeMap<String, ()>),
}

struct Test {
ok: BTreeMap<String, usize>,
not_ok: BTreeMap<String, ()>,

also_not_ok: Vec<BTreeMap<usize, ()>>,
}

trait TestTrait {
type Output;

fn produce_output() -> Self::Output;

fn weird_map(&self, map: BTreeMap<usize, ()>);
}

impl Test {
fn ok(&self) -> BTreeMap<String, usize> {
todo!()
}

fn not_ok(&self) -> BTreeMap<String, ()> {
todo!()
}
}

impl TestTrait for Test {
type Output = BTreeMap<String, ()>;

fn produce_output() -> Self::Output {
todo!();
}

fn weird_map(&self, map: BTreeMap<usize, ()>) {
todo!();
}
}

fn test(map: BTreeMap<String, ()>, key: &str) -> BTreeMap<String, ()> {
todo!();
}

fn test2(map: BTreeMap<String, usize>, key: &str) -> BTreeMap<String, usize> {
todo!();
}

fn main() {
let _: BTreeMap<String, ()> = BTreeMap::new();
let _: BTreeMap<String, usize> = BTreeMap::new();

let _: BTreeMap<_, _> = std::iter::empty::<(String, ())>().collect();
}
107 changes: 107 additions & 0 deletions tests/ui/zero_sized_btreemap_values.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:5:28
|
LL | const CONST_NOT_OK: Option<BTreeMap<String, ()>> = None;
| ^^^^^^^^^^^^^^^^^^^^
|
= note: `-D clippy::zero-sized-map-values` implied by `-D warnings`
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:8:30
|
LL | static STATIC_NOT_OK: Option<BTreeMap<String, ()>> = None;
| ^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:11:17
|
LL | type NotOkMap = BTreeMap<String, ()>;
| ^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:15:11
|
LL | NotOk(BTreeMap<String, ()>),
| ^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:20:13
|
LL | not_ok: BTreeMap<String, ()>,
| ^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:22:22
|
LL | also_not_ok: Vec<BTreeMap<usize, ()>>,
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:30:30
|
LL | fn weird_map(&self, map: BTreeMap<usize, ()>);
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:38:25
|
LL | fn not_ok(&self) -> BTreeMap<String, ()> {
| ^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:55:14
|
LL | fn test(map: BTreeMap<String, ()>, key: &str) -> BTreeMap<String, ()> {
| ^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:55:50
|
LL | fn test(map: BTreeMap<String, ()>, key: &str) -> BTreeMap<String, ()> {
| ^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:64:35
|
LL | let _: BTreeMap<String, ()> = BTreeMap::new();
| ^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:64:12
|
LL | let _: BTreeMap<String, ()> = BTreeMap::new();
| ^^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_btreemap_values.rs:67:12
|
LL | let _: BTreeMap<_, _> = std::iter::empty::<(String, ())>().collect();
| ^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: aborting due to 13 previous errors

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#![warn(clippy::zero_sized_map_values)]
use std::collections::{BTreeMap, HashMap};
use std::collections::HashMap;

const CONST_OK: Option<HashMap<String, usize>> = None;
const CONST_NOT_OK: Option<HashMap<String, ()>> = None;
Expand Down Expand Up @@ -61,10 +61,8 @@ fn test2(map: HashMap<String, usize>, key: &str) -> HashMap<String, usize> {
}

fn main() {
// test code goes here
let _: HashMap<String, ()> = HashMap::new();
let _: HashMap<String, usize> = HashMap::new();

let _: HashMap<_, _> = std::iter::empty::<(String, ())>().collect();
let _: BTreeMap<_, _> = std::iter::empty::<(String, ())>().collect();
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:5:28
--> $DIR/zero_sized_hashmap_values.rs:5:28
|
LL | const CONST_NOT_OK: Option<HashMap<String, ()>> = None;
| ^^^^^^^^^^^^^^^^^^^
Expand All @@ -8,108 +8,100 @@ LL | const CONST_NOT_OK: Option<HashMap<String, ()>> = None;
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:8:30
--> $DIR/zero_sized_hashmap_values.rs:8:30
|
LL | static STATIC_NOT_OK: Option<HashMap<String, ()>> = None;
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:11:17
--> $DIR/zero_sized_hashmap_values.rs:11:17
|
LL | type NotOkMap = HashMap<String, ()>;
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:15:11
--> $DIR/zero_sized_hashmap_values.rs:15:11
|
LL | NotOk(HashMap<String, ()>),
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:20:13
--> $DIR/zero_sized_hashmap_values.rs:20:13
|
LL | not_ok: HashMap<String, ()>,
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:22:22
--> $DIR/zero_sized_hashmap_values.rs:22:22
|
LL | also_not_ok: Vec<HashMap<usize, ()>>,
| ^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:30:30
--> $DIR/zero_sized_hashmap_values.rs:30:30
|
LL | fn weird_map(&self, map: HashMap<usize, ()>);
| ^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:38:25
--> $DIR/zero_sized_hashmap_values.rs:38:25
|
LL | fn not_ok(&self) -> HashMap<String, ()> {
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:55:14
--> $DIR/zero_sized_hashmap_values.rs:55:14
|
LL | fn test(map: HashMap<String, ()>, key: &str) -> HashMap<String, ()> {
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:55:49
--> $DIR/zero_sized_hashmap_values.rs:55:49
|
LL | fn test(map: HashMap<String, ()>, key: &str) -> HashMap<String, ()> {
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:65:34
--> $DIR/zero_sized_hashmap_values.rs:64:34
|
LL | let _: HashMap<String, ()> = HashMap::new();
| ^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:65:12
--> $DIR/zero_sized_hashmap_values.rs:64:12
|
LL | let _: HashMap<String, ()> = HashMap::new();
| ^^^^^^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:68:12
--> $DIR/zero_sized_hashmap_values.rs:67:12
|
LL | let _: HashMap<_, _> = std::iter::empty::<(String, ())>().collect();
| ^^^^^^^^^^^^^
|
= help: consider using a set instead

error: map with zero-sized value type
--> $DIR/zero_sized_map_values.rs:69:12
|
LL | let _: BTreeMap<_, _> = std::iter::empty::<(String, ())>().collect();
| ^^^^^^^^^^^^^^
|
= help: consider using a set instead

error: aborting due to 14 previous errors
error: aborting due to 13 previous errors

0 comments on commit a71a13c

Please sign in to comment.