|
1201 | 1201 | return ';'; |
1202 | 1202 | }, |
1203 | 1203 |
|
1204 | | - ExportDeclaration: function (stmt, flags) { |
1205 | | - var result = [ 'export' ], bodyFlags, that = this; |
| 1204 | + ExportDefaultDeclaration: function (stmt, flags) { |
| 1205 | + var result = [ 'export' ], bodyFlags; |
1206 | 1206 |
|
1207 | 1207 | bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF; |
1208 | 1208 |
|
1209 | 1209 | // export default HoistableDeclaration[Default] |
1210 | 1210 | // export default AssignmentExpression[In] ; |
1211 | | - if (stmt['default']) { |
1212 | | - result = join(result, 'default'); |
1213 | | - if (isStatement(stmt.declaration)) { |
1214 | | - result = join(result, this.generateStatement(stmt.declaration, bodyFlags)); |
1215 | | - } else { |
1216 | | - result = join(result, this.generateExpression(stmt.declaration, Precedence.Assignment, E_TTT) + this.semicolon(flags)); |
1217 | | - } |
1218 | | - return result; |
| 1211 | + result = join(result, 'default'); |
| 1212 | + if (isStatement(stmt.declaration)) { |
| 1213 | + result = join(result, this.generateStatement(stmt.declaration, bodyFlags)); |
| 1214 | + } else { |
| 1215 | + result = join(result, this.generateExpression(stmt.declaration, Precedence.Assignment, E_TTT) + this.semicolon(flags)); |
1219 | 1216 | } |
| 1217 | + return result; |
| 1218 | + }, |
| 1219 | + |
| 1220 | + ExportNamedDeclaration: function (stmt, flags) { |
| 1221 | + var result = [ 'export' ], bodyFlags, that = this; |
| 1222 | + |
| 1223 | + bodyFlags = (flags & F_SEMICOLON_OPT) ? S_TFFT : S_TFFF; |
1220 | 1224 |
|
1221 | 1225 | // export VariableStatement |
1222 | 1226 | // export Declaration[Default] |
1223 | 1227 | if (stmt.declaration) { |
1224 | 1228 | return join(result, this.generateStatement(stmt.declaration, bodyFlags)); |
1225 | 1229 | } |
1226 | 1230 |
|
1227 | | - // export * FromClause ; |
1228 | 1231 | // export ExportClause[NoReference] FromClause ; |
1229 | 1232 | // export ExportClause ; |
1230 | 1233 | if (stmt.specifiers) { |
|
1265 | 1268 | return result; |
1266 | 1269 | }, |
1267 | 1270 |
|
1268 | | - ExportDefaultDeclaration: function (stmt, flags) { |
1269 | | - stmt.default = true; |
1270 | | - return this.ExportDeclaration(stmt, flags); |
1271 | | - }, |
1272 | | - |
1273 | | - ExportNamedDeclaration: function (stmt, flags) { |
1274 | | - return this.ExportDeclaration(stmt, flags); |
| 1271 | + ExportAllDeclaration: function (stmt, flags) { |
| 1272 | + // export * FromClause ; |
| 1273 | + return [ |
| 1274 | + 'export' + space, |
| 1275 | + '*' + space, |
| 1276 | + 'from' + space, |
| 1277 | + // ModuleSpecifier |
| 1278 | + this.generateExpression(stmt.source, Precedence.Sequence, E_TTT), |
| 1279 | + this.semicolon(flags) |
| 1280 | + ]; |
1275 | 1281 | }, |
1276 | 1282 |
|
1277 | 1283 | ExpressionStatement: function (stmt, flags) { |
|
1729 | 1735 | generateAsyncPrefix(stmt, true), |
1730 | 1736 | 'function', |
1731 | 1737 | generateStarSuffix(stmt) || noEmptySpace(), |
1732 | | - generateIdentifier(stmt.id), |
| 1738 | + stmt.id ? generateIdentifier(stmt.id) : '', |
1733 | 1739 | this.generateFunctionBody(stmt) |
1734 | 1740 | ]; |
1735 | 1741 | }, |
|
2038 | 2044 | return result; |
2039 | 2045 | }, |
2040 | 2046 |
|
2041 | | - ExportBatchSpecifier: function (expr, precedence, flags) { |
2042 | | - return '*'; |
2043 | | - }, |
2044 | | - |
2045 | 2047 | ArrayPattern: function (expr, precedence, flags) { |
2046 | 2048 | return this.ArrayExpression(expr, precedence, flags, true); |
2047 | 2049 | }, |
|
2267 | 2269 | }, |
2268 | 2270 |
|
2269 | 2271 | ImportSpecifier: function (expr, precedence, flags) { |
2270 | | - return this.ExportSpecifier(expr, precedence, flags); |
| 2272 | + var imported = expr.imported; |
| 2273 | + var result = [ imported.name ]; |
| 2274 | + var local = expr.local; |
| 2275 | + if (local && local.name !== imported.name) { |
| 2276 | + result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(local)); |
| 2277 | + } |
| 2278 | + return result; |
2271 | 2279 | }, |
2272 | 2280 |
|
2273 | 2281 | ExportSpecifier: function (expr, precedence, flags) { |
2274 | | - var name = (expr.id || expr.imported || expr.exported).name; |
2275 | | - var result = [ name ]; |
2276 | | - var id = expr.name || expr.local; |
2277 | | - if (id && id.name !== name) { |
2278 | | - result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(id)); |
| 2282 | + var local = expr.local; |
| 2283 | + var result = [ local.name ]; |
| 2284 | + var exported = expr.exported; |
| 2285 | + if (exported && exported.name !== local.name) { |
| 2286 | + result.push(noEmptySpace() + 'as' + noEmptySpace() + generateIdentifier(exported)); |
2279 | 2287 | } |
2280 | 2288 | return result; |
2281 | 2289 | }, |
|
0 commit comments