Skip to content

Commit 17619e9

Browse files
authored
Merge pull request #13 from codemodsquad/fix/remove-final-return-undefined
fix(cleanup): return and re-await issues
2 parents 9edcf6a + b9938db commit 17619e9

11 files changed

+70
-9
lines changed

src/util/finalCleanup.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,22 @@ export default function finalCleanup(path: NodePath<t.Function>): void {
6060
} else if (value) {
6161
argument.replaceWith(isInTryBlock(path) ? awaited(value) : value)
6262
}
63+
} else if (argument.isIdentifier()) {
64+
const binding = path.scope.getBinding(argument.node.name)
65+
if (
66+
binding &&
67+
binding.constant &&
68+
binding.path.isVariableDeclarator() &&
69+
(binding.path as NodePath<t.VariableDeclarator>)
70+
.get('init')
71+
.isAwaitExpression()
72+
) {
73+
if (parentPath.isExpressionStatement()) {
74+
path.remove()
75+
} else {
76+
path.replaceWith(argument.node)
77+
}
78+
}
6379
}
6480
},
6581
ReturnStatement(path: NodePath<t.ReturnStatement>) {

test/fixtures/bugs_PostgresConnectionManager.connect.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,9 +271,9 @@ class ConnectionManager {
271271
272272
if (query) {
273273
await connection1.query(query);
274-
connection0 = await connection1;
274+
connection0 = connection1;
275275
} else {
276-
connection0 = await connection1;
276+
connection0 = connection1;
277277
}
278278
if (Object.keys(this.nameOidMap).length === 0 &&
279279
this.enumOids.oids.length === 0 &&

test/fixtures/bugs_Sequelize.transaction.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class Sequelize {
5050
await transaction.prepareEnvironment();
5151
const result = await autoCallback(transaction);
5252
await transaction.commit();
53-
return await result;
53+
return result;
5454
} catch (err) {
5555
// Rollback transaction if not already finished (commit, rollback, etc)
5656
// and reject with original error (ignore any error in rollback)

test/fixtures/conditionalReturnCatch_AssignedToIdentifier.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ async function createUser(args) {
3737
user0 = await addUserToGroups(user1, groups)
3838
} else {
3939
console.log('blah')
40-
user0 = await user1
40+
user0 = user1
4141
}
4242
if (groups) {
4343
console.log('test')

test/fixtures/conditionalReturnCatch_ElseFallsThrough.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ async function createUser(args) {
4343
user = await addUserToGroups(user0, groups)
4444
} else {
4545
console.log('d')
46-
user = await user0
46+
user = user0
4747
}
4848
} catch (err) {
4949
console.error(err.stack)

test/fixtures/conditionalReturnCatch_FirstConsequentFallsThrough.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ async function createUser(args) {
3131
const user0 = await Users.create({ username })
3232
if (groups) {
3333
console.log('a')
34-
user = await user0
34+
user = user0
3535
} else if (foo) {
3636
console.log('b')
3737
user = await addUserToGroups(user0, groups)

test/fixtures/conditionalReturnCatch_MissingElseFallsThrough.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ async function createUser(args) {
4242
user = await addUserToGroups(user0, groups)
4343
} else {
4444
console.log('d')
45-
user = await user0
45+
user = user0
4646
}
4747
} catch (err) {
4848
console.error(err.stack)

test/fixtures/conditionalReturnCatch_Returned.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ async function createUser(args) {
2525
if (groups) {
2626
return await addUserToGroups(user, groups)
2727
}
28-
return await user
28+
return user
2929
} catch (err) {
3030
console.error(err.stack)
3131
return dummyUser()

test/fixtures/conditionalReturnCatch_SecondConsequentFallsThrough.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ async function createUser(args) {
3434
user = await addUserToGroups(user0, groups)
3535
} else if (foo) {
3636
console.log('b')
37-
user = await user0
37+
user = user0
3838
} else {
3939
console.log('c')
4040
user = await addUserToGroups(user0, groups)

test/fixtures/finalReturnUndefined.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
export const input = `
2+
async function foo() {
3+
await bar.then(baz => {
4+
if (qux) {
5+
return qux.then(() => baz)
6+
}
7+
return baz
8+
})
9+
}
10+
`
11+
12+
export const options = {}
13+
14+
export const expected = `
15+
async function foo() {
16+
const baz = await bar
17+
if (qux) {
18+
await qux
19+
}
20+
}
21+
`

0 commit comments

Comments
 (0)