@haneullabs/prettier-plugin-move 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/CONTRIBUTING.md +31 -0
  3. package/README.md +96 -0
  4. package/bin/prettier-move.js +29 -0
  5. package/out/cst/annotation.js +64 -0
  6. package/out/cst/annotation.js.map +1 -0
  7. package/out/cst/common.js +376 -0
  8. package/out/cst/common.js.map +1 -0
  9. package/out/cst/constant.js +92 -0
  10. package/out/cst/constant.js.map +1 -0
  11. package/out/cst/enum_definition.js +69 -0
  12. package/out/cst/enum_definition.js.map +1 -0
  13. package/out/cst/expression/abort_expression.js +32 -0
  14. package/out/cst/expression/abort_expression.js.map +1 -0
  15. package/out/cst/expression/annotation_expression.js +35 -0
  16. package/out/cst/expression/annotation_expression.js.map +1 -0
  17. package/out/cst/expression/assign_expression.js +51 -0
  18. package/out/cst/expression/assign_expression.js.map +1 -0
  19. package/out/cst/expression/binary_expression.js +70 -0
  20. package/out/cst/expression/binary_expression.js.map +1 -0
  21. package/out/cst/expression/block.js +58 -0
  22. package/out/cst/expression/block.js.map +1 -0
  23. package/out/cst/expression/block_item.js +25 -0
  24. package/out/cst/expression/block_item.js.map +1 -0
  25. package/out/cst/expression/borrow_expression.js +26 -0
  26. package/out/cst/expression/borrow_expression.js.map +1 -0
  27. package/out/cst/expression/break_expression.js +27 -0
  28. package/out/cst/expression/break_expression.js.map +1 -0
  29. package/out/cst/expression/call_expression.js +25 -0
  30. package/out/cst/expression/call_expression.js.map +1 -0
  31. package/out/cst/expression/cast_expression.js +31 -0
  32. package/out/cst/expression/cast_expression.js.map +1 -0
  33. package/out/cst/expression/continue_expression.js +26 -0
  34. package/out/cst/expression/continue_expression.js.map +1 -0
  35. package/out/cst/expression/dereference_expression.js +27 -0
  36. package/out/cst/expression/dereference_expression.js.map +1 -0
  37. package/out/cst/expression/dot_expression.js +66 -0
  38. package/out/cst/expression/dot_expression.js.map +1 -0
  39. package/out/cst/expression/expression_list.js +26 -0
  40. package/out/cst/expression/expression_list.js.map +1 -0
  41. package/out/cst/expression/identified_expression.js +28 -0
  42. package/out/cst/expression/identified_expression.js.map +1 -0
  43. package/out/cst/expression/if_expression.js +133 -0
  44. package/out/cst/expression/if_expression.js.map +1 -0
  45. package/out/cst/expression/index.js +74 -0
  46. package/out/cst/expression/index.js.map +1 -0
  47. package/out/cst/expression/index_expression.js +28 -0
  48. package/out/cst/expression/index_expression.js.map +1 -0
  49. package/out/cst/expression/lambda_expression.js +72 -0
  50. package/out/cst/expression/lambda_expression.js.map +1 -0
  51. package/out/cst/expression/let_statement.js +59 -0
  52. package/out/cst/expression/let_statement.js.map +1 -0
  53. package/out/cst/expression/loop_expression.js +27 -0
  54. package/out/cst/expression/loop_expression.js.map +1 -0
  55. package/out/cst/expression/macro_call_expression.js +66 -0
  56. package/out/cst/expression/macro_call_expression.js.map +1 -0
  57. package/out/cst/expression/match_expression.js +86 -0
  58. package/out/cst/expression/match_expression.js.map +1 -0
  59. package/out/cst/expression/move_or_copy_expression.js +27 -0
  60. package/out/cst/expression/move_or_copy_expression.js.map +1 -0
  61. package/out/cst/expression/name_expression.js +26 -0
  62. package/out/cst/expression/name_expression.js.map +1 -0
  63. package/out/cst/expression/pack_expression.js +27 -0
  64. package/out/cst/expression/pack_expression.js.map +1 -0
  65. package/out/cst/expression/return_expression.js +44 -0
  66. package/out/cst/expression/return_expression.js.map +1 -0
  67. package/out/cst/expression/unary_expression.js +26 -0
  68. package/out/cst/expression/unary_expression.js.map +1 -0
  69. package/out/cst/expression/unit_expression.js +17 -0
  70. package/out/cst/expression/unit_expression.js.map +1 -0
  71. package/out/cst/expression/vector_expression.js +80 -0
  72. package/out/cst/expression/vector_expression.js.map +1 -0
  73. package/out/cst/expression/while_expression.js +42 -0
  74. package/out/cst/expression/while_expression.js.map +1 -0
  75. package/out/cst/formatting.js +100 -0
  76. package/out/cst/formatting.js.map +1 -0
  77. package/out/cst/function_definition.js +248 -0
  78. package/out/cst/function_definition.js.map +1 -0
  79. package/out/cst/literal.js +68 -0
  80. package/out/cst/literal.js.map +1 -0
  81. package/out/cst/module.js +158 -0
  82. package/out/cst/module.js.map +1 -0
  83. package/out/cst/source_file.js +38 -0
  84. package/out/cst/source_file.js.map +1 -0
  85. package/out/cst/struct_definition.js +209 -0
  86. package/out/cst/struct_definition.js.map +1 -0
  87. package/out/cst/use_declaration.js +212 -0
  88. package/out/cst/use_declaration.js.map +1 -0
  89. package/out/imports-grouping.js +259 -0
  90. package/out/imports-grouping.js.map +1 -0
  91. package/out/index.js +97 -0
  92. package/out/index.js.map +1 -0
  93. package/out/printer.js +69 -0
  94. package/out/printer.js.map +1 -0
  95. package/out/tree.js +371 -0
  96. package/out/tree.js.map +1 -0
  97. package/out/utilities.js +251 -0
  98. package/out/utilities.js.map +1 -0
  99. package/package.json +34 -0
  100. package/prettier.config.js +12 -0
  101. package/src/cst/annotation.ts +71 -0
  102. package/src/cst/common.ts +430 -0
  103. package/src/cst/constant.ts +110 -0
  104. package/src/cst/enum_definition.ts +73 -0
  105. package/src/cst/expression/abort_expression.ts +35 -0
  106. package/src/cst/expression/annotation_expression.ts +38 -0
  107. package/src/cst/expression/assign_expression.ts +66 -0
  108. package/src/cst/expression/binary_expression.ts +75 -0
  109. package/src/cst/expression/block.ts +72 -0
  110. package/src/cst/expression/block_item.ts +29 -0
  111. package/src/cst/expression/borrow_expression.ts +28 -0
  112. package/src/cst/expression/break_expression.ts +33 -0
  113. package/src/cst/expression/call_expression.ts +28 -0
  114. package/src/cst/expression/cast_expression.ts +35 -0
  115. package/src/cst/expression/continue_expression.ts +29 -0
  116. package/src/cst/expression/dereference_expression.ts +33 -0
  117. package/src/cst/expression/dot_expression.ts +89 -0
  118. package/src/cst/expression/expression_list.ts +28 -0
  119. package/src/cst/expression/identified_expression.ts +30 -0
  120. package/src/cst/expression/if_expression.ts +177 -0
  121. package/src/cst/expression/index.ts +85 -0
  122. package/src/cst/expression/index_expression.ts +37 -0
  123. package/src/cst/expression/lambda_expression.ts +84 -0
  124. package/src/cst/expression/let_statement.ts +73 -0
  125. package/src/cst/expression/loop_expression.ts +29 -0
  126. package/src/cst/expression/macro_call_expression.ts +79 -0
  127. package/src/cst/expression/match_expression.ts +102 -0
  128. package/src/cst/expression/move_or_copy_expression.ts +29 -0
  129. package/src/cst/expression/name_expression.ts +28 -0
  130. package/src/cst/expression/pack_expression.ts +29 -0
  131. package/src/cst/expression/return_expression.ts +50 -0
  132. package/src/cst/expression/unary_expression.ts +28 -0
  133. package/src/cst/expression/unit_expression.ts +18 -0
  134. package/src/cst/expression/vector_expression.ts +97 -0
  135. package/src/cst/expression/while_expression.ts +45 -0
  136. package/src/cst/formatting.ts +100 -0
  137. package/src/cst/function_definition.ts +300 -0
  138. package/src/cst/literal.ts +69 -0
  139. package/src/cst/module.ts +191 -0
  140. package/src/cst/source_file.ts +38 -0
  141. package/src/cst/struct_definition.ts +267 -0
  142. package/src/cst/use_declaration.ts +238 -0
  143. package/src/imports-grouping.ts +300 -0
  144. package/src/index.ts +119 -0
  145. package/src/printer.ts +93 -0
  146. package/src/tree.ts +438 -0
  147. package/src/utilities.ts +387 -0
  148. package/tree-sitter-move.wasm +0 -0
  149. package/tsconfig.json +26 -0
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ // Copyright (c) The Move Contributors
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.FunctionDefinition = void 0;
6
+ exports.default = default_1;
7
+ exports.printFunctionDefinition = printFunctionDefinition;
8
+ exports.printNativeFunctionDefinition = printNativeFunctionDefinition;
9
+ exports.printMacroFunctionDefinition = printMacroFunctionDefinition;
10
+ exports.printVisibilityModifier = printVisibilityModifier;
11
+ exports.printFunctionParameters = printFunctionParameters;
12
+ exports.printFunctionParameter = printFunctionParameter;
13
+ exports.printMutFunctionParameter = printMutFunctionParameter;
14
+ exports.printReturnType = printReturnType;
15
+ exports.printTypeArguments = printTypeArguments;
16
+ exports.printTypeParameters = printTypeParameters;
17
+ exports.printTypeParameter = printTypeParameter;
18
+ const prettier_1 = require("prettier");
19
+ const block_1 = require("./expression/block");
20
+ const utilities_1 = require("../utilities");
21
+ const { join, group } = prettier_1.doc.builders;
22
+ function default_1(path) {
23
+ switch (path.node.type) {
24
+ case FunctionDefinition.NativeFunctionDefinition:
25
+ return printNativeFunctionDefinition;
26
+ case FunctionDefinition.FunctionDefinition:
27
+ return printFunctionDefinition;
28
+ case FunctionDefinition.MacroFunctionDefinition:
29
+ return printMacroFunctionDefinition;
30
+ case FunctionDefinition.VisibilityModifier:
31
+ return printVisibilityModifier;
32
+ case FunctionDefinition.FunctionParameters:
33
+ return printFunctionParameters;
34
+ case FunctionDefinition.FunctionParameter:
35
+ return printFunctionParameter;
36
+ case FunctionDefinition.MutFunctionParameter:
37
+ return printMutFunctionParameter;
38
+ case FunctionDefinition.ReturnType:
39
+ return printReturnType;
40
+ case FunctionDefinition.TypeArguments:
41
+ return printTypeArguments;
42
+ case FunctionDefinition.TypeParameters:
43
+ return printTypeParameters;
44
+ case FunctionDefinition.TypeParameter:
45
+ return printTypeParameter;
46
+ // identifiers
47
+ case FunctionDefinition.FunctionIdentifier:
48
+ case FunctionDefinition.TypeParameterIdentifier:
49
+ return utilities_1.printIdentifier;
50
+ }
51
+ return null;
52
+ }
53
+ /**
54
+ * Function Definition, contains the following:
55
+ * ```
56
+ * <visibility> fun <identifier> (<parameters>) <return_type> <body>
57
+ * ```
58
+ */
59
+ var FunctionDefinition;
60
+ (function (FunctionDefinition) {
61
+ FunctionDefinition["FunctionDefinition"] = "function_definition";
62
+ FunctionDefinition["FunctionIdentifier"] = "function_identifier";
63
+ FunctionDefinition["NativeFunctionDefinition"] = "native_function_definition";
64
+ FunctionDefinition["MacroFunctionDefinition"] = "macro_function_definition";
65
+ FunctionDefinition["VisibilityModifier"] = "visibility_modifier";
66
+ FunctionDefinition["FunctionParameters"] = "function_parameters";
67
+ FunctionDefinition["FunctionParameter"] = "function_parameter";
68
+ FunctionDefinition["MutFunctionParameter"] = "mut_function_parameter";
69
+ FunctionDefinition["ReturnType"] = "ret_type";
70
+ FunctionDefinition["TypeArguments"] = "type_arguments";
71
+ FunctionDefinition["TypeParameters"] = "type_parameters";
72
+ FunctionDefinition["TypeParameter"] = "type_parameter";
73
+ FunctionDefinition["TypeParameterIdentifier"] = "type_parameter_identifier";
74
+ })(FunctionDefinition || (exports.FunctionDefinition = FunctionDefinition = {}));
75
+ /**
76
+ * Print `function_definition` node.
77
+ */
78
+ function printFunctionDefinition(path, options, print) {
79
+ const nodes = path.node.nonFormattingChildren;
80
+ const retIndex = nodes.findIndex((e) => e.type == FunctionDefinition.ReturnType);
81
+ const modifiers = getModifiers(path);
82
+ const printCb = (path) => path.node.type === 'block' ? (0, block_1.printBreakableBlock)(path, options, print) : print(path);
83
+ const signature = [
84
+ printModifiers(modifiers),
85
+ 'fun ',
86
+ path.map((path) => {
87
+ // We already added modifiers in the previous step
88
+ if (path.node.type == 'modifier')
89
+ return '';
90
+ if (path.node.type == 'block')
91
+ return '';
92
+ if (path.node.type == 'ret_type')
93
+ return '';
94
+ if (path.node.isFormatting)
95
+ return '';
96
+ return print(path);
97
+ }, 'nonFormattingChildren'),
98
+ ];
99
+ return [
100
+ group([signature, path.call(print, 'nonFormattingChildren', retIndex)]),
101
+ ' ',
102
+ path.call(printCb, 'nonFormattingChildren', nodes.length - 1),
103
+ ];
104
+ }
105
+ function printNativeFunctionDefinition(path, _opt, print) {
106
+ const modifiers = getModifiers(path);
107
+ return [
108
+ printModifiers(modifiers),
109
+ 'fun ',
110
+ group(path.map((path) => {
111
+ if (path.node.type == 'modifier')
112
+ return '';
113
+ return print(path);
114
+ }, 'nonFormattingChildren')),
115
+ ';',
116
+ ];
117
+ }
118
+ /**
119
+ * Print `macro_function_definition` node.
120
+ */
121
+ function printMacroFunctionDefinition(path, _opt, print) {
122
+ const modifiers = getModifiers(path);
123
+ return [
124
+ printModifiers(modifiers),
125
+ 'macro fun ',
126
+ group(path.map((path) => {
127
+ if (path.node.type == 'modifier')
128
+ return '';
129
+ if (path.node.type == 'block')
130
+ return '';
131
+ return print(path);
132
+ }, 'nonFormattingChildren')),
133
+ ' ',
134
+ path.call(print, 'nonFormattingChildren', path.node.nonFormattingChildren.length - 1),
135
+ ];
136
+ }
137
+ /**
138
+ * Print `visibility_modifier` node.
139
+ * Always followed by a space.
140
+ */
141
+ function printVisibilityModifier(path, // | Node | null,
142
+ _opt, _print) {
143
+ return [path.node.text, ' '];
144
+ }
145
+ /**
146
+ * Print `function_parameters` node.
147
+ */
148
+ function printFunctionParameters(path, options, print) {
149
+ return (0, utilities_1.list)({
150
+ path,
151
+ print,
152
+ options,
153
+ open: '(',
154
+ close: ')',
155
+ shouldBreak: false,
156
+ });
157
+ }
158
+ /**
159
+ * Print `function_parameter` node.
160
+ */
161
+ function printFunctionParameter(path, _opt, print) {
162
+ const isMut = path.node.child(0)?.type == 'mut';
163
+ const isDollar = path.node.children.find((c) => c.type == '$');
164
+ return group([
165
+ isMut ? 'mut ' : '',
166
+ isDollar ? '$' : '',
167
+ path.call(print, 'nonFormattingChildren', 0), // variable_identifier
168
+ ': ',
169
+ path.call(print, 'nonFormattingChildren', 1), // type
170
+ ]);
171
+ }
172
+ /**
173
+ * Print `mut` function parameter.
174
+ */
175
+ function printMutFunctionParameter(path, _opt, print) {
176
+ return ['mut ', path.call(print, 'nonFormattingChildren', 0)];
177
+ }
178
+ /**
179
+ * Print `ret_type` node.
180
+ */
181
+ function printReturnType(path, _opt, print) {
182
+ return [': ', path.call(print, 'nonFormattingChildren', 0)];
183
+ }
184
+ /**
185
+ * Print `type_arguments` node.
186
+ */
187
+ function printTypeArguments(path, options, print) {
188
+ return group((0, utilities_1.list)({
189
+ path,
190
+ print,
191
+ options,
192
+ open: '<',
193
+ close: '>',
194
+ shouldBreak: false,
195
+ }));
196
+ }
197
+ /**
198
+ * Print `type_parameters` node.
199
+ */
200
+ function printTypeParameters(path, options, print) {
201
+ return group((0, utilities_1.list)({
202
+ path,
203
+ print,
204
+ options,
205
+ open: '<',
206
+ close: '>',
207
+ shouldBreak: false,
208
+ }));
209
+ }
210
+ /**
211
+ * Print `type_parameter` node.
212
+ */
213
+ function printTypeParameter(path, _opt, print) {
214
+ const isDollar = path.node.child(0)?.type == '$';
215
+ const isPhantom = path.node.child(0)?.type == 'phantom';
216
+ const parameter = path.call(print, 'nonFormattingChildren', 0);
217
+ const abilities = path.map(print, 'nonFormattingChildren').slice(1);
218
+ return [
219
+ isDollar ? '$' : '',
220
+ isPhantom ? 'phantom ' : '',
221
+ parameter,
222
+ abilities.length > 0 ? ': ' : '',
223
+ join(' + ', abilities),
224
+ ];
225
+ }
226
+ /**
227
+ * Helper function to get modifiers.
228
+ */
229
+ function getModifiers(path) {
230
+ const nodes = path.node.nonFormattingChildren;
231
+ return nodes
232
+ .filter((e) => e.type == 'modifier')
233
+ .map((e) => e.text.replace(' ', '')) // removes the space in `public (package)`
234
+ .reduce((acc, e) => ({ ...acc, [e]: true }), {});
235
+ }
236
+ /**
237
+ * Helper function to print modifiers.
238
+ */
239
+ function printModifiers(modifiers) {
240
+ return [
241
+ modifiers.public ? 'public ' : '',
242
+ modifiers['public(package)'] ? 'public(package) ' : '',
243
+ modifiers['public(friend)'] ? 'public(friend) ' : '',
244
+ modifiers.entry ? 'entry ' : '',
245
+ modifiers.native ? 'native ' : '',
246
+ ];
247
+ }
248
+ //# sourceMappingURL=function_definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function_definition.js","sourceRoot":"","sources":["../../src/cst/function_definition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ // Copyright (c) The Move Contributors
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.Literal = void 0;
6
+ exports.default = default_1;
7
+ exports.printByteStringLiteral = printByteStringLiteral;
8
+ exports.printBoolLiteral = printBoolLiteral;
9
+ exports.printNumLiteral = printNumLiteral;
10
+ exports.printAddressLiteral = printAddressLiteral;
11
+ exports.printHexStringLiteral = printHexStringLiteral;
12
+ /**
13
+ * Node: `_literal_value` in the grammar.json.
14
+ */
15
+ var Literal;
16
+ (function (Literal) {
17
+ Literal["AddressLiteral"] = "address_literal";
18
+ Literal["BoolLiteral"] = "bool_literal";
19
+ Literal["NumLiteral"] = "num_literal";
20
+ Literal["HexStringLiteral"] = "hex_string_literal";
21
+ Literal["ByteStringLiteral"] = "byte_string_literal";
22
+ })(Literal || (exports.Literal = Literal = {}));
23
+ function default_1(path) {
24
+ switch (path.node.type) {
25
+ case Literal.AddressLiteral:
26
+ return printAddressLiteral;
27
+ case Literal.BoolLiteral:
28
+ return printBoolLiteral;
29
+ case Literal.NumLiteral:
30
+ return printNumLiteral;
31
+ case Literal.HexStringLiteral:
32
+ return printHexStringLiteral;
33
+ case Literal.ByteStringLiteral:
34
+ return printByteStringLiteral;
35
+ }
36
+ return null;
37
+ }
38
+ /**
39
+ * Print `byte_string_literal` node.
40
+ */
41
+ function printByteStringLiteral(path) {
42
+ return path.node.text;
43
+ }
44
+ /**
45
+ * Print `bool_literal` node.
46
+ */
47
+ function printBoolLiteral(path) {
48
+ return path.node.text;
49
+ }
50
+ /**
51
+ * Print `num_literal` node.
52
+ */
53
+ function printNumLiteral(path) {
54
+ return path.node.text;
55
+ }
56
+ /**
57
+ * Print `address_literal` node.
58
+ */
59
+ function printAddressLiteral(path) {
60
+ return path.node.text;
61
+ }
62
+ /**
63
+ * Print `hex_literal` node.
64
+ */
65
+ function printHexStringLiteral(path) {
66
+ return path.node.text;
67
+ }
68
+ //# sourceMappingURL=literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/cst/literal.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,sCAAsC;;;AAiBtC,4BAeC;AAKD,wDAEC;AAKD,4CAEC;AAKD,0CAEC;AAKD,kDAEC;AAKD,sDAEC;AA7DD;;GAEG;AACH,IAAY,OAMX;AAND,WAAY,OAAO;IACf,6CAAkC,CAAA;IAClC,uCAA4B,CAAA;IAC5B,qCAA0B,CAAA;IAC1B,kDAAuC,CAAA;IACvC,oDAAyC,CAAA;AAC7C,CAAC,EANW,OAAO,uBAAP,OAAO,QAMlB;AAED,mBAAyB,IAAmB;IACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,OAAO,CAAC,cAAc;YACvB,OAAO,mBAAmB,CAAC;QAC/B,KAAK,OAAO,CAAC,WAAW;YACpB,OAAO,gBAAgB,CAAC;QAC5B,KAAK,OAAO,CAAC,UAAU;YACnB,OAAO,eAAe,CAAC;QAC3B,KAAK,OAAO,CAAC,gBAAgB;YACzB,OAAO,qBAAqB,CAAC;QACjC,KAAK,OAAO,CAAC,iBAAiB;YAC1B,OAAO,sBAAsB,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,IAAmB;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,IAAmB;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAmB;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,IAAmB;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,IAAmB;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ // Copyright (c) The Move Contributors
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.Module = void 0;
6
+ exports.default = default_1;
7
+ exports.printModuleExtensionDefinition = printModuleExtensionDefinition;
8
+ exports.printModuleDefinition = printModuleDefinition;
9
+ const prettier_1 = require("prettier");
10
+ const function_definition_1 = require("./function_definition");
11
+ const struct_definition_1 = require("./struct_definition");
12
+ const Constant = require("./constant");
13
+ const use_declaration_1 = require("./use_declaration");
14
+ const imports_grouping_1 = require("../imports-grouping");
15
+ const enum_definition_1 = require("./enum_definition");
16
+ const utilities_1 = require("../utilities");
17
+ const { join, hardline, indent } = prettier_1.doc.builders;
18
+ /**
19
+ * Creates a callback function to print modules and module-related nodes.
20
+ */
21
+ function default_1(path) {
22
+ switch (path.node.type) {
23
+ case Module.ModuleExtensionDefinition:
24
+ return printModuleExtensionDefinition;
25
+ case Module.ModuleDefinition:
26
+ return printModuleDefinition;
27
+ case Module.ModuleIdentity:
28
+ return printModuleIdentity;
29
+ case Module.ModuleIdentifier:
30
+ return utilities_1.printIdentifier;
31
+ case Module.ModuleBody:
32
+ return printModuleBody;
33
+ default:
34
+ return null;
35
+ }
36
+ }
37
+ /**
38
+ * Module - top-level definition in a Move source file.
39
+ */
40
+ var Module;
41
+ (function (Module) {
42
+ Module["ModuleExtensionDefinition"] = "module_extension_definition";
43
+ Module["ModuleDefinition"] = "module_definition";
44
+ Module["BlockComment"] = "block_comment";
45
+ Module["ModuleIdentity"] = "module_identity";
46
+ Module["ModuleIdentifier"] = "module_identifier";
47
+ Module["ModuleBody"] = "module_body";
48
+ })(Module || (exports.Module = Module = {}));
49
+ /**
50
+ * Print `module_extension_definition` node.
51
+ */
52
+ function printModuleExtensionDefinition(path, _options, print) {
53
+ return ['extend ', path.call(print, 'nonFormattingChildren', 0)];
54
+ }
55
+ /**
56
+ * Print `module_definition` node.
57
+ */
58
+ function printModuleDefinition(path, options, print) {
59
+ let useLabel = false;
60
+ // when option is present we must check that there's only one module per file
61
+ if (options.useModuleLabel) {
62
+ const modules = path.parent.nonFormattingChildren.filter((node) => node.type === 'module_definition' || node.type === 'module_extension_definition');
63
+ useLabel = modules.length == 1;
64
+ }
65
+ // module definition can be a part of the extension, do decide whether to use
66
+ // the label for it, we need to check its parent's parent
67
+ if (options.useModuleLabel && path.parent.type === 'module_extension_definition') {
68
+ const modules = path.parent.parent.nonFormattingChildren.filter((node) => node.type === 'module_definition' || node.type === 'module_extension_definition');
69
+ useLabel = modules.length == 1;
70
+ }
71
+ const result = ['module ', path.call(print, 'nonFormattingChildren', 0)];
72
+ // if we're using the label, we must add a semicolon and print the body in a
73
+ // new line
74
+ if (useLabel) {
75
+ // print hard lines only if there is more than one child
76
+ if (path.node.nonFormattingChildren[1].children.length > 1) {
77
+ return result.concat([
78
+ ';',
79
+ hardline,
80
+ hardline,
81
+ path.call(print, 'nonFormattingChildren', 1),
82
+ ]);
83
+ }
84
+ else {
85
+ return result.concat([';']);
86
+ }
87
+ }
88
+ // when not module mabel, module body is a block with curly braces and
89
+ // indentation
90
+ return result.concat([
91
+ ' {',
92
+ indent(hardline),
93
+ indent(path.call(print, 'nonFormattingChildren', 1)),
94
+ hardline,
95
+ '}',
96
+ ]);
97
+ }
98
+ /**
99
+ * Print `module_identity` node.
100
+ */
101
+ function printModuleIdentity(path, options, print) {
102
+ return join('::', path.map(print, 'nonFormattingChildren'));
103
+ }
104
+ /**
105
+ * Members that must be separated by an empty line if they are next to each other.
106
+ * For example, a function definition followed by a struct definition.
107
+ */
108
+ const separatedMembers = [
109
+ function_definition_1.FunctionDefinition.FunctionDefinition,
110
+ struct_definition_1.StructDefinition.StructDefinition,
111
+ Constant.NODE_TYPE,
112
+ use_declaration_1.UseDeclaration.UseDeclaration,
113
+ use_declaration_1.UseDeclaration.FriendDeclaration,
114
+ enum_definition_1.EnumDefinition.EnumDefinition,
115
+ ];
116
+ /**
117
+ * Print `module_body` node.
118
+ *
119
+ * We need to preserve spacing between members (functions, structs, constants, etc.).
120
+ * We need to only allow a single empty line (if there are more than one, we should remove them).
121
+ * Additionally, if `groupImports` is set to `package` or `module`, we should group imports and
122
+ * print them at the top of the module.
123
+ */
124
+ function printModuleBody(path, options, print) {
125
+ const nodes = path.node.namedAndEmptyLineChildren;
126
+ const importsDoc = [];
127
+ const imports = (0, imports_grouping_1.collectImports)(path.node);
128
+ if (imports.size > 0) {
129
+ importsDoc.push(...(0, imports_grouping_1.printImports)(imports, options.autoGroupImports));
130
+ }
131
+ const bodyDoc = [];
132
+ path.each((path, i) => {
133
+ const next = nodes[i + 1];
134
+ // empty lines should be removed if they are next to grouped imports
135
+ if (path.node.isEmptyLine && path.node.previousNamedSibling?.isGroupedImport)
136
+ return;
137
+ if (path.node.isGroupedImport)
138
+ return;
139
+ if (path.node.isEmptyLine && !path.node.previousNamedSibling)
140
+ return;
141
+ if (separatedMembers.includes(path.node.type) &&
142
+ separatedMembers.includes(next?.type || '') &&
143
+ path.node.type !== next?.type) {
144
+ return bodyDoc.push([path.call(print), hardline]);
145
+ }
146
+ // force add empty line after function definitions
147
+ if (path.node.type === function_definition_1.FunctionDefinition.FunctionDefinition &&
148
+ next?.type === function_definition_1.FunctionDefinition.FunctionDefinition) {
149
+ return bodyDoc.push([path.call(print), hardline]);
150
+ }
151
+ return bodyDoc.push(path.call(print));
152
+ }, 'namedAndEmptyLineChildren');
153
+ if (bodyDoc.length > 0 && importsDoc.length > 0) {
154
+ bodyDoc.unshift(''); // add empty line before first member
155
+ }
156
+ return join(hardline, importsDoc.concat(bodyDoc));
157
+ }
158
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/cst/module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ // Copyright (c) The Move Contributors
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.SourceFile = void 0;
6
+ exports.default = default_1;
7
+ const prettier_1 = require("prettier");
8
+ const { hardline, join } = prettier_1.doc.builders;
9
+ /**
10
+ * Print a source node.
11
+ */
12
+ function default_1(path) {
13
+ switch (path.node.type) {
14
+ case SourceFile.SourceFile:
15
+ return printSourceFile;
16
+ }
17
+ return null;
18
+ }
19
+ var SourceFile;
20
+ (function (SourceFile) {
21
+ SourceFile["SourceFile"] = "source_file";
22
+ })(SourceFile || (exports.SourceFile = SourceFile = {}));
23
+ /**
24
+ * Print `source_file` node.
25
+ *
26
+ * Print all non-formatting children separated by a hardline.
27
+ * Also print empty lines with leading comments, this allows us to maintain structure like this:
28
+ * ```
29
+ * // Copyright
30
+ * `empty_line`
31
+ * // module comment
32
+ * module book::book { ... }
33
+ * ```
34
+ */
35
+ function printSourceFile(path, options, print) {
36
+ return [join(hardline, path.map(print, 'namedAndEmptyLineChildren')), hardline];
37
+ }
38
+ //# sourceMappingURL=source_file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source_file.js","sourceRoot":"","sources":["../../src/cst/source_file.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,sCAAsC;;;AAUtC,4BAMC;AAZD,uCAA6C;AAC7C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,cAAG,CAAC,QAAQ,CAAC;AAExC;;GAEG;AACH,mBAAyB,IAAmB;IACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,UAAU,CAAC,UAAU;YACtB,OAAO,eAAe,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,IAAY,UAEX;AAFD,WAAY,UAAU;IAClB,wCAA0B,CAAA;AAC9B,CAAC,EAFW,UAAU,0BAAV,UAAU,QAErB;AAED;;;;;;;;;;;GAWG;AACH,SAAS,eAAe,CAAC,IAAmB,EAAE,OAAoB,EAAE,KAAc;IAC9E,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpF,CAAC"}