Skip to content

Commit d098065

Browse files
committed
Add tests for #2704.
1 parent 1b3257d commit d098065

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

tests/source/expr.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,3 +398,41 @@ fn foo() {
398398
let my_var =
399399
Mutex::new(RpcClientType::connect(server_iddd).chain_err(|| "Unable to create RPC client")?);
400400
}
401+
402+
// #2704
403+
// Method call with prefix and suffix.
404+
fn issue2704() {
405+
// We should not combine the callee with a multi-lined method call.
406+
let requires = requires.set(&requires0
407+
.concat(&requires1)
408+
.concat(&requires2)
409+
.distinct_total());
410+
let requires = requires.set(box requires0
411+
.concat(&requires1)
412+
.concat(&requires2)
413+
.distinct_total());
414+
let requires = requires.set(requires0
415+
.concat(&requires1)
416+
.concat(&requires2)
417+
.distinct_total() as u32);
418+
let requires = requires.set(requires0
419+
.concat(&requires1)
420+
.concat(&requires2)
421+
.distinct_total()?);
422+
let requires = requires.set(!requires0
423+
.concat(&requires1)
424+
.concat(&requires2)
425+
.distinct_total());
426+
// We should combine a small callee with an argument.
427+
bar(vec![22]
428+
.into_iter()
429+
.map(|x| x * 2)
430+
.filter(|_| true)
431+
.collect());
432+
// But we should not combine a long callee with an argument.
433+
barrrr(vec![22]
434+
.into_iter()
435+
.map(|x| x * 2)
436+
.filter(|_| true)
437+
.collect());
438+
}

tests/target/expr.rs

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,56 @@ fn dots() {
424424
// A function call with a large single argument.
425425
fn foo() {
426426
let my_var = Mutex::new(
427-
RpcClientType::connect(server_iddd).chain_err(|| "Unable to create RPC client")?
427+
RpcClientType::connect(server_iddd).chain_err(|| "Unable to create RPC client")?,
428+
);
429+
}
430+
431+
// #2704
432+
// Method call with prefix and suffix.
433+
fn issue2704() {
434+
// We should not combine the callee with a multi-lined method call.
435+
let requires = requires.set(
436+
&requires0
437+
.concat(&requires1)
438+
.concat(&requires2)
439+
.distinct_total(),
440+
);
441+
let requires = requires.set(
442+
box requires0
443+
.concat(&requires1)
444+
.concat(&requires2)
445+
.distinct_total(),
446+
);
447+
let requires = requires.set(
448+
requires0
449+
.concat(&requires1)
450+
.concat(&requires2)
451+
.distinct_total() as u32,
452+
);
453+
let requires = requires.set(
454+
requires0
455+
.concat(&requires1)
456+
.concat(&requires2)
457+
.distinct_total()?,
458+
);
459+
let requires = requires.set(
460+
!requires0
461+
.concat(&requires1)
462+
.concat(&requires2)
463+
.distinct_total(),
464+
);
465+
// We should combine a small callee with an argument.
466+
bar(vec![22]
467+
.into_iter()
468+
.map(|x| x * 2)
469+
.filter(|_| true)
470+
.collect());
471+
// But we should not combine a long callee with an argument.
472+
barrrr(
473+
vec![22]
474+
.into_iter()
475+
.map(|x| x * 2)
476+
.filter(|_| true)
477+
.collect(),
428478
);
429479
}

0 commit comments

Comments
 (0)