Add codegen tests for the genericity of fold closures
This commit is contained in:
parent
6a04c762ff
commit
755c091b71
14
src/test/codegen/iter-fold-closure-no-dupes.rs
Normal file
14
src/test/codegen/iter-fold-closure-no-dupes.rs
Normal file
@ -0,0 +1,14 @@
|
||||
//! Check that fold closures aren't duplicated for each iterator type.
|
||||
// compile-flags: -C opt-level=0
|
||||
|
||||
fn main() {
|
||||
(0i32..10).by_ref().count();
|
||||
(0i32..=10).by_ref().count();
|
||||
}
|
||||
|
||||
// `count` calls `fold`, which calls `try_fold` -- find the `fold` closure:
|
||||
// CHECK: {{^define.*Iterator::fold::.*closure}}
|
||||
//
|
||||
// Only one closure is needed for both `count` calls, even from different
|
||||
// monomorphized iterator types, as it's only generic over the item type.
|
||||
// CHECK-NOT: {{^define.*Iterator::fold::.*closure}}
|
10
src/test/codegen/iter-fold-closure-no-iterator.rs
Normal file
10
src/test/codegen/iter-fold-closure-no-iterator.rs
Normal file
@ -0,0 +1,10 @@
|
||||
//! Check that fold closures aren't generic in the iterator type.
|
||||
// compile-flags: -C opt-level=0
|
||||
|
||||
fn main() {
|
||||
(0i32..10).by_ref().count();
|
||||
}
|
||||
|
||||
// `count` calls `fold`, which calls `try_fold` -- that `fold` closure should
|
||||
// not be generic in the iterator type, only in the item type.
|
||||
// CHECK-NOT: {{^define.*Iterator::fold::.*closure.*Range}}
|
Loading…
x
Reference in New Issue
Block a user