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

Commit

Permalink
Fix: Use name 'this' in JSXMemberExpression (fixes #337)
Browse files Browse the repository at this point in the history
  • Loading branch information
soda0289 committed Jul 13, 2017
1 parent ef2687b commit 9734ee2
Show file tree
Hide file tree
Showing 3 changed files with 241 additions and 3 deletions.
3 changes: 3 additions & 0 deletions lib/convert.js
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,9 @@ module.exports = function convert(config) {
// Assign the appropriate types
tagNameToken.object.type = (isNestedMemberExpression) ? AST_NODE_TYPES.JSXMemberExpression : AST_NODE_TYPES.JSXIdentifier;
tagNameToken.property.type = AST_NODE_TYPES.JSXIdentifier;
if (tagName.expression.kind === SyntaxKind.ThisKeyword) {
tagNameToken.object.name = "this";
}
} else {
tagNameToken.type = AST_NODE_TYPES.JSXIdentifier;
tagNameToken.name = tagNameToken.value;
Expand Down
1 change: 1 addition & 0 deletions tests/fixtures/jsx/member-expression-this.src.js
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<this.state.Component />;
<this.Component />;
240 changes: 237 additions & 3 deletions tests/lib/__snapshots__/jsx.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -5504,11 +5504,119 @@ Object {
],
"type": "ExpressionStatement",
},
Object {
"expression": Object {
"children": Array [],
"closingElement": null,
"loc": Object {
"end": Object {
"column": 18,
"line": 2,
},
"start": Object {
"column": 0,
"line": 2,
},
},
"openingElement": Object {
"attributes": Array [],
"loc": Object {
"end": Object {
"column": 18,
"line": 2,
},
"start": Object {
"column": 0,
"line": 2,
},
},
"name": Object {
"loc": Object {
"end": Object {
"column": 15,
"line": 2,
},
"start": Object {
"column": 1,
"line": 2,
},
},
"object": Object {
"loc": Object {
"end": Object {
"column": 5,
"line": 2,
},
"start": Object {
"column": 1,
"line": 2,
},
},
"name": "this",
"range": Array [
27,
31,
],
"type": "JSXIdentifier",
},
"property": Object {
"loc": Object {
"end": Object {
"column": 15,
"line": 2,
},
"start": Object {
"column": 6,
"line": 2,
},
},
"name": "Component",
"range": Array [
32,
41,
],
"type": "JSXIdentifier",
},
"range": Array [
27,
41,
],
"type": "JSXMemberExpression",
},
"range": Array [
26,
44,
],
"selfClosing": true,
"type": "JSXOpeningElement",
},
"range": Array [
26,
44,
],
"type": "JSXElement",
},
"loc": Object {
"end": Object {
"column": 19,
"line": 2,
},
"start": Object {
"column": 0,
"line": 2,
},
},
"range": Array [
26,
45,
],
"type": "ExpressionStatement",
},
],
"loc": Object {
"end": Object {
"column": 25,
"line": 1,
"column": 19,
"line": 2,
},
"start": Object {
"column": 0,
Expand All @@ -5517,7 +5625,7 @@ Object {
},
"range": Array [
0,
25,
45,
],
"sourceType": "script",
"tokens": Array [
Expand Down Expand Up @@ -5683,6 +5791,132 @@ Object {
"type": "Punctuator",
"value": ";",
},
Object {
"loc": Object {
"end": Object {
"column": 1,
"line": 2,
},
"start": Object {
"column": 0,
"line": 2,
},
},
"range": Array [
26,
27,
],
"type": "Punctuator",
"value": "<",
},
Object {
"loc": Object {
"end": Object {
"column": 5,
"line": 2,
},
"start": Object {
"column": 1,
"line": 2,
},
},
"range": Array [
27,
31,
],
"type": "Keyword",
"value": "this",
},
Object {
"loc": Object {
"end": Object {
"column": 6,
"line": 2,
},
"start": Object {
"column": 5,
"line": 2,
},
},
"range": Array [
31,
32,
],
"type": "Punctuator",
"value": ".",
},
Object {
"loc": Object {
"end": Object {
"column": 15,
"line": 2,
},
"start": Object {
"column": 6,
"line": 2,
},
},
"range": Array [
32,
41,
],
"type": "JSXIdentifier",
"value": "Component",
},
Object {
"loc": Object {
"end": Object {
"column": 17,
"line": 2,
},
"start": Object {
"column": 16,
"line": 2,
},
},
"range": Array [
42,
43,
],
"type": "Punctuator",
"value": "/",
},
Object {
"loc": Object {
"end": Object {
"column": 18,
"line": 2,
},
"start": Object {
"column": 17,
"line": 2,
},
},
"range": Array [
43,
44,
],
"type": "Punctuator",
"value": ">",
},
Object {
"loc": Object {
"end": Object {
"column": 19,
"line": 2,
},
"start": Object {
"column": 18,
"line": 2,
},
},
"range": Array [
44,
45,
],
"type": "Punctuator",
"value": ";",
},
],
"type": "Program",
}
Expand Down

0 comments on commit 9734ee2

Please sign in to comment.