Skip to content

Commit b5b863d

Browse files
Terse shorthand work start (#260)
* Terse shorthand work start * All tests pass now
1 parent 539a800 commit b5b863d

37 files changed

+74
-39
lines changed

src/transformers/exports.ts

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@ import {
2424
import { TransformSourceDescription, OutputOptions } from 'rollup';
2525
import { NamedDeclaration, DefaultDeclaration } from './parsing-utilities';
2626
import { isESMFormat } from '../options';
27-
import { Transform, TransformInterface, ExportClosureMapping, ExportDetails } from '../types';
27+
import {
28+
Transform,
29+
TransformInterface,
30+
ExportClosureMapping,
31+
ExportDetails,
32+
Range,
33+
} from '../types';
2834
import MagicString from 'magic-string';
2935
import { parse, walk } from '../acorn';
3036

@@ -230,8 +236,37 @@ export default class ExportTransform extends Transform implements TransformInter
230236
if (exportFromCurrentSource) {
231237
const { object: leftObject } = ancestor.expression.left;
232238
if (leftObject.range) {
233-
const statement = inlineExport ? 'export var ' : 'var ';
234-
source.overwrite(leftObject.range[0], leftObject.range[1] + 1, statement);
239+
const { right } = ancestor.expression;
240+
switch (right.type) {
241+
case 'FunctionExpression':
242+
if (right.params.length > 0) {
243+
// FunctionExpression has parameters.
244+
source.overwrite(
245+
(leftObject.range as Range)[0],
246+
(right.params[0].range as Range)[0],
247+
`${inlineExport ? 'export ' : ''}function ${
248+
exportDetails.exported
249+
}(`,
250+
);
251+
} else {
252+
source.overwrite(
253+
(leftObject.range as Range)[0],
254+
(right.body.range as Range)[0],
255+
`${inlineExport ? 'export ' : ''}function ${
256+
exportDetails.exported
257+
}()`,
258+
);
259+
}
260+
break;
261+
default:
262+
const statement = inlineExport ? 'export var ' : 'var ';
263+
source.overwrite(
264+
leftObject.range[0],
265+
leftObject.range[1] + 1,
266+
statement,
267+
);
268+
break;
269+
}
235270
}
236271
if (exportDetails.local !== exportDetails.exported) {
237272
exportDetails.local = exportDetails.exported;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export var multipleArguments=function(a,b){return console.log(a,b)};
1+
export function multipleArguments(a,b){return console.log(a,b)};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export var singleArgument=function(a){return console.log(a)};
1+
export function singleArgument(a){return console.log(a)};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
let b=[3,4],c=[5,6];export var yes=function(a){return 0<=c.indexOf(a)&&0<=b.indexOf(a)};
1+
let b=[3,4],c=[5,6];export function yes(a){return 0<=c.indexOf(a)&&0<=b.indexOf(a)};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
let b=[3,4],c=[5,6];export var yes=function(a){return 0<=c.indexOf(a)&&0<=b.indexOf(a)};
1+
let b=[3,4],c=[5,6];export function yes(a){return 0<=c.indexOf(a)&&0<=b.indexOf(a)};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
var b=[3,4],c=[5,6];export var yes=function(a){return 0<=c.indexOf(a)&&0<=b.indexOf(a)};
1+
var b=[3,4],c=[5,6];export function yes(a){return 0<=c.indexOf(a)&&0<=b.indexOf(a)};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
var export1=1;var export2=function(){return 2};export{export1,export2};
1+
var export1=1;function export2(){return 2};export{export1,export2};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
var export1=1;var export2=function(){return 2};export{export1,export2};
1+
var export1=1;function export2(){return 2};export{export1,export2};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
var export1=1;var export2=function(){return 2};export{export1,export2};
1+
var export1=1;function export2(){return 2};export{export1,export2};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
var bar=function(){console.log(1)};var foo=1;export{bar,foo};
1+
function bar(){console.log(1)};var foo=1;export{bar,foo};

0 commit comments

Comments
 (0)