Skip to content
This repository was archived by the owner on Jan 19, 2019. It is now read-only.

Commit 0540298

Browse files
soda0289JamesHenry
authored andcommitted
Fix: Calculate correct type parameter range (fixes #316) (#320)
1 parent 4938c2c commit 0540298

File tree

3 files changed

+368
-4
lines changed

3 files changed

+368
-4
lines changed

lib/convert.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,15 @@ module.exports = function convert(config) {
101101
function convertTypeArgumentsToTypeParameters(typeArguments) {
102102
const firstTypeArgument = typeArguments[0];
103103
const lastTypeArgument = typeArguments[typeArguments.length - 1];
104+
const greaterThanToken = nodeUtils.findNextToken(lastTypeArgument, ast);
105+
104106
return {
105107
type: AST_NODE_TYPES.TypeParameterInstantiation,
106108
range: [
107109
firstTypeArgument.pos - 1,
108-
lastTypeArgument.end + 1
110+
greaterThanToken.end
109111
],
110-
loc: nodeUtils.getLocFor(firstTypeArgument.pos - 1, lastTypeArgument.end + 1, ast),
112+
loc: nodeUtils.getLocFor(firstTypeArgument.pos - 1, greaterThanToken.end, ast),
111113
params: typeArguments.map(typeArgument => ({
112114
type: AST_NODE_TYPES.GenericTypeAnnotation,
113115
range: [
@@ -131,13 +133,16 @@ module.exports = function convert(config) {
131133
function convertTSTypeParametersToTypeParametersDeclaration(typeParameters) {
132134
const firstTypeParameter = typeParameters[0];
133135
const lastTypeParameter = typeParameters[typeParameters.length - 1];
136+
137+
const greaterThanToken = nodeUtils.findNextToken(lastTypeParameter, ast);
138+
134139
return {
135140
type: AST_NODE_TYPES.TypeParameterDeclaration,
136141
range: [
137142
firstTypeParameter.pos - 1,
138-
lastTypeParameter.end + 1
143+
greaterThanToken.end
139144
],
140-
loc: nodeUtils.getLocFor(firstTypeParameter.pos - 1, lastTypeParameter.end + 1, ast),
145+
loc: nodeUtils.getLocFor(firstTypeParameter.pos - 1, greaterThanToken.end, ast),
141146
params: typeParameters.map(typeParameter => {
142147
const name = nodeUtils.unescapeIdentifier(typeParameter.name.text);
143148

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
foo< /* comment 1 */ A /* comment 2 */ >();
2+
function bar< /* aaa */ A /* bbb */ >() { }
3+
function baz< /* aaa */ A /* bbb */ = Foo >() { }

0 commit comments

Comments
 (0)