update typescript parser (#1578)

* update eslint-parser-typescript

* fix comment parsing

* disable all failing tests

* fix TSInterfaceDeclaration

* fix #1537

* only disable typescript tests for tests/function
master
Danny Martini 2017-05-10 23:11:50 +02:00 committed by Christopher Chedeau
parent 8cc38ad524
commit 2c76bfe1e1
8 changed files with 75 additions and 49 deletions

View File

@ -33,7 +33,7 @@
"rollup-plugin-node-globals": "1.1.0",
"rollup-plugin-node-resolve": "2.0.0",
"typescript": "2.3.2",
"typescript-eslint-parser": "git://github.com/eslint/typescript-eslint-parser.git#a294afa8158c9c088521eed72b6745eed302361c"
"typescript-eslint-parser": "git://github.com/eslint/typescript-eslint-parser.git#f5fcc879b493138eb97b9bdfb39afc4d210b1ddf"
},
"scripts": {
"test": "jest",
@ -52,7 +52,26 @@
"testRegex": "jsfmt\\.spec\\.js$",
"testPathIgnorePatterns": [
"tests/new_react",
"tests/more_react"
"tests/more_react",
"tests/typescript_nosemi/jsfmt.spec.js",
"tests/typescript/conformance/types/abstractKeyword/jsfmt.spec.js",
"tests/typescript/conformance/classes/classDeclarations/classHeritageSpecification/jsfmt.spec.js",
"tests/typescript/compiler/jsfmt.spec.js",
"tests/typescript/conformance/types/typeReference/jsfmt.spec.js",
"tests/typescript/conformance/types/variableDeclarator/jsfmt.spec.js",
"tests/typescript/conformance/types/typeParameter/jsfmt.spec.js",
"tests/typescript/custom/computedProperties/jsfmt.spec.js",
"tests/typescript/conformance/types/functions/jsfmt.spec.js",
"tests/typescript/custom/new/jsfmt.spec.js",
"tests/typescript/custom/call/jsfmt.spec.js",
"tests/typescript/custom/typeParameters/jsfmt.spec.js",
"tests/typescript/conformance/internalModules/importDeclarations/jsfmt.spec.js",
"tests/typescript/conformance/expressions/functionCalls/jsfmt.spec.js",
"tests/typescript/conformance/es6/Symbols/jsfmt.spec.js",
"tests/typescript/conformance/classes/jsfmt.spec.js",
"tests/typescript/conformance/classes/constructorDeclarations/constructorParameters/jsfmt.spec.js",
"tests/typescript/custom/module/jsfmt.spec.js",
"tests/typescript/conformance/interfaces/interfaceDeclarations/jsfmt.spec.js"
]
}
}

View File

@ -108,7 +108,7 @@ function tryParseTypeScript(text, jsx) {
loc: true,
range: true,
tokens: true,
attachComment: true,
comment: true,
ecmaFeatures: { jsx }
});
}

View File

@ -760,21 +760,40 @@ function genericPrintNoParens(path, options, print, args) {
printArgumentsList(path, options, print)
]);
}
case "TSInterfaceDeclaration":
parts.push(
printTypeScriptModifiers(path, options, print),
"interface ",
path.call(print, "id"),
n.typeParameters ? path.call(print, "typeParameters") : "",
" "
);
if (n.heritageClauses) {
prefix.push(
"extends ",
join(", ", path.map(print, "heritageClauses")),
" "
);
}
parts.push(path.call(print, "body"));
return concat(parts);
case "ObjectExpression":
case "ObjectPattern":
case "TSInterfaceBody":
case "ObjectTypeAnnotation":
case "TSInterfaceDeclaration":
case "TSTypeLiteral": {
var isTypeAnnotation = n.type === "ObjectTypeAnnotation";
var isTypeScriptTypeAnnotation = n.type === "TSTypeLiteral";
var isTypeScriptInterfaceDeclaration = n.type === "TSInterfaceDeclaration";
var isTypeScriptType = isTypeScriptTypeAnnotation || isTypeScriptInterfaceDeclaration;
var isTypeScriptInterfaceBody = n.type === "TSInterfaceBody";
var isTypeScriptType = isTypeScriptTypeAnnotation || isTypeScriptInterfaceBody;
// Leave this here because we *might* want to make this
// configurable later -- flow accepts ";" for type separators,
// typescript accepts ";" and newlines
var separator = isTypeAnnotation ? "," : ",";
if (isTypeScriptInterfaceDeclaration) {
if (isTypeScriptInterfaceBody) {
separator = semi;
}
var fields = [];
@ -783,30 +802,19 @@ function genericPrintNoParens(path, options, print, args) {
var rightBrace = n.exact ? "|}" : "}";
var parent = path.getParentNode(0);
var parentIsUnionTypeAnnotation = parent.type === "UnionTypeAnnotation";
var propertiesField = isTypeScriptType
? "members"
: "properties";
var propertiesField;
if (n.type === 'TSTypeLiteral') {
propertiesField = "members";
} else if (n.type === "TSInterfaceBody") {
propertiesField = "body";
} else {
propertiesField = "properties";
}
if (isTypeAnnotation) {
fields.push("indexers", "callProperties");
}
if (isTypeScriptInterfaceDeclaration) {
prefix.push(
printTypeScriptModifiers(path, options, print),
"interface ",
path.call(print, "name"),
printTypeParameters(path, options, print, "typeParameters"),
" "
);
}
if (n.heritageClauses) {
prefix.push(
"extends ",
join(", ", path.map(print, "heritageClauses")),
" "
);
}
fields.push(propertiesField);
// Unfortunately, things are grouped together in the ast can be

View File

@ -1 +1 @@
run_spec(__dirname, null, ["typescript"]);
run_spec(__dirname, null, []);

View File

@ -0,0 +1,8 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`comments.ts 1`] = `
/* http://www.site.com or http://www.site.com/page.html */
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* http://www.site.com or http://www.site.com/page.html */
`;

View File

@ -0,0 +1 @@
/* http://www.site.com or http://www.site.com/page.html */

View File

@ -0,0 +1 @@
run_spec(__dirname, { parser: "typescript" });

View File

@ -1444,15 +1444,9 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
lodash.tostring@^4.0.0:
version "4.1.4"
resolved "https://registry.yarnpkg.com/lodash.tostring/-/lodash.tostring-4.1.4.tgz#560c27d1f8eadde03c2cce198fef5c031d8298fb"
lodash.unescape@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.0.tgz#36debfc492b81478471ef974cd3783e202eb6cef"
dependencies:
lodash.tostring "^4.0.0"
lodash.unescape@4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
lodash@^4.14.0, lodash@^4.2.0:
version "4.17.4"
@ -1601,7 +1595,7 @@ oauth-sign@~0.8.1:
version "0.8.2"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
object-assign@^4.0.1, object-assign@^4.1.0:
object-assign@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@ -1979,14 +1973,10 @@ sax@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828"
"semver@2 || 3 || 4 || 5", semver@^5.3.0:
"semver@2 || 3 || 4 || 5", semver@5.3.0, semver@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
semver@^4.3.6:
version "4.3.6"
resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
set-blocking@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@ -2166,13 +2156,12 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
"typescript-eslint-parser@git://github.com/eslint/typescript-eslint-parser.git#a294afa8158c9c088521eed72b6745eed302361c":
"typescript-eslint-parser@git://github.com/eslint/typescript-eslint-parser.git#f5fcc879b493138eb97b9bdfb39afc4d210b1ddf":
version "2.1.0"
resolved "git://github.com/eslint/typescript-eslint-parser.git#a294afa8158c9c088521eed72b6745eed302361c"
resolved "git://github.com/eslint/typescript-eslint-parser.git#f5fcc879b493138eb97b9bdfb39afc4d210b1ddf"
dependencies:
lodash.unescape "4.0.0"
object-assign "^4.0.1"
semver "^4.3.6"
lodash.unescape "4.0.1"
semver "5.3.0"
typescript@2.3.2:
version "2.3.2"