|
| 1 | +// https://github.com/swiftlang/swift/issues/78690 |
| 2 | +// rdar://143077965 |
| 3 | + |
| 4 | +protocol P { |
| 5 | + associatedtype R |
| 6 | +} |
| 7 | + |
| 8 | +func foo<each T>(_ xs: repeat each T) { |
| 9 | + for x in repeat each xs { |
| 10 | + // RUN: %sourcekitd-test -req=cursor -pos=%(line-1):7 %s -- %s | %FileCheck %s --check-prefix=BASIC |
| 11 | + // BASIC: s:4main3fooyyxxQpRvzlF1xL_qd__vp |
| 12 | + for x2 in repeat each xs { |
| 13 | + // RUN: %sourcekitd-test -req=cursor -pos=%(line-1):9 %s -- %s | %FileCheck %s --check-prefix=NESTED |
| 14 | + // NESTED: s:4main3fooyyxxQpRvzlF2x2L_qd0__vp |
| 15 | + } |
| 16 | + } |
| 17 | +} |
| 18 | + |
| 19 | +func bar<each T, each U>(xs: repeat each T, ys: repeat each U) { |
| 20 | + for x1 in repeat each xs { |
| 21 | + for y1 in repeat each ys { |
| 22 | + func localFn() { |
| 23 | + for x2 in repeat each xs { |
| 24 | + for y2 in repeat each ys { |
| 25 | + let k = (x1, y1, x2, y2) |
| 26 | + // RUN: %sourcekitd-test -req=cursor -pos=%(line-1):17 %s -- %s | %FileCheck %s --check-prefix=DOUBLENESTED |
| 27 | + // DOUBLENESTED: s:4main3bar2xs2ysyxxQp_q_q_QptRvzRv_r0_lF7localFnL_yyRvzRv_r0_lF1kL_qd___qd0__qd1__qd2__tvp |
| 28 | + // -> (A1, A2, A3, A4) |
| 29 | + } |
| 30 | + } |
| 31 | + } |
| 32 | + } |
| 33 | + } |
| 34 | +} |
| 35 | + |
| 36 | +func baz<each T, each U, each V>( |
| 37 | + ts: repeat each T, us: repeat each U, urs: repeat (each U).R, vs: repeat each V |
| 38 | +) where repeat each U: P, (repeat (each U, each V)): Any { |
| 39 | + for t in repeat each ts { |
| 40 | + func localFn() { |
| 41 | + for y in repeat each us { |
| 42 | + func genericLocalFn<A>(_ a: A) { |
| 43 | + for (u, ur, v) in repeat (each us, each urs, each vs) { |
| 44 | + let k = (a, t, y, u, ur, v) |
| 45 | + // RUN: %sourcekitd-test -req=cursor -pos=%(line-1):17 %s -- %s | %FileCheck %s --check-prefix=TUPLE1 |
| 46 | + // TUPLE1: s:4main3baz2ts2us3urs2vsyxxQp_q_q_Qp1RQy_q_Qpq0_q_QptRvzRv_Rv0_AA1PR_q0_Rh_r1_lF7localFnL_yyRvzRv_Rv0_AaIR_q0_Rh_r1_lF012genericLocalH0L_yyqd__RvzRv_Rv0_AaIR_q0_Rh_r1__lF1kL_qd___qd0__qd1__qd2__AgaIPQyd2__qd2_0_tvp |
| 47 | + // -> (A1, A2, A3, A4, A4.main.P.R, B4) |
| 48 | + |
| 49 | + _ = { |
| 50 | + let k = (a, t, y, u, ur, v) |
| 51 | + // RUN: %sourcekitd-test -req=cursor -pos=%(line-1):19 %s -- %s | %FileCheck %s --check-prefix=TUPLE2 |
| 52 | + // TUPLE2: s:4main3baz2ts2us3urs2vsyxxQp_q_q_Qp1RQy_q_Qpq0_q_QptRvzRv_Rv0_AA1PR_q0_Rh_r1_lF7localFnL_yyRvzRv_Rv0_AaIR_q0_Rh_r1_lF012genericLocalH0L_yyqd__RvzRv_Rv0_AaIR_q0_Rh_r1__lFyycfU_1kL_qd___qd0__qd1__qd2__AgaIPQyd2__qd2_0_tvp |
| 53 | + // -> (A1, A2, A3, A4, A4.main.P.R, B4) |
| 54 | + } |
| 55 | + } |
| 56 | + } |
| 57 | + } |
| 58 | + } |
| 59 | + } |
| 60 | +} |
0 commit comments