feat(codegen): configurable typescript codegen (#2443)

- Adds option to `CodegenOptions` - `enable_typescript` to enable output
of TS.
- Stops skipping output that is TS when `enable_typescript` is enabled
- Adds TS support to 
    - Function
    - FormalParameter
    - BindingPattern
 - Adds basic tests for TS generation

---------

Co-authored-by: Boshen <boshenc@gmail.com>
This commit is contained in:
Andrew McClenaghan 2024-02-20 14:09:28 +10:00 committed by GitHub
parent a78303d5a6
commit e6d536cb9b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 1199 additions and 72 deletions

View file

@ -28,7 +28,7 @@ fn main() {
println!("Original:");
println!("{source_text}");
let codegen_options = CodegenOptions;
let codegen_options = CodegenOptions::default();
let printed = Codegen::<false>::new(source_text.len(), codegen_options).build(&ret.program);
println!("Printed:");
println!("{printed}");

View file

@ -591,7 +591,7 @@ impl<'a, const MINIFY: bool> Gen<MINIFY> for VariableDeclarator<'a> {
impl<'a, const MINIFY: bool> Gen<MINIFY> for Function<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
if self.is_typescript_syntax() {
if !p.options.enable_typescript && self.is_typescript_syntax() {
return;
}
let n = p.code_len();
@ -609,9 +609,20 @@ impl<'a, const MINIFY: bool> Gen<MINIFY> for Function<'a> {
p.print_space_before_identifier();
id.gen(p, ctx);
}
if p.options.enable_typescript {
if let Some(type_parameters) = &self.type_parameters {
type_parameters.gen(p, ctx);
}
}
p.print(b'(');
self.params.gen(p, ctx);
p.print(b')');
if p.options.enable_typescript {
if let Some(return_type) = &self.return_type {
p.print_str(b": ");
return_type.gen(p, ctx);
}
}
p.print_soft_space();
if let Some(body) = &self.body {
body.gen(p, ctx);
@ -638,6 +649,9 @@ impl<'a, const MINIFY: bool> Gen<MINIFY> for FunctionBody<'a> {
impl<'a, const MINIFY: bool> Gen<MINIFY> for FormalParameter<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
self.decorators.gen(p, ctx);
if p.options.enable_typescript && self.readonly {
p.print_str(b"readonly ");
}
self.pattern.gen(p, ctx);
}
}
@ -648,6 +662,7 @@ impl<'a, const MINIFY: bool> Gen<MINIFY> for FormalParameters<'a> {
if let Some(rest) = &self.rest {
if !self.items.is_empty() {
p.print_comma();
p.print_soft_space();
}
rest.gen(p, ctx);
}
@ -768,7 +783,7 @@ impl<const MINIFY: bool> Gen<MINIFY> for ImportAttribute {
impl<'a, const MINIFY: bool> Gen<MINIFY> for ExportNamedDeclaration<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
if self.is_typescript_syntax() {
if !p.options.enable_typescript && self.is_typescript_syntax() {
return;
}
p.print_str(b"export ");
@ -817,7 +832,7 @@ impl<const MINIFY: bool> Gen<MINIFY> for ModuleExportName {
impl<'a, const MINIFY: bool> Gen<MINIFY> for ExportAllDeclaration<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
if self.is_typescript_syntax() {
if !p.options.enable_typescript && self.is_typescript_syntax() {
return;
}
p.print_str(b"export ");
@ -841,7 +856,7 @@ impl<'a, const MINIFY: bool> Gen<MINIFY> for ExportAllDeclaration<'a> {
impl<'a, const MINIFY: bool> Gen<MINIFY> for ExportDefaultDeclaration<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
if self.is_typescript_syntax() {
if !p.options.enable_typescript && self.is_typescript_syntax() {
return;
}
p.print_str(b"export default ");
@ -858,7 +873,7 @@ impl<'a, const MINIFY: bool> Gen<MINIFY> for ExportDefaultDeclarationKind<'a> {
}
Self::FunctionDeclaration(fun) => fun.gen(p, ctx),
Self::ClassDeclaration(class) => {
if !class.is_typescript_syntax() {
if !p.options.enable_typescript && !class.is_typescript_syntax() {
class.gen(p, ctx);
p.print_soft_newline();
}
@ -2092,7 +2107,7 @@ impl<'a, const MINIFY: bool> Gen<MINIFY> for StaticBlock<'a> {
impl<'a, const MINIFY: bool> Gen<MINIFY> for MethodDefinition<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
if self.value.is_typescript_syntax() {
if !p.options.enable_typescript && self.value.is_typescript_syntax() {
return;
}
self.decorators.gen(p, ctx);
@ -2186,6 +2201,13 @@ impl<'a, const MINIFY: bool> Gen<MINIFY> for BindingPattern<'a> {
BindingPatternKind::ArrayPattern(pattern) => pattern.gen(p, ctx),
BindingPatternKind::AssignmentPattern(pattern) => pattern.gen(p, ctx),
}
if p.options.enable_typescript {
if let Some(type_annotation) = &self.type_annotation {
p.print_colon();
p.print_soft_space();
type_annotation.gen(p, ctx);
}
}
}
}

View file

@ -0,0 +1,391 @@
use crate::context::Context;
use crate::{Codegen, Gen, GenExpr};
#[allow(clippy::wildcard_imports)]
use oxc_ast::ast::*;
use oxc_syntax::precedence::Precedence;
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSTypeParameterDeclaration<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
p.print_str(b"<");
p.print_list(&self.params, ctx);
p.print_str(b">");
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSTypeAnnotation<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
self.type_annotation.gen(p, ctx);
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSType<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
match self {
Self::TSFunctionType(decl) => decl.gen(p, ctx),
Self::TSConstructorType(_decl) => {
// TODO: TSConstructorType
}
Self::TSArrayType(decl) => {
decl.element_type.gen(p, ctx);
p.print_str(b"[]");
}
Self::TSTupleType(decl) => {
p.print_str(b"[");
p.print_list(&decl.element_types, ctx);
p.print_str(b"]");
}
Self::TSUnionType(decl) => {
for (index, item) in decl.types.iter().enumerate() {
if index != 0 {
p.print_soft_space();
p.print_str(b"|");
p.print_soft_space();
}
item.gen(p, ctx);
}
}
Self::TSIntersectionType(decl) => {
for (index, item) in decl.types.iter().enumerate() {
if index != 0 {
p.print_soft_space();
p.print_str(b"&");
p.print_soft_space();
}
item.gen(p, ctx);
}
}
Self::TSConditionalType(decl) => {
decl.check_type.gen(p, ctx);
p.print_str(b" extends ");
decl.extends_type.gen(p, ctx);
p.print_str(b" ? ");
decl.true_type.gen(p, ctx);
p.print_str(b" : ");
decl.false_type.gen(p, ctx);
}
Self::TSInferType(decl) => {
p.print_str(b"infer ");
decl.type_parameter.gen(p, ctx);
}
Self::TSIndexedAccessType(decl) => {
decl.object_type.gen(p, ctx);
p.print_str(b"[");
decl.index_type.gen(p, ctx);
p.print_str(b"]");
}
Self::TSMappedType(_decl) => {
// TODO: Implement this
}
Self::TSLiteralType(decl) => {
decl.literal.gen(p, ctx);
}
Self::TSImportType(_decl) => {
// TODO: Implement this
}
Self::TSQualifiedName(decl) => {
decl.left.gen(p, ctx);
p.print_str(b".");
decl.right.gen(p, ctx);
}
Self::TSAnyKeyword(_decl) => {
p.print_str(b"any");
}
Self::TSBigIntKeyword(_decl) => {
p.print_str(b"bigint");
}
Self::TSBooleanKeyword(_decl) => {
p.print_str(b"boolean");
}
Self::TSNeverKeyword(_decl) => {
p.print_str(b"never");
}
Self::TSNullKeyword(_decl) => {
p.print_str(b"null");
}
Self::TSNumberKeyword(_decl) => {
p.print_str(b"number");
}
Self::TSObjectKeyword(_decl) => {
p.print_str(b"object");
}
Self::TSStringKeyword(_decl) => {
p.print_str(b"string");
}
Self::TSSymbolKeyword(_decl) => {
// TODO: TSSymbolKeyword
}
Self::TSThisKeyword(_decl) => {
p.print_str(b"this");
}
Self::TSUndefinedKeyword(_decl) => {
p.print_str(b"undefined");
}
Self::TSUnknownKeyword(_decl) => {
p.print_str(b"unknown");
}
Self::TSVoidKeyword(_decl) => {
p.print_str(b"void");
}
Self::TSTemplateLiteralType(_decl) => {
// TODO: TSTemplateLiteralType
}
Self::TSTypeLiteral(decl) => {
p.print_str(b"{");
for item in &decl.members {
item.gen(p, ctx);
p.print_semicolon();
}
p.print_soft_space();
p.print_str(b"}");
}
Self::TSTypeOperatorType(decl) => {
match decl.operator {
TSTypeOperator::Keyof => {
p.print_str(b"keyof ");
}
TSTypeOperator::Unique => {
p.print_str(b"unique ");
}
TSTypeOperator::Readonly => {
p.print_str(b"readonly ");
}
}
decl.type_annotation.gen(p, ctx);
}
Self::TSTypePredicate(decl) => {
if decl.asserts {
p.print_str(b"asserts ");
}
match &decl.parameter_name {
TSTypePredicateName::Identifier(ident) => {
ident.gen(p, ctx);
}
TSTypePredicateName::This(_ident) => {
p.print_str(b"this");
}
}
if let Some(type_annotation) = &decl.type_annotation {
p.print_str(b" is ");
type_annotation.gen(p, ctx);
}
}
Self::TSTypeQuery(decl) => decl.gen(p, ctx),
Self::TSTypeReference(decl) => {
decl.type_name.gen(p, ctx);
if let Some(type_parameters) = &decl.type_parameters {
type_parameters.gen(p, ctx);
}
}
Self::JSDocNullableType(decl) => {
if decl.postfix {
decl.type_annotation.gen(p, ctx);
p.print_str(b"?");
} else {
p.print_str(b"?");
decl.type_annotation.gen(p, ctx);
}
}
Self::JSDocUnknownType(_decl) => p.print_str(b"unknown"),
}
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSTypeName<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
match self {
Self::IdentifierReference(decl) => {
p.print_str(decl.name.as_bytes());
}
Self::QualifiedName(decl) => {
decl.left.gen(p, ctx);
p.print_str(b".");
decl.right.gen(p, ctx);
}
}
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSLiteral<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
match self {
Self::BooleanLiteral(decl) => {
p.print_str(if decl.value { b"true" } else { b"false" });
}
Self::NullLiteral(_decl) => {
p.print_str(b"null");
}
Self::NumberLiteral(decl) => {
decl.gen(p, ctx);
}
Self::BigintLiteral(_decl) => {
// TODO: BigintLiteral
}
Self::RegExpLiteral(_decl) => {
// TODO: RegExpLiteral
}
Self::StringLiteral(decl) => {
p.print(b'\'');
p.print_str(decl.value.as_bytes());
p.print(b'\'');
}
Self::TemplateLiteral(_decl) => {
// TODO: Implement this
}
Self::UnaryExpression(_decl) => {
// TODO: Implement this
}
}
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSTypeParameter<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
self.name.gen(p, ctx);
if let Some(constraint) = &self.constraint {
p.print_str(b" extends ");
constraint.gen(p, ctx);
}
if let Some(default) = &self.default {
p.print_str(b" = ");
default.gen(p, ctx);
}
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSFunctionType<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
if let Some(type_parameters) = &self.type_parameters {
type_parameters.gen(p, ctx);
}
p.print_str(b"(");
if let Some(this_param) = &self.this_param {
this_param.this.gen(p, ctx);
p.print_str(b":");
if let Some(type_annotation) = &this_param.type_annotation {
type_annotation.gen(p, ctx);
} else {
p.print_str(b"unknown");
}
if !self.params.is_empty() {
p.print_str(b",");
}
p.print_soft_space();
}
self.params.gen(p, ctx);
p.print_str(b")");
p.print_soft_space();
p.print_str(b"=>");
p.print_soft_space();
self.return_type.gen(p, ctx);
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSSignature<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
p.print_soft_space();
match self {
Self::TSIndexSignature(signature) => signature.gen(p, ctx),
Self::TSPropertySignature(signature) => {
if signature.readonly {
p.print_str(b"readonly");
p.print_hard_space();
}
if signature.computed {
p.print(b'[');
signature.key.gen(p, ctx);
p.print(b']');
} else {
match &signature.key {
PropertyKey::Identifier(key) => {
key.gen(p, ctx);
}
PropertyKey::PrivateIdentifier(key) => {
p.print_str(key.name.as_bytes());
}
PropertyKey::Expression(key) => {
key.gen_expr(p, Precedence::Assign, ctx);
}
}
}
if signature.optional {
p.print_str(b"?");
}
p.print_colon();
p.print_soft_space();
if let Some(type_annotation) = &signature.type_annotation {
type_annotation.gen(p, ctx);
}
}
Self::TSCallSignatureDeclaration(_signature) => {
// TODO: TSCallSignatureDeclaration
}
Self::TSConstructSignatureDeclaration(_signature) => {
// TODO: TSConstructSignatureDeclaration
}
Self::TSMethodSignature(_signature) => {
// TODO: TSMethodSignature
}
}
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSTypeQuery<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
p.print_str(b"typeof ");
self.expr_name.gen(p, ctx);
if let Some(type_params) = &self.type_parameters {
type_params.gen(p, ctx);
}
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSTypeParameterInstantiation<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
p.print_str(b"<");
p.print_list(&self.params, ctx);
p.print_str(b">");
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSIndexSignature<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
p.print_str(b"[");
for (index, parameter) in self.parameters.iter().enumerate() {
if index != 0 {
p.print_str(b" | ");
}
p.print_str(parameter.name.as_bytes());
p.print_colon();
p.print_soft_space();
parameter.type_annotation.gen(p, ctx);
}
p.print_str(b"]");
p.print_colon();
p.print_soft_space();
self.type_annotation.gen(p, ctx);
}
}
impl<'a, const MINIFY: bool> Gen<MINIFY> for TSTupleElement<'a> {
fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) {
match self {
TSTupleElement::TSType(ts_type) => {
ts_type.gen(p, ctx);
}
TSTupleElement::TSOptionalType(ts_type) => {
ts_type.type_annotation.gen(p, ctx);
p.print_str(b"?");
}
TSTupleElement::TSRestType(ts_type) => {
p.print_str(b"...");
ts_type.type_annotation.gen(p, ctx);
}
TSTupleElement::TSNamedTupleMember(ts_type) => {
ts_type.label.gen(p, ctx);
p.print_str(b":");
p.print_soft_space();
ts_type.element_type.gen(p, ctx);
}
}
}
}

View file

@ -10,6 +10,7 @@
mod context;
mod gen;
mod gen_ts;
mod operator;
use std::str::from_utf8_unchecked;
@ -32,7 +33,9 @@ pub use crate::{
// use crate::mangler::Mangler;
#[derive(Debug, Default, Clone, Copy)]
pub struct CodegenOptions;
pub struct CodegenOptions {
pub enable_typescript: bool,
}
pub struct Codegen<const MINIFY: bool> {
#[allow(unused)]

View file

@ -8,7 +8,25 @@ fn test(source_text: &str, expected: &str) {
let source_type = SourceType::default().with_module(true);
let program = Parser::new(&allocator, source_text, source_type).parse().program;
let program = allocator.alloc(program);
let result = Codegen::<false>::new(source_text.len(), CodegenOptions).build(program);
let result = Codegen::<false>::new(source_text.len(), CodegenOptions::default()).build(program);
assert_eq!(expected, result, "for source {source_text}, expect {expected}, got {result}");
}
fn test_ts_same_out(source_text: &str) {
test_ts(source_text, &format!("{source_text}\n"), false);
}
fn test_ts(source_text: &str, expected: &str, is_typescript_definition: bool) {
let allocator = Allocator::default();
let source_type = SourceType::default()
.with_typescript(true)
.with_typescript_definition(is_typescript_definition)
.with_module(true);
let program = Parser::new(&allocator, source_text, source_type).parse().program;
let program = allocator.alloc(program);
let result =
Codegen::<false>::new(source_text.len(), CodegenOptions { enable_typescript: true })
.build(program);
assert_eq!(expected, result, "for source {source_text}, expect {expected}, got {result}");
}
@ -113,3 +131,22 @@ fn module_decl() {
fn new_expr() {
test("new (foo()).bar();", "new (foo()).bar();\n");
}
#[test]
fn typescript() {
test_ts_same_out("let x: string = `\\x01`;");
test_ts_same_out("function foo<T extends string>(x: T, y: string, ...restOfParams: Omit<T, 'x'>): T {\n\treturn x;\n}");
test_ts_same_out("let x: string[] = ['abc', 'def', 'ghi'];");
test_ts_same_out("let x: Array<string> = ['abc', 'def', 'ghi',];");
test_ts_same_out("let x: [string, number] = ['abc', 123];");
test_ts_same_out("let x: string | number = 'abc';");
test_ts_same_out("let x: string & number = 'abc';");
test_ts_same_out("let x: typeof String = 'string';");
test_ts_same_out("let x: keyof string = 'length';");
test_ts_same_out("let x: keyof typeof String = 'length';");
test_ts_same_out("let x: string['length'] = 123;");
test_ts_same_out("function isString(value: unknown): asserts value is string {\n\tif (typeof value !== 'string') {\n\t\tthrow new Error('Not a string');\n\t}\n}");
}

View file

@ -151,7 +151,7 @@ impl<'a> LintContext<'a> {
#[allow(clippy::unused_self)]
pub fn codegen(&self) -> Codegen<false> {
Codegen::<false>::new(0, CodegenOptions)
Codegen::<false>::new(0, CodegenOptions::default())
}
/* JSDoc */

View file

@ -41,8 +41,8 @@ fn minify(source_text: &str, source_type: SourceType, mangle: bool, whitespace:
let options = MinifierOptions { mangle, ..MinifierOptions::default() };
Minifier::new(options).build(&allocator, program);
if whitespace {
Codegen::<true>::new(source_text.len(), CodegenOptions).build(program)
Codegen::<true>::new(source_text.len(), CodegenOptions::default()).build(program)
} else {
Codegen::<false>::new(source_text.len(), CodegenOptions).build(program)
Codegen::<false>::new(source_text.len(), CodegenOptions::default()).build(program)
}
}

View file

@ -19,7 +19,7 @@ pub(crate) fn minify(
let program = Parser::new(&allocator, source_text, source_type).parse().program;
let program = allocator.alloc(program);
Minifier::new(options).build(&allocator, program);
Codegen::<true>::new(source_text.len(), CodegenOptions).build(program)
Codegen::<true>::new(source_text.len(), CodegenOptions::default()).build(program)
}
pub(crate) fn test(source_text: &str, expected: &str) {

View file

@ -51,7 +51,8 @@ fn main() {
};
Transformer::new(&allocator, source_type, semantic, transform_options).build(program).unwrap();
let printed = Codegen::<false>::new(source_text.len(), CodegenOptions).build(program);
let printed =
Codegen::<false>::new(source_text.len(), CodegenOptions::default()).build(program);
println!("Transformed:\n");
println!("{printed}");
}

View file

@ -35,11 +35,13 @@ impl Tester {
let program = self.allocator.alloc(program);
Transformer::new(&self.allocator, self.source_type, semantic, self.options.clone())
.build(program)
.map(move |()| Codegen::<false>::new(source_text.len(), CodegenOptions).build(program))
.map(move |()| {
Codegen::<false>::new(source_text.len(), CodegenOptions::default()).build(program)
})
}
fn codegen(&self, source_text: &str) -> String {
let program = Parser::new(&self.allocator, source_text, self.source_type).parse().program;
Codegen::<false>::new(source_text.len(), CodegenOptions).build(&program)
Codegen::<false>::new(source_text.len(), CodegenOptions::default()).build(&program)
}
}

View file

@ -221,9 +221,9 @@ impl Oxc {
}
self.codegen_text = if minifier_options.whitespace() {
Codegen::<true>::new(source_text.len(), CodegenOptions).build(program)
Codegen::<true>::new(source_text.len(), CodegenOptions::default()).build(program)
} else {
Codegen::<false>::new(source_text.len(), CodegenOptions).build(program)
Codegen::<false>::new(source_text.len(), CodegenOptions::default()).build(program)
};
Ok(())

View file

@ -1,4 +1,56 @@
codegen_babel Summary:
AST Parsed : 2096/2096 (100.00%)
Positive Passed: 2095/2096 (99.95%)
Expect to Parse: "typescript/types/intrinsic-identifier/input.ts"
Positive Passed: 2043/2096 (97.47%)
Typescript failed: "comments/basic/export-default-anonymous-class/input.js"
Typescript failed: "comments/decorators/decorators-after-export/input.js"
Typescript failed: "comments/decorators/decorators-before-export/input.js"
Typescript failed: "es2015/modules/export-default-class-declaration/input.js"
Typescript failed: "es2015/uncategorised/82/input.js"
Typescript failed: "es2015/uncategorised/83/input.js"
Typescript failed: "esprima/es2015-export-declaration/export-default-class/input.js"
Typescript failed: "typescript/arrow-function/annotated/input.ts"
Typescript failed: "typescript/arrow-function/async/input.ts"
Typescript failed: "typescript/arrow-function/async-generic-tokens-true/input.ts"
Typescript failed: "typescript/arrow-function/async-generic-tokens-true-babel-7/input.ts"
Typescript failed: "typescript/arrow-function/generic/input.ts"
Typescript failed: "typescript/arrow-function/generic-babel-7/input.ts"
Typescript failed: "typescript/arrow-function/optional-parameter/input.ts"
Typescript failed: "typescript/arrow-function/predicate-types/input.ts"
Typescript failed: "typescript/assert-predicate/arrow-function/input.ts"
Typescript failed: "typescript/class/abstract/input.ts"
Typescript failed: "typescript/enum/export/input.ts"
Typescript failed: "typescript/enum/export-const/input.ts"
Typescript failed: "typescript/enum/export-declare-const/input.ts"
Typescript failed: "typescript/export/declare/input.ts"
Typescript failed: "typescript/export/export-type-declaration/input.ts"
Typescript failed: "typescript/export/export-value-declaration/input.ts"
Typescript failed: "typescript/export/nested-same-name/input.ts"
Typescript failed: "typescript/function/overloads/input.ts"
Typescript failed: "typescript/import/export-import/input.ts"
Typescript failed: "typescript/import/export-import-require/input.ts"
Typescript failed: "typescript/import/export-import-type-as-identifier/input.ts"
Typescript failed: "typescript/import/export-import-type-require/input.ts"
Typescript failed: "typescript/import/type-asi/input.ts"
Typescript failed: "typescript/interface/export/input.ts"
Typescript failed: "typescript/module-namespace/head-export/input.ts"
Typescript failed: "typescript/regression/is-default-export/input.ts"
Typescript failed: "typescript/type-alias/export/input.ts"
Typescript failed: "typescript/types/abstract-constructor-signatures/input.ts"
Typescript failed: "typescript/types/abstract-constructor-signatures-babel-7/input.ts"
Typescript failed: "typescript/types/constructor-signatures/input.ts"
Typescript failed: "typescript/types/constructor-signatures-babel-7/input.ts"
Typescript failed: "typescript/types/import-type-dynamic/input.ts"
Minify failed: "typescript/types/intrinsic-identifier/input.ts"
Typescript failed: "typescript/types/keywords/input.ts"
Typescript failed: "typescript/types/literal-bigint/input.ts"
Typescript failed: "typescript/types/literal-bigint-negative/input.ts"
Typescript failed: "typescript/types/literal-number-negative/input.ts"
Typescript failed: "typescript/types/literal-string-1/input.ts"
Typescript failed: "typescript/types/literal-string-2/input.ts"
Typescript failed: "typescript/types/literal-string-4/input.ts"
Typescript failed: "typescript/types/literal-string-4-babel-7/input.ts"
Typescript failed: "typescript/types/mapped/input.ts"
Typescript failed: "typescript/types/mapped-babel-7/input.ts"
Typescript failed: "typescript/types/type-literal-get-set/input.ts"
Typescript failed: "typescript/types/type-literal-get-set-babel-7/input.ts"
Typescript failed: "typescript/types/type-operator/input.ts"

View file

@ -1,3 +1,21 @@
codegen_test262 Summary:
AST Parsed : 45836/45836 (100.00%)
Positive Passed: 45836/45836 (100.00%)
Positive Passed: 45818/45836 (99.96%)
Typescript failed: "language/module-code/eval-export-dflt-cls-anon-semi.js"
Typescript failed: "language/module-code/eval-export-dflt-cls-anon.js"
Typescript failed: "language/module-code/eval-export-dflt-cls-name-meth.js"
Typescript failed: "language/module-code/eval-export-dflt-cls-named-semi.js"
Typescript failed: "language/module-code/eval-export-dflt-cls-named.js"
Typescript failed: "language/module-code/instn-named-bndng-dflt-cls.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-array-literal.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-func-expression.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-identifier.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-number.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-string.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-nested.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-new-expr.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-null.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-obj-literal.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-regexp.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-template-literal.js"
Typescript failed: "language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-this.js"

View file

@ -1,28 +1,604 @@
codegen_typescript Summary:
AST Parsed : 5243/5243 (100.00%)
Positive Passed: 5218/5243 (99.52%)
Expect to Parse: "compiler/binopAssignmentShouldHaveType.ts"
Expect to Parse: "compiler/elidedEmbeddedStatementsReplacedWithSemicolon.ts"
Expect to Parse: "compiler/identityRelationNeverTypes.ts"
Expect to Parse: "compiler/jsxMultilineAttributeStringValues.tsx"
Expect to Parse: "compiler/jsxMultilineAttributeValuesReact.tsx"
Expect to Parse: "compiler/jsxNamespacedNameNotComparedToNonMatchingIndexSignature.tsx"
Expect to Parse: "compiler/localClassesInLoop.ts"
Expect to Parse: "compiler/localClassesInLoop_ES6.ts"
Expect to Parse: "compiler/modularizeLibrary_Dom.asynciterable.ts"
Expect to Parse: "compiler/modularizeLibrary_Worker.asynciterable.ts"
Expect to Parse: "compiler/typeAliasDeclarationEmit3.ts"
Expect to Parse: "conformance/constEnums/constEnum4.ts"
Expect to Parse: "conformance/expressions/elementAccess/letIdentifierInElementAccess01.ts"
Expect to Parse: "conformance/jsx/jsxReactTestSuite.tsx"
Expect to Parse: "conformance/jsx/tsxNamespacedAttributeName1.tsx"
Expect to Parse: "conformance/jsx/tsxNamespacedAttributeName2.tsx"
Expect to Parse: "conformance/jsx/tsxReactEmitEntities.tsx"
Expect to Parse: "conformance/statements/VariableStatements/usingDeclarations/awaitUsingDeclarationsInFor.ts"
Expect to Parse: "conformance/statements/VariableStatements/usingDeclarations/awaitUsingDeclarationsInForAwaitOf.ts"
Expect to Parse: "conformance/statements/VariableStatements/usingDeclarations/awaitUsingDeclarationsInForOf.1.ts"
Expect to Parse: "conformance/statements/VariableStatements/usingDeclarations/awaitUsingDeclarationsInForOf.2.ts"
Expect to Parse: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsInFor.ts"
Expect to Parse: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsInForAwaitOf.ts"
Expect to Parse: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsInForOf.1.ts"
Expect to Parse: "conformance/types/thisType/thisTypeInFunctions4.ts"
Positive Passed: 4642/5243 (88.54%)
Typescript failed: "compiler/DeclarationErrorsNoEmitOnError.ts"
Typescript failed: "compiler/acceptSymbolAsWeakType.ts"
Typescript failed: "compiler/ambientNameRestrictions.ts"
Typescript failed: "compiler/arrayDestructuringInSwitch1.ts"
Typescript failed: "compiler/arrayEvery.ts"
Typescript failed: "compiler/arrowFunctionParsingGenericInObject.ts"
Typescript failed: "compiler/assignmentCompatOnNew.ts"
Typescript failed: "compiler/asyncArrowInClassES5.ts"
Typescript failed: "compiler/badInferenceLowerPriorityThanGoodInference.ts"
Default failed: "compiler/binopAssignmentShouldHaveType.ts"
Typescript failed: "compiler/callOfConditionalTypeWithConcreteBranches.ts"
Typescript failed: "compiler/callSignatureFunctionOverload.ts"
Typescript failed: "compiler/callbacksDontShareTypes.ts"
Typescript failed: "compiler/callsOnComplexSignatures.tsx"
Typescript failed: "compiler/classExpressionWithStaticProperties3.ts"
Typescript failed: "compiler/classExpressionWithStaticPropertiesES63.ts"
Typescript failed: "compiler/classExtendingAbstractClassWithMemberCalledTheSameAsItsOwnTypeParam.ts"
Typescript failed: "compiler/classMemberInitializerWithLamdaScoping5.ts"
Typescript failed: "compiler/coAndContraVariantInferences.ts"
Typescript failed: "compiler/collisionArgumentsInType.ts"
Typescript failed: "compiler/collisionExportsRequireAndAmbientFunction.ts"
Typescript failed: "compiler/collisionExportsRequireAndUninstantiatedModule.ts"
Typescript failed: "compiler/collisionRestParameterArrowFunctions.ts"
Typescript failed: "compiler/collisionRestParameterInType.ts"
Typescript failed: "compiler/collisionSuperAndNameResolution.ts"
Typescript failed: "compiler/collisionSuperAndParameter.ts"
Typescript failed: "compiler/collisionSuperAndParameter1.ts"
Typescript failed: "compiler/collisionThisExpressionAndLocalVarInFunction.ts"
Typescript failed: "compiler/collisionThisExpressionAndNameResolution.ts"
Typescript failed: "compiler/collisionThisExpressionAndParameter.ts"
Typescript failed: "compiler/commentOnExportEnumDeclaration.ts"
Typescript failed: "compiler/commentsDottedModuleName.ts"
Typescript failed: "compiler/commentsInterface.ts"
Typescript failed: "compiler/commentsOnPropertyOfObjectLiteral1.ts"
Typescript failed: "compiler/conditionalEqualityTestingNullability.ts"
Typescript failed: "compiler/conditionalTypeContextualTypeSimplificationsSuceeds.ts"
Typescript failed: "compiler/conditionalTypeRelaxingConstraintAssignability.ts"
Typescript failed: "compiler/conditionalTypesSimplifyWhenTrivial.ts"
Typescript failed: "compiler/conditionallyDuplicateOverloadsCausedByOverloadResolution.ts"
Typescript failed: "compiler/constraintOfRecursivelyMappedTypeWithConditionalIsResolvable.ts"
Typescript failed: "compiler/constructorTypeWithTypeParameters.ts"
Typescript failed: "compiler/contextualComputedNonBindablePropertyType.ts"
Typescript failed: "compiler/contextualExpressionTypecheckingDoesntBlowStack.ts"
Typescript failed: "compiler/contextualReturnTypeOfIIFE2.ts"
Typescript failed: "compiler/contextualSignatureConditionalTypeInstantiationUsingDefault.ts"
Typescript failed: "compiler/contextualSignatureInstantiation2.ts"
Typescript failed: "compiler/contextualTypeArrayReturnType.ts"
Typescript failed: "compiler/contextualTypeCaching.ts"
Typescript failed: "compiler/contextualTyping23.ts"
Typescript failed: "compiler/contextualTyping32.ts"
Typescript failed: "compiler/contextualTypingArrayOfLambdas.ts"
Typescript failed: "compiler/contextualTypingOfLambdaWithMultipleSignatures2.ts"
Typescript failed: "compiler/contextualTypingWithGenericAndNonGenericSignature.ts"
Typescript failed: "compiler/contextualTypingWithGenericSignature.ts"
Typescript failed: "compiler/contextuallyTypedParametersWithInitializers3.ts"
Typescript failed: "compiler/contextuallyTypedSymbolNamedProperties.ts"
Typescript failed: "compiler/contextuallyTypingOrOperator.ts"
Typescript failed: "compiler/contextuallyTypingOrOperator2.ts"
Typescript failed: "compiler/contravariantOnlyInferenceFromAnnotatedFunction.ts"
Typescript failed: "compiler/contravariantOnlyInferenceWithAnnotatedOptionalParameter.ts"
Typescript failed: "compiler/correlatedUnions.ts"
Typescript failed: "compiler/crashInGetTextOfComputedPropertyName.ts"
Typescript failed: "compiler/declFileGenericType.ts"
Typescript failed: "compiler/declFileRestParametersOfFunctionAndFunctionType.ts"
Typescript failed: "compiler/declFileTypeAnnotationTypeLiteral.ts"
Typescript failed: "compiler/declFileTypeAnnotationUnionType.ts"
Typescript failed: "compiler/declarationEmitAmdModuleDefault.ts"
Typescript failed: "compiler/declarationEmitBindingPatternWithReservedWord.ts"
Typescript failed: "compiler/declarationEmitClassMixinLocalClassDeclaration.ts"
Typescript failed: "compiler/declarationEmitDefaultExport1.ts"
Typescript failed: "compiler/declarationEmitDefaultExport2.ts"
Typescript failed: "compiler/declarationEmitDistributiveConditionalWithInfer.ts"
Typescript failed: "compiler/declarationEmitExpandoWithGenericConstraint.ts"
Typescript failed: "compiler/declarationEmitExpressionInExtends.ts"
Typescript failed: "compiler/declarationEmitForDefaultExportClassExtendingExpression01.ts"
Typescript failed: "compiler/declarationEmitGlobalThisPreserved.ts"
Typescript failed: "compiler/declarationEmitLocalClassHasRequiredDeclare.ts"
Typescript failed: "compiler/declarationEmitMappedTypePropertyFromNumericStringKey.ts"
Typescript failed: "compiler/declarationEmitNameConflictsWithAlias.ts"
Typescript failed: "compiler/declarationEmitNamespaceMergedWithInterfaceNestedFunction.ts"
Typescript failed: "compiler/declarationEmitNestedGenerics.ts"
Typescript failed: "compiler/declarationEmitNoNonRequiredParens.ts"
Typescript failed: "compiler/declarationEmitNonExportedBindingPattern.ts"
Typescript failed: "compiler/declarationEmitOptionalMethod.ts"
Typescript failed: "compiler/declarationEmitPrivateNameCausesError.ts"
Typescript failed: "compiler/declarationEmitPromise.ts"
Typescript failed: "compiler/declarationEmitRetainsJsdocyComments.ts"
Typescript failed: "compiler/declarationEmitShadowingInferNotRenamed.ts"
Typescript failed: "compiler/declarationEmitTypeAliasWithTypeParameters1.ts"
Typescript failed: "compiler/declarationEmitTypeAliasWithTypeParameters2.ts"
Typescript failed: "compiler/declarationEmitTypeParameterNameInOuterScope.ts"
Typescript failed: "compiler/declarationEmitTypeParameterNameReusedInOverloads.ts"
Typescript failed: "compiler/declarationEmitTypeParameterNameShadowedInternally.ts"
Typescript failed: "compiler/declarationMaps.ts"
Typescript failed: "compiler/declarationQuotedMembers.ts"
Typescript failed: "compiler/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.ts"
Typescript failed: "compiler/declareFileExportAssignment.ts"
Typescript failed: "compiler/declareFileExportAssignmentWithVarFromVariableStatement.ts"
Typescript failed: "compiler/defaultDeclarationEmitNamedCorrectly.ts"
Typescript failed: "compiler/defaultDeclarationEmitShadowedNamedCorrectly.ts"
Typescript failed: "compiler/deferredConditionalTypes2.ts"
Typescript failed: "compiler/destructuredMaappedTypeIsNotImplicitlyAny.ts"
Typescript failed: "compiler/discriminatedUnionWithIndexSignature.ts"
Typescript failed: "compiler/discriminatingUnionWithUnionPropertyAgainstUndefinedWithoutStrictNullChecks.ts"
Typescript failed: "compiler/divergentAccessorsTypes7.ts"
Typescript failed: "compiler/dottedNamesInSystem.ts"
Typescript failed: "compiler/doubleMixinConditionalTypeBaseClassWorks.ts"
Typescript failed: "compiler/downlevelLetConst13.ts"
Default failed: "compiler/elidedEmbeddedStatementsReplacedWithSemicolon.ts"
Typescript failed: "compiler/emitClassExpressionInDeclarationFile.ts"
Typescript failed: "compiler/emptyAnonymousObjectNarrowing.ts"
Typescript failed: "compiler/enumKeysQuotedAsObjectPropertiesInDeclarationEmit.ts"
Typescript failed: "compiler/es2015modulekind.ts"
Typescript failed: "compiler/es2015modulekindWithES6Target.ts"
Typescript failed: "compiler/es5-commonjs.ts"
Typescript failed: "compiler/es5-system.ts"
Typescript failed: "compiler/es5-umd3.ts"
Typescript failed: "compiler/es5ExportDefaultClassDeclaration.ts"
Typescript failed: "compiler/es5ExportDefaultClassDeclaration2.ts"
Typescript failed: "compiler/es5andes6module.ts"
Typescript failed: "compiler/es6ExportDefaultClassDeclaration.ts"
Typescript failed: "compiler/es6ExportDefaultClassDeclaration2.ts"
Typescript failed: "compiler/es6ModuleClassDeclaration.ts"
Typescript failed: "compiler/es6ModuleConst.ts"
Typescript failed: "compiler/es6ModuleConstEnumDeclaration.ts"
Typescript failed: "compiler/es6ModuleConstEnumDeclaration2.ts"
Typescript failed: "compiler/es6ModuleEnumDeclaration.ts"
Typescript failed: "compiler/es6ModuleFunctionDeclaration.ts"
Typescript failed: "compiler/es6ModuleInternalImport.ts"
Typescript failed: "compiler/es6ModuleLet.ts"
Typescript failed: "compiler/es6ModuleModuleDeclaration.ts"
Typescript failed: "compiler/es6ModuleVariableStatement.ts"
Typescript failed: "compiler/excessPropertyCheckingIntersectionWithConditional.ts"
Typescript failed: "compiler/expandoFunctionBlockShadowing.ts"
Typescript failed: "compiler/exportAssignmentWithPrivacyError.ts"
Typescript failed: "compiler/exportDefaultInterfaceAndFunctionOverloads.ts"
Typescript failed: "compiler/exportDefaultInterfaceAndValue.ts"
Typescript failed: "compiler/exportRedeclarationTypeAliases.ts"
Typescript failed: "compiler/exportTwoInterfacesWithSameName.ts"
Typescript failed: "compiler/exportedInterfaceInaccessibleInCallbackInModule.ts"
Typescript failed: "compiler/externalModuleWithoutCompilerFlag1.ts"
Typescript failed: "compiler/fakeInfinity2.ts"
Typescript failed: "compiler/fakeInfinity3.ts"
Typescript failed: "compiler/fatarrowfunctions.ts"
Typescript failed: "compiler/functionDeclarationWithArgumentOfTypeFunctionTypeArray.ts"
Typescript failed: "compiler/genericCallOnMemberReturningClosedOverObject.ts"
Typescript failed: "compiler/genericClassesInModule2.ts"
Typescript failed: "compiler/genericFunctionInference2.ts"
Typescript failed: "compiler/genericFunctionsAndConditionalInference.ts"
Typescript failed: "compiler/genericFunctionsNotContextSensitive.ts"
Typescript failed: "compiler/genericFunctionsWithOptionalParameters3.ts"
Typescript failed: "compiler/genericIndexedAccessMethodIntersectionCanBeAccessed.ts"
Typescript failed: "compiler/genericInterfaceFunctionTypeParameter.ts"
Typescript failed: "compiler/genericObjectSpreadResultInSwitch.ts"
Typescript failed: "compiler/genericOverloadSignatures.ts"
Typescript failed: "compiler/genericParameterAssignability1.ts"
Typescript failed: "compiler/genericTypeAssertions3.ts"
Typescript failed: "compiler/genericTypeWithCallableMembers2.ts"
Typescript failed: "compiler/genericTypeWithMultipleBases1.ts"
Typescript failed: "compiler/genericTypeWithMultipleBases2.ts"
Typescript failed: "compiler/genericsAndHigherOrderFunctions.ts"
Typescript failed: "compiler/higherOrderMappedIndexLookupInference.ts"
Typescript failed: "compiler/idInProp.ts"
Typescript failed: "compiler/identicalGenericConditionalsWithInferRelated.ts"
Minify failed: "compiler/identityRelationNeverTypes.ts"
Typescript failed: "compiler/importHelpersDeclarations.ts"
Typescript failed: "compiler/inKeywordTypeguard.ts"
Typescript failed: "compiler/indirectTypeParameterReferences.ts"
Typescript failed: "compiler/inferConditionalConstraintMappedMember.ts"
Typescript failed: "compiler/inferFromGenericFunctionReturnTypes2.ts"
Typescript failed: "compiler/inferTypeConstraintInstantiationCircularity.ts"
Typescript failed: "compiler/inferenceAndHKTs.ts"
Typescript failed: "compiler/inferenceDoesntCompareAgainstUninstantiatedTypeParameter.ts"
Typescript failed: "compiler/inferentialTypingUsingApparentType2.ts"
Typescript failed: "compiler/inferringReturnTypeFromConstructSignatureGeneric.ts"
Typescript failed: "compiler/infinitelyExpandingOverloads.ts"
Typescript failed: "compiler/infinitelyExpandingTypesNonGenericBase.ts"
Typescript failed: "compiler/initializedParameterBeforeNonoptionalNotOptional.ts"
Typescript failed: "compiler/interfaceClassMerging.ts"
Typescript failed: "compiler/interfaceContextualType.ts"
Typescript failed: "compiler/interfaceDeclaration5.ts"
Typescript failed: "compiler/interfaceWithCommaSeparators.ts"
Typescript failed: "compiler/internalAliasClassInsideLocalModuleWithExport.ts"
Typescript failed: "compiler/internalAliasClassInsideLocalModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasClassInsideTopLevelModuleWithExport.ts"
Typescript failed: "compiler/internalAliasClassInsideTopLevelModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasEnumInsideLocalModuleWithExport.ts"
Typescript failed: "compiler/internalAliasEnumInsideLocalModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasEnumInsideTopLevelModuleWithExport.ts"
Typescript failed: "compiler/internalAliasEnumInsideTopLevelModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasFunctionInsideLocalModuleWithExport.ts"
Typescript failed: "compiler/internalAliasFunctionInsideLocalModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasFunctionInsideTopLevelModuleWithExport.ts"
Typescript failed: "compiler/internalAliasFunctionInsideTopLevelModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasInitializedModuleInsideLocalModuleWithExport.ts"
Typescript failed: "compiler/internalAliasInitializedModuleInsideLocalModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasInitializedModuleInsideTopLevelModuleWithExport.ts"
Typescript failed: "compiler/internalAliasInitializedModuleInsideTopLevelModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasInterfaceInsideLocalModuleWithExport.ts"
Typescript failed: "compiler/internalAliasInterfaceInsideLocalModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasInterfaceInsideTopLevelModuleWithExport.ts"
Typescript failed: "compiler/internalAliasInterfaceInsideTopLevelModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasUninitializedModuleInsideLocalModuleWithExport.ts"
Typescript failed: "compiler/internalAliasUninitializedModuleInsideLocalModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasUninitializedModuleInsideTopLevelModuleWithExport.ts"
Typescript failed: "compiler/internalAliasUninitializedModuleInsideTopLevelModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasVarInsideLocalModuleWithExport.ts"
Typescript failed: "compiler/internalAliasVarInsideLocalModuleWithoutExport.ts"
Typescript failed: "compiler/internalAliasVarInsideTopLevelModuleWithExport.ts"
Typescript failed: "compiler/internalAliasVarInsideTopLevelModuleWithoutExport.ts"
Typescript failed: "compiler/intersectionSatisfiesConstraint.ts"
Typescript failed: "compiler/intersectionTypeInference1.ts"
Typescript failed: "compiler/intersectionType_useDefineForClassFields.ts"
Typescript failed: "compiler/jsxCallbackWithDestructuring.tsx"
Typescript failed: "compiler/jsxComplexSignatureHasApplicabilityError.tsx"
Default failed: "compiler/jsxMultilineAttributeStringValues.tsx"
Default failed: "compiler/jsxMultilineAttributeValuesReact.tsx"
Default failed: "compiler/jsxNamespacedNameNotComparedToNonMatchingIndexSignature.tsx"
Typescript failed: "compiler/jsxPartialSpread.tsx"
Typescript failed: "compiler/jsxSpreadFirstUnionNoErrors.tsx"
Default failed: "compiler/localClassesInLoop.ts"
Default failed: "compiler/localClassesInLoop_ES6.ts"
Typescript failed: "compiler/localTypeParameterInferencePriority.ts"
Typescript failed: "compiler/mapOnTupleTypes02.ts"
Typescript failed: "compiler/mappedTypeGenericIndexedAccess.ts"
Typescript failed: "compiler/mappedTypeGenericInstantiationPreservesInlineForm.ts"
Typescript failed: "compiler/mappedTypeInferenceAliasSubstitution.ts"
Typescript failed: "compiler/mappedTypeNestedGenericInstantiation.ts"
Typescript failed: "compiler/mappedTypeTupleConstraintAssignability.ts"
Typescript failed: "compiler/memberAccessOnConstructorType.ts"
Typescript failed: "compiler/mergedModuleDeclarationCodeGen.ts"
Typescript failed: "compiler/metadataOfStringLiteral.ts"
Typescript failed: "compiler/metadataOfUnion.ts"
Typescript failed: "compiler/metadataOfUnionWithNull.ts"
Typescript failed: "compiler/methodContainingLocalFunction.ts"
Typescript failed: "compiler/mixinIntersectionIsValidbaseType.ts"
Minify failed: "compiler/modularizeLibrary_Dom.asynciterable.ts"
Minify failed: "compiler/modularizeLibrary_Worker.asynciterable.ts"
Typescript failed: "compiler/moduleCodegenTest4.ts"
Typescript failed: "compiler/multipleInferenceContexts.ts"
Typescript failed: "compiler/narrowByBooleanComparison.ts"
Typescript failed: "compiler/narrowByClauseExpressionInSwitchTrue1.ts"
Typescript failed: "compiler/narrowingByTypeofInSwitch.ts"
Typescript failed: "compiler/narrowingUnionToUnion.ts"
Typescript failed: "compiler/neverAsDiscriminantType.ts"
Typescript failed: "compiler/noAsConstNameLookup.ts"
Typescript failed: "compiler/noCollisionThisExpressionAndLocalVarInFunction.ts"
Typescript failed: "compiler/noCollisionThisExpressionInFunctionAndVarInGlobal.ts"
Typescript failed: "compiler/noImplicitAnyDestructuringInPrivateMethod.ts"
Typescript failed: "compiler/noSubstitutionTemplateStringLiteralTypes.ts"
Typescript failed: "compiler/noSubtypeReduction.ts"
Typescript failed: "compiler/nonInferrableTypePropagation3.ts"
Typescript failed: "compiler/nonNullMappedType.ts"
Typescript failed: "compiler/nonNullReferenceMatching.ts"
Typescript failed: "compiler/objectBindingPatternContextuallyTypesArgument.ts"
Typescript failed: "compiler/omitTypeTests01.ts"
Typescript failed: "compiler/overloadOnConstAsTypeAnnotation.ts"
Typescript failed: "compiler/overloadOnConstNoStringImplementation.ts"
Typescript failed: "compiler/overloadResolutionWithAny.ts"
Typescript failed: "compiler/overrideBaseIntersectionMethod.ts"
Typescript failed: "compiler/parameterDestructuringObjectLiteral.ts"
Typescript failed: "compiler/parenthesisDoesNotBlockAliasSymbolCreation.ts"
Typescript failed: "compiler/parenthesizedArrowExpressionASI.ts"
Typescript failed: "compiler/parseObjectLiteralsWithoutTypes.ts"
Typescript failed: "compiler/performanceComparisonOfStructurallyIdenticalInterfacesWithGenericSignatures.ts"
Typescript failed: "compiler/prefixedNumberLiteralAssignToNumberLiteralType.ts"
Typescript failed: "compiler/prespecializedGenericMembers1.ts"
Typescript failed: "compiler/privacyCheckCallbackOfInterfaceMethodWithTypeParameter.ts"
Typescript failed: "compiler/privacyCheckExportAssignmentOnExportedGenericInterface1.ts"
Typescript failed: "compiler/privacyClass.ts"
Typescript failed: "compiler/privacyImport.ts"
Typescript failed: "compiler/privacyInterface.ts"
Typescript failed: "compiler/privacyLocalInternalReferenceImportWithExport.ts"
Typescript failed: "compiler/privacyLocalInternalReferenceImportWithoutExport.ts"
Typescript failed: "compiler/privacyTopLevelInternalReferenceImportWithExport.ts"
Typescript failed: "compiler/privacyTypeParameterOfFunction.ts"
Typescript failed: "compiler/privacyTypeParameterOfFunctionDeclFile.ts"
Typescript failed: "compiler/privacyTypeParametersOfClassDeclFile.ts"
Typescript failed: "compiler/privacyTypeParametersOfInterface.ts"
Typescript failed: "compiler/privacyTypeParametersOfInterfaceDeclFile.ts"
Typescript failed: "compiler/privacyVar.ts"
Typescript failed: "compiler/privatePropertyUsingObjectType.ts"
Typescript failed: "compiler/promiseVoidErrorCallback.ts"
Typescript failed: "compiler/recursiveConditionalCrash2.ts"
Typescript failed: "compiler/recursiveConditionalCrash3.ts"
Typescript failed: "compiler/recursiveMods.ts"
Typescript failed: "compiler/redeclarationOfVarWithGenericType.ts"
Typescript failed: "compiler/restElementAssignable.ts"
Typescript failed: "compiler/returnInfiniteIntersection.ts"
Typescript failed: "compiler/reverseMappedContravariantInference.ts"
Typescript failed: "compiler/reverseMappedTypeDeepDeclarationEmit.ts"
Typescript failed: "compiler/sourceMapValidationFunctionExpressions.ts"
Typescript failed: "compiler/sourceMapValidationImport.ts"
Typescript failed: "compiler/sourceMapValidationLambdaSpanningMultipleLines.ts"
Typescript failed: "compiler/specedNoStackBlown.ts"
Typescript failed: "compiler/strictTypeofUnionNarrowing.ts"
Typescript failed: "compiler/styledComponentsInstantiaionLimitNotReached.ts"
Typescript failed: "compiler/switchCaseNarrowsMatchingClausesEvenWhenNonMatchingClausesExist.ts"
Typescript failed: "compiler/systemModule7.ts"
Typescript failed: "compiler/systemModuleDeclarationMerging.ts"
Typescript failed: "compiler/systemModuleNonTopLevelModuleMembers.ts"
Typescript failed: "compiler/taggedTemplateStringWithSymbolExpression01.ts"
Typescript failed: "compiler/thisIndexOnExistingReadonlyFieldIsNotNever.ts"
Typescript failed: "compiler/tooFewArgumentsInGenericFunctionTypedArgument.ts"
Typescript failed: "compiler/transformsElideNullUndefinedType.ts"
Typescript failed: "compiler/trivialSubtypeReductionNoStructuralCheck2.ts"
Typescript failed: "compiler/tsxAttributeQuickinfoTypesSameAsObjectLiteral.tsx"
Typescript failed: "compiler/tsxUnionSpread.tsx"
Typescript failed: "compiler/typeAliasDeclarationEmit2.ts"
Default failed: "compiler/typeAliasDeclarationEmit3.ts"
Typescript failed: "compiler/typeAliasFunctionTypeSharedSymbol.ts"
Typescript failed: "compiler/typeGuardConstructorPrimitiveTypes.ts"
Typescript failed: "compiler/typeGuardNarrowsIndexedAccessOfKnownProperty7.ts"
Typescript failed: "compiler/typeGuardOnContainerTypeNoHang.ts"
Typescript failed: "compiler/typeInferenceWithTypeAnnotation.ts"
Typescript failed: "compiler/typeParameterCompatibilityAccrossDeclarations.ts"
Typescript failed: "compiler/typeParameterConstraintInstantiation.ts"
Typescript failed: "compiler/typePredicateFreshLiteralWidening.ts"
Typescript failed: "compiler/typePredicatesOptionalChaining2.ts"
Typescript failed: "compiler/typeResolution.ts"
Typescript failed: "compiler/unionOfClassCalls.ts"
Typescript failed: "compiler/unionOfFunctionAndSignatureIsCallable.ts"
Typescript failed: "compiler/unionReductionMutualSubtypes.ts"
Typescript failed: "compiler/unionSignaturesWithThisParameter.ts"
Typescript failed: "compiler/unionTypeWithLeadingOperator.ts"
Typescript failed: "compiler/unionWithIndexSignature.ts"
Typescript failed: "compiler/unusedLocalsAndParametersOverloadSignatures.ts"
Typescript failed: "compiler/unusedLocalsAndParametersTypeAliases.ts"
Typescript failed: "compiler/unwitnessedTypeParameterVariance.ts"
Typescript failed: "compiler/useBeforeDefinitionInDeclarationFiles.ts"
Typescript failed: "compiler/varArgParamTypeCheck.ts"
Typescript failed: "compiler/vardecl.ts"
Typescript failed: "compiler/voidConstructor.ts"
Typescript failed: "compiler/weakTypeAndPrimitiveNarrowing.ts"
Typescript failed: "compiler/withExportDecl.ts"
Typescript failed: "conformance/Symbols/ES5SymbolProperty5.ts"
Typescript failed: "conformance/Symbols/ES5SymbolType1.ts"
Typescript failed: "conformance/ambient/ambientInsideNonAmbientExternalModule.ts"
Typescript failed: "conformance/classes/classStaticBlock/classStaticBlock11.ts"
Typescript failed: "conformance/classes/classStaticBlock/classStaticBlock17.ts"
Typescript failed: "conformance/classes/members/privateNames/privateNameComputedPropertyName2.ts"
Typescript failed: "conformance/classes/mixinAbstractClasses.ts"
Typescript failed: "conformance/classes/mixinAbstractClassesReturnTypeInference.ts"
Typescript failed: "conformance/classes/mixinClassesAnnotated.ts"
Typescript failed: "conformance/classes/mixinClassesAnonymous.ts"
Typescript failed: "conformance/classes/propertyMemberDeclarations/accessorsOverrideProperty9.ts"
Typescript failed: "conformance/classes/propertyMemberDeclarations/instanceMemberInitialization.ts"
Typescript failed: "conformance/classes/propertyMemberDeclarations/memberAccessorDeclarations/accessorsAreNotContextuallyTyped.ts"
Default failed: "conformance/constEnums/constEnum4.ts"
Typescript failed: "conformance/controlFlow/controlFlowBinaryOrExpression.ts"
Typescript failed: "conformance/controlFlow/typeGuardsAsAssertions.ts"
Typescript failed: "conformance/controlFlow/typeGuardsTypeParameters.ts"
Typescript failed: "conformance/decorators/class/decoratedBlockScopedClass1.ts"
Typescript failed: "conformance/decorators/class/decoratedBlockScopedClass2.ts"
Typescript failed: "conformance/decorators/class/decoratedBlockScopedClass3.ts"
Typescript failed: "conformance/decorators/class/method/decoratorOnClassMethod19.ts"
Typescript failed: "conformance/enums/enumExportMergingES6.ts"
Typescript failed: "conformance/es6/Symbols/symbolProperty1.ts"
Typescript failed: "conformance/es6/Symbols/symbolType16.ts"
Typescript failed: "conformance/es6/Symbols/symbolType17.ts"
Typescript failed: "conformance/es6/Symbols/symbolType18.ts"
Typescript failed: "conformance/es6/Symbols/symbolType19.ts"
Typescript failed: "conformance/es6/classDeclaration/exportDefaultClassWithStaticPropertyAssignmentsInES6.ts"
Typescript failed: "conformance/es6/decorators/class/accessor/decoratorOnClassAccessor1.es6.ts"
Typescript failed: "conformance/es6/decorators/class/decoratorOnClass3.es6.ts"
Typescript failed: "conformance/es6/decorators/class/decoratorOnClass4.es6.ts"
Typescript failed: "conformance/es6/decorators/class/decoratorOnClass7.es6.ts"
Typescript failed: "conformance/es6/decorators/class/decoratorOnClass8.es6.ts"
Typescript failed: "conformance/es6/decorators/class/method/decoratorOnClassMethod1.es6.ts"
Typescript failed: "conformance/es6/decorators/class/method/parameter/decoratorOnClassMethodParameter1.es6.ts"
Typescript failed: "conformance/es6/decorators/class/property/decoratorOnClassProperty1.es6.ts"
Typescript failed: "conformance/es6/destructuring/destructuringEvaluationOrder.ts"
Typescript failed: "conformance/es6/for-ofStatements/for-of44.ts"
Typescript failed: "conformance/es6/modules/defaultExportWithOverloads01.ts"
Typescript failed: "conformance/es6/spread/iteratorSpreadInCall5.ts"
Typescript failed: "conformance/es6/yieldExpressions/generatorTypeCheck62.ts"
Typescript failed: "conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-commonjs-classNamespaceMerge.ts"
Typescript failed: "conformance/esDecorators/classDeclaration/esDecorators-classDeclaration-outerThisReference.ts"
Typescript failed: "conformance/esDecorators/esDecorators-contextualTypes.2.ts"
Typescript failed: "conformance/expressions/arrayLiterals/arrayLiteralInference.ts"
Typescript failed: "conformance/expressions/assignmentOperator/assignmentGenericLookupTypeNarrowing.ts"
Typescript failed: "conformance/expressions/binaryOperators/additionOperator/additionOperatorWithAnyAndEveryType.ts"
Typescript failed: "conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts"
Typescript failed: "conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts"
Typescript failed: "conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnCallSignature.ts"
Typescript failed: "conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnConstructorSignature.ts"
Typescript failed: "conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.ts"
Typescript failed: "conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.ts"
Typescript failed: "conformance/expressions/binaryOperators/instanceofOperator/instanceofOperatorWithRHSIsSubtypeOfFunction.ts"
Typescript failed: "conformance/expressions/contextualTyping/functionExpressionContextualTyping1.ts"
Typescript failed: "conformance/expressions/contextualTyping/functionExpressionContextualTyping3.ts"
Typescript failed: "conformance/expressions/contextualTyping/generatedContextualTyping.ts"
Typescript failed: "conformance/expressions/contextualTyping/taggedTemplateContextualTyping1.ts"
Default failed: "conformance/expressions/elementAccess/letIdentifierInElementAccess01.ts"
Typescript failed: "conformance/expressions/functions/arrowFunctionExpressions.ts"
Typescript failed: "conformance/expressions/functions/contextuallyTypedFunctionExpressionsAndReturnAnnotations.ts"
Typescript failed: "conformance/expressions/newOperator/newOperatorConformance.ts"
Typescript failed: "conformance/expressions/objectLiterals/objectLiteralGettersAndSetters.ts"
Typescript failed: "conformance/expressions/optionalChaining/optionalChainingInArrow.ts"
Typescript failed: "conformance/expressions/optionalChaining/optionalChainingInLoop.ts"
Typescript failed: "conformance/expressions/typeGuards/typeGuardFunction.ts"
Typescript failed: "conformance/expressions/typeGuards/typeGuardOfFormTypeOfFunction.ts"
Typescript failed: "conformance/expressions/typeGuards/typeGuardOfFormTypeOfIsOrderIndependent.ts"
Typescript failed: "conformance/expressions/typeGuards/typeGuardOfFormTypeOfPrimitiveSubtype.ts"
Typescript failed: "conformance/expressions/typeGuards/typeGuardsInFunction.ts"
Typescript failed: "conformance/expressions/typeGuards/typeGuardsInFunctionAndModuleBlock.ts"
Typescript failed: "conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithNumberType.ts"
Typescript failed: "conformance/expressions/unaryOperators/bitwiseNotOperator/bitwiseNotOperatorWithStringType.ts"
Typescript failed: "conformance/expressions/unaryOperators/voidOperator/voidOperatorWithNumberType.ts"
Typescript failed: "conformance/expressions/unaryOperators/voidOperator/voidOperatorWithStringType.ts"
Typescript failed: "conformance/externalModules/es6/es6modulekind.ts"
Typescript failed: "conformance/externalModules/es6/es6modulekindWithES2015Target.ts"
Typescript failed: "conformance/externalModules/es6/es6modulekindWithES5Target11.ts"
Typescript failed: "conformance/externalModules/es6/es6modulekindWithES5Target12.ts"
Typescript failed: "conformance/externalModules/es6/es6modulekindWithES5Target2.ts"
Typescript failed: "conformance/externalModules/es6/es6modulekindWithES5Target3.ts"
Typescript failed: "conformance/externalModules/es6/es6modulekindWithES5Target5.ts"
Typescript failed: "conformance/externalModules/es6/es6modulekindWithES5Target7.ts"
Typescript failed: "conformance/externalModules/esnext/esnextmodulekind.ts"
Typescript failed: "conformance/externalModules/esnext/esnextmodulekindWithES2015Target.ts"
Typescript failed: "conformance/externalModules/esnext/esnextmodulekindWithES5Target11.ts"
Typescript failed: "conformance/externalModules/esnext/esnextmodulekindWithES5Target12.ts"
Typescript failed: "conformance/externalModules/esnext/esnextmodulekindWithES5Target2.ts"
Typescript failed: "conformance/externalModules/esnext/esnextmodulekindWithES5Target3.ts"
Typescript failed: "conformance/externalModules/esnext/esnextmodulekindWithES5Target5.ts"
Typescript failed: "conformance/externalModules/esnext/esnextmodulekindWithES5Target7.ts"
Typescript failed: "conformance/externalModules/exportAmbientClassNameWithObject.ts"
Typescript failed: "conformance/externalModules/verbatimModuleSyntaxConstEnum.ts"
Typescript failed: "conformance/interfaces/interfaceDeclarations/interfaceWithPropertyOfEveryType.ts"
Typescript failed: "conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.ts"
Typescript failed: "conformance/internalModules/DeclarationMerging/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.ts"
Typescript failed: "conformance/internalModules/moduleDeclarations/nonInstantiatedModule.ts"
Typescript failed: "conformance/jsdoc/declarations/jsDeclarationsThisTypes.ts"
Typescript failed: "conformance/jsdoc/jsdocLinkTag5.ts"
Typescript failed: "conformance/jsdoc/tsNoCheckForTypescript.ts"
Typescript failed: "conformance/jsdoc/tsNoCheckForTypescriptComments1.ts"
Typescript failed: "conformance/jsdoc/tsNoCheckForTypescriptComments2.ts"
Typescript failed: "conformance/jsx/checkJsxChildrenProperty10.tsx"
Typescript failed: "conformance/jsx/checkJsxChildrenProperty11.tsx"
Typescript failed: "conformance/jsx/checkJsxChildrenProperty16.tsx"
Typescript failed: "conformance/jsx/checkJsxChildrenProperty9.tsx"
Default failed: "conformance/jsx/jsxReactTestSuite.tsx"
Default failed: "conformance/jsx/tsxNamespacedAttributeName1.tsx"
Default failed: "conformance/jsx/tsxNamespacedAttributeName2.tsx"
Default failed: "conformance/jsx/tsxReactEmitEntities.tsx"
Typescript failed: "conformance/jsx/tsxSfcReturnNull.tsx"
Typescript failed: "conformance/jsx/tsxSfcReturnNullStrictNullChecks.tsx"
Typescript failed: "conformance/jsx/tsxStatelessFunctionComponentOverload6.tsx"
Typescript failed: "conformance/jsx/tsxStatelessFunctionComponents3.tsx"
Typescript failed: "conformance/parser/ecmascript5/EnumDeclarations/parserEnum1.ts"
Typescript failed: "conformance/parser/ecmascript5/EnumDeclarations/parserEnum2.ts"
Typescript failed: "conformance/parser/ecmascript5/EnumDeclarations/parserEnum3.ts"
Typescript failed: "conformance/parser/ecmascript5/InterfaceDeclarations/parserInterfaceDeclaration7.ts"
Typescript failed: "conformance/parser/ecmascript5/ModuleDeclarations/parserModule1.ts"
Typescript failed: "conformance/parser/ecmascript5/ObjectTypes/parserObjectType3.ts"
Typescript failed: "conformance/parser/ecmascript5/ObjectTypes/parserObjectType4.ts"
Typescript failed: "conformance/parser/ecmascript5/RegressionTests/parser645484.ts"
Typescript failed: "conformance/parser/ecmascript5/Symbols/parserES5SymbolIndexer3.ts"
Typescript failed: "conformance/parser/ecmascript6/Symbols/parserSymbolIndexer4.ts"
Typescript failed: "conformance/parser/ecmascript6/Symbols/parserSymbolProperty8.ts"
Typescript failed: "conformance/salsa/propertyAssignmentUseParentType1.ts"
Typescript failed: "conformance/scanner/ecmascript5/scannerEnum1.ts"
Typescript failed: "conformance/statements/VariableStatements/recursiveInitializer.ts"
Default failed: "conformance/statements/VariableStatements/usingDeclarations/awaitUsingDeclarationsInFor.ts"
Default failed: "conformance/statements/VariableStatements/usingDeclarations/awaitUsingDeclarationsInForAwaitOf.ts"
Default failed: "conformance/statements/VariableStatements/usingDeclarations/awaitUsingDeclarationsInForOf.1.ts"
Default failed: "conformance/statements/VariableStatements/usingDeclarations/awaitUsingDeclarationsInForOf.2.ts"
Typescript failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsDeclarationEmit.2.ts"
Default failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsInFor.ts"
Default failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsInForAwaitOf.ts"
Default failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsInForOf.1.ts"
Typescript failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.10.ts"
Typescript failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithESClassDecorators.4.ts"
Typescript failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.10.ts"
Typescript failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.3.ts"
Typescript failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.4.ts"
Typescript failed: "conformance/statements/VariableStatements/usingDeclarations/usingDeclarationsWithLegacyClassDecorators.9.ts"
Typescript failed: "conformance/statements/VariableStatements/validMultipleVariableDeclarations.ts"
Typescript failed: "conformance/statements/for-await-ofStatements/forAwaitPerIterationBindingDownlevel.ts"
Typescript failed: "conformance/statements/forStatements/forStatementsMultipleValidDecl.ts"
Typescript failed: "conformance/statements/throwStatements/throwInEnclosingStatements.ts"
Typescript failed: "conformance/statements/throwStatements/throwStatements.ts"
Typescript failed: "conformance/types/any/assignEveryTypeToAny.ts"
Typescript failed: "conformance/types/asyncGenerators/types.asyncGenerators.es2018.1.ts"
Typescript failed: "conformance/types/conditional/inferTypes2.ts"
Typescript failed: "conformance/types/contextualTypes/asyncFunctions/contextuallyTypeAsyncFunctionReturnType.ts"
Typescript failed: "conformance/types/contextualTypes/partiallyAnnotatedFunction/partiallyAnnotatedFunctionInferenceWithTypeParameter.ts"
Typescript failed: "conformance/types/import/importTypeAmbient.ts"
Typescript failed: "conformance/types/intersection/intersectionMemberOfUnionNarrowsCorrectly.ts"
Typescript failed: "conformance/types/keyof/keyofAndForIn.ts"
Typescript failed: "conformance/types/literal/literalTypeWidening.ts"
Typescript failed: "conformance/types/literal/literalTypes2.ts"
Typescript failed: "conformance/types/literal/numericStringLiteralTypes.ts"
Typescript failed: "conformance/types/mapped/isomorphicMappedTypeInference.ts"
Typescript failed: "conformance/types/mapped/mappedTypeConstraints.ts"
Typescript failed: "conformance/types/mapped/mappedTypeModifiers.ts"
Typescript failed: "conformance/types/mapped/mappedTypes2.ts"
Typescript failed: "conformance/types/members/objectTypeHidingMembersOfObject.ts"
Typescript failed: "conformance/types/members/objectTypeWithCallSignatureAppearsToBeFunctionType.ts"
Typescript failed: "conformance/types/members/objectTypeWithCallSignatureHidingMembersOfExtendedFunction.ts"
Typescript failed: "conformance/types/members/objectTypeWithCallSignatureHidingMembersOfFunction.ts"
Typescript failed: "conformance/types/members/objectTypeWithConstructSignatureHidingMembersOfExtendedFunction.ts"
Typescript failed: "conformance/types/members/objectTypeWithConstructSignatureHidingMembersOfFunction.ts"
Typescript failed: "conformance/types/members/typesWithOptionalProperty.ts"
Typescript failed: "conformance/types/members/typesWithSpecializedCallSignatures.ts"
Typescript failed: "conformance/types/members/typesWithSpecializedConstructSignatures.ts"
Typescript failed: "conformance/types/nonPrimitive/nonPrimitiveAndEmptyObject.ts"
Typescript failed: "conformance/types/objectTypeLiteral/callSignatures/callSignatureWithoutAnnotationsOrBody.ts"
Typescript failed: "conformance/types/objectTypeLiteral/callSignatures/callSignaturesThatDifferOnlyByReturnType.ts"
Typescript failed: "conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters.ts"
Typescript failed: "conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithOptionalParameters2.ts"
Typescript failed: "conformance/types/objectTypeLiteral/callSignatures/identicalCallSignatures.ts"
Typescript failed: "conformance/types/objectTypeLiteral/callSignatures/parametersWithNoAnnotationAreAny.ts"
Typescript failed: "conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsSubtypeOfNonSpecializedSignature.ts"
Typescript failed: "conformance/types/objectTypeLiteral/callSignatures/stringLiteralTypesInImplementationSignatures.ts"
Typescript failed: "conformance/types/objectTypeLiteral/constructSignatures/constructSignaturesWithIdenticalOverloads.ts"
Typescript failed: "conformance/types/objectTypeLiteral/constructSignatures/constructSignaturesWithOverloads.ts"
Typescript failed: "conformance/types/objectTypeLiteral/constructSignatures/constructSignaturesWithOverloadsThatDifferOnlyByReturnType.ts"
Typescript failed: "conformance/types/objectTypeLiteral/methodSignatures/functionLiterals.ts"
Typescript failed: "conformance/types/objectTypeLiteral/methodSignatures/methodSignaturesWithOverloads2.ts"
Typescript failed: "conformance/types/objectTypeLiteral/propertySignatures/propertyNameWithoutTypeAnnotation.ts"
Typescript failed: "conformance/types/objectTypeLiteral/propertySignatures/propertyNamesOfReservedWords.ts"
Typescript failed: "conformance/types/primitives/undefined/validUndefinedAssignments.ts"
Typescript failed: "conformance/types/rest/objectRestAssignment.ts"
Typescript failed: "conformance/types/specifyingTypes/typeLiterals/arrayOfFunctionTypes3.ts"
Typescript failed: "conformance/types/specifyingTypes/typeLiterals/functionLiteral.ts"
Typescript failed: "conformance/types/specifyingTypes/typeLiterals/functionLiteralForOverloads.ts"
Typescript failed: "conformance/types/specifyingTypes/typeLiterals/functionLiteralForOverloads2.ts"
Typescript failed: "conformance/types/specifyingTypes/typeLiterals/parenthesizedTypes.ts"
Typescript failed: "conformance/types/spread/objectSpread.ts"
Typescript failed: "conformance/types/stringLiteral/stringLiteralTypesAndTuples01.ts"
Typescript failed: "conformance/types/stringLiteral/stringLiteralTypesAsTypeParameterConstraint02.ts"
Typescript failed: "conformance/types/stringLiteral/stringLiteralTypesWithTemplateStrings01.ts"
Typescript failed: "conformance/types/thisType/thisTypeInClasses.ts"
Minify failed: "conformance/types/thisType/thisTypeInFunctions4.ts"
Typescript failed: "conformance/types/thisType/thisTypeOptionalCall.ts"
Typescript failed: "conformance/types/tuple/named/namedTupleMembers.ts"
Typescript failed: "conformance/types/typeAliases/typeAliases.ts"
Typescript failed: "conformance/types/typeParameters/typeArgumentLists/callGenericFunctionWithZeroTypeArguments.ts"
Typescript failed: "conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction.ts"
Typescript failed: "conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction3.ts"
Typescript failed: "conformance/types/typeParameters/typeArgumentLists/wrappedAndRecursiveConstraints3.ts"
Typescript failed: "conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints.ts"
Typescript failed: "conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints2.ts"
Typescript failed: "conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts"
Typescript failed: "conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithoutConstraints.ts"
Typescript failed: "conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts"
Typescript failed: "conformance/types/typeParameters/typeParameterLists/typeParametersAvailableInNestedScope.ts"
Typescript failed: "conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignatures3.ts"
Typescript failed: "conformance/types/typeRelationships/bestCommonType/arrayLiteralWithMultipleBestCommonTypes.ts"
Typescript failed: "conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions.ts"
Typescript failed: "conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements2.ts"
Typescript failed: "conformance/types/typeRelationships/comparable/weakTypesAndLiterals01.ts"
Typescript failed: "conformance/types/typeRelationships/subtypesAndSuperTypes/nullIsSubtypeOfEverythingButUndefined.ts"
Typescript failed: "conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts"
Typescript failed: "conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures2.ts"
Typescript failed: "conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignatures4.ts"
Typescript failed: "conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures2.ts"
Typescript failed: "conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignatures4.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignatures2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesDifferingParamCounts.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithCallSignaturesWithOverloads.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignatures2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithConstructSignaturesDifferingParamCounts.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignatures2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByReturnType2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterCounts2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingTypeParameterNames.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesOptionalParams3.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByReturnType2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterCounts.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingTypeParameterNames.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams2.ts"
Typescript failed: "conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesOptionalParams3.ts"
Typescript failed: "conformance/types/typeRelationships/typeInference/genericCallWithFunctionTypedArguments3.ts"
Typescript failed: "conformance/types/typeRelationships/typeInference/genericCallWithFunctionTypedArguments4.ts"
Typescript failed: "conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments.ts"
Typescript failed: "conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgs2.ts"
Typescript failed: "conformance/types/typeRelationships/typeInference/genericContextualTypes1.ts"
Typescript failed: "conformance/types/typeRelationships/typeInference/genericContextualTypes2.ts"
Typescript failed: "conformance/types/typeRelationships/typeInference/genericContextualTypes3.ts"
Typescript failed: "conformance/types/typeRelationships/typeInference/unionAndIntersectionInference3.ts"
Typescript failed: "conformance/types/uniqueSymbol/uniqueSymbols.ts"
Typescript failed: "conformance/types/uniqueSymbol/uniqueSymbolsDeclarations.ts"
Typescript failed: "conformance/types/uniqueSymbol/uniqueSymbolsDeclarationsErrors.ts"

View file

@ -13,18 +13,22 @@ use crate::{
typescript::TypeScriptCase,
};
fn get_result(source_text: &str, source_type: SourceType, options: CodegenOptions) -> TestResult {
if !get_normal_result(source_text, source_type, options)
|| !get_minify_result(source_text, source_type, options)
{
TestResult::ParseError(String::new(), false)
} else {
TestResult::Passed
fn get_result(source_text: &str, source_type: SourceType) -> TestResult {
if !get_normal_result(source_text, source_type) {
return TestResult::CodegenError("Default");
}
if !get_minify_result(source_text, source_type) {
return TestResult::CodegenError("Minify");
}
if !get_typescript_result(source_text, source_type) {
return TestResult::CodegenError("Typescript");
}
TestResult::Passed
}
/// Idempotency test
fn get_normal_result(source_text: &str, source_type: SourceType, options: CodegenOptions) -> bool {
fn get_normal_result(source_text: &str, source_type: SourceType) -> bool {
let options = CodegenOptions::default();
let allocator = Allocator::default();
let program1 = Parser::new(&allocator, source_text, source_type).parse().program;
let source_text1 = Codegen::<false>::new(source_text.len(), options).build(&program1);
@ -34,7 +38,8 @@ fn get_normal_result(source_text: &str, source_type: SourceType, options: Codege
}
/// Minify idempotency test
fn get_minify_result(source_text: &str, source_type: SourceType, options: CodegenOptions) -> bool {
fn get_minify_result(source_text: &str, source_type: SourceType) -> bool {
let options = CodegenOptions::default();
let allocator = Allocator::default();
let program1 = Parser::new(&allocator, source_text, source_type).parse().program;
let source_text1 = Codegen::<true>::new(source_text.len(), options).build(&program1);
@ -43,6 +48,17 @@ fn get_minify_result(source_text: &str, source_type: SourceType, options: Codege
source_text1 == source_text2
}
/// TypeScript idempotency test
fn get_typescript_result(source_text: &str, source_type: SourceType) -> bool {
let options = CodegenOptions { enable_typescript: true };
let allocator = Allocator::default();
let program1 = Parser::new(&allocator, source_text, source_type).parse().program;
let source_text1 = Codegen::<false>::new(source_text.len(), options).build(&program1);
let program2 = Parser::new(&allocator, &source_text1, source_type).parse().program;
let source_text2 = Codegen::<false>::new(source_text1.len(), options).build(&program2);
source_text1 == source_text2
}
pub struct CodegenTest262Case {
base: Test262Case,
}
@ -72,7 +88,7 @@ impl Case for CodegenTest262Case {
let source_text = self.base.code();
let is_module = self.base.meta().flags.contains(&TestFlag::Module);
let source_type = SourceType::default().with_module(is_module);
let result = get_result(source_text, source_type, CodegenOptions);
let result = get_result(source_text, source_type);
self.base.set_result(result);
}
}
@ -105,7 +121,7 @@ impl Case for CodegenBabelCase {
fn run(&mut self) {
let source_text = self.base.code();
let source_type = self.base.source_type();
let result = get_result(source_text, source_type, CodegenOptions);
let result = get_result(source_text, source_type);
self.base.set_result(result);
}
}
@ -138,7 +154,7 @@ impl Case for CodegenTypeScriptCase {
fn run(&mut self) {
let source_text = self.base.code();
let source_type = self.base.source_type();
let result = get_result(source_text, source_type, CodegenOptions);
let result = get_result(source_text, source_type);
self.base.set_result(result);
}
}
@ -171,7 +187,7 @@ impl Case for CodegenMiscCase {
fn run(&mut self) {
let source_text = self.base.code();
let source_type = self.base.source_type();
let result = get_result(source_text, source_type, CodegenOptions);
let result = get_result(source_text, source_type);
self.base.set_result(result);
}
}

View file

@ -100,5 +100,5 @@ fn minify(source_text: &str, source_type: SourceType, options: MinifierOptions)
let program = Parser::new(&allocator, source_text, source_type).parse().program;
let program = allocator.alloc(program);
Minifier::new(options).build(&allocator, program);
Codegen::<true>::new(source_text.len(), CodegenOptions).build(program)
Codegen::<true>::new(source_text.len(), CodegenOptions::default()).build(program)
}

View file

@ -138,8 +138,8 @@ impl Case for CodegenRuntimeTest262Case {
let source_type = SourceType::default().with_module(is_module);
let allocator = Allocator::default();
let program = Parser::new(&allocator, source_text, source_type).parse().program;
let mut text =
Codegen::<false>::new(source_text.len(), CodegenOptions).build(&program);
let mut text = Codegen::<false>::new(source_text.len(), CodegenOptions::default())
.build(&program);
if is_only_strict {
text = format!("\"use strict\";\n{text}");
}

View file

@ -34,6 +34,7 @@ pub enum TestResult {
ParseError(String, /* panicked */ bool),
CorrectError(String, /* panicked */ bool),
RuntimeError(String),
CodegenError(/* reason */ &'static str),
}
pub struct CoverageReport<'a, T> {
@ -380,7 +381,12 @@ pub trait Case: Sized + Sync + Send + UnwindSafe {
format!("Expect Syntax Error: {:?}\n", normalize_path(self.path())).as_bytes(),
)?;
}
_ => {}
TestResult::CodegenError(reason) => {
writer.write_all(
format!("{reason} failed: {:?}\n", normalize_path(self.path())).as_bytes(),
)?;
}
TestResult::Passed | TestResult::ToBeRun | TestResult::CorrectError(..) => {}
}
Ok(())
}

View file

@ -73,7 +73,7 @@ fn minify(source_text: &str, source_type: SourceType, options: MinifierOptions)
let program = Parser::new(&allocator, source_text, source_type).parse().program;
let program = allocator.alloc(program);
Minifier::new(options).build(&allocator, program);
Codegen::<true>::new(source_text.len(), CodegenOptions).build(program)
Codegen::<true>::new(source_text.len(), CodegenOptions::default()).build(program)
}
fn gzip_size(s: &str) -> usize {

View file

@ -173,7 +173,8 @@ pub trait TestCase {
.build(transformed_program);
result.map(|()| {
Codegen::<false>::new(source_text.len(), CodegenOptions).build(transformed_program)
Codegen::<false>::new(source_text.len(), CodegenOptions::default())
.build(transformed_program)
})
}
}
@ -241,7 +242,8 @@ impl TestCase for ConformanceTestCase {
let mut actual_errors = String::new();
let result = transformer.build(program);
if result.is_ok() {
transformed_code = Codegen::<false>::new(input.len(), CodegenOptions).build(program);
transformed_code =
Codegen::<false>::new(input.len(), CodegenOptions::default()).build(program);
} else {
actual_errors =
result.err().unwrap().iter().map(std::string::ToString::to_string).collect();
@ -257,12 +259,12 @@ impl TestCase for ConformanceTestCase {
}
// The transformation should be equal to input.js If output.js does not exist.
let program = Parser::new(&allocator, &input, source_type).parse().program;
Codegen::<false>::new(input.len(), CodegenOptions).build(&program)
Codegen::<false>::new(input.len(), CodegenOptions::default()).build(&program)
},
|output| {
// Get expected code by parsing the source text, so we can get the same code generated result.
let program = Parser::new(&allocator, &output, source_type).parse().program;
Codegen::<false>::new(output.len(), CodegenOptions).build(&program)
Codegen::<false>::new(output.len(), CodegenOptions::default()).build(&program)
},
);
@ -322,8 +324,8 @@ impl ExecTestCase {
let source_type = SourceType::from_path(&target_path).unwrap();
let transformed_program =
Parser::new(&allocator, &source_text, source_type).parse().program;
let result =
Codegen::<false>::new(source_text.len(), CodegenOptions).build(&transformed_program);
let result = Codegen::<false>::new(source_text.len(), CodegenOptions::default())
.build(&transformed_program);
fs::write(&target_path, result).unwrap();

View file

@ -126,7 +126,8 @@ impl TypeScriptFixtures {
result
.map(|()| {
Codegen::<false>::new(source_text.len(), CodegenOptions).build(transformed_program)
Codegen::<false>::new(source_text.len(), CodegenOptions::default())
.build(transformed_program)
})
.map_err(|e| e.iter().map(ToString::to_string).collect())
}