@@ -126,6 +126,10 @@ describe('Swift function/initializer formatting', () => {
126
126
} ,
127
127
} ) ;
128
128
129
+ const getText = tokens => tokens . wrappers . reduce ( ( txt , token ) => (
130
+ `${ txt } ${ token . props ( 'text' ) } `
131
+ ) , '' ) ;
132
+
129
133
it ( 'does not add any whitespace for single-param symbols' , ( ) => {
130
134
// Before:
131
135
// init(_ foo: Foo)
@@ -168,14 +172,8 @@ describe('Swift function/initializer formatting', () => {
168
172
} ,
169
173
] ;
170
174
const wrapper = mountWithTokens ( tokens ) ;
171
-
172
175
const tokenComponents = wrapper . findAll ( Token ) ;
173
- expect ( tokenComponents . length ) . toBe ( tokens . length ) ;
174
- tokens . forEach ( ( token , i ) => {
175
- const tokenComponent = tokenComponents . at ( i ) ;
176
- expect ( tokenComponent . props ( 'kind' ) ) . toBe ( token . kind ) ;
177
- expect ( tokenComponent . props ( 'text' ) ) . toBe ( token . text ) ;
178
- } ) ;
176
+ expect ( getText ( tokenComponents ) ) . toBe ( 'init(_ foo: Foo)' ) ;
179
177
} ) ;
180
178
181
179
it ( 'breaks apart each param onto its own line for multi-param symbols' , ( ) => {
@@ -185,7 +183,7 @@ describe('Swift function/initializer formatting', () => {
185
183
// After:
186
184
// func foo(
187
185
// _ a: A,
188
- // _ b: B,
186
+ // _ b: B
189
187
// ) -> Bar
190
188
const tokens = [
191
189
{
@@ -263,22 +261,12 @@ describe('Swift function/initializer formatting', () => {
263
261
const wrapper = mountWithTokens ( tokens ) ;
264
262
265
263
const tokenComponents = wrapper . findAll ( Token ) ;
266
- expect ( tokenComponents . length ) . toBe ( tokens . length ) ;
267
-
268
- const modifiedTokenIndexes = new Set ( [ 3 , 9 , 15 ] ) ;
269
- tokens . forEach ( ( token , i ) => {
270
- const tokenComponent = tokenComponents . at ( i ) ;
271
- expect ( tokenComponent . props ( 'kind' ) ) . toBe ( token . kind ) ;
272
- if ( modifiedTokenIndexes . has ( i ) ) {
273
- expect ( tokenComponent . props ( 'text' ) ) . not . toBe ( token . text ) ;
274
- } else {
275
- expect ( tokenComponent . props ( 'text' ) ) . toBe ( token . text ) ;
276
- }
277
- } ) ;
278
-
279
- expect ( tokenComponents . at ( 3 ) . props ( 'text' ) ) . toBe ( '(\n ' ) ;
280
- expect ( tokenComponents . at ( 9 ) . props ( 'text' ) ) . toBe ( ',\n ' ) ;
281
- expect ( tokenComponents . at ( 15 ) . props ( 'text' ) ) . toBe ( '\n) -> ' ) ;
264
+ expect ( getText ( tokenComponents ) ) . toBe (
265
+ `func foo(
266
+ _ a: A,
267
+ _ b: B
268
+ ) -> Bar` ,
269
+ ) ;
282
270
} ) ;
283
271
284
272
it ( 'breaks apart each param onto its own line for a tuple return type' , ( ) => {
@@ -288,7 +276,7 @@ describe('Swift function/initializer formatting', () => {
288
276
// After:
289
277
// func foo(
290
278
// _ a: A,
291
- // _ b: B,
279
+ // _ b: B
292
280
// ) -> (A, B)
293
281
const tokens = [
294
282
{
@@ -379,34 +367,24 @@ describe('Swift function/initializer formatting', () => {
379
367
const wrapper = mountWithTokens ( tokens ) ;
380
368
381
369
const tokenComponents = wrapper . findAll ( Token ) ;
382
- expect ( tokenComponents . length ) . toBe ( tokens . length ) ;
383
-
384
- const modifiedTokenIndexes = new Set ( [ 3 , 9 , 15 ] ) ;
385
- tokens . forEach ( ( token , i ) => {
386
- const tokenComponent = tokenComponents . at ( i ) ;
387
- expect ( tokenComponent . props ( 'kind' ) ) . toBe ( token . kind ) ;
388
- if ( modifiedTokenIndexes . has ( i ) ) {
389
- expect ( tokenComponent . props ( 'text' ) ) . not . toBe ( token . text ) ;
390
- } else {
391
- expect ( tokenComponent . props ( 'text' ) ) . toBe ( token . text ) ;
392
- }
393
- } ) ;
394
-
395
- expect ( tokenComponents . at ( 3 ) . props ( 'text' ) ) . toBe ( '(\n ' ) ;
396
- expect ( tokenComponents . at ( 9 ) . props ( 'text' ) ) . toBe ( ',\n ' ) ;
397
- expect ( tokenComponents . at ( 15 ) . props ( 'text' ) ) . toBe ( '\n) -> (' ) ;
370
+ expect ( getText ( tokenComponents ) ) . toBe (
371
+ `func foo(
372
+ _ a: A,
373
+ _ b: B
374
+ ) -> (A, B)` ,
375
+ ) ;
398
376
} ) ;
399
377
400
378
it ( 'breaks apart parameters in functions with generic where clauses' , ( ) => {
401
379
/* eslint-disable max-len */
402
380
// Before:
403
- // public func f(t: T, u: U) where T : Sequence, U : Sequence, T.Iterator. Element : Equatable, T.Iterator. Element == U.Iterator .Element
381
+ // public func f(t: T, u: U) where U : Sequence, T : Sequence, T.Element : Equatable, U. Element == T .Element
404
382
//
405
383
// After:
406
384
// public func f(
407
385
// t: T,
408
- // u: U,
409
- // ) where T : Sequence, U : Sequence, T.Iterator. Element : Equatable, T.Iterator. Element == U.Iterator .Element
386
+ // u: U
387
+ // ) where U : Sequence, T : Sequence, T.Element : Equatable, U. Element == T .Element
410
388
/* eslint-enable max-len */
411
389
const tokens = [
412
390
{
@@ -567,22 +545,12 @@ describe('Swift function/initializer formatting', () => {
567
545
const wrapper = mountWithTokens ( tokens ) ;
568
546
569
547
const tokenComponents = wrapper . findAll ( Token ) ;
570
- expect ( tokenComponents . length ) . toBe ( tokens . length ) ;
571
-
572
- const modifiedTokenIndexes = new Set ( [ 5 , 9 , 13 ] ) ;
573
- tokens . forEach ( ( token , i ) => {
574
- const tokenComponent = tokenComponents . at ( i ) ;
575
- expect ( tokenComponent . props ( 'kind' ) ) . toBe ( token . kind ) ;
576
- if ( modifiedTokenIndexes . has ( i ) ) {
577
- expect ( tokenComponent . props ( 'text' ) ) . not . toBe ( token . text ) ;
578
- } else {
579
- expect ( tokenComponent . props ( 'text' ) ) . toBe ( token . text ) ;
580
- }
581
- } ) ;
582
-
583
- expect ( tokenComponents . at ( 5 ) . props ( 'text' ) ) . toBe ( '(\n ' ) ;
584
- expect ( tokenComponents . at ( 9 ) . props ( 'text' ) ) . toBe ( ',\n ' ) ;
585
- expect ( tokenComponents . at ( 13 ) . props ( 'text' ) ) . toBe ( '\n) ' ) ;
548
+ expect ( getText ( tokenComponents ) ) . toBe (
549
+ `public func f(
550
+ t: T,
551
+ u: U
552
+ ) where U : Sequence, T : Sequence, U.Element : Equatable, U.Element == T.Element` ,
553
+ ) ;
586
554
} ) ;
587
555
588
556
it ( 'indents parameters using provided/customizable indentation width' , ( ) => {
@@ -600,7 +568,7 @@ describe('Swift function/initializer formatting', () => {
600
568
// After:
601
569
// func foo(
602
570
// _ a: A,
603
- // _ b: B,
571
+ // _ b: B
604
572
// ) -> Bar
605
573
const tokens = [
606
574
{
@@ -678,22 +646,22 @@ describe('Swift function/initializer formatting', () => {
678
646
const wrapper = mountWithTokens ( tokens ) ;
679
647
680
648
const tokenComponents = wrapper . findAll ( Token ) ;
681
- expect ( tokenComponents . length ) . toBe ( tokens . length ) ;
682
- // should be indented with 2 spaces now instead of the default of 4 spaces
683
- expect ( tokenComponents . at ( 3 ) . props ( 'text' ) ) . toBe ( '(\n ' ) ;
684
- expect ( tokenComponents . at ( 9 ) . props ( 'text' ) ) . toBe ( ',\n ' ) ;
685
- expect ( tokenComponents . at ( 15 ) . props ( 'text' ) ) . toBe ( '\n) -> ' ) ;
649
+ expect ( getText ( tokenComponents ) ) . toBe (
650
+ `func foo(
651
+ _ a: A,
652
+ _ b: B
653
+ ) -> Bar` ,
654
+ ) ;
686
655
687
656
themeSettingsState . theme = originalTheme ;
688
657
} ) ;
689
658
690
- it ( 'breaks attributes onto their own lines ' , ( ) => {
659
+ it ( 'breaks attributes onto their own line ' , ( ) => {
691
660
// Before:
692
661
// @discardableResult @objc (baz) func foobarbaz() -> Int
693
662
//
694
663
// After:
695
- // @discardableResult
696
- // @objc (baz)
664
+ // @discardableResult @objc (baz)
697
665
// func foobarbaz() -> Int
698
666
const tokens = [
699
667
{
@@ -737,9 +705,10 @@ describe('Swift function/initializer formatting', () => {
737
705
const wrapper = mountWithTokens ( tokens ) ;
738
706
739
707
const tokenComponents = wrapper . findAll ( Token ) ;
740
- expect ( tokenComponents . length ) . toBe ( tokens . length ) ;
741
- expect ( tokenComponents . at ( 1 ) . props ( 'text' ) ) . toBe ( '\n' ) ;
742
- expect ( tokenComponents . at ( 3 ) . props ( 'text' ) ) . toBe ( '(baz)\n' ) ;
708
+ expect ( getText ( tokenComponents ) ) . toBe (
709
+ `@discardableResult @objc(baz)
710
+ func foobarbaz() -> Int` ,
711
+ ) ;
743
712
} ) ;
744
713
745
714
it ( 'does not add newlines to attributes within param clause' , ( ) => {
@@ -782,11 +751,27 @@ describe('Swift function/initializer formatting', () => {
782
751
text : ')' ,
783
752
} ,
784
753
] ;
785
- const wrapper = mountWithTokens ( tokens ) ;
754
+ let wrapper = mountWithTokens ( tokens ) ;
786
755
787
- const tokenComponents = wrapper . findAll ( Token ) ;
788
- expect ( tokenComponents . length ) . toBe ( tokens . length ) ;
789
- expect ( tokenComponents . at ( 6 ) . props ( 'text' ) ) . toBe ( tokens [ 6 ] . text ) ;
790
- expect ( tokenComponents . at ( 7 ) . props ( 'text' ) ) . toBe ( tokens [ 7 ] . text ) ;
756
+ let tokenComponents = wrapper . findAll ( Token ) ;
757
+ expect ( getText ( tokenComponents ) ) . toBe ( 'func foo(bar: @escaping () -> ())' ) ;
758
+
759
+ // @discardableResult func foo(bar: @escaping () -> ()) -> Int
760
+ wrapper = mountWithTokens ( [
761
+ { kind : 'attribute' , text : '@discardableResult' } ,
762
+ { kind : 'text' , text : ' ' } ,
763
+ ...tokens ,
764
+ { kind : 'text' , text : ' -> ' } ,
765
+ {
766
+ kind : 'typeIdentifier' ,
767
+ identifier : 'doc://com.example/documentation/blah/int' ,
768
+ text : 'Int' ,
769
+ } ,
770
+ ] ) ;
771
+ tokenComponents = wrapper . findAll ( Token ) ;
772
+ expect ( getText ( tokenComponents ) ) . toBe (
773
+ `@discardableResult
774
+ func foo(bar: @escaping () -> ()) -> Int` ,
775
+ ) ;
791
776
} ) ;
792
777
} ) ;
0 commit comments