diff --git a/es2panda/compiler/core/emitter/emitter.cpp b/es2panda/compiler/core/emitter/emitter.cpp index c0e43e1f255d6bed4f91dd678f78d6c7a2c2345e..bf21e273a38b30409c3203c6e79ed00bc5fdf431 100644 --- a/es2panda/compiler/core/emitter/emitter.cpp +++ b/es2panda/compiler/core/emitter/emitter.cpp @@ -328,7 +328,6 @@ Emitter::Emitter(const CompilerContext *context) } GenESTypeAnnotationRecord(); - if (context->IsMergeAbc()) { auto recordName = context->Binder()->Program()->FormatedRecordName().Mutf8(); rec_ = new panda::pandasm::Record(recordName.substr(0, recordName.find_last_of('.')), LANG_EXT); @@ -340,6 +339,9 @@ Emitter::Emitter(const CompilerContext *context) GenCommonjsRecord(); } } + if (context->Binder()->Program()->Kind() == parser::ScriptKind::MODULE) { + AddHasTopLevelAwaitRecord(context->Binder()->Program()->HasTLA(), context); + } } Emitter::~Emitter() @@ -451,6 +453,31 @@ void Emitter::AddSourceTextModuleRecord(ModuleRecordEmitter *module, CompilerCon prog_->literalarray_table.emplace(static_cast(moduleLiteral), std::move(literalArrayInstance)); } +void Emitter::AddHasTopLevelAwaitRecord(bool hasTLA, const CompilerContext *context) +{ + if (context->IsMergeAbc()) { + auto hasTLAField = panda::pandasm::Field(LANG_EXT); + hasTLAField.name = "hasTopLevelAwait"; + hasTLAField.type = panda::pandasm::Type("u8", 0); + hasTLAField.metadata->SetValue( + panda::pandasm::ScalarValue::Create(static_cast(hasTLA)) + ); + rec_->field_list.emplace_back(std::move(hasTLAField)); + } else if (hasTLA) { + auto hasTLARecord = panda::pandasm::Record("_HasTopLevelAwait", LANG_EXT); + hasTLARecord.metadata->SetAccessFlags(panda::ACC_PUBLIC); + auto hasTLAField = panda::pandasm::Field(LANG_EXT); + hasTLAField.name = "hasTopLevelAwait"; + hasTLAField.type = panda::pandasm::Type("u8", 0); + hasTLAField.metadata->SetValue( + panda::pandasm::ScalarValue::Create(static_cast(true)) + ); + hasTLARecord.field_list.emplace_back(std::move(hasTLAField)); + + prog_->record_table.emplace(hasTLARecord.name, std::move(hasTLARecord)); + } +} + void Emitter::FillTypeInfoRecord(CompilerContext *context, bool typeFlag, int64_t typeSummaryIndex, const std::string &recordName) const { diff --git a/es2panda/compiler/core/emitter/emitter.h b/es2panda/compiler/core/emitter/emitter.h index aa149a90db7e3c6e02723fa7d9d0cb5d68755c61..a03aee0932e8eb69f5c350aa47c9bb42df9cfad9 100644 --- a/es2panda/compiler/core/emitter/emitter.h +++ b/es2panda/compiler/core/emitter/emitter.h @@ -130,6 +130,7 @@ private: void SetPkgNameField(std::string pkgName); void GenCommonjsRecord() const; void GenESTypeAnnotationRecord() const; + void AddHasTopLevelAwaitRecord(bool hasTLA, const CompilerContext *context); std::mutex m_; panda::pandasm::Program *prog_; diff --git a/es2panda/compiler/core/function.cpp b/es2panda/compiler/core/function.cpp index 7e307aef37165564e21975e1c2c302d28e85282a..8761d7a5984747253b4299166fe754cdaf947e49 100644 --- a/es2panda/compiler/core/function.cpp +++ b/es2panda/compiler/core/function.cpp @@ -252,7 +252,7 @@ static void CompileFunctionOrProgram(PandaGen *pg) const auto *topScope = pg->TopScope(); if (pg->FunctionHasFinalizer()) { - ASSERT(topScope->IsFunctionScope()); + ASSERT(topScope->IsFunctionScope() || topScope->IsModuleScope()); if (!pg->IsAsyncFunction()) { CompileFunctionParameterDeclaration(pg, pg->RootNode()->AsScriptFunction()); @@ -260,7 +260,12 @@ static void CompileFunctionOrProgram(PandaGen *pg) TryContext tryCtx(pg); pg->FunctionInit(tryCtx.GetCatchTable()); - + if (topScope->IsModuleScope()) { + pg->FunctionEnter(); + CompileSourceBlock(pg, pg->RootNode()->AsBlockStatement()); + pg->FunctionExit(); + return; + } CompileFunction(pg); } else { pg->FunctionInit(nullptr); diff --git a/es2panda/compiler/core/pandagen.cpp b/es2panda/compiler/core/pandagen.cpp index 577471a6eebeda28d71f66546ce40b58fef7de79..5f7527ddbce7c3c9aac4a3b611d506c5efab882b 100644 --- a/es2panda/compiler/core/pandagen.cpp +++ b/es2panda/compiler/core/pandagen.cpp @@ -162,7 +162,11 @@ binder::Binder *PandaGen::Binder() const void PandaGen::FunctionInit(CatchTable *catchTable) { if (rootNode_->IsProgram()) { - builder_ = allocator_->New(this, catchTable); + if (context_->Binder()->Program()->HasTLA()) { + builder_ = allocator_->New(this, catchTable); + } else { + builder_ = allocator_->New(this, catchTable); + } return; } @@ -189,7 +193,7 @@ void PandaGen::FunctionInit(CatchTable *catchTable) bool PandaGen::FunctionHasFinalizer() const { if (rootNode_->IsProgram()) { - return false; + return context_->Binder()->Program()->HasTLA(); } const ir::ScriptFunction *func = rootNode_->AsScriptFunction(); @@ -199,17 +203,28 @@ bool PandaGen::FunctionHasFinalizer() const bool PandaGen::IsAsyncFunction() const { + if (rootNode_->IsProgram() && context_->Binder()->Program()->HasTLA()) { + return true; + } const ir::ScriptFunction *func = rootNode_->AsScriptFunction(); return func->IsAsync() && !func->IsGenerator(); } void PandaGen::FunctionEnter() { + if (rootNode_->IsProgram() && context_->Binder()->Program()->HasTLA()) { + builder_->Prepare(nullptr); + return; + } builder_->Prepare(rootNode_->AsScriptFunction()); } void PandaGen::FunctionExit() { + if (rootNode_->IsProgram() && context_->Binder()->Program()->HasTLA()) { + builder_->CleanUp(nullptr); + return; + } builder_->CleanUp(rootNode_->AsScriptFunction()); } diff --git a/es2panda/lexer/lexer.cpp b/es2panda/lexer/lexer.cpp index dc17974d169ddf3dafd7b74b89372cad8a543e86..aaa3cd71cc4fc8ec94017a6880f9538434ab26dd 100644 --- a/es2panda/lexer/lexer.cpp +++ b/es2panda/lexer/lexer.cpp @@ -1180,15 +1180,26 @@ void Lexer::CheckAwaitKeyword() if (parserContext_->IsStaticBlock()) { ThrowError("'await' is not allowed in class static block"); } + // support top level await for module if (!parserContext_->IsAsync()) { - GetToken().type_ = TokenType::LITERAL_IDENT; - return; + if (!parserContext_->IsModule() || parserContext_->GetProgram()->IsDtsFile()) { + GetToken().type_ = TokenType::LITERAL_IDENT; + return; + } + if (parserContext_->GetProgram()->Extension() == ScriptExtension::TS) { + if (parserContext_->IsTsModule()) { + GetToken().type_ = TokenType::LITERAL_IDENT; + return; + } + } } if (parserContext_->DisallowAwait()) { ThrowError("'await' is not allowed"); } - + if (GetToken().flags_ & TokenFlags::HAS_ESCAPE) { + ThrowError("Keyword must not contain escaped characters"); + } GetToken().type_ = TokenType::KEYW_AWAIT; } diff --git a/es2panda/parser/expressionParser.cpp b/es2panda/parser/expressionParser.cpp index 3578bdd5ad0abf055720d8ea5eab09388e23c030..1883a03e0f842cabf94e301f5f1d298a1fefb73a 100644 --- a/es2panda/parser/expressionParser.cpp +++ b/es2panda/parser/expressionParser.cpp @@ -2350,6 +2350,9 @@ ir::Expression *ParserImpl::ParseUnaryOrPrefixUpdateExpression(ExpressionParseFl returnExpr = AllocNode(argument, operatorType, true); } else if (operatorType == lexer::TokenType::KEYW_AWAIT) { returnExpr = AllocNode(argument); + if (context_.IsModule() && !(context_.Status() & ParserStatus::FUNCTION)) { + program_.SetHasTLA(true); + } } else { returnExpr = AllocNode(argument, operatorType); } diff --git a/es2panda/parser/parserImpl.cpp b/es2panda/parser/parserImpl.cpp index 2274b8901f0f9a03945514183acdc1164c1e1ba4..dcf7534b2b155dbde0eabd797d4d94f99bb3a6c4 100644 --- a/es2panda/parser/parserImpl.cpp +++ b/es2panda/parser/parserImpl.cpp @@ -2985,13 +2985,8 @@ bool ParserImpl::IsMethodDefinitionsAreSame(const ir::MethodDefinition *property ir::Identifier *ParserImpl::SetIdentNodeInClassDefinition(bool isDeclare, binder::ConstDecl **decl) { - lexer::TokenType keywType = lexer_->GetToken().KeywordType(); CheckStrictReservedWord(); - if (keywType == lexer::TokenType::KEYW_AWAIT && context_.IsModule()) { - ThrowSyntaxError("Unexpected reserved word"); - } - const util::StringView &identStr = lexer_->GetToken().Ident(); *decl = Binder()->AddDecl(lexer_->GetToken().Start(), isDeclare, identStr); @@ -3016,7 +3011,8 @@ ir::ClassDefinition *ParserImpl::ParseClassDefinition(bool isDeclaration, bool i auto classCtx = binder::LexicalScope(Binder()); - if (lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && (Extension() != ScriptExtension::TS || + if ((lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT || + lexer_->GetToken().Type() == lexer::TokenType::KEYW_AWAIT) && (Extension() != ScriptExtension::TS || lexer_->GetToken().KeywordType() != lexer::TokenType::KEYW_IMPLEMENTS)) { identNode = SetIdentNodeInClassDefinition(isDeclare, &decl); } else if (isDeclaration && idRequired) { @@ -3810,7 +3806,7 @@ ir::ScriptFunction *ParserImpl::ParseFunction(ParserStatus newStatus, ThrowSyntaxError("Unexpected token, expected '('"); } - if (newStatus & (ParserStatus::ASYNC_FUNCTION | ParserStatus::FUNCTION_DECLARATION)) { + if ((newStatus & (ParserStatus::ASYNC_FUNCTION | ParserStatus::FUNCTION_DECLARATION)) | context_.IsModule()) { context_.Status() |= ParserStatus::DISALLOW_AWAIT; } @@ -4188,6 +4184,11 @@ void ParserImpl::CheckStrictReservedWord() const ThrowSyntaxError("Unexpected reserved word in strict mode."); } } + + if (lexer_->GetToken().KeywordType() == lexer::TokenType::KEYW_AWAIT && + context_.IsModule() && !context_.IsTsModule()) { + ThrowSyntaxError("Unexpected reserved word"); + } } template diff --git a/es2panda/parser/program/program.cpp b/es2panda/parser/program/program.cpp index 569715606974d3736a4325a91774a50c92bf6ebc..d203aa86df3d5e9a88598c63e6f09a14b3ab5bf5 100644 --- a/es2panda/parser/program/program.cpp +++ b/es2panda/parser/program/program.cpp @@ -44,6 +44,7 @@ Program::Program(Program &&other) typeModuleRecord_(other.typeModuleRecord_), patchFixHelper_(other.patchFixHelper_), isDtsFile_(other.isDtsFile_), + hasTLA_(other.hasTLA_), isDebug_(other.isDebug_), targetApiVersion_(other.targetApiVersion_) { diff --git a/es2panda/parser/program/program.h b/es2panda/parser/program/program.h index 2c9815cec9fa1324ddd3f596f99b42184d7ce23c..2430b89eedc872865d1e35f7c60ebcae20b49923 100644 --- a/es2panda/parser/program/program.h +++ b/es2panda/parser/program/program.h @@ -154,7 +154,17 @@ public: { return isDtsFile_; } - + + bool HasTLA() const + { + return hasTLA_; + } + + void SetHasTLA(bool hasTLA) + { + hasTLA_ = hasTLA; + } + bool IsDebug() const { return isDebug_; @@ -193,6 +203,7 @@ private: SourceTextModuleRecord *typeModuleRecord_ {nullptr}; util::PatchFix *patchFixHelper_ {nullptr}; bool isDtsFile_ {false}; + bool hasTLA_ {false}; bool isDebug_ {false}; int targetApiVersion_ {0}; }; diff --git a/es2panda/parser/statementParser.cpp b/es2panda/parser/statementParser.cpp index 692d2e770cd761b9ac125c499f5ba117444bcd36..606436468c5106bde24ccc2d27d6a7e188c9011d 100644 --- a/es2panda/parser/statementParser.cpp +++ b/es2panda/parser/statementParser.cpp @@ -1922,7 +1922,7 @@ void ParserImpl::ValidateDeclaratorId() switch (lexer_->GetToken().KeywordType()) { case lexer::TokenType::KEYW_AWAIT: { - if (context_.IsModule()) { + if (context_.IsModule() && !program_.IsDtsFile() && !context_.IsTsModule()) { ThrowSyntaxError("'await' is not permitted as an identifier in module code"); } break; @@ -2879,7 +2879,8 @@ void ParserImpl::ParseNamedImportSpecifiers(ArenaVector *specifie } } - if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { + if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT || + (Extension() == ScriptExtension::TS && lexer_->GetToken().Ident().Is("await"))) { ThrowSyntaxError("Unexpected token"); } diff --git a/es2panda/test/compiler/dts/test-await-dts-expected.txt b/es2panda/test/compiler/dts/test-await-dts-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/es2panda/test/compiler/dts/test-await-dts.d.ts b/es2panda/test/compiler/dts/test-await-dts.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f350b2ed405deae1b36c91228229c0c860ff77d --- /dev/null +++ b/es2panda/test/compiler/dts/test-await-dts.d.ts @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +export {}; +declare const await: any; +declare class C extends await {} diff --git a/es2panda/test/compiler/ts/projects/ts-toplevel-await-project/test1.ts b/es2panda/test/compiler/ts/projects/ts-toplevel-await-project/test1.ts new file mode 100644 index 0000000000000000000000000000000000000000..4aee4a5998c3b63f92e0806bca6bb683d0e45cfd --- /dev/null +++ b/es2panda/test/compiler/ts/projects/ts-toplevel-await-project/test1.ts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +const add = (a: number, b: number): number => { + print('add'); + return a + b; +}; +export { add }; \ No newline at end of file diff --git a/es2panda/test/compiler/ts/projects/ts-toplevel-await-project/test2-exec-expected.txt b/es2panda/test/compiler/ts/projects/ts-toplevel-await-project/test2-exec-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..4d9c7c75ee599d13982ca3a6b3194595f1491786 --- /dev/null +++ b/es2panda/test/compiler/ts/projects/ts-toplevel-await-project/test2-exec-expected.txt @@ -0,0 +1,2 @@ +add +3 diff --git a/es2panda/test/compiler/ts/projects/ts-toplevel-await-project/test2-exec.ts b/es2panda/test/compiler/ts/projects/ts-toplevel-await-project/test2-exec.ts new file mode 100644 index 0000000000000000000000000000000000000000..d28815238130a4a99b72f2702ce8f157600fc1c0 --- /dev/null +++ b/es2panda/test/compiler/ts/projects/ts-toplevel-await-project/test2-exec.ts @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +export {}; +const {add} = await import('./test1'); +const sum = add(1, 2); +print(sum); \ No newline at end of file diff --git a/es2panda/test/parser/ts/test-toplevel-await1-expected.txt b/es2panda/test/parser/ts/test-toplevel-await1-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..d0155802058659026a71e1028552e574e0b5a261 --- /dev/null +++ b/es2panda/test/parser/ts/test-toplevel-await1-expected.txt @@ -0,0 +1,439 @@ +{ + "type": "Program", + "statements": [ + { + "type": "ExportNamedDeclaration", + "declaration": null, + "source": null, + "specifiers": [], + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 17, + "column": 11 + } + } + }, + { + "type": "TSModuleDeclaration", + "id": { + "type": "Identifier", + "name": "foo1", + "loc": { + "start": { + "line": 19, + "column": 11 + }, + "end": { + "line": 19, + "column": 15 + } + } + }, + "body": { + "type": "TSModuleBlock", + "body": [ + { + "type": "VariableDeclaration", + "declarations": [ + { + "type": "VariableDeclarator", + "id": { + "type": "Identifier", + "name": "await", + "typeAnnotation": { + "type": "TSAnyKeyword", + "loc": { + "start": { + "line": 20, + "column": 18 + }, + "end": { + "line": 20, + "column": 21 + } + } + }, + "loc": { + "start": { + "line": 20, + "column": 11 + }, + "end": { + "line": 20, + "column": 16 + } + } + }, + "init": { + "type": "NumberLiteral", + "value": 1, + "loc": { + "start": { + "line": 20, + "column": 23 + }, + "end": { + "line": 20, + "column": 24 + } + } + }, + "loc": { + "start": { + "line": 20, + "column": 11 + }, + "end": { + "line": 20, + "column": 24 + } + } + } + ], + "kind": "const", + "loc": { + "start": { + "line": 20, + "column": 5 + }, + "end": { + "line": 20, + "column": 25 + } + } + } + ], + "loc": { + "start": { + "line": 19, + "column": 16 + }, + "end": { + "line": 21, + "column": 2 + } + } + }, + "declare": false, + "global": false, + "loc": { + "start": { + "line": 19, + "column": 1 + }, + "end": { + "line": 23, + "column": 10 + } + } + }, + { + "type": "TSModuleDeclaration", + "id": { + "type": "Identifier", + "name": "foo2", + "loc": { + "start": { + "line": 23, + "column": 11 + }, + "end": { + "line": 23, + "column": 15 + } + } + }, + "body": { + "type": "TSModuleBlock", + "body": [ + { + "type": "ClassDeclaration", + "definition": { + "id": { + "type": "Identifier", + "name": "await", + "loc": { + "start": { + "line": 24, + "column": 11 + }, + "end": { + "line": 24, + "column": 16 + } + } + }, + "superClass": null, + "implements": [], + "constructor": { + "type": "MethodDefinition", + "key": { + "type": "Identifier", + "name": "constructor", + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 1, + "column": 1 + } + } + }, + "kind": "constructor", + "static": false, + "optional": false, + "computed": false, + "value": { + "type": "FunctionExpression", + "function": { + "type": "ScriptFunction", + "id": null, + "generator": false, + "async": false, + "expression": false, + "params": [], + "body": { + "type": "BlockStatement", + "statements": [], + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 1, + "column": 1 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 1, + "column": 1 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 1, + "column": 1 + } + } + }, + "overloads": [], + "decorators": [], + "loc": { + "start": { + "line": 24, + "column": 5 + }, + "end": { + "line": 24, + "column": 19 + } + } + }, + "body": [], + "indexSignatures": [], + "loc": { + "start": { + "line": 24, + "column": 17 + }, + "end": { + "line": 24, + "column": 19 + } + } + }, + "decorators": [], + "loc": { + "start": { + "line": 24, + "column": 5 + }, + "end": { + "line": 24, + "column": 19 + } + } + }, + { + "type": "EmptyStatement", + "loc": { + "start": { + "line": 24, + "column": 19 + }, + "end": { + "line": 24, + "column": 20 + } + } + } + ], + "loc": { + "start": { + "line": 23, + "column": 16 + }, + "end": { + "line": 25, + "column": 2 + } + } + }, + "declare": false, + "global": false, + "loc": { + "start": { + "line": 23, + "column": 1 + }, + "end": { + "line": 27, + "column": 10 + } + } + }, + { + "type": "TSModuleDeclaration", + "id": { + "type": "Identifier", + "name": "foo3", + "loc": { + "start": { + "line": 27, + "column": 11 + }, + "end": { + "line": 27, + "column": 15 + } + } + }, + "body": { + "type": "TSModuleBlock", + "body": [ + { + "type": "FunctionDeclaration", + "function": { + "type": "ScriptFunction", + "id": { + "type": "Identifier", + "name": "await", + "loc": { + "start": { + "line": 28, + "column": 14 + }, + "end": { + "line": 28, + "column": 19 + } + } + }, + "generator": false, + "async": false, + "expression": false, + "params": [], + "body": { + "type": "BlockStatement", + "statements": [], + "loc": { + "start": { + "line": 28, + "column": 22 + }, + "end": { + "line": 28, + "column": 24 + } + } + }, + "loc": { + "start": { + "line": 28, + "column": 5 + }, + "end": { + "line": 28, + "column": 24 + } + } + }, + "loc": { + "start": { + "line": 28, + "column": 5 + }, + "end": { + "line": 28, + "column": 24 + } + } + }, + { + "type": "EmptyStatement", + "loc": { + "start": { + "line": 28, + "column": 24 + }, + "end": { + "line": 28, + "column": 25 + } + } + } + ], + "loc": { + "start": { + "line": 27, + "column": 16 + }, + "end": { + "line": 29, + "column": 2 + } + } + }, + "declare": false, + "global": false, + "loc": { + "start": { + "line": 27, + "column": 1 + }, + "end": { + "line": 30, + "column": 1 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 30, + "column": 1 + } + } +} diff --git a/es2panda/test/parser/ts/test-toplevel-await1.ts b/es2panda/test/parser/ts/test-toplevel-await1.ts new file mode 100644 index 0000000000000000000000000000000000000000..9755a4fb9d58342bc48c32e9f6e2b6ddd00dc6be --- /dev/null +++ b/es2panda/test/parser/ts/test-toplevel-await1.ts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +export {}; + +namespace foo1 { + const await: any =1; +} + +namespace foo2 { + class await {}; +} + +namespace foo3 { + function await() {}; +} diff --git a/es2panda/test/parser/ts/test-toplevel-await2-expected.txt b/es2panda/test/parser/ts/test-toplevel-await2-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..dea7a7778847fa1a0ff563971763243097a463a6 --- /dev/null +++ b/es2panda/test/parser/ts/test-toplevel-await2-expected.txt @@ -0,0 +1 @@ +SyntaxError: Unexpected reserved word [test-toplevel-await2.ts:19:10] diff --git a/es2panda/test/parser/ts/test-toplevel-await2.ts b/es2panda/test/parser/ts/test-toplevel-await2.ts new file mode 100644 index 0000000000000000000000000000000000000000..93df48c3600392cee55a4c255ae654851f892e86 --- /dev/null +++ b/es2panda/test/parser/ts/test-toplevel-await2.ts @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +export {}; + +function await() {} diff --git a/es2panda/test/parser/ts/test-toplevel-await3-expected.txt b/es2panda/test/parser/ts/test-toplevel-await3-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..252e15642066562337b1bc25b344e43e2b792ec5 --- /dev/null +++ b/es2panda/test/parser/ts/test-toplevel-await3-expected.txt @@ -0,0 +1 @@ +SyntaxError: Unexpected token [test-toplevel-await3.ts:17:9] diff --git a/es2panda/test/parser/ts/test-toplevel-await3.ts b/es2panda/test/parser/ts/test-toplevel-await3.ts new file mode 100644 index 0000000000000000000000000000000000000000..556450c43df55adc32fa94072c155dc3f138e29e --- /dev/null +++ b/es2panda/test/parser/ts/test-toplevel-await3.ts @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +import {await} from "./other"; diff --git a/es2panda/test/test262skiplist.txt b/es2panda/test/test262skiplist.txt index f2a629aba20d242d4cda39d0154083dee58199a5..e37bb1aa02edca1cca563ebaa20c95aca6e56aac 100644 --- a/es2panda/test/test262skiplist.txt +++ b/es2panda/test/test262skiplist.txt @@ -3313,226 +3313,9 @@ language/module-code/instn-named-err-dflt-thru-star-dflt.js language/module-code/instn-named-err-not-found-dflt.js language/module-code/instn-once.js language/module-code/privatename-valid-no-earlyerr.js -language/module-code/top-level-await/await-awaits-thenable-not-callable.js -language/module-code/top-level-await/await-awaits-thenables-that-throw.js -language/module-code/top-level-await/await-awaits-thenables.js -language/module-code/top-level-await/await-dynamic-import-rejection.js -language/module-code/top-level-await/await-dynamic-import-resolution.js -language/module-code/top-level-await/await-expr-func-expression.js -language/module-code/top-level-await/await-expr-new-expr-reject.js -language/module-code/top-level-await/await-expr-new-expr.js -language/module-code/top-level-await/await-expr-reject-throws.js -language/module-code/top-level-await/await-expr-resolution.js -language/module-code/top-level-await/await-void-expr.js language/module-code/top-level-await/dynamic-import-rejection.js -language/module-code/top-level-await/dynamic-import-resolution.js -language/module-code/top-level-await/if-await-expr.js -language/module-code/top-level-await/module-async-import-async-resolution-ticks.js -language/module-code/top-level-await/module-import-rejection-body.js -language/module-code/top-level-await/module-import-rejection-tick.js -language/module-code/top-level-await/module-import-resolution.js -language/module-code/top-level-await/module-import-unwrapped.js -language/module-code/top-level-await/module-self-import-async-resolution-ticks.js -language/module-code/top-level-await/module-sync-import-async-resolution-ticks.js -language/module-code/top-level-await/no-operand.js +language/module-code/top-level-await/new-await-script-code.js language/module-code/top-level-await/syntax/await-expr-dyn-import.js -language/module-code/top-level-await/syntax/block-await-expr-array-literal.js -language/module-code/top-level-await/syntax/block-await-expr-func-expression.js -language/module-code/top-level-await/syntax/block-await-expr-identifier.js -language/module-code/top-level-await/syntax/block-await-expr-literal-number.js -language/module-code/top-level-await/syntax/block-await-expr-literal-string.js -language/module-code/top-level-await/syntax/block-await-expr-nested.js -language/module-code/top-level-await/syntax/block-await-expr-new-expr.js -language/module-code/top-level-await/syntax/block-await-expr-null.js -language/module-code/top-level-await/syntax/block-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/block-await-expr-regexp.js -language/module-code/top-level-await/syntax/block-await-expr-this.js -language/module-code/top-level-await/syntax/catch-parameter.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-array-literal.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-func-expression.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-identifier.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-literal-number.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-literal-string.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-nested.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-new-expr.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-null.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-regexp.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-this.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-array-literal.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-func-expression.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-identifier.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-literal-number.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-literal-string.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-nested.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-new-expr.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-null.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-regexp.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-this.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-array-literal.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-func-expression.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-identifier.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-number.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-string.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-nested.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-new-expr.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-null.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-regexp.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-template-literal.js -language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-this.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-array-literal.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-func-expression.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-identifier.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-literal-number.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-literal-string.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-nested.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-new-expr.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-null.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-regexp.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-this.js -language/module-code/top-level-await/syntax/export-var-await-expr-array-literal.js -language/module-code/top-level-await/syntax/export-var-await-expr-func-expression.js -language/module-code/top-level-await/syntax/export-var-await-expr-identifier.js -language/module-code/top-level-await/syntax/export-var-await-expr-literal-number.js -language/module-code/top-level-await/syntax/export-var-await-expr-literal-string.js -language/module-code/top-level-await/syntax/export-var-await-expr-nested.js -language/module-code/top-level-await/syntax/export-var-await-expr-new-expr.js -language/module-code/top-level-await/syntax/export-var-await-expr-null.js -language/module-code/top-level-await/syntax/export-var-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/export-var-await-expr-regexp.js -language/module-code/top-level-await/syntax/export-var-await-expr-this.js -language/module-code/top-level-await/syntax/for-await-await-expr-array-literal.js -language/module-code/top-level-await/syntax/for-await-await-expr-func-expression.js -language/module-code/top-level-await/syntax/for-await-await-expr-identifier.js -language/module-code/top-level-await/syntax/for-await-await-expr-literal-number.js -language/module-code/top-level-await/syntax/for-await-await-expr-literal-string.js -language/module-code/top-level-await/syntax/for-await-await-expr-nested.js -language/module-code/top-level-await/syntax/for-await-await-expr-new-expr.js -language/module-code/top-level-await/syntax/for-await-await-expr-null.js -language/module-code/top-level-await/syntax/for-await-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/for-await-await-expr-regexp.js -language/module-code/top-level-await/syntax/for-await-await-expr-template-literal.js -language/module-code/top-level-await/syntax/for-await-await-expr-this.js -language/module-code/top-level-await/syntax/for-await-expr-array-literal.js -language/module-code/top-level-await/syntax/for-await-expr-func-expression.js -language/module-code/top-level-await/syntax/for-await-expr-identifier.js -language/module-code/top-level-await/syntax/for-await-expr-literal-number.js -language/module-code/top-level-await/syntax/for-await-expr-literal-string.js -language/module-code/top-level-await/syntax/for-await-expr-nested.js -language/module-code/top-level-await/syntax/for-await-expr-new-expr.js -language/module-code/top-level-await/syntax/for-await-expr-null.js -language/module-code/top-level-await/syntax/for-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/for-await-expr-regexp.js -language/module-code/top-level-await/syntax/for-await-expr-template-literal.js -language/module-code/top-level-await/syntax/for-await-expr-this.js -language/module-code/top-level-await/syntax/for-in-await-expr-array-literal.js -language/module-code/top-level-await/syntax/for-in-await-expr-func-expression.js -language/module-code/top-level-await/syntax/for-in-await-expr-identifier.js -language/module-code/top-level-await/syntax/for-in-await-expr-literal-number.js -language/module-code/top-level-await/syntax/for-in-await-expr-literal-string.js -language/module-code/top-level-await/syntax/for-in-await-expr-nested.js -language/module-code/top-level-await/syntax/for-in-await-expr-new-expr.js -language/module-code/top-level-await/syntax/for-in-await-expr-null.js -language/module-code/top-level-await/syntax/for-in-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/for-in-await-expr-regexp.js -language/module-code/top-level-await/syntax/for-in-await-expr-template-literal.js -language/module-code/top-level-await/syntax/for-in-await-expr-this.js -language/module-code/top-level-await/syntax/for-of-await-expr-array-literal.js -language/module-code/top-level-await/syntax/for-of-await-expr-func-expression.js -language/module-code/top-level-await/syntax/for-of-await-expr-identifier.js -language/module-code/top-level-await/syntax/for-of-await-expr-literal-number.js -language/module-code/top-level-await/syntax/for-of-await-expr-literal-string.js -language/module-code/top-level-await/syntax/for-of-await-expr-nested.js -language/module-code/top-level-await/syntax/for-of-await-expr-new-expr.js -language/module-code/top-level-await/syntax/for-of-await-expr-null.js -language/module-code/top-level-await/syntax/for-of-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/for-of-await-expr-regexp.js -language/module-code/top-level-await/syntax/for-of-await-expr-template-literal.js -language/module-code/top-level-await/syntax/for-of-await-expr-this.js -language/module-code/top-level-await/syntax/if-block-await-expr-array-literal.js -language/module-code/top-level-await/syntax/if-block-await-expr-func-expression.js -language/module-code/top-level-await/syntax/if-block-await-expr-identifier.js -language/module-code/top-level-await/syntax/if-block-await-expr-literal-number.js -language/module-code/top-level-await/syntax/if-block-await-expr-literal-string.js -language/module-code/top-level-await/syntax/if-block-await-expr-nested.js -language/module-code/top-level-await/syntax/if-block-await-expr-new-expr.js -language/module-code/top-level-await/syntax/if-block-await-expr-null.js -language/module-code/top-level-await/syntax/if-block-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/if-block-await-expr-regexp.js -language/module-code/top-level-await/syntax/if-block-await-expr-this.js -language/module-code/top-level-await/syntax/if-expr-await-expr-array-literal.js -language/module-code/top-level-await/syntax/if-expr-await-expr-func-expression.js -language/module-code/top-level-await/syntax/if-expr-await-expr-identifier.js -language/module-code/top-level-await/syntax/if-expr-await-expr-literal-number.js -language/module-code/top-level-await/syntax/if-expr-await-expr-literal-string.js -language/module-code/top-level-await/syntax/if-expr-await-expr-nested.js -language/module-code/top-level-await/syntax/if-expr-await-expr-new-expr.js -language/module-code/top-level-await/syntax/if-expr-await-expr-null.js -language/module-code/top-level-await/syntax/if-expr-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/if-expr-await-expr-regexp.js -language/module-code/top-level-await/syntax/if-expr-await-expr-this.js -language/module-code/top-level-await/syntax/top-level-await-expr-array-literal.js -language/module-code/top-level-await/syntax/top-level-await-expr-func-expression.js -language/module-code/top-level-await/syntax/top-level-await-expr-identifier.js -language/module-code/top-level-await/syntax/top-level-await-expr-literal-number.js -language/module-code/top-level-await/syntax/top-level-await-expr-literal-string.js -language/module-code/top-level-await/syntax/top-level-await-expr-nested.js -language/module-code/top-level-await/syntax/top-level-await-expr-new-expr.js -language/module-code/top-level-await/syntax/top-level-await-expr-null.js -language/module-code/top-level-await/syntax/top-level-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/top-level-await-expr-regexp.js -language/module-code/top-level-await/syntax/top-level-await-expr-this.js -language/module-code/top-level-await/syntax/try-await-expr-array-literal.js -language/module-code/top-level-await/syntax/try-await-expr-func-expression.js -language/module-code/top-level-await/syntax/try-await-expr-identifier.js -language/module-code/top-level-await/syntax/try-await-expr-literal-number.js -language/module-code/top-level-await/syntax/try-await-expr-literal-string.js -language/module-code/top-level-await/syntax/try-await-expr-nested.js -language/module-code/top-level-await/syntax/try-await-expr-new-expr.js -language/module-code/top-level-await/syntax/try-await-expr-null.js -language/module-code/top-level-await/syntax/try-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/try-await-expr-regexp.js -language/module-code/top-level-await/syntax/try-await-expr-this.js -language/module-code/top-level-await/syntax/typeof-await-expr-array-literal.js -language/module-code/top-level-await/syntax/typeof-await-expr-func-expression.js -language/module-code/top-level-await/syntax/typeof-await-expr-identifier.js -language/module-code/top-level-await/syntax/typeof-await-expr-literal-number.js -language/module-code/top-level-await/syntax/typeof-await-expr-literal-string.js -language/module-code/top-level-await/syntax/typeof-await-expr-nested.js -language/module-code/top-level-await/syntax/typeof-await-expr-new-expr.js -language/module-code/top-level-await/syntax/typeof-await-expr-null.js -language/module-code/top-level-await/syntax/typeof-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/typeof-await-expr-regexp.js -language/module-code/top-level-await/syntax/typeof-await-expr-this.js -language/module-code/top-level-await/syntax/void-await-expr-array-literal.js -language/module-code/top-level-await/syntax/void-await-expr-func-expression.js -language/module-code/top-level-await/syntax/void-await-expr-identifier.js -language/module-code/top-level-await/syntax/void-await-expr-literal-number.js -language/module-code/top-level-await/syntax/void-await-expr-literal-string.js -language/module-code/top-level-await/syntax/void-await-expr-nested.js -language/module-code/top-level-await/syntax/void-await-expr-new-expr.js -language/module-code/top-level-await/syntax/void-await-expr-null.js -language/module-code/top-level-await/syntax/void-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/void-await-expr-regexp.js -language/module-code/top-level-await/syntax/void-await-expr-this.js -language/module-code/top-level-await/syntax/while-await-expr-array-literal.js -language/module-code/top-level-await/syntax/while-await-expr-func-expression.js -language/module-code/top-level-await/syntax/while-await-expr-identifier.js -language/module-code/top-level-await/syntax/while-await-expr-literal-number.js -language/module-code/top-level-await/syntax/while-await-expr-literal-string.js -language/module-code/top-level-await/syntax/while-await-expr-nested.js -language/module-code/top-level-await/syntax/while-await-expr-new-expr.js -language/module-code/top-level-await/syntax/while-await-expr-null.js -language/module-code/top-level-await/syntax/while-await-expr-obj-literal.js -language/module-code/top-level-await/syntax/while-await-expr-regexp.js -language/module-code/top-level-await/syntax/while-await-expr-this.js -language/module-code/top-level-await/top-level-ticks-2.js -language/module-code/top-level-await/top-level-ticks.js -language/module-code/top-level-await/void-await-expr.js -language/module-code/top-level-await/while-dynamic-evaluation.js language/statements/class/classelementname-abrupt-completion.js language/statements/class/dstr/async-private-gen-meth-ary-init-iter-close.js language/statements/class/dstr/async-private-gen-meth-ary-init-iter-no-close.js @@ -8590,20 +8373,6 @@ language/module-code/namespace/internals/prevent-extensions.js language/module-code/namespace/internals/set-prototype-of-null.js language/module-code/namespace/internals/set-prototype-of.js language/module-code/namespace/internals/set.js -language/module-code/top-level-await/await-expr-regexp.js -language/module-code/top-level-await/module-import-rejection.js -language/module-code/top-level-await/syntax/block-await-expr-template-literal.js -language/module-code/top-level-await/syntax/export-class-decl-await-expr-template-literal.js -language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-template-literal.js -language/module-code/top-level-await/syntax/export-lex-decl-await-expr-template-literal.js -language/module-code/top-level-await/syntax/export-var-await-expr-template-literal.js -language/module-code/top-level-await/syntax/if-block-await-expr-template-literal.js -language/module-code/top-level-await/syntax/if-expr-await-expr-template-literal.js -language/module-code/top-level-await/syntax/top-level-await-expr-template-literal.js -language/module-code/top-level-await/syntax/try-await-expr-template-literal.js -language/module-code/top-level-await/syntax/typeof-await-expr-template-literal.js -language/module-code/top-level-await/syntax/void-await-expr-template-literal.js -language/module-code/top-level-await/syntax/while-await-expr-template-literal.js language/module-code/verify-dfs.js language/statementList/eval-block-array-literal-with-item.js language/statementList/eval-block-array-literal.js diff --git a/es2panda/test/test_tsc_ignore_list.txt b/es2panda/test/test_tsc_ignore_list.txt index 50a47674b5b0bf2bfa103dd0b50762cf95a65c40..f1b27719606060aa55282293e4283f1070436f73 100644 --- a/es2panda/test/test_tsc_ignore_list.txt +++ b/es2panda/test/test_tsc_ignore_list.txt @@ -41,3 +41,11 @@ es2panda/test/TypeScript/tests/cases/conformance/interfaces/interfaceDeclaration es2panda/test/TypeScript/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser579071.ts es2panda/test/TypeScript/tests/cases/conformance/scanner/ecmascript3/scannerES3NumericLiteral2.ts es2panda/test/TypeScript/tests/cases/conformance/types/members/objectTypeWithStringNamedNumericProperty.ts +es2panda/test/Typescript/tests/cases/conformance/externalModules/topLevelAwait.2.ts +es2panda/test/Typescript/tests/cases/conformance/externalModules/topLevelAwaitErrors.1.ts +es2panda/test/Typescript/tests/cases/conformance/externalModules/topLevelAwaitErrors.2.ts +es2panda/test/Typescript/tests/cases/conformance/externalModules/topLevelAwaitErrors.3.ts +es2panda/test/Typescript/tests/cases/conformance/externalModules/topLevelAwaitErrors.4.ts +es2panda/test/Typescript/tests/cases/conformance/externalModules/topLevelAwaitErrors.5.ts +es2panda/test/Typescript/tests/cases/conformance/externalModules/topLevelAwaitErrors.6.ts +es2panda/test/Typescript/tests/cases/conformance/externalModules/topLevelAwaitErrors.12.ts diff --git a/es2panda/test/type_extractor/dts-testcases/test-interface-type-test-1-expected.txt b/es2panda/test/type_extractor/dts-testcases/test-interface-type-test-1-expected.txt old mode 100755 new mode 100644 diff --git a/es2panda/test/type_extractor/dts-testcases/test-type-summary-order-1-expected.txt b/es2panda/test/type_extractor/dts-testcases/test-type-summary-order-1-expected.txt old mode 100755 new mode 100644 diff --git a/test262/es2022_tests.txt b/test262/es2022_tests.txt index b0cdbf7ce4b825bc8e667befaa941a94425a9602..7109a5683a1ce1a922fb3a0c3cf995cf42cf4607 100644 --- a/test262/es2022_tests.txt +++ b/test262/es2022_tests.txt @@ -2602,4 +2602,254 @@ language/statements/class/cpn-class-decl-fields-methods-computed-property-name-f language/statements/class/cpn-class-decl-fields-methods-computed-property-name-from-assignment-expression-logical-and.js language/statements/class/cpn-class-decl-fields-methods-computed-property-name-from-identifier.js language/statements/class/cpn-class-decl-fields-methods-computed-property-name-from-function-expression.js -language/module-code/privatename-not-valid-earlyerr-module-3.js \ No newline at end of file +language/module-code/privatename-not-valid-earlyerr-module-3.js +language/module-code/top-level-await/syntax/block-await-expr-array-literal.js +language/module-code/top-level-await/syntax/block-await-expr-func-expression.js +language/module-code/top-level-await/syntax/block-await-expr-identifier.js +language/module-code/top-level-await/syntax/block-await-expr-literal-number.js +language/module-code/top-level-await/syntax/block-await-expr-literal-string.js +language/module-code/top-level-await/syntax/block-await-expr-nested.js +language/module-code/top-level-await/syntax/block-await-expr-new-expr.js +language/module-code/top-level-await/syntax/block-await-expr-null.js +language/module-code/top-level-await/syntax/block-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/block-await-expr-regexp.js +language/module-code/top-level-await/syntax/block-await-expr-template-literal.js +language/module-code/top-level-await/syntax/block-await-expr-this.js +language/module-code/top-level-await/syntax/catch-parameter.js +language/module-code/top-level-await/syntax/early-does-not-propagate-to-fn-declaration-body.js +language/module-code/top-level-await/syntax/early-does-not-propagate-to-fn-declaration-params.js +language/module-code/top-level-await/syntax/early-does-not-propagate-to-fn-expr-body.js +language/module-code/top-level-await/syntax/early-does-not-propagate-to-fn-expr-params.js +language/module-code/top-level-await/syntax/early-no-escaped-await.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-array-literal.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-func-expression.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-identifier.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-literal-number.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-literal-string.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-nested.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-new-expr.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-null.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-regexp.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-template-literal.js +language/module-code/top-level-await/syntax/export-class-decl-await-expr-this.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-array-literal.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-func-expression.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-identifier.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-literal-number.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-literal-string.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-nested.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-new-expr.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-null.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-regexp.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-template-literal.js +language/module-code/top-level-await/syntax/export-dflt-assign-expr-await-expr-this.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-array-literal.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-func-expression.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-identifier.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-number.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-literal-string.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-nested.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-new-expr.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-null.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-regexp.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-template-literal.js +language/module-code/top-level-await/syntax/export-dft-class-decl-await-expr-this.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-array-literal.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-func-expression.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-identifier.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-literal-number.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-literal-string.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-nested.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-new-expr.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-null.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-regexp.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-template-literal.js +language/module-code/top-level-await/syntax/export-lex-decl-await-expr-this.js +language/module-code/top-level-await/syntax/export-var-await-expr-array-literal.js +language/module-code/top-level-await/syntax/export-var-await-expr-func-expression.js +language/module-code/top-level-await/syntax/export-var-await-expr-identifier.js +language/module-code/top-level-await/syntax/export-var-await-expr-literal-number.js +language/module-code/top-level-await/syntax/export-var-await-expr-literal-string.js +language/module-code/top-level-await/syntax/export-var-await-expr-nested.js +language/module-code/top-level-await/syntax/export-var-await-expr-new-expr.js +language/module-code/top-level-await/syntax/export-var-await-expr-null.js +language/module-code/top-level-await/syntax/export-var-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/export-var-await-expr-regexp.js +language/module-code/top-level-await/syntax/export-var-await-expr-template-literal.js +language/module-code/top-level-await/syntax/export-var-await-expr-this.js +language/module-code/top-level-await/syntax/for-await-await-expr-array-literal.js +language/module-code/top-level-await/syntax/for-await-await-expr-func-expression.js +language/module-code/top-level-await/syntax/for-await-await-expr-identifier.js +language/module-code/top-level-await/syntax/for-await-await-expr-literal-number.js +language/module-code/top-level-await/syntax/for-await-await-expr-literal-string.js +language/module-code/top-level-await/syntax/for-await-await-expr-nested.js +language/module-code/top-level-await/syntax/for-await-await-expr-new-expr.js +language/module-code/top-level-await/syntax/for-await-await-expr-null.js +language/module-code/top-level-await/syntax/for-await-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/for-await-await-expr-regexp.js +language/module-code/top-level-await/syntax/for-await-await-expr-template-literal.js +language/module-code/top-level-await/syntax/for-await-await-expr-this.js +language/module-code/top-level-await/syntax/for-await-expr-array-literal.js +language/module-code/top-level-await/syntax/for-await-expr-func-expression.js +language/module-code/top-level-await/syntax/for-await-expr-identifier.js +language/module-code/top-level-await/syntax/for-await-expr-literal-number.js +language/module-code/top-level-await/syntax/for-await-expr-literal-string.js +language/module-code/top-level-await/syntax/for-await-expr-nested.js +language/module-code/top-level-await/syntax/for-await-expr-new-expr.js +language/module-code/top-level-await/syntax/for-await-expr-null.js +language/module-code/top-level-await/syntax/for-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/for-await-expr-regexp.js +language/module-code/top-level-await/syntax/for-await-expr-template-literal.js +language/module-code/top-level-await/syntax/for-await-expr-this.js +language/module-code/top-level-await/syntax/for-in-await-expr-array-literal.js +language/module-code/top-level-await/syntax/for-in-await-expr-func-expression.js +language/module-code/top-level-await/syntax/for-in-await-expr-identifier.js +language/module-code/top-level-await/syntax/for-in-await-expr-literal-number.js +language/module-code/top-level-await/syntax/for-in-await-expr-literal-string.js +language/module-code/top-level-await/syntax/for-in-await-expr-nested.js +language/module-code/top-level-await/syntax/for-in-await-expr-new-expr.js +language/module-code/top-level-await/syntax/for-in-await-expr-null.js +language/module-code/top-level-await/syntax/for-in-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/for-in-await-expr-regexp.js +language/module-code/top-level-await/syntax/for-in-await-expr-template-literal.js +language/module-code/top-level-await/syntax/for-in-await-expr-this.js +language/module-code/top-level-await/syntax/for-of-await-expr-array-literal.js +language/module-code/top-level-await/syntax/for-of-await-expr-func-expression.js +language/module-code/top-level-await/syntax/for-of-await-expr-identifier.js +language/module-code/top-level-await/syntax/for-of-await-expr-literal-number.js +language/module-code/top-level-await/syntax/for-of-await-expr-literal-string.js +language/module-code/top-level-await/syntax/for-of-await-expr-nested.js +language/module-code/top-level-await/syntax/for-of-await-expr-new-expr.js +language/module-code/top-level-await/syntax/for-of-await-expr-null.js +language/module-code/top-level-await/syntax/for-of-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/for-of-await-expr-regexp.js +language/module-code/top-level-await/syntax/for-of-await-expr-template-literal.js +language/module-code/top-level-await/syntax/for-of-await-expr-this.js +language/module-code/top-level-await/syntax/if-block-await-expr-array-literal.js +language/module-code/top-level-await/syntax/if-block-await-expr-func-expression.js +language/module-code/top-level-await/syntax/if-block-await-expr-identifier.js +language/module-code/top-level-await/syntax/if-block-await-expr-literal-number.js +language/module-code/top-level-await/syntax/if-block-await-expr-literal-string.js +language/module-code/top-level-await/syntax/if-block-await-expr-nested.js +language/module-code/top-level-await/syntax/if-block-await-expr-new-expr.js +language/module-code/top-level-await/syntax/if-block-await-expr-null.js +language/module-code/top-level-await/syntax/if-block-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/if-block-await-expr-regexp.js +language/module-code/top-level-await/syntax/if-block-await-expr-template-literal.js +language/module-code/top-level-await/syntax/if-block-await-expr-this.js +language/module-code/top-level-await/syntax/if-expr-await-expr-array-literal.js +language/module-code/top-level-await/syntax/if-expr-await-expr-func-expression.js +language/module-code/top-level-await/syntax/if-expr-await-expr-identifier.js +language/module-code/top-level-await/syntax/if-expr-await-expr-literal-number.js +language/module-code/top-level-await/syntax/if-expr-await-expr-literal-string.js +language/module-code/top-level-await/syntax/if-expr-await-expr-nested.js +language/module-code/top-level-await/syntax/if-expr-await-expr-new-expr.js +language/module-code/top-level-await/syntax/if-expr-await-expr-null.js +language/module-code/top-level-await/syntax/if-expr-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/if-expr-await-expr-regexp.js +language/module-code/top-level-await/syntax/if-expr-await-expr-template-literal.js +language/module-code/top-level-await/syntax/if-expr-await-expr-this.js +language/module-code/top-level-await/syntax/top-level-await-expr-array-literal.js +language/module-code/top-level-await/syntax/top-level-await-expr-func-expression.js +language/module-code/top-level-await/syntax/top-level-await-expr-identifier.js +language/module-code/top-level-await/syntax/top-level-await-expr-literal-number.js +language/module-code/top-level-await/syntax/top-level-await-expr-literal-string.js +language/module-code/top-level-await/syntax/top-level-await-expr-nested.js +language/module-code/top-level-await/syntax/top-level-await-expr-new-expr.js +language/module-code/top-level-await/syntax/top-level-await-expr-null.js +language/module-code/top-level-await/syntax/top-level-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/top-level-await-expr-regexp.js +language/module-code/top-level-await/syntax/top-level-await-expr-template-literal.js +language/module-code/top-level-await/syntax/top-level-await-expr-this.js +language/module-code/top-level-await/syntax/try-await-expr-array-literal.js +language/module-code/top-level-await/syntax/try-await-expr-func-expression.js +language/module-code/top-level-await/syntax/try-await-expr-identifier.js +language/module-code/top-level-await/syntax/try-await-expr-literal-number.js +language/module-code/top-level-await/syntax/try-await-expr-literal-string.js +language/module-code/top-level-await/syntax/try-await-expr-nested.js +language/module-code/top-level-await/syntax/try-await-expr-new-expr.js +language/module-code/top-level-await/syntax/try-await-expr-null.js +language/module-code/top-level-await/syntax/try-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/try-await-expr-regexp.js +language/module-code/top-level-await/syntax/try-await-expr-template-literal.js +language/module-code/top-level-await/syntax/try-await-expr-this.js +language/module-code/top-level-await/syntax/typeof-await-expr-array-literal.js +language/module-code/top-level-await/syntax/typeof-await-expr-func-expression.js +language/module-code/top-level-await/syntax/typeof-await-expr-identifier.js +language/module-code/top-level-await/syntax/typeof-await-expr-literal-number.js +language/module-code/top-level-await/syntax/typeof-await-expr-literal-string.js +language/module-code/top-level-await/syntax/typeof-await-expr-nested.js +language/module-code/top-level-await/syntax/typeof-await-expr-new-expr.js +language/module-code/top-level-await/syntax/typeof-await-expr-null.js +language/module-code/top-level-await/syntax/typeof-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/typeof-await-expr-regexp.js +language/module-code/top-level-await/syntax/typeof-await-expr-template-literal.js +language/module-code/top-level-await/syntax/typeof-await-expr-this.js +language/module-code/top-level-await/syntax/void-await-expr-array-literal.js +language/module-code/top-level-await/syntax/void-await-expr-func-expression.js +language/module-code/top-level-await/syntax/void-await-expr-identifier.js +language/module-code/top-level-await/syntax/void-await-expr-literal-number.js +language/module-code/top-level-await/syntax/void-await-expr-literal-string.js +language/module-code/top-level-await/syntax/void-await-expr-nested.js +language/module-code/top-level-await/syntax/void-await-expr-new-expr.js +language/module-code/top-level-await/syntax/void-await-expr-null.js +language/module-code/top-level-await/syntax/void-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/void-await-expr-regexp.js +language/module-code/top-level-await/syntax/void-await-expr-template-literal.js +language/module-code/top-level-await/syntax/void-await-expr-this.js +language/module-code/top-level-await/syntax/while-await-expr-array-literal.js +language/module-code/top-level-await/syntax/while-await-expr-func-expression.js +language/module-code/top-level-await/syntax/while-await-expr-identifier.js +language/module-code/top-level-await/syntax/while-await-expr-literal-number.js +language/module-code/top-level-await/syntax/while-await-expr-literal-string.js +language/module-code/top-level-await/syntax/while-await-expr-nested.js +language/module-code/top-level-await/syntax/while-await-expr-new-expr.js +language/module-code/top-level-await/syntax/while-await-expr-null.js +language/module-code/top-level-await/syntax/while-await-expr-obj-literal.js +language/module-code/top-level-await/syntax/while-await-expr-regexp.js +language/module-code/top-level-await/syntax/while-await-expr-template-literal.js +language/module-code/top-level-await/syntax/while-await-expr-this.js +language/module-code/top-level-await/await-awaits-thenable-not-callable.js +language/module-code/top-level-await/await-awaits-thenables.js +language/module-code/top-level-await/await-awaits-thenables-that-throw.js +language/module-code/top-level-await/await-dynamic-import-rejection.js +language/module-code/top-level-await/await-dynamic-import-resolution.js +language/module-code/top-level-await/await-expr-func-expression.js +language/module-code/top-level-await/await-expr-new-expr.js +language/module-code/top-level-await/await-expr-new-expr-reject.js +language/module-code/top-level-await/await-expr-regexp.js +language/module-code/top-level-await/await-expr-reject-throws.js +language/module-code/top-level-await/await-expr-resolution.js +language/module-code/top-level-await/await-void-expr.js +language/module-code/top-level-await/dfs-invariant-async_FIXTURE.js +language/module-code/top-level-await/dfs-invariant-direct-1_FIXTURE.js +language/module-code/top-level-await/dfs-invariant-direct-2_FIXTURE.js +language/module-code/top-level-await/dfs-invariant-indirect_FIXTURE.js +language/module-code/top-level-await/dfs-invariant.js +language/module-code/top-level-await/dynamic-import-resolution.js +language/module-code/top-level-await/early-errors-await-not-simple-assignment-target.js +language/module-code/top-level-await/if-await-expr.js +language/module-code/top-level-await/module-async-import-async-resolution-ticks.js +language/module-code/top-level-await/module-import-rejection-body_FIXTURE.js +language/module-code/top-level-await/module-import-rejection-body.js +language/module-code/top-level-await/module-import-rejection_FIXTURE.js +language/module-code/top-level-await/module-import-rejection.js +language/module-code/top-level-await/module-import-rejection-tick_FIXTURE.js +language/module-code/top-level-await/module-import-rejection-tick.js +language/module-code/top-level-await/module-import-resolution_FIXTURE.js +language/module-code/top-level-await/module-import-resolution.js +language/module-code/top-level-await/module-import-unwrapped_FIXTURE.js +language/module-code/top-level-await/module-import-unwrapped.js +language/module-code/top-level-await/module-self-import-async-resolution-ticks.js +language/module-code/top-level-await/module-sync-import-async-resolution-ticks.js +language/module-code/top-level-await/new-await.js +language/module-code/top-level-await/new-await-parens.js +language/module-code/top-level-await/no-operand.js +language/module-code/top-level-await/top-level-ticks-2.js +language/module-code/top-level-await/top-level-ticks.js +language/module-code/top-level-await/void-await-expr.js +language/module-code/top-level-await/while-dynamic-evaluation.js diff --git a/test262/module_tests.txt b/test262/module_tests.txt index fc9cd67a5140f6450281e53d6af1bbc745fe5700..5cf2e255adad217149f641f9cc9598151666ce0b 100644 --- a/test262/module_tests.txt +++ b/test262/module_tests.txt @@ -428,4 +428,257 @@ own-property-keys-sort.js prevent-extensions.js set.js set-prototype-of.js -set-prototype-of-null.js \ No newline at end of file +set-prototype-of-null.js +await-awaits-thenable-not-callable.js +await-awaits-thenables.js +await-awaits-thenables-that-throw.js +await-dynamic-import-rejection.js +await-dynamic-import-resolution.js +await-expr-func-expression.js +await-expr-new-expr.js +await-expr-new-expr-reject.js +await-expr-regexp.js +await-expr-reject-throws.js +await-expr-resolution.js +await-void-expr.js +dfs-invariant-async_FIXTURE.js +dfs-invariant-direct-1_FIXTURE.js +dfs-invariant-direct-2_FIXTURE.js +dfs-invariant-indirect_FIXTURE.js +dfs-invariant.js +dynamic-import-rejection.js +dynamic-import-resolution.js +early-errors-await-not-simple-assignment-target.js +if-await-expr.js +module-async-import-async-resolution-ticks.js +module-import-rejection-body_FIXTURE.js +module-import-rejection-body.js +module-import-rejection_FIXTURE.js +module-import-rejection.js +module-import-rejection-tick_FIXTURE.js +module-import-rejection-tick.js +module-import-resolution_FIXTURE.js +module-import-resolution.js +module-import-unwrapped_FIXTURE.js +module-import-unwrapped.js +module-self-import-async-resolution-ticks.js +module-sync-import-async-resolution-ticks.js +new-await.js +new-await-parens.js +new-await-script-code.js +no-operand.js +top-level-ticks-2.js +top-level-ticks.js +void-await-expr.js +while-dynamic-evaluation.js +await-expr-dyn-import.js +block-await-expr-array-literal.js +block-await-expr-func-expression.js +block-await-expr-identifier.js +block-await-expr-literal-number.js +block-await-expr-literal-string.js +block-await-expr-nested.js +block-await-expr-new-expr.js +block-await-expr-null.js +block-await-expr-obj-literal.js +block-await-expr-regexp.js +block-await-expr-template-literal.js +block-await-expr-this.js +catch-parameter.js +early-does-not-propagate-to-fn-declaration-body.js +early-does-not-propagate-to-fn-declaration-params.js +early-does-not-propagate-to-fn-expr-body.js +early-does-not-propagate-to-fn-expr-params.js +early-no-escaped-await.js +export-class-decl-await-expr-array-literal.js +export-class-decl-await-expr-func-expression.js +export-class-decl-await-expr-identifier.js +export-class-decl-await-expr-literal-number.js +export-class-decl-await-expr-literal-string.js +export-class-decl-await-expr-nested.js +export-class-decl-await-expr-new-expr.js +export-class-decl-await-expr-null.js +export-class-decl-await-expr-obj-literal.js +export-class-decl-await-expr-regexp.js +export-class-decl-await-expr-template-literal.js +export-class-decl-await-expr-this.js +export-dflt-assign-expr-await-expr-array-literal.js +export-dflt-assign-expr-await-expr-func-expression.js +export-dflt-assign-expr-await-expr-identifier.js +export-dflt-assign-expr-await-expr-literal-number.js +export-dflt-assign-expr-await-expr-literal-string.js +export-dflt-assign-expr-await-expr-nested.js +export-dflt-assign-expr-await-expr-new-expr.js +export-dflt-assign-expr-await-expr-null.js +export-dflt-assign-expr-await-expr-obj-literal.js +export-dflt-assign-expr-await-expr-regexp.js +export-dflt-assign-expr-await-expr-template-literal.js +export-dflt-assign-expr-await-expr-this.js +export-dft-class-decl-await-expr-array-literal.js +export-dft-class-decl-await-expr-func-expression.js +export-dft-class-decl-await-expr-identifier.js +export-dft-class-decl-await-expr-literal-number.js +export-dft-class-decl-await-expr-literal-string.js +export-dft-class-decl-await-expr-nested.js +export-dft-class-decl-await-expr-new-expr.js +export-dft-class-decl-await-expr-null.js +export-dft-class-decl-await-expr-obj-literal.js +export-dft-class-decl-await-expr-regexp.js +export-dft-class-decl-await-expr-template-literal.js +export-dft-class-decl-await-expr-this.js +export-lex-decl-await-expr-array-literal.js +export-lex-decl-await-expr-func-expression.js +export-lex-decl-await-expr-identifier.js +export-lex-decl-await-expr-literal-number.js +export-lex-decl-await-expr-literal-string.js +export-lex-decl-await-expr-nested.js +export-lex-decl-await-expr-new-expr.js +export-lex-decl-await-expr-null.js +export-lex-decl-await-expr-obj-literal.js +export-lex-decl-await-expr-regexp.js +export-lex-decl-await-expr-template-literal.js +export-lex-decl-await-expr-this.js +export-var-await-expr-array-literal.js +export-var-await-expr-func-expression.js +export-var-await-expr-identifier.js +export-var-await-expr-literal-number.js +export-var-await-expr-literal-string.js +export-var-await-expr-nested.js +export-var-await-expr-new-expr.js +export-var-await-expr-null.js +export-var-await-expr-obj-literal.js +export-var-await-expr-regexp.js +export-var-await-expr-template-literal.js +export-var-await-expr-this.js +for-await-await-expr-array-literal.js +for-await-await-expr-func-expression.js +for-await-await-expr-identifier.js +for-await-await-expr-literal-number.js +for-await-await-expr-literal-string.js +for-await-await-expr-nested.js +for-await-await-expr-new-expr.js +for-await-await-expr-null.js +for-await-await-expr-obj-literal.js +for-await-await-expr-regexp.js +for-await-await-expr-template-literal.js +for-await-await-expr-this.js +for-await-expr-array-literal.js +for-await-expr-func-expression.js +for-await-expr-identifier.js +for-await-expr-literal-number.js +for-await-expr-literal-string.js +for-await-expr-nested.js +for-await-expr-new-expr.js +for-await-expr-null.js +for-await-expr-obj-literal.js +for-await-expr-regexp.js +for-await-expr-template-literal.js +for-await-expr-this.js +for-in-await-expr-array-literal.js +for-in-await-expr-func-expression.js +for-in-await-expr-identifier.js +for-in-await-expr-literal-number.js +for-in-await-expr-literal-string.js +for-in-await-expr-nested.js +for-in-await-expr-new-expr.js +for-in-await-expr-null.js +for-in-await-expr-obj-literal.js +for-in-await-expr-regexp.js +for-in-await-expr-template-literal.js +for-in-await-expr-this.js +for-of-await-expr-array-literal.js +for-of-await-expr-func-expression.js +for-of-await-expr-identifier.js +for-of-await-expr-literal-number.js +for-of-await-expr-literal-string.js +for-of-await-expr-nested.js +for-of-await-expr-new-expr.js +for-of-await-expr-null.js +for-of-await-expr-obj-literal.js +for-of-await-expr-regexp.js +for-of-await-expr-template-literal.js +for-of-await-expr-this.js +if-block-await-expr-array-literal.js +if-block-await-expr-func-expression.js +if-block-await-expr-identifier.js +if-block-await-expr-literal-number.js +if-block-await-expr-literal-string.js +if-block-await-expr-nested.js +if-block-await-expr-new-expr.js +if-block-await-expr-null.js +if-block-await-expr-obj-literal.js +if-block-await-expr-regexp.js +if-block-await-expr-template-literal.js +if-block-await-expr-this.js +if-expr-await-expr-array-literal.js +if-expr-await-expr-func-expression.js +if-expr-await-expr-identifier.js +if-expr-await-expr-literal-number.js +if-expr-await-expr-literal-string.js +if-expr-await-expr-nested.js +if-expr-await-expr-new-expr.js +if-expr-await-expr-null.js +if-expr-await-expr-obj-literal.js +if-expr-await-expr-regexp.js +if-expr-await-expr-template-literal.js +if-expr-await-expr-this.js +top-level-await-expr-array-literal.js +top-level-await-expr-func-expression.js +top-level-await-expr-identifier.js +top-level-await-expr-literal-number.js +top-level-await-expr-literal-string.js +top-level-await-expr-nested.js +top-level-await-expr-new-expr.js +top-level-await-expr-null.js +top-level-await-expr-obj-literal.js +top-level-await-expr-regexp.js +top-level-await-expr-template-literal.js +top-level-await-expr-this.js +try-await-expr-array-literal.js +try-await-expr-func-expression.js +try-await-expr-identifier.js +try-await-expr-literal-number.js +try-await-expr-literal-string.js +try-await-expr-nested.js +try-await-expr-new-expr.js +try-await-expr-null.js +try-await-expr-obj-literal.js +try-await-expr-regexp.js +try-await-expr-template-literal.js +try-await-expr-this.js +typeof-await-expr-array-literal.js +typeof-await-expr-func-expression.js +typeof-await-expr-identifier.js +typeof-await-expr-literal-number.js +typeof-await-expr-literal-string.js +typeof-await-expr-nested.js +typeof-await-expr-new-expr.js +typeof-await-expr-null.js +typeof-await-expr-obj-literal.js +typeof-await-expr-regexp.js +typeof-await-expr-template-literal.js +typeof-await-expr-this.js +void-await-expr-array-literal.js +void-await-expr-func-expression.js +void-await-expr-identifier.js +void-await-expr-literal-number.js +void-await-expr-literal-string.js +void-await-expr-nested.js +void-await-expr-new-expr.js +void-await-expr-null.js +void-await-expr-obj-literal.js +void-await-expr-regexp.js +void-await-expr-template-literal.js +void-await-expr-this.js +while-await-expr-array-literal.js +while-await-expr-func-expression.js +while-await-expr-identifier.js +while-await-expr-literal-number.js +while-await-expr-literal-string.js +while-await-expr-nested.js +while-await-expr-new-expr.js +while-await-expr-null.js +while-await-expr-obj-literal.js +while-await-expr-regexp.js +while-await-expr-template-literal.js +while-await-expr-this.js