Skip to content

Commit 66bf27f

Browse files
authored
Adding an extra rule for splitting params if the list is longer than 2 independent of the length on the line (#257)
1 parent b1c4e12 commit 66bf27f

File tree

12 files changed

+243
-70
lines changed

12 files changed

+243
-70
lines changed

src/nodes/FunctionDefinition.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const {
22
doc: {
3-
builders: { concat, dedent, group, indent, join, line }
3+
builders: { concat, dedent, group, hardline, indent, join, line }
44
}
55
} = require('prettier/standalone');
66

@@ -25,7 +25,15 @@ const functionName = (node, options) => {
2525

2626
const parameters = (parametersType, node, path, print) =>
2727
node[parametersType] && node[parametersType].length > 0
28-
? printSeparatedList(path.map(print, parametersType))
28+
? printSeparatedList(path.map(print, parametersType), {
29+
separator: concat([
30+
',',
31+
// To keep consistency any list of parameters will split if it's longer than 2.
32+
// For more information see:
33+
// https://github.com/prettier-solidity/prettier-plugin-solidity/issues/256
34+
node[parametersType].length > 2 ? hardline : line
35+
])
36+
})
2937
: '';
3038

3139
const visibility = (node) =>

src/nodes/ModifierDefinition.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const {
22
doc: {
3-
builders: { concat }
3+
builders: { concat, hardline, line }
44
}
55
} = require('prettier/standalone');
66

@@ -9,7 +9,19 @@ const printSeparatedList = require('./print-separated-list');
99
const modifierParameters = (node, path, print) => {
1010
if (node.parameters) {
1111
return node.parameters.length > 0
12-
? concat(['(', printSeparatedList(path.map(print, 'parameters')), ')'])
12+
? concat([
13+
'(',
14+
printSeparatedList(path.map(print, 'parameters'), {
15+
separator: concat([
16+
',',
17+
// To keep consistency any list of parameters will split if it's longer than 2.
18+
// For more information see:
19+
// https://github.com/prettier-solidity/prettier-plugin-solidity/issues/256
20+
node.parameters.length > 2 ? hardline : line
21+
])
22+
}),
23+
')'
24+
])
1325
: '()';
1426
}
1527

tests/AllSolidityFeatures/__snapshots__/jsfmt.spec.js.snap

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,11 @@ contract DualIndex {
656656
admin = msg.sender;
657657
}
658658
659-
function set(uint256 key1, uint256 key2, uint256 value) restricted {
659+
function set(
660+
uint256 key1,
661+
uint256 key2,
662+
uint256 value
663+
) restricted {
660664
uint256[2][4] memory defaults; // "memory" broke things at one time.
661665
data[key1][key2] = value;
662666
}
@@ -870,13 +874,21 @@ contract Ballot {
870874
function foobar()
871875
payable
872876
owner(myPrice)
873-
returns (uint256[], address myAdd, string[] names)
877+
returns (
878+
uint256[],
879+
address myAdd,
880+
string[] names
881+
)
874882
{}
875883
876884
function foobar()
877885
payable
878886
owner(myPrice)
879-
returns (uint256[], address myAdd, string[] names);
887+
returns (
888+
uint256[],
889+
address myAdd,
890+
string[] names
891+
);
880892
881893
Voter you = Voter(1, true);
882894

tests/ExplicitVariableTypes/__snapshots__/jsfmt.spec.js.snap

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,17 @@ contract VariableTypesMixed {
6868
uint256 _e,
6969
int256 _f,
7070
bytes1 _g
71-
) public returns (uint256, int256, bytes1, uint256, int256, bytes1) {
71+
)
72+
public
73+
returns (
74+
uint256,
75+
int256,
76+
bytes1,
77+
uint256,
78+
int256,
79+
bytes1
80+
)
81+
{
7282
emit Event(_a, _b, _c, _e, _f, _g);
7383
return (_a, _b, _c, _e, _f, _g);
7484
}
@@ -130,9 +140,23 @@ contract VariableTypesMixed {
130140
131141
event Event(uint _a, int _b, byte _c, uint _e, int _f, byte _g);
132142
133-
function func(uint _a, int _b, byte _c, uint _e, int _f, byte _g)
143+
function func(
144+
uint _a,
145+
int _b,
146+
byte _c,
147+
uint _e,
148+
int _f,
149+
byte _g
150+
)
134151
public
135-
returns (uint, int, byte, uint, int, byte)
152+
returns (
153+
uint,
154+
int,
155+
byte,
156+
uint,
157+
int,
158+
byte
159+
)
136160
{
137161
emit Event(_a, _b, _c, _e, _f, _g);
138162
return (_a, _b, _c, _e, _f, _g);
@@ -195,9 +219,23 @@ contract VariableTypesMixed {
195219
196220
event Event(uint _a, int256 _b, bytes1 _c, uint256 _e, int _f, byte _g);
197221
198-
function func(uint256 _a, int256 _b, byte _c, uint _e, int _f, bytes1 _g)
222+
function func(
223+
uint256 _a,
224+
int256 _b,
225+
byte _c,
226+
uint _e,
227+
int _f,
228+
bytes1 _g
229+
)
199230
public
200-
returns (uint, int256, byte, uint256, int, bytes1)
231+
returns (
232+
uint,
233+
int256,
234+
byte,
235+
uint256,
236+
int,
237+
bytes1
238+
)
201239
{
202240
emit Event(_a, _b, _c, _e, _f, _g);
203241
return (_a, _b, _c, _e, _f, _g);

tests/FunctionDefinitions/__snapshots__/jsfmt.spec.js.snap

Lines changed: 83 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -168,19 +168,32 @@ interface FunctionInterfaces {
168168
uint256 y10
169169
);
170170
171-
function someParamsSomeModifiers(uint256 x1, uint256 x2, uint256 x3)
172-
modifier1
173-
modifier2
174-
modifier3;
171+
function someParamsSomeModifiers(
172+
uint256 x1,
173+
uint256 x2,
174+
uint256 x3
175+
) modifier1 modifier2 modifier3;
175176
176-
function someParamsSomeReturns(uint256 x1, uint256 x2, uint256 x3)
177-
returns (uint256 y1, uint256 y2, uint256 y3);
177+
function someParamsSomeReturns(
178+
uint256 x1,
179+
uint256 x2,
180+
uint256 x3
181+
)
182+
returns (
183+
uint256 y1,
184+
uint256 y2,
185+
uint256 y3
186+
);
178187
179188
function someModifiersSomeReturns()
180189
modifier1
181190
modifier2
182191
modifier3
183-
returns (uint256 y1, uint256 y2, uint256 y3);
192+
returns (
193+
uint256 y1,
194+
uint256 y2,
195+
uint256 y3
196+
);
184197
185198
function someParamSomeModifiersSomeReturns(
186199
uint256 x1,
@@ -190,9 +203,17 @@ interface FunctionInterfaces {
190203
modifier1
191204
modifier2
192205
modifier3
193-
returns (uint256 y1, uint256 y2, uint256 y3);
206+
returns (
207+
uint256 y1,
208+
uint256 y2,
209+
uint256 y3
210+
);
194211
195-
function someParamsManyModifiers(uint256 x1, uint256 x2, uint256 x3)
212+
function someParamsManyModifiers(
213+
uint256 x1,
214+
uint256 x2,
215+
uint256 x3
216+
)
196217
modifier1
197218
modifier2
198219
modifier3
@@ -204,7 +225,11 @@ interface FunctionInterfaces {
204225
modifier9
205226
modifier10;
206227
207-
function someParamsManyReturns(uint256 x1, uint256 x2, uint256 x3)
228+
function someParamsManyReturns(
229+
uint256 x1,
230+
uint256 x2,
231+
uint256 x3
232+
)
208233
returns (
209234
uint256 y1,
210235
uint256 y2,
@@ -242,7 +267,12 @@ interface FunctionInterfaces {
242267
uint256 x8,
243268
uint256 x9,
244269
uint256 x10
245-
) returns (uint256 y1, uint256 y2, uint256 y3);
270+
)
271+
returns (
272+
uint256 y1,
273+
uint256 y2,
274+
uint256 y3
275+
);
246276
247277
function manyParamsManyModifiers(
248278
uint256 x1,
@@ -403,16 +433,24 @@ contract FunctionDefinitions {
403433
a = 1;
404434
}
405435
406-
function someParamsSomeModifiers(uint256 x1, uint256 x2, uint256 x3)
407-
modifier1
408-
modifier2
409-
modifier3
410-
{
436+
function someParamsSomeModifiers(
437+
uint256 x1,
438+
uint256 x2,
439+
uint256 x3
440+
) modifier1 modifier2 modifier3 {
411441
a = 1;
412442
}
413443
414-
function someParamsSomeReturns(uint256 x1, uint256 x2, uint256 x3)
415-
returns (uint256 y1, uint256 y2, uint256 y3)
444+
function someParamsSomeReturns(
445+
uint256 x1,
446+
uint256 x2,
447+
uint256 x3
448+
)
449+
returns (
450+
uint256 y1,
451+
uint256 y2,
452+
uint256 y3
453+
)
416454
{
417455
a = 1;
418456
}
@@ -421,7 +459,11 @@ contract FunctionDefinitions {
421459
modifier1
422460
modifier2
423461
modifier3
424-
returns (uint256 y1, uint256 y2, uint256 y3)
462+
returns (
463+
uint256 y1,
464+
uint256 y2,
465+
uint256 y3
466+
)
425467
{
426468
a = 1;
427469
}
@@ -434,12 +476,20 @@ contract FunctionDefinitions {
434476
modifier1
435477
modifier2
436478
modifier3
437-
returns (uint256 y1, uint256 y2, uint256 y3)
479+
returns (
480+
uint256 y1,
481+
uint256 y2,
482+
uint256 y3
483+
)
438484
{
439485
a = 1;
440486
}
441487
442-
function someParamsManyModifiers(uint256 x1, uint256 x2, uint256 x3)
488+
function someParamsManyModifiers(
489+
uint256 x1,
490+
uint256 x2,
491+
uint256 x3
492+
)
443493
modifier1
444494
modifier2
445495
modifier3
@@ -454,7 +504,11 @@ contract FunctionDefinitions {
454504
a = 1;
455505
}
456506
457-
function someParamsManyReturns(uint256 x1, uint256 x2, uint256 x3)
507+
function someParamsManyReturns(
508+
uint256 x1,
509+
uint256 x2,
510+
uint256 x3
511+
)
458512
returns (
459513
uint256 y1,
460514
uint256 y2,
@@ -497,7 +551,13 @@ contract FunctionDefinitions {
497551
uint256 x8,
498552
uint256 x9,
499553
uint256 x10
500-
) returns (uint256 y1, uint256 y2, uint256 y3) {
554+
)
555+
returns (
556+
uint256 y1,
557+
uint256 y2,
558+
uint256 y3
559+
)
560+
{
501561
a = 1;
502562
}
503563
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
contract ModifierDefinitions {
2+
modifier noParams() {}
3+
modifier oneParam(uint a) {}
4+
modifier twoParams(uint a,uint b) {}
5+
modifier threeParams(uint a,uint b ,uint c) {}
6+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`ModifierDefinitions.sol 1`] = `
4+
contract ModifierDefinitions {
5+
modifier noParams() {}
6+
modifier oneParam(uint a) {}
7+
modifier twoParams(uint a,uint b) {}
8+
modifier threeParams(uint a,uint b ,uint c) {}
9+
}
10+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11+
contract ModifierDefinitions {
12+
modifier noParams() {}
13+
modifier oneParam(uint256 a) {}
14+
modifier twoParams(uint256 a, uint256 b) {}
15+
modifier threeParams(
16+
uint256 a,
17+
uint256 b,
18+
uint256 c
19+
) {}
20+
}
21+
22+
`;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
run_spec(__dirname);

tests/SplittableCommodity/__snapshots__/jsfmt.spec.js.snap

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,11 @@ contract SplittableCommodity is MintableCommodity {
7777
bytes operatorData
7878
);
7979
80-
function split(uint256 _tokenId, address _to, uint256 _amount)
81-
public
82-
whenNotPaused
83-
{
80+
function split(
81+
uint256 _tokenId,
82+
address _to,
83+
uint256 _amount
84+
) public whenNotPaused {
8485
address supplierProxy = IContractRegistry(contractRegistry)
8586
.getLatestProxyAddr("Supplier");
8687
require(

0 commit comments

Comments
 (0)