Skip to content

Commit 62381ec

Browse files
committed
Add basic formatting for AssemblyFunctionDefinition
1 parent cb745bf commit 62381ec

File tree

7 files changed

+151
-3
lines changed

7 files changed

+151
-3
lines changed

__tests__/nodes/__snapshots__/index.test.js.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Array [
88
"AssemblyCall",
99
"AssemblyCase",
1010
"AssemblyFor",
11+
"AssemblyFunctionDefinition",
1112
"AssemblyIf",
1213
"AssemblyLocalDefinition",
1314
"AssemblySwitch",

scripts/__snapshots__/makeData.test.js.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ exports[`makeData to match snapshot for nodes 1`] = `
1313
1414
/* eslint-disable global-require */
1515
16-
module.exports = {ArrayTypeName:require('./ArrayTypeName.js'),AssemblyAssignment:require('./AssemblyAssignment.js'),AssemblyBlock:require('./AssemblyBlock.js'),AssemblyCall:require('./AssemblyCall.js'),AssemblyCase:require('./AssemblyCase.js'),AssemblyFor:require('./AssemblyFor.js'),AssemblyIf:require('./AssemblyIf.js'),AssemblyLocalDefinition:require('./AssemblyLocalDefinition.js'),AssemblySwitch:require('./AssemblySwitch.js'),BinaryOperation:require('./BinaryOperation.js'),Block:require('./Block.js'),BooleanLiteral:require('./BooleanLiteral.js'),BreakStatement:require('./BreakStatement.js'),CatchClause:require('./CatchClause.js'),Conditional:require('./Conditional.js'),ContinueStatement:require('./ContinueStatement.js'),ContractDefinition:require('./ContractDefinition.js'),DecimalNumber:require('./DecimalNumber.js'),ElementaryTypeName:require('./ElementaryTypeName.js'),EmitStatement:require('./EmitStatement.js'),EnumDefinition:require('./EnumDefinition.js'),EnumValue:require('./EnumValue.js'),EventDefinition:require('./EventDefinition.js'),ExpressionStatement:require('./ExpressionStatement.js'),ForStatement:require('./ForStatement.js'),FunctionCall:require('./FunctionCall.js'),FunctionDefinition:require('./FunctionDefinition.js'),FunctionTypeName:require('./FunctionTypeName.js'),HexLiteral:require('./HexLiteral.js'),HexNumber:require('./HexNumber.js'),Identifier:require('./Identifier.js'),IfStatement:require('./IfStatement.js'),ImportDirective:require('./ImportDirective.js'),IndexAccess:require('./IndexAccess.js'),InheritanceSpecifier:require('./InheritanceSpecifier.js'),InlineAssemblyStatement:require('./InlineAssemblyStatement.js'),LabelDefinition:require('./LabelDefinition.js'),Mapping:require('./Mapping.js'),MemberAccess:require('./MemberAccess.js'),ModifierDefinition:require('./ModifierDefinition.js'),ModifierInvocation:require('./ModifierInvocation.js'),NewExpression:require('./NewExpression.js'),NumberLiteral:require('./NumberLiteral.js'),PragmaDirective:require('./PragmaDirective.js'),ReturnStatement:require('./ReturnStatement.js'),SourceUnit:require('./SourceUnit.js'),StateVariableDeclaration:require('./StateVariableDeclaration.js'),StringLiteral:require('./StringLiteral.js'),StructDefinition:require('./StructDefinition.js'),ThrowStatement:require('./ThrowStatement.js'),TryStatement:require('./TryStatement.js'),TupleExpression:require('./TupleExpression.js'),TypeNameExpression:require('./TypeNameExpression.js'),UnaryOperation:require('./UnaryOperation.js'),UserDefinedTypeName:require('./UserDefinedTypeName.js'),UsingForDeclaration:require('./UsingForDeclaration.js'),VariableDeclaration:require('./VariableDeclaration.js'),VariableDeclarationStatement:require('./VariableDeclarationStatement.js'),WhileStatement:require('./WhileStatement.js')};"
16+
module.exports = {ArrayTypeName:require('./ArrayTypeName.js'),AssemblyAssignment:require('./AssemblyAssignment.js'),AssemblyBlock:require('./AssemblyBlock.js'),AssemblyCall:require('./AssemblyCall.js'),AssemblyCase:require('./AssemblyCase.js'),AssemblyFor:require('./AssemblyFor.js'),AssemblyFunctionDefinition:require('./AssemblyFunctionDefinition.js'),AssemblyIf:require('./AssemblyIf.js'),AssemblyLocalDefinition:require('./AssemblyLocalDefinition.js'),AssemblySwitch:require('./AssemblySwitch.js'),BinaryOperation:require('./BinaryOperation.js'),Block:require('./Block.js'),BooleanLiteral:require('./BooleanLiteral.js'),BreakStatement:require('./BreakStatement.js'),CatchClause:require('./CatchClause.js'),Conditional:require('./Conditional.js'),ContinueStatement:require('./ContinueStatement.js'),ContractDefinition:require('./ContractDefinition.js'),DecimalNumber:require('./DecimalNumber.js'),ElementaryTypeName:require('./ElementaryTypeName.js'),EmitStatement:require('./EmitStatement.js'),EnumDefinition:require('./EnumDefinition.js'),EnumValue:require('./EnumValue.js'),EventDefinition:require('./EventDefinition.js'),ExpressionStatement:require('./ExpressionStatement.js'),ForStatement:require('./ForStatement.js'),FunctionCall:require('./FunctionCall.js'),FunctionDefinition:require('./FunctionDefinition.js'),FunctionTypeName:require('./FunctionTypeName.js'),HexLiteral:require('./HexLiteral.js'),HexNumber:require('./HexNumber.js'),Identifier:require('./Identifier.js'),IfStatement:require('./IfStatement.js'),ImportDirective:require('./ImportDirective.js'),IndexAccess:require('./IndexAccess.js'),InheritanceSpecifier:require('./InheritanceSpecifier.js'),InlineAssemblyStatement:require('./InlineAssemblyStatement.js'),LabelDefinition:require('./LabelDefinition.js'),Mapping:require('./Mapping.js'),MemberAccess:require('./MemberAccess.js'),ModifierDefinition:require('./ModifierDefinition.js'),ModifierInvocation:require('./ModifierInvocation.js'),NewExpression:require('./NewExpression.js'),NumberLiteral:require('./NumberLiteral.js'),PragmaDirective:require('./PragmaDirective.js'),ReturnStatement:require('./ReturnStatement.js'),SourceUnit:require('./SourceUnit.js'),StateVariableDeclaration:require('./StateVariableDeclaration.js'),StringLiteral:require('./StringLiteral.js'),StructDefinition:require('./StructDefinition.js'),ThrowStatement:require('./ThrowStatement.js'),TryStatement:require('./TryStatement.js'),TupleExpression:require('./TupleExpression.js'),TypeNameExpression:require('./TypeNameExpression.js'),UnaryOperation:require('./UnaryOperation.js'),UserDefinedTypeName:require('./UserDefinedTypeName.js'),UsingForDeclaration:require('./UsingForDeclaration.js'),VariableDeclaration:require('./VariableDeclaration.js'),VariableDeclarationStatement:require('./VariableDeclarationStatement.js'),WhileStatement:require('./WhileStatement.js')};"
1717
`;

src/binary-operator-printers/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* This file was automatically generated on 1565022453.711 */
1+
/* This file was automatically generated on 1581640762.478 */
22

33
/* eslint-disable global-require */
44

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
const {
2+
doc: {
3+
builders: { concat, group, indent, join, line, softline }
4+
}
5+
} = require('prettier/standalone');
6+
7+
const AssemblyFunctionDefinition = {
8+
print: ({ node, path, print }) =>
9+
concat([
10+
'function ',
11+
node.name,
12+
'(',
13+
group(
14+
concat([
15+
indent(
16+
concat([
17+
softline,
18+
join(concat([',', line]), path.map(print, 'arguments'))
19+
])
20+
),
21+
softline
22+
])
23+
),
24+
')',
25+
' -> ',
26+
join(', ', path.map(print, 'returnArguments')),
27+
' ',
28+
path.call(print, 'body')
29+
])
30+
};
31+
32+
module.exports = AssemblyFunctionDefinition;

src/nodes/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* This file was automatically generated on 1562128164 */
1+
/* This file was automatically generated on 1581640762.434 */
22

33
/* eslint-disable global-require */
44

@@ -9,6 +9,7 @@ module.exports = {
99
AssemblyCall: require('./AssemblyCall.js'),
1010
AssemblyCase: require('./AssemblyCase.js'),
1111
AssemblyFor: require('./AssemblyFor.js'),
12+
AssemblyFunctionDefinition: require('./AssemblyFunctionDefinition.js'),
1213
AssemblyIf: require('./AssemblyIf.js'),
1314
AssemblyLocalDefinition: require('./AssemblyLocalDefinition.js'),
1415
AssemblySwitch: require('./AssemblySwitch.js'),

tests/Assembly/Assembly.sol

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,42 @@ for { let i := 0 } lt(i, x) { i := add(i, 1) } { y := mul(2, y) }
3535
)
3636
}
3737
}
38+
39+
function assemblyFunctionNoParameters() {
40+
assembly {
41+
function getAnswer ()
42+
-> answer {
43+
answer:= 42
44+
}
45+
}
46+
}
47+
48+
function assemblyFunctionOneParameter() {
49+
assembly {
50+
function inc (x)
51+
-> result {
52+
result := add(x,
53+
1)
54+
}
55+
}
56+
}
57+
58+
function assemblyFunctionThreeParameters() {
59+
assembly {
60+
function sum (a, b, c)
61+
-> result {
62+
result := add(a,
63+
add(b, c))
64+
}
65+
}
66+
}
67+
68+
function assemblyFunctionLongParameters() {
69+
assembly {
70+
function sum (thisIs, aFunctionWithVery, veryLongParameterNames, andItAlsoHasALotOfParameters, soItShouldBeSplitInMultipleLines)
71+
-> result {
72+
result := 0
73+
}
74+
}
75+
}
3876
}

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

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,44 @@ for { let i := 0 } lt(i, x) { i := add(i, 1) } { y := mul(2, y) }
3838
)
3939
}
4040
}
41+
42+
function assemblyFunctionNoParameters() {
43+
assembly {
44+
function getAnswer ()
45+
-> answer {
46+
answer:= 42
47+
}
48+
}
49+
}
50+
51+
function assemblyFunctionOneParameter() {
52+
assembly {
53+
function inc (x)
54+
-> result {
55+
result := add(x,
56+
1)
57+
}
58+
}
59+
}
60+
61+
function assemblyFunctionThreeParameters() {
62+
assembly {
63+
function sum (a, b, c)
64+
-> result {
65+
result := add(a,
66+
add(b, c))
67+
}
68+
}
69+
}
70+
71+
function assemblyFunctionLongParameters() {
72+
assembly {
73+
function sum (thisIs, aFunctionWithVery, veryLongParameterNames, andItAlsoHasALotOfParameters, soItShouldBeSplitInMultipleLines)
74+
-> result {
75+
result := 0
76+
}
77+
}
78+
}
4179
}
4280
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4381
contract Assembly {
@@ -88,6 +126,44 @@ contract Assembly {
88126
)
89127
}
90128
}
129+
130+
function assemblyFunctionNoParameters() {
131+
assembly {
132+
function getAnswer() -> answer {
133+
answer := 42
134+
}
135+
}
136+
}
137+
138+
function assemblyFunctionOneParameter() {
139+
assembly {
140+
function inc(x) -> result {
141+
result := add(x, 1)
142+
}
143+
}
144+
}
145+
146+
function assemblyFunctionThreeParameters() {
147+
assembly {
148+
function sum(a, b, c) -> result {
149+
result := add(a, add(b, c))
150+
}
151+
}
152+
}
153+
154+
function assemblyFunctionLongParameters() {
155+
assembly {
156+
function sum(
157+
thisIs,
158+
aFunctionWithVery,
159+
veryLongParameterNames,
160+
andItAlsoHasALotOfParameters,
161+
soItShouldBeSplitInMultipleLines
162+
) -> result {
163+
result := 0
164+
}
165+
}
166+
}
91167
}
92168
93169
`;

0 commit comments

Comments
 (0)