summaryrefslogtreecommitdiffstats
path: root/src/tools/rustfmt/tests/target/type.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rustfmt/tests/target/type.rs')
-rw-r--r--src/tools/rustfmt/tests/target/type.rs175
1 files changed, 175 insertions, 0 deletions
diff --git a/src/tools/rustfmt/tests/target/type.rs b/src/tools/rustfmt/tests/target/type.rs
new file mode 100644
index 000000000..38cf909c2
--- /dev/null
+++ b/src/tools/rustfmt/tests/target/type.rs
@@ -0,0 +1,175 @@
+// rustfmt-normalize_comments: true
+fn types() {
+ let x: [Vec<_>] = [];
+ let y: *mut [SomeType; konst_funk()] = expr();
+ let z: (/* #digits */ usize, /* exp */ i16) = funk();
+ let z: (usize /* #digits */, i16 /* exp */) = funk();
+}
+
+struct F {
+ f: extern "C" fn(x: u8, ... /* comment */),
+ g: extern "C" fn(x: u8, /* comment */ ...),
+ h: extern "C" fn(x: u8, ...),
+ i: extern "C" fn(
+ x: u8,
+ // comment 4
+ y: String, // comment 3
+ z: Foo,
+ // comment
+ ... // comment 2
+ ),
+}
+
+fn issue_1006(def_id_to_string: for<'a, 'b> unsafe fn(TyCtxt<'b, 'tcx, 'tcx>, DefId) -> String) {}
+
+fn impl_trait_fn_1() -> impl Fn(i32) -> Option<u8> {}
+
+fn impl_trait_fn_2<E>() -> impl Future<Item = &'a i64, Error = E> {}
+
+fn issue_1234() {
+ do_parse!(name: take_while1!(is_token) >> (Header))
+}
+
+// #2510
+impl CombineTypes {
+ pub fn pop_callback(
+ &self,
+ query_id: Uuid,
+ ) -> Option<(
+ ProjectId,
+ Box<FnMut(&ProjectState, serde_json::Value, bool) -> () + Sync + Send>,
+ )> {
+ self.query_callbacks()(&query_id)
+ }
+}
+
+// #2859
+pub fn do_something<'a, T: Trait1 + Trait2 + 'a>(
+ &fooo: u32,
+) -> impl Future<
+ Item = (
+ impl Future<Item = (), Error = SomeError> + 'a,
+ impl Future<Item = (), Error = SomeError> + 'a,
+ impl Future<Item = (), Error = SomeError> + 'a,
+ ),
+ Error = SomeError,
+> + 'a {
+}
+
+pub fn do_something<'a, T: Trait1 + Trait2 + 'a>(
+ &fooo: u32,
+) -> impl Future<
+ Item = (
+ impl Future<Item = (), Error = SomeError> + 'a,
+ impl Future<Item = (), Error = SomeError> + 'a,
+ impl Future<Item = (), Error = SomeError> + 'a,
+ ),
+ Error = SomeError,
+> + Future<
+ Item = (
+ impl Future<Item = (), Error = SomeError> + 'a,
+ impl Future<Item = (), Error = SomeError> + 'a,
+ impl Future<Item = (), Error = SomeError> + 'a,
+ ),
+ Error = SomeError,
+> + Future<
+ Item = (
+ impl Future<Item = (), Error = SomeError> + 'a,
+ impl Future<Item = (), Error = SomeError> + 'a,
+ impl Future<Item = (), Error = SomeError> + 'a,
+ ),
+ Error = SomeError,
+> + 'a + 'b + 'c {
+}
+
+// #3051
+token![impl];
+token![impl];
+
+// #3060
+macro_rules! foo {
+ ($foo_api: ty) => {
+ type Target = ($foo_api) + 'static;
+ };
+}
+
+type Target = (FooAPI) + 'static;
+
+// #3137
+fn foo<T>(t: T)
+where
+ T: (FnOnce() -> ()) + Clone,
+ U: (FnOnce() -> ()) + 'static,
+{
+}
+
+// #3117
+fn issue3117() {
+ {
+ {
+ {
+ {
+ {
+ {
+ {
+ {
+ let opt: &mut Option<MyLongTypeHere> =
+ unsafe { &mut *self.future.get() };
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+// #3139
+fn issue3139() {
+ assert_eq!(
+ to_json_value(&None::<i32>).unwrap(),
+ json!({ "test": None::<i32> })
+ );
+}
+
+// #3180
+fn foo(
+ a: SomeLongComplexType,
+ b: SomeOtherLongComplexType,
+) -> Box<Future<Item = AnotherLongType, Error = ALongErrorType>> {
+}
+
+type MyFn = fn(
+ a: SomeLongComplexType,
+ b: SomeOtherLongComplexType,
+) -> Box<Future<Item = AnotherLongType, Error = ALongErrorType>>;
+
+// Const bound
+
+trait T: ~const Super {}
+
+const fn not_quite_const<S: ~const T>() -> i32 {
+ <S as T>::CONST
+}
+
+struct S<T: ~const ?Sized>(std::marker::PhantomData<T>);
+
+impl ~const T {}
+
+fn apit(_: impl ~const T) {}
+
+fn rpit() -> impl ~const T {
+ S
+}
+
+pub struct Foo<T: Trait>(T);
+impl<T: ~const Trait> Foo<T> {
+ fn new(t: T) -> Self {
+ Self(t)
+ }
+}
+
+// #4357
+type T = typeof(1);
+impl T for .. {}