diff --git a/.gitee/PULL_REQUEST_TEMPLATE.en.md b/.gitee/PULL_REQUEST_TEMPLATE.en.md index 3758df1abdb54e82dfd81d2da9e2c947c11e61aa..e8d76c6d8cb96f0ee66ae881797496b1eca37111 100644 --- a/.gitee/PULL_REQUEST_TEMPLATE.en.md +++ b/.gitee/PULL_REQUEST_TEMPLATE.en.md @@ -12,3 +12,77 @@ _Please add detailed description_ ninja all tests ``` **All required pre-merge tests passed. Results are available in the internal CI.** + +#### Functional Testing (Mandatory unless the change only involves text) [wiki](https://gitee.com/openharmony/arkcompiler_ets_frontend/wikis/%E4%BB%A3%E7%A0%81%E6%8F%90%E4%BA%A4%E8%A6%81%E6%B1%82%E5%8F%8A%E6%B5%8B%E8%AF%95%E9%AA%8C%E8%AF%81%E6%B5%81%E7%A8%8B) +1. es2abc Test Cases (Debug Mode) +- [ ] Passed +- [ ] Not applicable, no need to verify + +2. Verifier Testing +- [ ] Passed +- [ ] Not applicable, no need to verify + +3. 64-bit RK Compilation +- [ ] Passed +- [ ] Not applicable, no need to verify + +4. Compile macOS SDK +- [ ] Passed +- [ ] Not applicable, no need to verify + +#### Obfuscation Testing (Mandatory if ArkGuard-related changes are involved) [wiki](https://gitee.com/openharmony/arkcompiler_ets_frontend/wikis/%E6%B7%B7%E6%B7%86%E6%B5%8B%E8%AF%95%E9%AA%8C%E8%AF%81%E6%B5%81%E7%A8%8B?sort_id=11451209) +1. Unit Tests +- [ ] Passed +- [ ] Not applicable, no need to verify + +2. Compiler Test Suite +- [ ] Passed +- [ ] Not applicable, no need to verify + +3. TSC Extra Test Suite +- [ ] Passed +- [ ] Not applicable, no need to verify + +4. Test262 Test Suite +- [ ] Passed +- [ ] Not applicable, no need to verify + +5. Benchmark Tests +- [ ] Passed +- [ ] Not applicable, no need to verify + +6. Automated Application Test Suite +- [ ] Passed +- [ ] Not applicable, no need to verify + +7. Global Variable Check — Were any global variables created? If so, were they cleared? +- [ ] Global variables created and cleared +- [ ] Global variables created but not cleared +- [ ] No global variables created + +#### Compatibility Testing (for instruction generation or file format changes) +1. Minor Version Compatibility Test +- [ ] Version number added +- [ ] Passed +- [ ] Not applicable, no need to verify + +2. Major Version Compatibility Test +- [ ] Passed +- [ ] Not applicable, no need to verify + +3. es2abc Version Compatibility Test +**Note: If the PR involves changes to version control test cases, you must also check its impact on other branches and confirm whether updates are needed in those branches.** +- [ ] Affected — Changes impact API/bytecode version and need to be synced to other branches +- [ ] Affected — Changes impact API/bytecode version but do not need to be synced to other branches +- [ ] Not affected — Changes do not involve API/bytecode version + +#### Performance Testing (e.g., new syntax checking scenarios) +- [ ] Passed +- [ ] Not applicable, no need to verify + +#### Command/abc format modification self-check, please contact the email below, synchronize to the relevant field +**Important: For modifications involving the abc2program, libpandafile and isa directories in the runtime_core repository, you must provide a compiled hap package for the helloworld project to the corresponding domain and contact the email address below.** +- [ ] Involved, already synchronized +- [ ] Not involved + +**Email:** wutao185@huawei.com \ No newline at end of file diff --git a/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md b/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md index 88f741c6186ee818d97a7573724c92e25b60fc81..b2eed2595f19a7622862f5c150adb75e7c1ea992 100644 --- a/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md +++ b/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md @@ -16,47 +16,22 @@ ### 测试结果(测试截图直接贴在对应测试项,主干已知问题需明确引入pr/责任人) -#### 当前GGW中未添加的测试套(请在本地进行验证) -1.Fuzz编译测试 -``` -./build.sh --product-name rk3568 --build-target arkcompiler/runtime_core/tests/fuzztest:fuzztest -``` - -2."runtime_core/libpandabase/tests:host_unittest" -release模式: -``` -./build.sh --product-name rk3568 --build-target runtime_core_host_unittest -``` -debug模式: -``` -./build.sh --product-name rk3568 --build-target runtime_core_host_unittest --gn-args is_debug=true -``` - #### 功能测试(除仅涉及文本外必测项)[wiki](https://gitee.com/openharmony/arkcompiler_ets_frontend/wikis/%E4%BB%A3%E7%A0%81%E6%8F%90%E4%BA%A4%E8%A6%81%E6%B1%82%E5%8F%8A%E6%B5%8B%E8%AF%95%E9%AA%8C%E8%AF%81%E6%B5%81%E7%A8%8B) -1. test262测试 - - [ ] 已通过 - - [ ] 不涉及,无需验证 - -2. ut测试 - - [ ] 已通过 - - [ ] 不涉及,无需验证 - -3. verifier测试 - - [ ] 已通过 - - [ ] 不涉及,无需验证 +1. es2abc测试用例(Debug模式) +- [ ] 已通过 +- [ ] 不涉及,无需验证 -#### 独立编译测试(涉及BUILD.gn改动时必测项)[wiki](https://gitee.com/ark_standalone_build/docs#arkcompiler%E5%BC%80%E5%8F%91%E6%8C%87%E5%AF%BC) -1. test262 release - - [ ] 已通过 - - [ ] 不涉及,无需验证 +2. Verifier测试 +- [ ] 已通过 +- [ ] 不涉及,无需验证 -2. ut release - - [ ] 已通过 - - [ ] 不涉及,无需验证 +3. 64位RK编译 +- [ ] 已通过 +- [ ] 不涉及,无需验证 -3. ut debug - - [ ] 已通过 - - [ ] 不涉及,无需验证 +4. 编译mac平台sdk +- [ ] 已通过 +- [ ] 不涉及,无需验证 #### 混淆测试(涉及arkguard改动时必测项)[wiki](https://gitee.com/openharmony/arkcompiler_ets_frontend/wikis/%E6%B7%B7%E6%B7%86%E6%B5%8B%E8%AF%95%E9%AA%8C%E8%AF%81%E6%B5%81%E7%A8%8B?sort_id=11451209) 1. 单元测试 @@ -98,6 +73,12 @@ debug模式: - [ ] 已通过 - [ ] 不涉及,无需验证 +3. es2abc版本兼容性测试 +**说明:如PR涉及版本控制用例的变更,需同步检查修改对其他分支的影响,并确认是否要同步受影响的分支** + - [ ] 涉及,变更影响 API/字节码 版本, 需同步修改到其他分支 + - [ ] 涉及,变更影响 API/字节码 版本, 无需同步到其他分支 + - [ ] 不涉及,变更不涉及 API/字节码 版本 + #### 性能测试 (新增语法检查等场景) - [ ] 已通过 - [ ] 不涉及,无需验证 @@ -107,9 +88,8 @@ debug模式: - [ ] 涉及,已同步 - [ ] 不涉及 -**Email:** chenqiuyao@huawei.com +**Email:** wutao185@huawei.com ### 是否已执行L0用例 - [ ] 已验证 - [ ] 不涉及。如不涉及,请写明理由 - diff --git a/arkguard/src/ArkObfuscator.ts b/arkguard/src/ArkObfuscator.ts index 708aa9ce8911252876380236e3bea0e33f4e6ef9..2e4795e2cafe4109f447561417b9024d4da300e5 100644 --- a/arkguard/src/ArkObfuscator.ts +++ b/arkguard/src/ArkObfuscator.ts @@ -35,7 +35,13 @@ import type { import path from 'path'; -import { AtKeepCollections, LocalVariableCollections, PropCollections } from './utils/CommonCollections'; +import { + AtIntentCollections, + AtKeepCollections, + BytecodeObfuscationCollections, + LocalVariableCollections, + PropCollections +} from './utils/CommonCollections'; import type { IOptions } from './configs/IOptions'; import { FileUtils } from './utils/FileUtils'; import { TransformerManager } from './transformers/TransformerManager'; @@ -74,6 +80,7 @@ import { EventList, TimeAndMemTimeTracker, clearTimeAndMemPrinterData, + disablePrinterTimeAndMemConfig, initPerformanceTimeAndMemPrinter, } from './utils/PrinterTimeAndMemUtils'; @@ -89,9 +96,11 @@ export { } from './utils/PrinterUtils'; export { EventList, + PerfMode, TimeAndMemTimeTracker, - enableTimeAndMemoryPrint, blockTimeAndMemPrinter, + configurePerformancePrinter, + enableTimeAndMemoryPrint, } from './utils/PrinterTimeAndMemUtils'; import { Extension, type ProjectInfo, type FilePathObj } from './common/type'; export { type HvigorErrorInfo } from './common/type'; @@ -111,7 +120,7 @@ export { separateUniversalReservedItem, containWildcards, wildcardTransformer } export type { ReservedNameInfo } from './utils/TransformUtil'; export type { ReseverdSetForArkguard } from './common/ApiReader'; -export { initObfuscationConfig, initPrinterTimeAndMemConfig, printerTimeAndMemConfig, printerTimeAndMemDataConfig } from './initialization/Initializer'; +export { initObfuscationConfig, printerTimeAndMemDataConfig } from './initialization/Initializer'; export { nameCacheMap, unobfuscationNamesObj } from './initialization/CommonObject'; export { collectResevedFileNameInIDEConfig, // For running unit test. @@ -166,12 +175,15 @@ export function clearGlobalCaches(): void { UnobfuscationCollections.clear(); LocalVariableCollections.clear(); AtKeepCollections.clear(); + AtIntentCollections.clear(); renameFileNameModule.clearCaches(); clearUnobfuscationNamesObj(); clearHistoryUnobfuscatedMap(); clearTimeAndMemPrinterData(); + disablePrinterTimeAndMemConfig(); ApiExtractor.mConstructorPropertySet.clear(); ApiExtractor.mEnumMemberSet.clear(); + BytecodeObfuscationCollections.clear(); } export type ObfuscationResultType = { @@ -195,7 +207,7 @@ export class ArkObfuscator { // A text writer of Printer private mTextWriter: EmitTextWriter; - // Compiler Options for typescript,use to parse ast + // Compiler Options for typescript, use to parse ast private readonly mCompilerOptions: CompilerOptions; // User custom obfuscation profiles. @@ -348,6 +360,10 @@ export class ArkObfuscator { this.mCompilerOptions.sourceMap = true; } + if (this.mCustomProfiles.mAllowEtsAnnotations) { + this.mCompilerOptions.etsAnnotationsEnable = true; + } + const enableTopLevel: boolean = this.mCustomProfiles.mNameObfuscation?.mTopLevel; const exportObfuscation: boolean = this.mCustomProfiles.mExportObfuscation; const propertyObfuscation: boolean = this.mCustomProfiles.mNameObfuscation?.mRenameProperties; @@ -360,9 +376,8 @@ export class ArkObfuscator { this.mTransformers = new TransformerManager(this.mCustomProfiles).getTransformers(); initPerformancePrinter(this.mCustomProfiles); - - initPerformanceTimeAndMemPrinter(this.mCustomProfiles); + initPerformanceTimeAndMemPrinter(); if (needReadApiInfo(this.mCustomProfiles)) { // if -enable-property-obfuscation or -enable-export-obfuscation, collect language reserved keywords. let languageSet: Set = new Set(); @@ -454,27 +469,44 @@ export class ArkObfuscator { updatedCache[newKey] = value; continue; } + + const parts = scopeName.split('#'); + // 1: Get the last word 'zz' in '#xx#yy#zz'. + const lastScopeName: string = parts[parts.length - 1]; + const startPosition: SourceMapSegmentObj | null = sourceMapLink.traceSegment( // 1: The line number in originalCache starts from 1 while in source map starts from 0. Number(oldStartLine) - 1, Number(oldStartColumn) - 1, ''); // Minus 1 to get the correct original position. - if (!startPosition) { - // Do not save methods that do not exist in the source code, e.g. 'build' in ArkUI. + if (!startPosition && lastScopeName === value) { + // Do not save methods that do not exist in the source code and not be obfuscated, e.g. 'build' in ArkUI. continue; } const endPosition: SourceMapSegmentObj | null = sourceMapLink.traceSegment( Number(oldEndLine) - 1, Number(oldEndColumn) - 1, ''); // 1: Same as above. - if (!endPosition) { - // Do not save methods that do not exist in the source code, e.g. 'build' in ArkUI. + if (!endPosition && lastScopeName === value) { + // Do not save methods that do not exist in the source code and not be obfuscated, e.g. 'build' in ArkUI. continue; } - const startLine = startPosition.line + 1; // 1: The final line number in updatedCache should starts from 1. - const endLine = endPosition.line + 1; // 1: Same as above. - newKey = `${scopeName}:${startLine}:${endLine}`; - updatedCache[newKey] = value; + + if (!startPosition || !endPosition) { + updatedCache[scopeName] = value; + } else { + const startLine = startPosition.line + 1; // 1: The final line number in updatedCache should starts from 1. + const endLine = endPosition.line + 1; // 1: Same as above. + newKey = `${scopeName}:${startLine}:${endLine}`; + updatedCache[newKey] = value; + } } return updatedCache; } + public convertLineBasedOnSourceMapForTest( + targetCache: string, + sourceMapLink?: SourceMapLink + ): Map { + return this.convertLineBasedOnSourceMap(targetCache, sourceMapLink); + } + /** * Obfuscate ast of a file. * @param content ast or source code of a source file @@ -541,7 +573,7 @@ export class ArkObfuscator { startSingleFileEvent(EventList.CREATE_AST, performancePrinter.timeSumPrinter); let ast: SourceFile; if (typeof content === 'string') { - ast = TypeUtils.createObfSourceFile(sourceFilePath, content); + ast = TypeUtils.createObfSourceFile(sourceFilePath, content, this.mCompilerOptions); } else { ast = content; } diff --git a/arkguard/src/common/ApiExtractor.ts b/arkguard/src/common/ApiExtractor.ts index b6450ea21241063c734459db5816777470391d1c..e286f7d418071481928c6cd0f9e247856189b18d 100644 --- a/arkguard/src/common/ApiExtractor.ts +++ b/arkguard/src/common/ApiExtractor.ts @@ -14,15 +14,20 @@ */ import type { + AnnotationDeclaration, ClassDeclaration, CommentRange, + CompilerOptions, + Decorator, ElementAccessExpression, EnumDeclaration, ExportDeclaration, + Expression, FunctionDeclaration, InterfaceDeclaration, ModifiersArray, ModuleDeclaration, + NamedDeclaration, Node, ParameterDeclaration, PropertyAccessExpression, @@ -37,6 +42,7 @@ import { ClassElement, forEachChild, getLeadingCommentRangesOfNode, + isAnnotationDeclaration, isBinaryExpression, isClassDeclaration, isClassExpression, @@ -76,7 +82,9 @@ import { isParameter, isTypeParameterDeclaration, isIndexedAccessTypeNode, - Extension + Extension, + isCallExpression, + isDecorator } from 'typescript'; import fs from 'fs'; @@ -99,8 +107,13 @@ import { scanProjectConfig } from './ApiReader'; import { enumPropsSet } from '../utils/OhsUtil'; import { FileUtils } from '../utils/FileUtils'; import { supportedParsingExtension } from './type'; -import { addToSet, FileWhiteList, KeepInfo, projectWhiteListManager } from '../utils/ProjectCollections'; -import { AtKeepCollections } from '../utils/CommonCollections'; +import { + addToSet, + DECORATOR_WHITE_LIST, + FileWhiteList, KeepInfo, + projectWhiteListManager +} from '../utils/ProjectCollections'; +import { AtKeepCollections, BytecodeObfuscationCollections, PropCollections } from '../utils/CommonCollections'; import { hasExportModifier } from '../utils/NodeUtils'; export namespace ApiExtractor { @@ -135,7 +148,8 @@ export namespace ApiExtractor { | FunctionDeclaration | ModuleDeclaration | VariableDeclaration - | TypeAliasDeclaration; + | TypeAliasDeclaration + | AnnotationDeclaration; const KEEP_SYMBOL = '//@KeepSymbol'; const KEEP_AS_CONSUMER = '//@KeepAsConsumer'; @@ -143,6 +157,8 @@ export namespace ApiExtractor { let mCurrentExportedPropertySet: Set = new Set(); let mCurrentExportNameSet: Set = new Set(); + let decoratorMap: Map> = new Map>(); + let keepSymbolTemp: KeepInfo = { propertyNames: new Set(), globalNames: new Set(), @@ -688,11 +704,18 @@ export namespace ApiExtractor { projectWhiteListManager?.setCurrentCollector(fileName); - const sourceFile: SourceFile = createSourceFile(fileName, fs.readFileSync(fileName).toString(), ScriptTarget.ES2015, true); + let sourceFile: SourceFile = createSourceFile(fileName, fs.readFileSync(fileName).toString(), ScriptTarget.ES2015, true, undefined, { + etsAnnotationsEnable: true + }, true); mCurrentExportedPropertySet.clear(); collectWhiteListByApiType(sourceFile, apiType, fileName); + // collect field decorated by UI + if (scanProjectConfig.scanDecorator) { + collectAndAddFieldDecorator(sourceFile); + } + // collect names marked with '// @KeepSymbol' or '// @KeepAsConsumer', only support .ts/.ets if (shouldCollectAtKeep(fileName)) { collectAndAddAtKeepNames(sourceFile); @@ -710,6 +733,7 @@ export namespace ApiExtractor { mCurrentExportedPropertySet.forEach(item => mPropertySet.add(item)); mCurrentExportedPropertySet.clear(); exportOriginalNameSet.clear(); + decoratorMap.clear(); }; function shouldCollectAtKeep(fileName: string): boolean { @@ -756,6 +780,59 @@ export namespace ApiExtractor { addToSet(fileWhiteLists.fileKeepInfo.keepAsConsumer.globalNames, keepAsConsumerTemp.globalNames); addToSet(fileWhiteLists.fileKeepInfo.keepAsConsumer.propertyNames, keepAsConsumerTemp.propertyNames); } + if (scanProjectConfig.scanDecorator) { + const convertedMap = new Map( + Array.from(decoratorMap.entries()).map(([key, value]) => [key, Array.from(value)])); + if (!fileWhiteLists.bytecodeObfuscateKeepInfo) { + fileWhiteLists.bytecodeObfuscateKeepInfo = {}; + } + fileWhiteLists.bytecodeObfuscateKeepInfo.decoratorMap = Object.fromEntries(convertedMap); + const allProp = Array.from(convertedMap.values()).flat(); + allProp.forEach(value => BytecodeObfuscationCollections.decoratorProp.add(value)); + } + } + + function collectAndAddFieldDecorator(sourceFile: SourceFile): void { + visitDecorator(sourceFile); + } + + function getDecorators(node: Node): Decorator[] { + const decorators: Decorator[] = []; + forEachChild(node, child => { + if (isDecorator(child)) { + decorators.push(child); + } + }); + return decorators; + } + + function visitDecorator(node: Node): void { + const decorators = getDecorators(node) || []; + const propertyName = (node as NamedDeclaration).name?.getText(); + if (!propertyName) { + forEachChild(node, visitDecorator); + return; + } + + decorators.forEach(decorator => { + const expr = decorator.expression; + const decoratorName = getDecoratorName(expr); + if (!decoratorName || !isWhiteListedDecorator(decoratorName)) { + return; + } + ensureEntry(decoratorMap, decoratorName, () => new Set()); + const decoratorSet = decoratorMap.get(decoratorName)!; + + if (isCallExpression(expr)) { + expr.arguments.forEach(arg => { + const stripped = arg.getText().replace(/^['"]|['"]$/g, '').split('.'); + stripped.forEach(item => decoratorSet.add(item)); + }); + } + decoratorSet.add(propertyName); + + }); + forEachChild(node, visitDecorator); } function collectWhiteListByApiType(sourceFile: SourceFile, apiType: ApiType, fileName: string): void { @@ -1125,6 +1202,9 @@ export namespace ApiExtractor { case SyntaxKind.ModuleDeclaration: collectModuleDeclaration(node as ModuleDeclaration, sourceFile); break; + case SyntaxKind.AnnotationDeclaration: + collectAnnotationDeclaration(node as AnnotationDeclaration, sourceFile); + break; } forEachChild(node, child => collectNamesWithAtKeep(child, sourceFile)); } @@ -1361,6 +1441,13 @@ export namespace ApiExtractor { } } + function collectAnnotationDeclaration(node: AnnotationDeclaration, sourceFile: SourceFile): void { + const atKeepType: AtKeepType = getAtKeepType(node, sourceFile); + const isToplevel: boolean = isSourceFile(node.parent); + const isExported: boolean = hasExportModifier(node); + collectToplevelOrExportedNames(node, isToplevel, isExported, atKeepType); + } + function getAtKeepType(node: Node, sourceFile: SourceFile): AtKeepType { const ranges: CommentRange[] | undefined = getLeadingCommentRangesOfNode(node, sourceFile); let atKeepType: AtKeepType = AtKeepType.None; @@ -1414,4 +1501,24 @@ export namespace ApiExtractor { collector.globalNames.add(name); } } -} + + function ensureEntry(map: Map, key: K, createValue: () => V): void { + if (!map.has(key)) { + map.set(key, createValue()); + } + } + + function isWhiteListedDecorator(name: string): boolean { + return DECORATOR_WHITE_LIST.includes(name); + } + + function getDecoratorName(expr: Expression): string | undefined { + if (isCallExpression(expr)) { + return expr.expression.getText(); + } + if (isIdentifier(expr)) { + return expr.text; + } + return undefined; + } +} \ No newline at end of file diff --git a/arkguard/src/common/ApiReader.ts b/arkguard/src/common/ApiReader.ts index aecec4c60026d8889e52d7c96644b0de3d6ac4a2..0504003668884fbe480ef5a4a2545b3b0edcb7e9 100644 --- a/arkguard/src/common/ApiReader.ts +++ b/arkguard/src/common/ApiReader.ts @@ -28,7 +28,8 @@ export interface ScanProjectConfig { mkeepFilesAndDependencies?: Set, isHarCompiled?: boolean, mStripSystemApiArgs?: boolean, - mEnableAtKeep: boolean + mEnableAtKeep: boolean, + scanDecorator?: boolean; } // Settings for collect white lists. @@ -71,13 +72,18 @@ export function isEnabledPropertyObfuscation(customProfiles: IOptions): boolean customProfiles.mNameObfuscation.mRenameProperties); } -function initScanProjectConfig(customProfiles: IOptions, isHarCompiled?: boolean): void { +export function initScanProjectConfig( + customProfiles: IOptions, + isHarCompiled?: boolean, + scanDecorator: boolean = false +): void { scanProjectConfig.mPropertyObfuscation = customProfiles.mNameObfuscation?.mRenameProperties; scanProjectConfig.mKeepStringProperty = customProfiles.mNameObfuscation?.mKeepStringProperty; scanProjectConfig.mExportObfuscation = customProfiles.mExportObfuscation; scanProjectConfig.mkeepFilesAndDependencies = customProfiles.mKeepFileSourceCode?.mkeepFilesAndDependencies; scanProjectConfig.isHarCompiled = isHarCompiled; scanProjectConfig.mEnableAtKeep = customProfiles.mNameObfuscation?.mEnableAtKeep; + scanProjectConfig.scanDecorator = scanDecorator; } /** @@ -109,7 +115,7 @@ export interface ReseverdSetForArkguard { * @param customProfiles */ export function readProjectPropertiesByCollectedPaths(filesForCompilation: Set, - customProfiles: IOptions, isHarCompiled: boolean): ReseverdSetForArkguard { + customProfiles: IOptions, isHarCompiled: boolean, scanDecorator: boolean = false): ReseverdSetForArkguard { const apiType = ApiExtractor.ApiType; let scanningCommonType = undefined; if (needReadApiInfo(customProfiles)) { @@ -118,7 +124,7 @@ export function readProjectPropertiesByCollectedPaths(filesForCompilation: Set 0) { resultStr += ObConfigResolver.KEEP_GLOBAL_NAME + '\n'; this.reservedGlobalNames.forEach((item) => { @@ -250,10 +272,19 @@ export class ObConfigResolver { this.handleReservedArray(mergedConfigs); endFilesEvent(EventList.RESOLVE_OBFUSCATION_CONFIGS); + /** + * Bytecode obfuscate mode: + * temporary variable or in non-top-level scope is obfuscated to be added to the obfuscate name set, + * All names that appear in the confused name collection will be obfuscated later + * So when a developer-defined name has the same name as systemApi + * Without a whitelist, all the same names would be obfuscated, leading to devastating errors + * so in order to work properly, Bytecode obfuscate enables the obfuscate function and requires whitelist + */ let needKeepSystemApi = enableObfuscation && (mergedConfigs.options.enablePropertyObfuscation || - (mergedConfigs.options.enableExportObfuscation && mergedConfigs.options.enableToplevelObfuscation)); + (mergedConfigs.options.enableExportObfuscation && mergedConfigs.options.enableToplevelObfuscation) || + mergedConfigs.options.bytecodeObf.enable); if (needKeepSystemApi && sourceObConfig.obfuscationCacheDir) { const systemApiCachePath: string = path.join(sourceObConfig.obfuscationCacheDir, 'systemApiCache.json'); @@ -270,8 +301,8 @@ export class ObConfigResolver { } } - // when atKeep is enabled, we can not emit here since we need to collect names marked with atKeep - if (!mergedConfigs.options.enableAtKeep) { + // when obfuscation is enabled, we need to emit consumerConfig files after collecting whitelist. + if (!enableObfuscation) { this.emitConsumerConfigFiles(); } return mergedConfigs; @@ -364,6 +395,11 @@ export class ObConfigResolver { static readonly PRINT_NAMECACHE = '-print-namecache'; static readonly PRINT_KEPT_NAMES = '-print-kept-names'; static readonly APPLY_NAMECACHE = '-apply-namecache'; + // obfuscation options for bytecode obfuscation + static readonly ENABLE_BYTECODE_OBFUSCATION = '-enable-bytecode-obfuscation'; + static readonly ENABLE_BYTECODE_OBFUSCATION_DEBUGGING = '-enable-bytecode-obfuscation-debugging'; + static readonly ENABLE_BYTECODE_OBFUSCATION_ENHANCED = '-enable-bytecode-obfuscation-enhanced'; + static readonly ENABLE_BYTECODE_OBFUSCATION_ARKUI = '-enable-bytecode-obfuscation-arkui'; static readonly EXTRA_OPTIONS = '-extra-options'; static readonly STRIP_LANGUAGE_DEFAULT = 'strip-language-default'; static readonly STRIP_SYSTEM_API_ARGS = 'strip-system-api-args'; @@ -380,6 +416,14 @@ export class ObConfigResolver { private getTokenType(token: string): OptionType { switch (token) { + case ObConfigResolver.ENABLE_BYTECODE_OBFUSCATION: + return OptionType.ENABLE_BYTECODE_OBFUSCATION; + case ObConfigResolver.ENABLE_BYTECODE_OBFUSCATION_DEBUGGING: + return OptionType.ENABLE_BYTECODE_OBFUSCATION_DEBUGGING; + case ObConfigResolver.ENABLE_BYTECODE_OBFUSCATION_ENHANCED: + return OptionType.ENABLE_BYTECODE_OBFUSCATION_ENHANCED; + case ObConfigResolver.ENABLE_BYTECODE_OBFUSCATION_ARKUI: + return OptionType.ENABLE_BYTECODE_OBFUSCATION_ARKUI; case ObConfigResolver.KEEP_DTS: return OptionType.KEEP_DTS; case ObConfigResolver.KEEP_GLOBAL_NAME: @@ -450,6 +494,26 @@ export class ObConfigResolver { tokenType = this.getTokenType(token); // handle switches cases switch (tokenType) { + case OptionType.ENABLE_BYTECODE_OBFUSCATION: { + configs.options.bytecodeObf.enable = true; + extraOptionType = OptionType.NONE; + continue; + } + case OptionType.ENABLE_BYTECODE_OBFUSCATION_DEBUGGING: { + configs.options.bytecodeObf.debugging = true; + extraOptionType = OptionType.NONE; + continue; + } + case OptionType.ENABLE_BYTECODE_OBFUSCATION_ENHANCED: { + configs.options.bytecodeObf.enhanced = true; + extraOptionType = OptionType.NONE; + continue; + } + case OptionType.ENABLE_BYTECODE_OBFUSCATION_ARKUI: { + configs.options.bytecodeObf.obfArkUI = true; + extraOptionType = OptionType.NONE; + continue; + } case OptionType.DISABLE_OBFUSCATION: { configs.options.disableObfuscation = true; extraOptionType = OptionType.NONE; @@ -719,7 +783,7 @@ export class ObConfigResolver { } const arkUIReservedPropertyNames: string[] = this.collectUIApiWhitelist(existPreDefineFilePath, existArkUIWhitelistPath, config); let systemApiContent: SystemApiContent = {}; - if (config.options.enablePropertyObfuscation) { + if (config.options.enablePropertyObfuscation || config.options.bytecodeObf?.enable) { if (!config.options.stripSystemApiArgs) { UnobfuscationCollections.reservedSdkApiForLocal = new Set(ApiExtractor.mPropertySet); systemApiContent.ReservedLocalNames = Array.from(ApiExtractor.mPropertySet); @@ -728,7 +792,8 @@ export class ObConfigResolver { UnobfuscationCollections.reservedSdkApiForProp = savedNameAndPropertySet; systemApiContent.ReservedPropertyNames = Array.from(savedNameAndPropertySet); } - if (config.options.enableToplevelObfuscation && config.options.enableExportObfuscation) { + if ((config.options.enableToplevelObfuscation && config.options.enableExportObfuscation) || + config.options.bytecodeObf?.enable) { const savedExportNamesSet = new Set(ApiExtractor.mSystemExportSet); UnobfuscationCollections.reservedSdkApiForGlobal = savedExportNamesSet; systemApiContent.ReservedGlobalNames = Array.from(savedExportNamesSet); @@ -879,6 +944,7 @@ export class ObConfigResolver { selfConsumerConfig.mergeAllRules(dependencyConfigs); } this.addKeepConsumer(selfConsumerConfig, AtKeepCollections.keepAsConsumer); + this.addIntentCollections(selfConsumerConfig, AtIntentCollections); selfConsumerConfig.sortAndDeduplicate(); this.writeConsumerConfigFile(selfConsumerConfig, sourceObConfig.exportRulePath); } @@ -892,6 +958,15 @@ export class ObConfigResolver { }); } + private addIntentCollections(selfConsumerConfig: MergedConfig, intentCollections: KeepInfo): void { + intentCollections.propertyNames.forEach((propertyName) => { + selfConsumerConfig.reservedPropertyNames.push(propertyName); + }); + intentCollections.globalNames.forEach((globalName) =>{ + selfConsumerConfig.reservedGlobalNames.push(globalName); + }); + } + public genConsumerConfigFilesForTest( sourceObConfig: SourceObConfig, selfConsumerConfig: MergedConfig, @@ -1211,6 +1286,11 @@ export function printWhitelist(obfuscationOptions: ObOptions, nameOptions: IName whitelistObj.conf.push(...atKeepSet); } + let atIndentSet: Set = new Set(); + addToSet(atIndentSet, AtIntentCollections.propertyNames); + addToSet(atIndentSet, AtIntentCollections.globalNames); + whitelistObj.conf.push(...atIndentSet); + let enumSet: Set; if (enableProperty) { enumSet = UnobfuscationCollections.reservedEnum; @@ -1316,7 +1396,8 @@ export function enableObfuscatedFilePathConfig(isPackageModules: boolean, projec } const disableObfuscation = hasObfuscationConfig.options.disableObfuscation; const enableFileNameObfuscation = hasObfuscationConfig.options.enableFileNameObfuscation; - if (disableObfuscation || !enableFileNameObfuscation) { + const enableBytecodeObfuscation = hasObfuscationConfig.options.bytecodeObf?.enable; + if (disableObfuscation || !enableFileNameObfuscation || enableBytecodeObfuscation) { return false; } return true; diff --git a/arkguard/src/initialization/Initializer.ts b/arkguard/src/initialization/Initializer.ts index f8eef2a751a17ad88d2627f24997d825c4f14b61..c0262eb890c69e2a7f803189362af4436709841d 100644 --- a/arkguard/src/initialization/Initializer.ts +++ b/arkguard/src/initialization/Initializer.ts @@ -20,7 +20,7 @@ import { ArkObfuscator, blockPrinter, renameIdentifierModule } from '../ArkObfus import { collectResevedFileNameInIDEConfig, MergedConfig, ObConfigResolver, readNameCache } from './ConfigResolver'; import { type IOptions } from '../configs/IOptions'; import type { HvigorErrorInfo } from '../common/type'; -import { getObfuscationCacheDir } from '../utils/PrinterTimeAndMemUtils'; +import { blockTimeAndMemPrinter, getObfuscationCacheDir } from '../utils/PrinterTimeAndMemUtils'; // Record all unobfuscated properties and reasons. export const historyUnobfuscatedPropMap: Map = new Map(); @@ -44,13 +44,6 @@ export const printerConfig = { mOutputPath: '', }; -export const printerTimeAndMemConfig = { - // A sub-switch of mTimeAndMemPrinter used to control the obfuscation performance printing of files - mFilesPrinter: false, - // A sub-switch of mTimeAndMemPrinter used to control the obfuscation performance printing of singlefile - mSingleFilePrinter: false, -}; - export const printerTimeAndMemDataConfig = { // The switch for printing obfuscation performance data and memory data mTimeAndMemPrinter: false, @@ -58,22 +51,27 @@ export const printerTimeAndMemDataConfig = { mMoreTimePrint: false, }; -// Initialize the configuration of the TimeAndMem performance printer -export function initPrinterTimeAndMemConfig() { - printerTimeAndMemConfig.mFilesPrinter = true; - printerTimeAndMemConfig.mSingleFilePrinter = true; - printerTimeAndMemDataConfig.mTimeAndMemPrinter = true; -} export function initObfuscationConfig(projectConfig: any, arkProjectConfig: any, printObfLogger: Function): void { const obConfig: ObConfigResolver = new ObConfigResolver(projectConfig, printObfLogger, true); - const mergedObConfig: MergedConfig = obConfig.resolveObfuscationConfigs(); + let mergedObConfig: MergedConfig = obConfig.resolveObfuscationConfigs(); + if (arkProjectConfig.allowEtsAnnotations) { + mergedObConfig.options.enableEtsAnnotation = arkProjectConfig.allowEtsAnnotations; + } const isHarCompiled: boolean = projectConfig.compileHar; - getObfuscationCacheDir(projectConfig); if (mergedObConfig.options.disableObfuscation) { blockPrinter(); + blockTimeAndMemPrinter(); return; } + getObfuscationCacheDir(projectConfig); + /** + * Only one of bytecode obfuscation and source code obfuscation will take effect. + * Enabling bytecode obfuscation is to obfuscate declaration files when compile bytecode har. + */ + const isBytecodeObfEnabled = mergedObConfig.options.bytecodeObf.enable; + arkProjectConfig.isBytecodeObfEnabled = isBytecodeObfEnabled; + arkProjectConfig.isArkguardEnabled = !isBytecodeObfEnabled; if (mergedObConfig.options.enableFileNameObfuscation) { const ohPackagePath = path.join(projectConfig.modulePath, 'oh-package.json5'); @@ -139,12 +137,12 @@ function initArkGuardConfig( }, mExportObfuscation: mergedObConfig.options.enableExportObfuscation, mPerformancePrinter: printerConfig, - mPerformanceTimeAndMemPrinter: printerTimeAndMemConfig, mKeepFileSourceCode: { mKeepSourceOfPaths: new Set(), mkeepFilesAndDependencies: new Set(), }, - mStripLanguageDefaultWhitelist: mergedObConfig.options.stripLanguageDefault + mStripLanguageDefaultWhitelist: mergedObConfig.options.stripLanguageDefault, + mAllowEtsAnnotations: mergedObConfig.options.enableEtsAnnotation, }; const arkObfuscator: ArkObfuscator = new ArkObfuscator(); diff --git a/arkguard/src/transformers/rename/RenameFileNameTransformer.ts b/arkguard/src/transformers/rename/RenameFileNameTransformer.ts index bab1c891c39391796433797c265b35099bd697a5..eab7543b3bf46ba08ed1c21bbbea4029c656cc33 100644 --- a/arkguard/src/transformers/rename/RenameFileNameTransformer.ts +++ b/arkguard/src/transformers/rename/RenameFileNameTransformer.ts @@ -101,7 +101,6 @@ namespace secharmony { const tempReservedName: string[] = ['.', '..', '']; configReservedFileNameOrPath.map(fileNameOrPath => { if (!fileNameOrPath || fileNameOrPath.length === 0) { - endFilesEvent(EventList.FILENAME_OBFUSCATION_INITIALIZATION); return; } const directories = FileUtils.splitFilePath(fileNameOrPath); diff --git a/arkguard/src/transformers/rename/RenameIdentifierTransformer.ts b/arkguard/src/transformers/rename/RenameIdentifierTransformer.ts index 53c45994d4253f398d5a66e9d02ee7b4eea498bf..f27fda5560042823bb4614265749b3884e25553c 100644 --- a/arkguard/src/transformers/rename/RenameIdentifierTransformer.ts +++ b/arkguard/src/transformers/rename/RenameIdentifierTransformer.ts @@ -39,7 +39,8 @@ import { isPropertyAssignment, isPrivateIdentifier, isParameter, - isPropertyAccessExpression + isPropertyAccessExpression, + isAnnotationDeclaration } from 'typescript'; import type { @@ -84,7 +85,7 @@ import type {INameGenerator, NameGeneratorOptions} from '../../generator/INameGe import type {IOptions} from '../../configs/IOptions'; import type { INameObfuscationOption, IUnobfuscationOption } from '../../configs/INameObfuscationOption'; import type {TransformPlugin} from '../TransformPlugin'; -import type { MangledSymbolInfo } from '../../common/type'; +import { annotationPrefix, type MangledSymbolInfo } from '../../common/type'; import {TransformerOrder} from '../TransformPlugin'; import {getNameGenerator, NameGeneratorType} from '../../generator/NameFactory'; import {TypeUtils} from '../../utils/TypeUtils'; @@ -99,12 +100,14 @@ import { } from '../../utils/TransformUtil'; import {NodeUtils} from '../../utils/NodeUtils'; import {ApiExtractor} from '../../common/ApiExtractor'; -import {performancePrinter, ArkObfuscator, cleanFileMangledNames} from '../../ArkObfuscator'; +import {performancePrinter, ArkObfuscator, cleanFileMangledNames, FileUtils} from '../../ArkObfuscator'; import { endSingleFileEvent, startSingleFileEvent } from '../../utils/PrinterUtils'; import { EventList, endSingleFileForMoreTimeEvent, startSingleFileForMoreTimeEvent } from '../../utils/PrinterTimeAndMemUtils'; import { isViewPUBasedClass } from '../../utils/OhsUtil'; import { + AtIntentCollections, AtKeepCollections, + BytecodeObfuscationCollections, LocalVariableCollections, PropCollections, UnobfuscationCollections @@ -153,6 +156,7 @@ namespace secharmony { let mangledLabelNames: Map = new Map(); let fileExportNames: Set = undefined; let fileImportNames: Set = undefined; + let currentFileType: string | undefined = undefined; exportElementsWithoutSymbol.clear(); exportSymbolAliasMap.clear(); nodeSymbolMap.clear(); @@ -181,6 +185,7 @@ namespace secharmony { if (!isSourceFile(node) || ArkObfuscator.isKeptCurrentFile) { return node; } + currentFileType = FileUtils.getFileSuffix(node.fileName).ext; isCurFileParamertersKept = shouldKeepCurFileParamerters(node, profile); const checkRecordInfo = ArkObfuscator.recordStage(MemoryDottingDefine.CREATE_CHECKER); @@ -191,7 +196,7 @@ namespace secharmony { const scopeRecordInfo = ArkObfuscator.recordStage(MemoryDottingDefine.SCOPE_ANALYZE); startSingleFileEvent(EventList.SCOPE_ANALYZE, performancePrinter.timeSumPrinter); - manager.analyze(node, checker, exportObfuscation); + manager.analyze(node, checker, exportObfuscation, currentFileType); endSingleFileEvent(EventList.SCOPE_ANALYZE, performancePrinter.timeSumPrinter); ArkObfuscator.stopRecordStage(scopeRecordInfo); @@ -312,11 +317,10 @@ namespace secharmony { recordHistoryUnobfuscatedNames(path); // For incremental build mangled = historyName; } else if (Reflect.has(def, 'obfuscateAsProperty')) { - // obfuscate toplevel, export - mangled = getPropertyMangledName(original, path); + mangled = getPropertyOrAnnotationMangledName(original, path); } else { // obfuscate local variable - mangled = getMangled(scope, generator); + mangled = getMangledLocalName(scope, generator); } // add new names to name cache let identifierCache = nameCache?.get(IDENTIFIER_CACHE); @@ -381,11 +385,7 @@ namespace secharmony { return mangledName; } - function getPropertyMangledName(original: string, nameWithScope: string): string { - if (isInTopLevelWhitelist(original, UnobfuscationCollections.unobfuscatedNamesMap, nameWithScope, enablePropertyObf, shouldPrintKeptNames)) { - return original; - } - + function getMangledName(original: string): string { const historyName: string = PropCollections.historyMangledTable?.get(original); let mangledName: string = historyName ? historyName : PropCollections.globalMangledTable.get(original); while (!mangledName) { @@ -442,6 +442,35 @@ namespace secharmony { return mangledName; } + function getPropertyMangledName(originalName: string, nameWithScope: string): string { + if (isInTopLevelWhitelist(originalName, UnobfuscationCollections.unobfuscatedNamesMap, nameWithScope, enablePropertyObf, shouldPrintKeptNames)) { + return originalName; + } + + let mangledName = getMangledName(originalName); + return mangledName; + } + + // mangle annotation name in intermediate files + function getAnnotationMangledNameWithPrefix(originalName: string, nameWithScope: string): string { + if (isInTopLevelWhitelist(originalName, UnobfuscationCollections.unobfuscatedNamesMap, nameWithScope, enablePropertyObf, shouldPrintKeptNames)) { + return `${annotationPrefix}${originalName}`; + } + let mangledName: string = `${annotationPrefix}${getMangledName(originalName)}`; + return mangledName; + } + + function getPropertyOrAnnotationMangledName(originalName: string, nameWithScope: string): string { + let name: string | undefined = originalName.startsWith(annotationPrefix) ? originalName.substring(annotationPrefix.length) : undefined; + if (name) { + // obfuscate annotation name with prefix, e.g. in intermediate files + return getAnnotationMangledNameWithPrefix(name, nameWithScope); + } else { + // obfuscate toplevel, export + return getPropertyMangledName(originalName, nameWithScope); + } + } + function isExcludeScope(scope: Scope): boolean { if (isClassScope(scope)) { return true; @@ -473,7 +502,7 @@ namespace secharmony { return found; } - function getMangled(scope: Scope, localGenerator: INameGenerator): string { + function getMangledLocalName(scope: Scope, localGenerator: INameGenerator): string { let mangled: string = ''; do { mangled = localGenerator.getName()!; @@ -846,9 +875,9 @@ namespace secharmony { tmpReservedProps.forEach(item => { PropCollections.reservedProperties.add(item); }); - PropCollections.globalMangledNamesInCache = new Set(PropCollections.historyMangledTable?.values()); addToSet(PropCollections.reservedProperties, AtKeepCollections.keepSymbol.propertyNames); addToSet(PropCollections.reservedProperties, AtKeepCollections.keepAsConsumer.propertyNames); + addToSet(PropCollections.reservedProperties, AtIntentCollections.propertyNames); if (profile?.mUniversalReservedProperties) { PropCollections.universalReservedProperties = [...profile.mUniversalReservedProperties]; @@ -863,10 +892,13 @@ namespace secharmony { UnobfuscationCollections.reservedSdkApiForProp.add(element); }); } + PropCollections.globalMangledNamesInCache = new Set(PropCollections.historyMangledTable?.values()); LocalVariableCollections.reservedConfig = new Set(profile?.mReservedNames ?? []); profile?.mReservedToplevelNames?.forEach(item => PropCollections.reservedProperties.add(item)); addToSet(PropCollections.reservedProperties, AtKeepCollections.keepSymbol.globalNames); addToSet(PropCollections.reservedProperties, AtKeepCollections.keepAsConsumer.globalNames); + addToSet(PropCollections.reservedProperties, AtIntentCollections.globalNames); + addToSet(UnobfuscationCollections.reservedSdkApiForProp, BytecodeObfuscationCollections.decoratorProp); profile?.mUniversalReservedToplevelNames?.forEach(item => PropCollections.universalReservedProperties.push(item)); isInitializedReservedList = true; } diff --git a/arkguard/src/transformers/rename/RenamePropertiesTransformer.ts b/arkguard/src/transformers/rename/RenamePropertiesTransformer.ts index d181c6f0ea1bf8733a75fe3e24f1bc26e9d90840..89fa6abb42b1ef9e7a04206c0f65fb65cf7c30e3 100644 --- a/arkguard/src/transformers/rename/RenamePropertiesTransformer.ts +++ b/arkguard/src/transformers/rename/RenamePropertiesTransformer.ts @@ -47,6 +47,7 @@ import type { TypeNode } from 'typescript'; +import { annotationPrefix } from '../../common/type'; import type {IOptions} from '../../configs/IOptions'; import type { INameObfuscationOption } from '../../configs/INameObfuscationOption'; import type {TransformPlugin} from '../TransformPlugin'; @@ -65,6 +66,7 @@ import { globalGenerator, nameCache } from './RenameIdentifierTransformer'; +import { FileUtils } from '../../ArkObfuscator'; import { UpdateMemberMethodName } from '../../utils/NameCacheUtil'; import { PropCollections, UnobfuscationCollections } from '../../utils/CommonCollections'; import { MemoryDottingDefine } from '../../utils/MemoryDottingDefine'; @@ -86,14 +88,14 @@ namespace secharmony { return renamePropertiesFactory; function renamePropertiesFactory(context: TransformationContext): Transformer { - + let currentFileType: string | undefined = undefined; return renamePropertiesTransformer; function renamePropertiesTransformer(node: Node): Node { if (isSourceFile(node) && ArkObfuscator.isKeptCurrentFile) { return node; } - + currentFileType = isSourceFile(node) ? FileUtils.getFileSuffix(node.fileName).ext : undefined; const recordInfo = ArkObfuscator.recordStage(MemoryDottingDefine.PROPERTY_OBFUSCATION); startSingleFileEvent(EventList.PROPERTY_OBFUSCATION, performancePrinter.timeSumPrinter); @@ -115,6 +117,10 @@ namespace secharmony { } function renameProperties(node: Node): Node { + if (NodeUtils.isObjectLiteralInAnnotation(node, currentFileType)) { + return node; + } + if (!NodeUtils.isPropertyNode(node)) { return visitEachChild(node, renameProperties, context); } @@ -204,7 +210,13 @@ namespace secharmony { return node; } - let mangledName: string = getPropertyName(original); + let mangledName: string = original; + let name: string | undefined = original.startsWith(annotationPrefix) ? original.substring(annotationPrefix.length) : undefined; + if (name) { + mangledName = getAnnotationMangledNameWithPrefix(name); + } else { + mangledName = getPropertyMangledName(original); + } if (isStringLiteralLike(node)) { return factory.createStringLiteral(mangledName); @@ -233,7 +245,17 @@ namespace secharmony { return factory.createPrivateIdentifier('#' + mangledName); } - function getPropertyName(original: string): string { + function getPropertyMangledName(original: string): string { + let mangledName: string = getMangledName(original); + return mangledName; + } + + function getAnnotationMangledNameWithPrefix(original: string): string { + let mangledName: string = `${annotationPrefix}${getMangledName(original)}`; + return mangledName; + } + + function getMangledName(original: string): string { const historyName: string = PropCollections.historyMangledTable?.get(original); let mangledName: string = historyName ? historyName : PropCollections.globalMangledTable.get(original); while (!mangledName) { diff --git a/arkguard/src/utils/CommonCollections.ts b/arkguard/src/utils/CommonCollections.ts index 1db093f1eb3792385b1b8f8d3ee23e43cc2d5746..aa31e00fd0afd2bdd208b208f11b5a28c063c788 100644 --- a/arkguard/src/utils/CommonCollections.ts +++ b/arkguard/src/utils/CommonCollections.ts @@ -104,4 +104,22 @@ export namespace AtKeepCollections { keepAsConsumer.globalNames.clear(); keepAsConsumer.propertyNames.clear(); }; +} + +export namespace AtIntentCollections{ + export let propertyNames: Set = new Set(); + export let globalNames: Set = new Set(); + + export function clear(): void{ + propertyNames.clear(); + globalNames.clear(); + } +} + +export namespace BytecodeObfuscationCollections { + export let decoratorProp: Set = new Set(); + + export function clear(): void { + decoratorProp.clear(); + } } \ No newline at end of file diff --git a/arkguard/src/utils/NodeUtils.ts b/arkguard/src/utils/NodeUtils.ts index 08acca40723273c72bc7d30130cfa613ff73733e..c4701cc0af97cc4d0ffaca03deb8bfc42884ce1f 100644 --- a/arkguard/src/utils/NodeUtils.ts +++ b/arkguard/src/utils/NodeUtils.ts @@ -13,6 +13,7 @@ * limitations under the License. */ +import { FileUtils } from './FileUtils'; import type { Expression, Identifier, @@ -24,7 +25,8 @@ import type { TransformerFactory, StringLiteralLike, NumericLiteral, - PrivateIdentifier + PrivateIdentifier, + PropertyAccessExpression, } from 'typescript'; import { canHaveModifiers, @@ -38,6 +40,7 @@ import { isClassExpression, isComputedPropertyName, isConstructorDeclaration, + isDecoratorOrAnnotation, isElementAccessExpression, isEnumMember, isGetAccessor, @@ -59,7 +62,8 @@ import { isVariableDeclaration, visitEachChild, isLiteralTypeNode, - isStringLiteralLike + isStringLiteralLike, + isObjectLiteralExpression } from 'typescript'; import { getViewPUClassProperties, @@ -67,7 +71,7 @@ import { isViewPUBasedClass, visitEnumInitializer } from './OhsUtil'; -import { Extension } from '../common/type'; +import { annotationPrefix, Extension } from '../common/type'; import { MergedConfig } from '../initialization/ConfigResolver'; export class NodeUtils { @@ -253,6 +257,36 @@ export class NodeUtils { return initializer && isCallExpression(initializer); } + public static isObjectLiteralInAnnotation(node: Node, currentFileType: string): boolean { + if (!node || !node.parent || !isObjectLiteralExpression(node) || !isCallExpression(node.parent) || !isDecoratorOrAnnotation(node.parent.parent)) { + return false; + } + if (currentFileType === Extension.DETS) { + return true; + } + const expr = node.parent.expression; + let name: string | undefined = undefined; + switch (expr.kind) { + case SyntaxKind.Identifier: + // @Anno({a: 0}), get 'Anno' + name = (expr as Identifier).text; + break; + case SyntaxKind.PropertyAccessExpression: + // @ns.Anno({a: 0}), get 'Anno' + name = (expr as PropertyAccessExpression).name.text; + break; + default: + name = undefined; + } + if (!name) { + return false; + } + if (currentFileType === Extension.TS && name.startsWith(annotationPrefix)) { + return true; + } + return false; + } + public static isDeclarationFile(node: SourceFile): boolean { return node.isDeclarationFile; } diff --git a/arkguard/src/utils/PrinterTimeAndMemUtils.ts b/arkguard/src/utils/PrinterTimeAndMemUtils.ts index b8b714f8f82317e2f89330e0554512c38a3ec82e..24c03c900b88066839d1174cee987d4f8bb22e07 100644 --- a/arkguard/src/utils/PrinterTimeAndMemUtils.ts +++ b/arkguard/src/utils/PrinterTimeAndMemUtils.ts @@ -21,6 +21,12 @@ import { performance } from 'perf_hooks'; import { performanceTimeAndMemPrinter } from '../ArkObfuscator'; import { printerTimeAndMemDataConfig } from '../initialization/Initializer'; +// DevEco Studio perf mode +export enum PerfMode { + NORMAL = 0, // Normal mode + ADVANCED = 1, // Advanced mode +}; + export enum EventList { OBFUSCATION_INITIALIZATION = 'Obfuscation initialization', SCAN_SYSTEMAPI = 'Scan system api', @@ -112,7 +118,7 @@ const MEMORY_PERFORMANCE_FILE_NAME = 'memoryPerformanceData.json'; // Memory per export const eventListTimeAndMemValues = new Set(Object.values(EventList)); export class TimeAndMemTimeTracker { - static obfuscationCacheDir: string = ''; // Obtain the directory of the obfuscated output file + static obfuscationCacheDir: string | undefined = ''; // Obtain the directory of the obfuscated output file private eventStack: Array<{ eventName: string; data: TimeAndMemInfo }> = []; timeDataArr: TimeInfo[] = []; memoryDataArr: MemInfo[] = []; @@ -195,21 +201,28 @@ export class TimeAndMemTimeTracker { /** * Initialize performance printer */ -export function initPerformanceTimeAndMemPrinter(mCustomProfiles: IOptions): void { - const printerConfig: IPrinterOption | undefined = mCustomProfiles.mPerformanceTimeAndMemPrinter; - - // If no performance printer configuration is provided, disable the printer and return. - if (!printerConfig) { +export function initPerformanceTimeAndMemPrinter(): void { + if (!printerTimeAndMemDataConfig.mTimeAndMemPrinter) { blockTimeAndMemPrinter(); - return; } +} - // Disable performance printer if no specific printer types (files, single file) are enabled. - const isPrinterDisabled = !(printerConfig.mFilesPrinter || printerConfig.mSingleFilePrinter); +/** + * Configures the performance printer based on the specified performance mode + */ +export function configurePerformancePrinter(perf: number): void { + if (perf === PerfMode.ADVANCED) { + initPrinterTimeAndMemConfig(); - if (isPrinterDisabled) { + // If singleFilePrinter and filesPrinter do not exist, create the corresponding instance + if (!performanceTimeAndMemPrinter.singleFilePrinter) { + performanceTimeAndMemPrinter.singleFilePrinter = new TimeAndMemTimeTracker(); + } + if (!performanceTimeAndMemPrinter.filesPrinter) { + performanceTimeAndMemPrinter.filesPrinter = new TimeAndMemTimeTracker(); + } + } else { blockTimeAndMemPrinter(); - return; } } @@ -217,6 +230,7 @@ export function initPerformanceTimeAndMemPrinter(mCustomProfiles: IOptions): voi * Disable performance printer */ export function blockTimeAndMemPrinter(): void { + disablePrinterTimeAndMemConfig(); performanceTimeAndMemPrinter.filesPrinter = undefined; performanceTimeAndMemPrinter.singleFilePrinter = undefined; } @@ -235,6 +249,20 @@ export function clearTimeAndMemPrinterData(): void { } } +/** + * Initialize the configuration of the TimeAndMem performance printer + */ +export function initPrinterTimeAndMemConfig(): void { + printerTimeAndMemDataConfig.mTimeAndMemPrinter = true; +} + +/** + * Disable the configuration of the TimeAndMem performance printer + */ +export function disablePrinterTimeAndMemConfig(): void { + printerTimeAndMemDataConfig.mTimeAndMemPrinter = false; +} + /** * Start recording singleFileForMoreTimePrinter event */ @@ -288,11 +316,13 @@ export function printMemoryPerformanceData(): void { * Write data of timeAndMemoryPerformance */ export async function writeTimeAndMemoryPerformanceData(data: (TimeInfo | MemInfo)[], fileName: string): Promise { - const filePath: string = path.join(TimeAndMemTimeTracker.obfuscationCacheDir, fileName); - try { - await fs.promises.writeFile(filePath, JSON.stringify(data, null, INDENTATION_SPACES)); - } catch (error) { - throw new Error('Failed to write file: ' + error.message.toString()); + if (TimeAndMemTimeTracker.obfuscationCacheDir) { + const filePath: string = path.join(TimeAndMemTimeTracker.obfuscationCacheDir, fileName); + try { + await fs.promises.writeFile(filePath, JSON.stringify(data, null, INDENTATION_SPACES)); + } catch (error) { + throw new Error('Failed to write file: ' + error.message.toString()); + } } } diff --git a/arkguard/src/utils/ProjectCollections.ts b/arkguard/src/utils/ProjectCollections.ts index 62071f3388fce53a2fd6f62182ab0d4b2d325e5e..e218b8b2479665158c740d695dc091893e79276e 100644 --- a/arkguard/src/utils/ProjectCollections.ts +++ b/arkguard/src/utils/ProjectCollections.ts @@ -15,7 +15,12 @@ import { ApiExtractor } from '../common/ApiExtractor'; import { FileUtils } from './FileUtils'; -import { AtKeepCollections, UnobfuscationCollections } from './CommonCollections'; +import { + AtIntentCollections, + AtKeepCollections, + BytecodeObfuscationCollections, + UnobfuscationCollections +} from './CommonCollections'; import * as crypto from 'crypto'; import * as ts from 'typescript'; import fs from 'fs'; @@ -51,6 +56,14 @@ export const FILE_NAMES_MAP: string = 'transformedFileNamesMap.json'; export const FILE_WHITE_LISTS: string = 'fileWhiteLists.json'; export const PROJECT_WHITE_LIST: string = 'projectWhiteList.json'; +// this while list is only used for bytecode obfuscation +export const DECORATOR_WHITE_LIST = [ + 'Monitor', + 'Track', + 'Trace', + 'AnimatableExtend' +]; + export interface KeepInfo { propertyNames: Set; globalNames: Set; @@ -111,6 +124,11 @@ export interface FileContent { * │ │ └── globalNames: Set * │ ├── enumProperties: Set * │ └── stringProperties: Set + * │ └── arkUIKeepInfo: KeepInfo + * │ ├── propertyNames: Set + * │ └── globalNames: Set + * └── bytecodeObfuscateKeepInfo: BytecodeObfuscateKeepInfo + * └── decoratorMap?: Map * └── fileReservedInfo: FileReservedInfo * ├── enumProperties: Set * └── propertyParams: Set @@ -122,6 +140,7 @@ export interface FileKeepInfo { exported: KeepInfo; // Exported names and properties. enumProperties: Set; // Enum properties. stringProperties: Set; // String properties. + arkUIKeepInfo?: KeepInfo; // Collecting classes and members } export interface FileReservedInfo { @@ -129,9 +148,14 @@ export interface FileReservedInfo { propertyParams: Set; // Properties parameters in constructor. } +export interface BytecodeObfuscateKeepInfo { + decoratorMap?: Object; // collect DecoratorMap +} + export interface FileWhiteList { fileKeepInfo: FileKeepInfo; fileReservedInfo: FileReservedInfo; + bytecodeObfuscateKeepInfo?: BytecodeObfuscateKeepInfo } export interface ProjectKeepInfo { @@ -241,6 +265,10 @@ export class ProjectWhiteListManager { }, enumProperties: new Set(), stringProperties: new Set(), + arkUIKeepInfo: { + propertyNames: new Set(), + globalNames: new Set(), + }, }; } @@ -311,14 +339,22 @@ export class ProjectWhiteListManager { }, enumProperties: arrayToSet(parsed[key].fileKeepInfo.enumProperties), stringProperties: arrayToSet(parsed[key].fileKeepInfo.stringProperties), + arkUIKeepInfo: parsed[key].fileKeepInfo.arkUIKeepInfo + ? { + propertyNames: arrayToSet(parsed[key].fileKeepInfo.arkUIKeepInfo.propertyNames), + globalNames: arrayToSet(parsed[key].fileKeepInfo.arkUIKeepInfo.globalNames), + } + : undefined, }; const fileReservedInfo: FileReservedInfo = { enumProperties: arrayToSet(parsed[key].fileReservedInfo.enumProperties), propertyParams: arrayToSet(parsed[key].fileReservedInfo.propertyParams), }; - - map.set(key, { fileKeepInfo, fileReservedInfo }); + const bytecodeObfuscateKeepInfo: BytecodeObfuscateKeepInfo = { + decoratorMap: parsed[key].bytecodeObfuscateKeepInfo?.decoratorMap, + }; + map.set(key, { fileKeepInfo, fileReservedInfo, bytecodeObfuscateKeepInfo }); } } @@ -349,12 +385,23 @@ export class ProjectWhiteListManager { }, enumProperties: setToArray(value.fileKeepInfo.enumProperties), stringProperties: setToArray(value.fileKeepInfo.stringProperties), + arkUIKeepInfo: value.fileKeepInfo.arkUIKeepInfo + ? { + propertyNames: setToArray(value.fileKeepInfo.arkUIKeepInfo.propertyNames), + globalNames: setToArray(value.fileKeepInfo.arkUIKeepInfo.globalNames), + } + : undefined, }, fileReservedInfo: { enumProperties: setToArray(value.fileReservedInfo.enumProperties), propertyParams: setToArray(value.fileReservedInfo.propertyParams), }, }; + if (value.bytecodeObfuscateKeepInfo?.decoratorMap) { + jsonData[key].bytecodeObfuscateKeepInfo = { + decoratorMap: value.bytecodeObfuscateKeepInfo.decoratorMap, + }; + } } const jsonString = JSON.stringify(jsonData, null, 2); @@ -462,6 +509,16 @@ export class ProjectWhiteListManager { projectKeepInfo.propertyNames.add(propertyName); }); + // Collect arkUIKeepInfo + fileWhiteList.fileKeepInfo.arkUIKeepInfo?.globalNames.forEach((globalName) => { + projectKeepInfo.globalNames.add(globalName); + AtIntentCollections.globalNames.add(globalName); + }); + fileWhiteList.fileKeepInfo.arkUIKeepInfo?.propertyNames.forEach((propertyName) => { + projectKeepInfo.propertyNames.add(propertyName); + AtIntentCollections.propertyNames.add(propertyName); + }); + // 2. Collect fileReservedInfo // Collect enumProperties fileWhiteList.fileReservedInfo.enumProperties.forEach((enumPropertyName) => { @@ -472,6 +529,13 @@ export class ProjectWhiteListManager { fileWhiteList.fileReservedInfo.propertyParams.forEach((propertyParam) => { projectReservedInfo.propertyParams.add(propertyParam); }); + + const decoratorMap = fileWhiteList.bytecodeObfuscateKeepInfo?.decoratorMap; + for (const key in decoratorMap) { + if (Object.prototype.hasOwnProperty.call(decoratorMap, key)) { + decoratorMap[key]?.forEach(item => projectKeepInfo.globalNames.add(item)); + } + } }); const projectWhiteList = { @@ -515,8 +579,18 @@ export class ProjectWhiteListManager { addToSet(UnobfuscationCollections.reservedExportName, fileWhiteList.fileKeepInfo.exported.globalNames); addToSet(UnobfuscationCollections.reservedExportNameAndProp, fileWhiteList.fileKeepInfo.exported.propertyNames); addToSet(UnobfuscationCollections.reservedStrProp, fileWhiteList.fileKeepInfo.stringProperties); + if (fileWhiteList.fileKeepInfo.arkUIKeepInfo) { + addToSet(AtIntentCollections.propertyNames, fileWhiteList.fileKeepInfo.arkUIKeepInfo.propertyNames); + addToSet(AtIntentCollections.globalNames, fileWhiteList.fileKeepInfo.arkUIKeepInfo.globalNames); + } addToSet(ApiExtractor.mConstructorPropertySet, fileWhiteList.fileReservedInfo.propertyParams); addToSet(ApiExtractor.mEnumMemberSet, fileWhiteList.fileReservedInfo.enumProperties); + const decoratorMap = fileWhiteList.bytecodeObfuscateKeepInfo?.decoratorMap; + for (const key in decoratorMap) { + if (Object.prototype.hasOwnProperty.call(decoratorMap, key)) { + decoratorMap[key]?.forEach(item => BytecodeObfuscationCollections.decoratorProp.add(item)); + } + } }); } diff --git a/arkguard/src/utils/ScopeAnalyzer.ts b/arkguard/src/utils/ScopeAnalyzer.ts index a2f2466039ad5876ee673773b7a1145aa56bc06f..620758608f87e88d7c2cf074edc82cbc31f42361 100644 --- a/arkguard/src/utils/ScopeAnalyzer.ts +++ b/arkguard/src/utils/ScopeAnalyzer.ts @@ -17,6 +17,7 @@ import { forEachChild, getModifiers, getOriginalNode, + isAnnotationPropertyDeclaration, isCatchClause, isClassDeclaration, isConstructorDeclaration, @@ -40,6 +41,7 @@ import { } from 'typescript'; import type { + AnnotationDeclaration, BreakOrContinueStatement, CaseBlock, CatchClause, @@ -70,7 +72,7 @@ import type { TypeElement } from 'typescript'; -import { NodeUtils } from './NodeUtils'; +import { hasExportModifier, NodeUtils } from './NodeUtils'; import { isParameterPropertyModifier, isViewPUBasedClass } from './OhsUtil'; import { TypeUtils } from './TypeUtils'; import { endSingleFileEvent, startSingleFileEvent } from '../utils/PrinterUtils'; @@ -284,7 +286,7 @@ namespace secharmony { * @param ast ast tree of a source file * @param checker */ - analyze(ast: SourceFile, checker: TypeChecker, isEnabledExportObfuscation: boolean): void; + analyze(ast: SourceFile, checker: TypeChecker, isEnabledExportObfuscation: boolean, currentFileType: string): void; /** * get root scope of a file @@ -307,6 +309,7 @@ namespace secharmony { let checker: TypeChecker = null; let upperLabel: Label | undefined = undefined; let exportObfuscation: boolean = false; + let fileType: string | undefined = undefined; return { getReservedNames, @@ -315,9 +318,10 @@ namespace secharmony { getScopeOfNode, }; - function analyze(ast: SourceFile, typeChecker: TypeChecker, isEnabledExportObfuscation = false): void { + function analyze(ast: SourceFile, typeChecker: TypeChecker, isEnabledExportObfuscation = false, currentFileType: string): void { checker = typeChecker; exportObfuscation = isEnabledExportObfuscation; + fileType = currentFileType; analyzeScope(ast); } @@ -445,7 +449,10 @@ namespace secharmony { break; case SyntaxKind.Identifier: - analyzeSymbol(node as Identifier); + // skip property in annotationDeclaration + if (!isAnnotationPropertyDeclaration(node.parent)) { + analyzeSymbol(node as Identifier); + } break; case SyntaxKind.TypeAliasDeclaration: @@ -469,7 +476,11 @@ namespace secharmony { break; case SyntaxKind.ObjectLiteralExpression: - analyzeObjectLiteralExpression(node as ObjectLiteralExpression); + // skip prop in annotation, e.g. @Anno({a: 0}) + // here, `a` will not be collected + if (!NodeUtils.isObjectLiteralInAnnotation(node as ObjectLiteralExpression, fileType)) { + analyzeObjectLiteralExpression(node as ObjectLiteralExpression); + } break; case SyntaxKind.ExportSpecifier: @@ -488,6 +499,11 @@ namespace secharmony { analyzeImportEqualsDeclaration(node as ImportEqualsDeclaration); break; + // add symbol of annotationDeclaration into global scope + case SyntaxKind.AnnotationDeclaration: + analyzeAnnotationDeclaration(node as AnnotationDeclaration); + break; + default: forEachChild(node, analyzeScope); break; @@ -1060,6 +1076,18 @@ namespace secharmony { forEachChild(node, analyzeScope); } + function analyzeAnnotationDeclaration(node: AnnotationDeclaration): void { + if (hasExportModifier(node)) { + current.exportNames.add(node.name.text); + root.fileExportNames.add(node.name.text); + } + let sym: Symbol | undefined = getAndRecordSymbolOfIdentifier(checker, node.name); + if (sym) { + current.addDefinition(sym, true); + } + forEachChild(node, analyzeScope); + } + function tryAddNoSymbolIdentifiers(node: Identifier): void { if (!isIdentifier(node)) { return; diff --git a/arkguard/src/utils/SourceMapMergingUtil.ts b/arkguard/src/utils/SourceMapMergingUtil.ts index 266f0d33cc4c9677b22066169789d55a757a0053..cb4746226a7603f7ef70dcd3103d53ca7bea49c7 100644 --- a/arkguard/src/utils/SourceMapMergingUtil.ts +++ b/arkguard/src/utils/SourceMapMergingUtil.ts @@ -74,6 +74,11 @@ export interface SourceMapSegmentObj { type MappingsNameType = { mappings: readonly SourceMapSegment[][]; names?: readonly string[] }; type TracedMappingsType = { mappings: SourceMapSegment[][]; names: string[]; sources: string[] }; +/** + * Type of the map parameter of the SourceMapLink class. + */ +export type MappingsNameTypeForTest = MappingsNameType; + /** * Provide api tools related to sourcemap. */ diff --git a/arkguard/src/utils/TypeUtils.ts b/arkguard/src/utils/TypeUtils.ts index cd143376b6519b249c4ed81ab6ccbb18063dedd7..1c80ffea5374c50f2310c24738a9d0e628823649 100644 --- a/arkguard/src/utils/TypeUtils.ts +++ b/arkguard/src/utils/TypeUtils.ts @@ -42,7 +42,7 @@ export class TypeUtils { * @param {string} sourceFilePath * @param {string} content - The content in sourceFilePath */ - public static createObfSourceFile(sourceFilePath: string, content: string): SourceFile { + public static createObfSourceFile(sourceFilePath: string, content: string, compilerOptions?: CompilerOptions): SourceFile { const pathOrExtension: PathAndExtension = FileUtils.getFileSuffix(sourceFilePath); const fileSuffix = pathOrExtension.ext; @@ -50,6 +50,10 @@ export class TypeUtils { sourceFilePath = pathOrExtension.path + Extension.TS; } + if (compilerOptions && compilerOptions.etsAnnotationsEnable === true) { + return createSourceFile(sourceFilePath, content, ScriptTarget.ES2015, true, undefined, compilerOptions, true); + } + return createSourceFile(sourceFilePath, content, ScriptTarget.ES2015, true); } diff --git a/arkguard/test/grammar/advanced_type/intersection_types.ts b/arkguard/test/grammar/advanced_type/intersection_types.ts index 182de6165ace90143339ba74036556a7589ed347..6d4457b850202196b45398ef6b5135b1207be64a 100644 --- a/arkguard/test/grammar/advanced_type/intersection_types.ts +++ b/arkguard/test/grammar/advanced_type/intersection_types.ts @@ -15,35 +15,36 @@ import assert = require('assert'); -function extend(first: T, second: U): T & U { - let result = {}; - for (let id in first) { - (result)[id] = (first)[id]; +function mergeObjects(primary: T, secondary: U): T & U { + const merged = {} as T & U; + + for (const prop in primary) { + merged[prop] = primary[prop] as any; } - for (let id in second) { - if (!result.hasOwnProperty(id)) { - (result)[id] = (second)[id]; + + for (const prop in secondary) { + if (!Object.prototype.hasOwnProperty.call(merged, prop)) { + merged[prop] = secondary[prop] as any; } } - return result; + return merged; } -class Person { - constructor(public name: string) { - } +class Human { + constructor(public username: string) {} } -interface Loggable { - log(): void; +interface LoggingCapability { + writeLog(): void; } -class ConsoleLogger implements Loggable { - log(): void { +class TerminalLogger implements LoggingCapability { + writeLog(): void { console.log('Jim'); } } -const jim = extend(new Person('Jim'), new ConsoleLogger()); -const n = jim.name; +const user = mergeObjects(new Human('Jim'), new TerminalLogger()); +const currentUser = user.username; -assert(n === 'Jim', 'success'); +assert(currentUser === 'Jim', 'success'); diff --git a/arkguard/test/grammar/advanced_type/predefined_types.ts b/arkguard/test/grammar/advanced_type/predefined_types.ts index 22d55829e5b3fcf1eebc0e353a4738e0211096de..d12d9d5acaa3d2b389b057e604da24706aea1b5a 100644 --- a/arkguard/test/grammar/advanced_type/predefined_types.ts +++ b/arkguard/test/grammar/advanced_type/predefined_types.ts @@ -13,8 +13,6 @@ * limitations under the License. */ -import assert = require('assert'); - type T00 = Exclude<'a' | 'b' | 'c' | 'd', 'a' | 'c' | 'f'>; // 'b' | 'd' type T01 = Extract<'a' | 'b' | 'c' | 'd', 'a' | 'c' | 'f'>; // 'a' | 'c' @@ -33,13 +31,13 @@ class C { y = 0; } -type T10 = ReturnType<() => string>; // string -type T11 = ReturnType<(s: string) => void>; // void -type T12 = ReturnType<(() => T)>; // {} -type T13 = ReturnType<(() => T)>; // number[] -type T14 = ReturnType; // { a: number, b: string } -type T15 = ReturnType; // any -type T16 = ReturnType; // any +type ResultString = ReturnType<() => string>; // string +type ResultVoid = ReturnType<(s: string) => void>; // void +type ResultGeneric = ReturnType<(() => T)>; // {} +type ResultConstrained = ReturnType<(() => T)>; // number[] +type ResultInstance = ReturnType; // { a: number, b: string } +type ResultAny = ReturnType; // any +type ResultNever = ReturnType; // any type T20 = InstanceType; // C type T21 = InstanceType; // any diff --git a/arkguard/test/grammar/advanced_type/predefined_types_expected.txt b/arkguard/test/grammar/advanced_type/predefined_types_expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..b22f02196e0cb9e272af321cc65105966a3e1b51 --- /dev/null +++ b/arkguard/test/grammar/advanced_type/predefined_types_expected.txt @@ -0,0 +1,37 @@ +/* + * 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. + */ +type l1 = Exclude<'a' | 'b' | 'c' | 'd', 'a' | 'c' | 'f'>; // 'b' | 'd' +type m1 = Extract<'a' | 'b' | 'c' | 'd', 'a' | 'c' | 'f'>; // 'a' | 'c' +type n1 = Exclude void), Function>; // string | number +type o1 = Extract void), Function>; // () => void +type q1 = NonNullable; // string | number +type s1 = NonNullable<(() => string) | string[] | null | undefined>; // (() => string) | string[] +function j1(g2: string): any { + return { a: 1, b: g2 }; +} +class t1 { + x = 0; + y = 0; +} +type u1 = ReturnType<() => string>; // string +type v1 = ReturnType<(s: string) => void>; // void +type w1 = ReturnType<(() => T)>; // {} +type z1 = ReturnType<(() => T)>; // number[] +type a2 = ReturnType; // { a: number, b: string } +type b2 = ReturnType; // any +type c2 = ReturnType; // any +type d2 = InstanceType; // C +type e2 = InstanceType; // any +type f2 = InstanceType; // any diff --git a/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints.ts b/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints.ts index ff334131470e9e6fd14d8cc753535d69e540c4da..4b9cb710891cd458674edd9108e77f798947494e 100644 --- a/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints.ts +++ b/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints.ts @@ -18,33 +18,33 @@ 1. + 2.0 + 3.; var i: number = 1; -var test1 = i.toString(); -var test3 = 3 .toString(); -var test4 = 3 .toString(); -var test5 = 3 .toString(); -var test6 = 3.['toString'](); -var test7 = 3 +var compactTest1 = i.toString(); +var compactTest3 = 3 .toString(); +var compactTest4 = 3 .toString(); +var compactTest5 = 3 .toString(); +var compactTest6 = 3.['toString'](); +var compactTest7 = 3 .toString(); -var test8 = new Number(4).toString(); -var test9 = 3. + 3.; -var test10 = 0 /* comment */.toString(); -var test11 = 3. /* comment */.toString(); -var test12 = 3 +var compactTest8 = new Number(4).toString(); +var compactTest9 = 3. + 3.; +var compactTest10 = 0 /* comment */.toString(); +var compactTest11 = 3. /* comment */.toString(); +var compactTest12 = 3 /* comment */ .toString(); var test122 = 3 /* comment */.toString(); var test1222 = 3 .toString(); -var test13 = 3. +var compactTest13 = 3. /* comment */.toString(); -var test14 = 3 +var compactTest14 = 3 // comment .toString(); -var test15 = 3. +var compactTest15 = 3. // comment .toString(); -var test16 = 3 // comment time +var compactTest16 = 3 // comment time .toString(); -var test17 = 3. // comment time again +var compactTest17 = 3. // comment time again .toString(); \ No newline at end of file diff --git a/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints_expected.txt b/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints_expected.txt index c00d3215e58b153f0e11b2f915f94a5d247a8558..91796cd9c13e67a76ca123b35c6abbaacadb95bf 100644 --- a/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints_expected.txt +++ b/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints_expected.txt @@ -1 +1 @@ -1..toString();1.0.toString();1. + 2.0 + 3.;var i: number = 1;var test1 = i.toString();var test3 = 3..toString();var test4 = 3..toString();var test5 = 3..toString();var test6 = 3.['toString']();var test7 = 3 .toString();var test8 = new Number(4).toString();var test9 = 3. + 3.;var test10 = 0 .toString();var test11 = 3. .toString();var test12 = 3 .toString();var test122 = 3 .toString();var test1222 = 3 .toString();var test13 = 3. .toString();var test14 = 3 .toString();var test15 = 3. .toString();var test16 = 3 .toString();var test17 = 3. .toString(); \ No newline at end of file +1..toString();1.0.toString();1. + 2.0 + 3.;var i: number = 1;var compactTest1 = i.toString();var compactTest3 = 3..toString();var compactTest4 = 3..toString();var compactTest5 = 3..toString();var compactTest6 = 3.['toString']();var compactTest7 = 3 .toString();var compactTest8 = new Number(4).toString();var compactTest9 = 3. + 3.;var compactTest10 = 0 .toString();var compactTest11 = 3. .toString();var compactTest12 = 3 .toString();var test122 = 3 .toString();var test1222 = 3 .toString();var compactTest13 = 3. .toString();var compactTest14 = 3 .toString();var compactTest15 = 3. .toString();var compactTest16 = 3 .toString();var compactTest17 = 3. .toString(); \ No newline at end of file diff --git a/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints_expected_map.txt b/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints_expected_map.txt index 4e7f94de3f118943977ec0128f86fab8d18e5580..69efdc4f7ce3090551b3225128d91851cf225550 100644 --- a/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints_expected_map.txt +++ b/arkguard/test/grammar/compact/numericLiteralsWithTrailingDecimalPoints_expected_map.txt @@ -6,5 +6,5 @@ "test/grammar/compact/numericLiteralsWithTrailingDecimalPoints.ts" ], "names": [], - "mappings": "AAeA,EAAE,CAAC,QAAQ,EAAE,CACb,GAAG,CAAC,QAAQ,EAAE,CACd,EAAE,GAAG,GAAG,GAAG,EAAE,CAEb,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,CACjB,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CACxB,IAAI,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,CACzB,IAAI,KAAK,GAAG,CAAC,EAAK,QAAQ,EAAE,CAC5B,IAAI,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,CACzB,IAAI,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAC5B,IAAI,KAAK,GAAG,CAAC,EACV,QAAQ,EAAE,CACb,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CACpC,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,CACnB,IAAI,MAAM,GAAG,CAAC,CAAc,CAAC,QAAQ,EAAE,CACvC,IAAI,MAAM,GAAG,EAAE,CAAc,CAAC,QAAQ,EAAE,CACxC,IAAI,MAAM,GAAG,CAAC,CACC,EAAE,QAAQ,EAAE,CAC3B,IAAI,OAAO,GAAG,CAAC,CACF,EAAC,QAAQ,EAAE,CACxB,IAAI,QAAQ,GAAG,CAAC,EAEb,QAAQ,EAAE,CACb,IAAI,MAAM,GAAG,EAAE,CACA,EAAC,QAAQ,EAAE,CAC1B,IAAI,MAAM,GAAG,CAAC,CACF,CACT,QAAQ,EAAE,CACb,IAAI,MAAM,GAAG,EAAE,CACH,CACT,QAAQ,EAAE,CACb,IAAI,MAAM,GAAG,CAAC,CAAiB,CAC5B,QAAQ,EAAE,CACb,IAAI,MAAM,GAAG,EAAE,CAAsB,CAClC,QAAQ,EAAE,CAAC" + "mappings": "AAeA,EAAE,CAAC,QAAQ,EAAE,CACb,GAAG,CAAC,QAAQ,EAAE,CACd,EAAE,GAAG,GAAG,GAAG,EAAE,CAEb,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,CACjB,IAAI,YAAY,GAAG,CAAC,CAAC,QAAQ,EAAE,CAC/B,IAAI,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAE,CAChC,IAAI,YAAY,GAAG,CAAC,EAAK,QAAQ,EAAE,CACnC,IAAI,YAAY,GAAG,CAAC,EAAE,QAAQ,EAAE,CAChC,IAAI,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CACnC,IAAI,YAAY,GAAG,CAAC,EACjB,QAAQ,EAAE,CACb,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC3C,IAAI,YAAY,GAAG,EAAE,GAAG,EAAE,CAC1B,IAAI,aAAa,GAAG,CAAC,CAAc,CAAC,QAAQ,EAAE,CAC9C,IAAI,aAAa,GAAG,EAAE,CAAc,CAAC,QAAQ,EAAE,CAC/C,IAAI,aAAa,GAAG,CAAC,CACN,EAAE,QAAQ,EAAE,CAC3B,IAAI,OAAO,GAAG,CAAC,CACF,EAAC,QAAQ,EAAE,CACxB,IAAI,QAAQ,GAAG,CAAC,EAEb,QAAQ,EAAE,CACb,IAAI,aAAa,GAAG,EAAE,CACP,EAAC,QAAQ,EAAE,CAC1B,IAAI,aAAa,GAAG,CAAC,CACT,CACT,QAAQ,EAAE,CACb,IAAI,aAAa,GAAG,EAAE,CACV,CACT,QAAQ,EAAE,CACb,IAAI,aAAa,GAAG,CAAC,CAAiB,CACnC,QAAQ,EAAE,CACb,IAAI,aAAa,GAAG,EAAE,CAAsB,CACzC,QAAQ,EAAE,CAAC" } \ No newline at end of file diff --git a/arkguard/test/grammar/interface_validation/interface_class_method.ts b/arkguard/test/grammar/interface_validation/interface_class_method.ts index f9bea5f4f47237c416fce7cf45a0f63ec8774c0a..1636c31168cf4c4b56f53fccf3a1be72d2ed5e25 100644 --- a/arkguard/test/grammar/interface_validation/interface_class_method.ts +++ b/arkguard/test/grammar/interface_validation/interface_class_method.ts @@ -15,27 +15,27 @@ import assert = require('assert'); -interface ClockInterface { - currentTime: Date; +interface TimepieceInterface { + currentDateTime: Date; - setTime(d: Date); + updateTime(newTime: Date); } -class Clock implements ClockInterface { - currentTime: Date; +class WallClock implements TimepieceInterface { + currentDateTime: Date; - setTime(d: Date) { - this.currentTime = d; + updateTime(newTime: Date) { + this.currentDateTime = newTime; } - constructor(h: number, m: number) { + constructor(hour: number, minute: number) { } } -let nowClock = new Clock(3, 20); +let nowClock = new WallClock(3, 20); let now = Date.prototype; -nowClock.setTime(now); +nowClock.updateTime(now); -assert(nowClock.currentTime === now, 'success'); \ No newline at end of file +assert(nowClock.currentDateTime === now, 'success'); \ No newline at end of file diff --git a/arkguard/test/grammar/module_validation/name_space.ts b/arkguard/test/grammar/module_validation/name_space.ts index bc9379802add64166105995aa8e122fb2f3cb846..582fb7951301576551b9a4c761a0bbc94e52ce6a 100644 --- a/arkguard/test/grammar/module_validation/name_space.ts +++ b/arkguard/test/grammar/module_validation/name_space.ts @@ -15,33 +15,33 @@ import assert = require('assert'); -interface StringValidator { - isAcceptable(s: string): boolean; +interface TextValidationRule { + isValid(text: string): boolean; } -let lettersRegexp = /^[A-Za-z]+$/; -let numberRegexp = /^[0-9]+$/; +const alphabeticPattern = /^[A-Za-z]+$/; +const numericPattern = /^[0-9]+$/; -class LettersOnlyValidator implements StringValidator { - isAcceptable(s: string) { - return lettersRegexp.test(s); +class AlphabeticalValidator implements TextValidationRule { + isValid(text: string) { + return alphabeticPattern.test(text); } } -class ZipCodeValidator implements StringValidator { - isAcceptable(s: string) { - return s.length === 5 && numberRegexp.test(s); +class PostalCodeValidator implements TextValidationRule { + isValid(text: string) { + return text.length === 5 && numericPattern.test(text); } } -// Some samples to try -let strings = ["Hello", "98052", "101"]; +// Test cases +const testInputs = ["Hello", "98052", "101"]; -// Validators to use -let validators: { [s: string]: StringValidator; } = {}; -validators["ZIP code"] = new ZipCodeValidator(); -validators["Letters only"] = new LettersOnlyValidator(); +// Validation registry +const validationRules: { [ruleName: string]: TextValidationRule } = {}; +validationRules["Postal Code"] = new PostalCodeValidator(); +validationRules["Alphabetical"] = new AlphabeticalValidator(); -assert(validators["Letters only"].isAcceptable(strings[0]), 'success'); -assert(validators["ZIP code"].isAcceptable(strings[1]), 'success'); +assert(validationRules["Alphabetical"].isValid(testInputs[0]), 'success'); +assert(validationRules["Postal Code"].isValid(testInputs[1]), 'success'); diff --git a/arkguard/test/testData/obfuscation/Configs/bytecodeObf/arkguard_enable.txt b/arkguard/test/testData/obfuscation/Configs/bytecodeObf/arkguard_enable.txt new file mode 100644 index 0000000000000000000000000000000000000000..3886aed9a1183916a362572acc393ad76de4b970 --- /dev/null +++ b/arkguard/test/testData/obfuscation/Configs/bytecodeObf/arkguard_enable.txt @@ -0,0 +1 @@ +#default \ No newline at end of file diff --git a/arkguard/test/testData/obfuscation/Configs/bytecodeObf/bytecodeObf_enable.txt b/arkguard/test/testData/obfuscation/Configs/bytecodeObf/bytecodeObf_enable.txt new file mode 100644 index 0000000000000000000000000000000000000000..810df52a853d84a165e48e3ab2a4af4c8b857a61 --- /dev/null +++ b/arkguard/test/testData/obfuscation/Configs/bytecodeObf/bytecodeObf_enable.txt @@ -0,0 +1,3 @@ +-enable-bytecode-obfuscation +-enable-bytecode-obfuscation-debugging +-enable-bytecode-obfuscation-enhanced \ No newline at end of file diff --git a/arkguard/test/testData/obfuscation/system_api_obfuscation/bytecode_obfuscation/bytecode_obfuscation.txt b/arkguard/test/testData/obfuscation/system_api_obfuscation/bytecode_obfuscation/bytecode_obfuscation.txt new file mode 100644 index 0000000000000000000000000000000000000000..43c1c46fc84eb2992a31048fbe38bc69b66fb977 --- /dev/null +++ b/arkguard/test/testData/obfuscation/system_api_obfuscation/bytecode_obfuscation/bytecode_obfuscation.txt @@ -0,0 +1 @@ +-enable-bytecode-obfuscation \ No newline at end of file diff --git a/arkguard/test/ut/arkobfuscator/ArkObfuscator.spec.ts b/arkguard/test/ut/arkobfuscator/ArkObfuscator.spec.ts index 1d4c9b1bb9829bb9a914131fd563454d29df5262..89cba1945921edec61072ab680f813db25229658 100644 --- a/arkguard/test/ut/arkobfuscator/ArkObfuscator.spec.ts +++ b/arkguard/test/ut/arkobfuscator/ArkObfuscator.spec.ts @@ -260,6 +260,15 @@ class Demo{ } expect(languageSet).to.deep.equal(UnobfuscationCollections.reservedLangForProperty); }); + + it('Tester: test case for enable annotation', function (){ + let configPath = "test/ut/arkobfuscator/iniTestObfConfig.json" + let obfuscator: ArkObfuscator = new ArkObfuscator(); + let config = FileUtils.readFileAsJson(configPath) as IOptions; + obfuscator.init(config); + + expect(config.mAllowEtsAnnotations).to.be.true; + }); }); }); diff --git a/arkguard/test/ut/arkobfuscator/ArkObfuscator2.spec.ts b/arkguard/test/ut/arkobfuscator/ArkObfuscator2.spec.ts index 57e552d25454399ac2feedd0138f4edc55f3d310..a345d5feb3e538a83a7bc568c0db1253cd83f8e3 100644 --- a/arkguard/test/ut/arkobfuscator/ArkObfuscator2.spec.ts +++ b/arkguard/test/ut/arkobfuscator/ArkObfuscator2.spec.ts @@ -67,6 +67,13 @@ import { SOURCE_FILE_PATHS, projectWhiteListManager } from '../../../src/utils/P import { FilePathObj } from '../../../src/common/type'; import { historyAllUnobfuscatedNamesMap } from '../../../src/initialization/Initializer'; import path from 'path'; +import { nameCache } from '../../../src/transformers/rename/RenameIdentifierTransformer'; +import { + decodeSourcemap, + MappingsNameTypeForTest, + Source, + SourceMapLink +} from '../../../src/utils/SourceMapMergingUtil'; describe('Tester Cases for ', function () { let obfuscator: ArkObfuscator; @@ -524,6 +531,67 @@ export declare function findElement(arr: T[], callback: (item: T) => boolean) }); }); + describe('test for ArkObfuscator.convertLineBasedOnSourceMap', () => { + it('there is no location but the value is obfuscated, it should be recorded in nameacahe', () => { + const identifierCache = new Map([ + ['#Person', 'Person'], + ['obfsucationValue:31:5:35:6', 'h'], + ['getName:75:5:77:6', 'getName'] + ]); + nameCache.set('IdentifierCache', identifierCache); + const source: Source = new Source('utils.ets', null); + const previousStageSourceMap: RawSourceMap = { + version: 3, + file: 'utils.ets', + sourceRoot: '', + sources: [ 'entry/src/main/ets/pages/utils/utils.ets'], + names: [], + mappings: '', + sourcesContent: undefined, + } + const decodedSourceMap = decodeSourcemap(previousStageSourceMap as RawSourceMap); + const sourceMapLink: SourceMapLink = new SourceMapLink(decodedSourceMap as MappingsNameTypeForTest, [source]); + + const result = obfuscator.convertLineBasedOnSourceMapForTest('IdentifierCache', sourceMapLink); + const expectedResult= { + '#Person': 'Person', + 'obfsucationValue': 'h' + }; + const compareResult = JSON.stringify(result) === JSON.stringify(expectedResult); + expect(compareResult).to.be.true; + }); + + it('there is start and end location, it should be recorded in nameacahe', () => { + const identifierCache = new Map([ + ['#Person', 'Person'], + ['#foo:1:1:3:2', 'foo'], + ['getName:75:5:77:6', 'getName'] + ]); + nameCache.set('IdentifierCache', identifierCache); + const source: Source = new Source('file.ts', null); + const previousStageSourceMap: RawSourceMap = { + "version": 3, + "file": "file.ts", + "sources": [ + "entry/src/main/ets/pages/file.ts" + ], + "names": [], + "mappings": "AAAA,MAAM,UAAU,GAAG;IACjB,OAAO,CAAC,CAAC;AACX,CAAC", + "sourceRoot": "" + } + const decodedSourceMap = decodeSourcemap(previousStageSourceMap as RawSourceMap); + const sourceMapLink: SourceMapLink = new SourceMapLink(decodedSourceMap as MappingsNameTypeForTest, [source]); + + const result = obfuscator.convertLineBasedOnSourceMapForTest('IdentifierCache', sourceMapLink); + const expectedResult= { + '#Person': 'Person', + '#foo:1:3': 'foo' + }; + const compareResult = JSON.stringify(result) === JSON.stringify(expectedResult); + expect(compareResult).to.be.true; + }); + }); + describe('test for clearGlobalCaches', () => { beforeEach(() => { PropCollections.globalMangledTable.set('test1', 'obfuscated1'); diff --git a/arkguard/test/ut/arkobfuscator/iniTestObfConfig.json b/arkguard/test/ut/arkobfuscator/iniTestObfConfig.json index c4ce5a7e3f7c189ce3119e04563df632d13371a1..c3373c14e770de596f085f95f63f772e808f60fa 100644 --- a/arkguard/test/ut/arkobfuscator/iniTestObfConfig.json +++ b/arkguard/test/ut/arkobfuscator/iniTestObfConfig.json @@ -16,5 +16,6 @@ "mReservedToplevelNames": ["a*", "*shoul?keep*", "func2"] }, "mEnableSourceMap": false, - "mEnableNameCache": false + "mEnableNameCache": false, + "mAllowEtsAnnotations": true } \ No newline at end of file diff --git a/arkguard/test/ut/initialization/ConfigResolver-hsp.spec.ts b/arkguard/test/ut/initialization/ConfigResolver-hsp.spec.ts index 93c20dfafab78c0178e60b64d346ef95e0df8c4f..37031bc400e776c45b2fc6b2329ddb149db64a97 100644 --- a/arkguard/test/ut/initialization/ConfigResolver-hsp.spec.ts +++ b/arkguard/test/ut/initialization/ConfigResolver-hsp.spec.ts @@ -259,6 +259,7 @@ describe('hsp support consumerFiles', () => { localHspConfig.dependencies.hars.push(remoteHarObfFile); const hspResolver = new ObConfigResolver({ obfuscationOptions: localHspConfig, compileHar: false, compileShared: true }, printObfLogger); hspResolver.resolveObfuscationConfigs(); + hspResolver.emitConsumerConfigFiles(); const hspObfuscationContent = fs.readFileSync(localHspConfig.exportRulePath, 'utf-8'); expect(hspObfuscationContent).not.to.include('-disable-obfuscation'); @@ -334,6 +335,7 @@ describe('hsp support consumerFiles', () => { localHarConfig.dependencies.hspLibraries?.push(localHspConfig.selfConfig); const localHarResolver = new ObConfigResolver({ obfuscationOptions: localHarConfig, compileHar: true, compileShared: false }, printObfLogger); localHarResolver.resolveObfuscationConfigs(); + localHarResolver.emitConsumerConfigFiles(); const localHarObfuscationContent = fs.readFileSync(localHarConfig.exportRulePath, 'utf-8'); @@ -412,6 +414,7 @@ describe('hsp support consumerFiles', () => { localHarConfig.dependencies.hsps?.push(remoteHspObfFile); const localHarResolver = new ObConfigResolver({ obfuscationOptions: localHarConfig, compileHar: true, compileShared: false }, printObfLogger); localHarResolver.resolveObfuscationConfigs(); + localHarResolver.emitConsumerConfigFiles(); const localHarObfuscationContent = fs.readFileSync(localHarConfig.exportRulePath, 'utf-8'); @@ -589,6 +592,8 @@ describe('hsp support consumerFiles', () => { localMainHspConfig.dependencies.hsps?.push(remoteHspObfFile); const localMainHspResolver = new ObConfigResolver({ obfuscationOptions: localMainHspConfig, compileHar: false, compileShared: true }, printObfLogger); localMainHspResolver.resolveObfuscationConfigs(); + localMainHspResolver.emitConsumerConfigFiles(); + const localMainHspObfuscationContent = fs.readFileSync(localMainHspConfig.exportRulePath, 'utf-8'); expect(localMainHspObfuscationContent).not.to.include('-enable-filename-obfuscation'); diff --git a/arkguard/test/ut/initialization/ConfigResolver.spec.ts b/arkguard/test/ut/initialization/ConfigResolver.spec.ts index f5b9bc480a08896c7d224991d512017553b34552..26c25a6592f3f3d3c79d1161a5a48c9f3a031e04 100644 --- a/arkguard/test/ut/initialization/ConfigResolver.spec.ts +++ b/arkguard/test/ut/initialization/ConfigResolver.spec.ts @@ -956,6 +956,24 @@ describe('test for ConfigResolve', function() { expect(configs.options.enableLibObfuscationOptions).to.be.true; }); + + it('should handle config correctly when enable bytecode obfuscation options', () => { + const configs: MergedConfig = new MergedConfig(); + configs.options = new ObOptionsForTest(); + + const configPath = './test/testData/obfuscation/enable_lib_obfuscation_options/obfuscation-rule.txt'; + const data = ` + -enable-bytecode-obfuscation + -enable-bytecode-obfuscation-debugging + -enable-bytecode-obfuscation-enhanced + -enable-bytecode-obfuscation-arkui + `; + newObConfigResolver.handleConfigContentForTest(data, configs, configPath); + expect(configs.options.bytecodeObf.enable).to.be.true; + expect(configs.options.bytecodeObf.debugging).to.be.true; + expect(configs.options.bytecodeObf.enhanced).to.be.true; + expect(configs.options.bytecodeObf.obfArkUI).to.be.true; + }); }); describe('1: test Api collectSystemApiWhitelist', function() { @@ -1188,6 +1206,52 @@ describe('test for ConfigResolve', function() { fs.unlinkSync(systemApiPath); }); + + it('1-5: test collectSystemApiWhitelist: -enable-bytecode-obfuscation', function () { + let obfuscationCacheDir = path.join(OBFUSCATE_TESTDATA_DIR, 'bytecode_obfuscation'); + let obfuscationOptions = { + 'selfConfig': { + 'ruleOptions': { + 'enable': true, + 'rules': [ + path.join(OBFUSCATE_TESTDATA_DIR, 'bytecode_obfuscation/bytecode_obfuscation.txt') + ] + }, + 'consumerRules': [], + }, + 'dependencies': { + 'libraries': [], + 'hars': [] + }, + 'obfuscationCacheDir': obfuscationCacheDir, + 'sdkApis': [ + path.join(OBFUSCATE_TESTDATA_DIR, 'system_api.d.ts') + ] + }; + let projectConfig = { + obfuscationOptions, + compileHar: false + }; + const obConfig: ObConfigResolver = new ObConfigResolver(projectConfig, undefined); + obConfig.resolveObfuscationConfigs(); + const reservedSdkApiForProp = UnobfuscationCollections.reservedSdkApiForProp; + const reservedSdkApiForGlobal = UnobfuscationCollections.reservedSdkApiForGlobal; + const reservedSdkApiForLocal = UnobfuscationCollections.reservedSdkApiForLocal; + + expect(reservedSdkApiForProp.size == 12).to.be.true; + expect(reservedSdkApiForGlobal.size == 3).to.be.true; + expect(reservedSdkApiForLocal.size == 8).to.be.true; + UnobfuscationCollections.clear(); + + let systemApiPath = obfuscationCacheDir + '/systemApiCache.json'; + const data = fs.readFileSync(systemApiPath, 'utf8'); + const systemApiContent = JSON.parse(data); + + expect(systemApiContent.ReservedLocalNames.length == 8).to.be.true; + expect(systemApiContent.ReservedPropertyNames.length == 12).to.be.true; + expect(systemApiContent.ReservedGlobalNames.length == 3).to.be.true; + fs.unlinkSync(systemApiPath); + }); }); }); @@ -2015,6 +2079,24 @@ describe('test for ConfigResolve', function() { const result = enableObfuscateFileName(isPackageModules, projectConfig); expect(result).to.be.false; }); + + it('should return false if obfuscation is enabled and bytecodeObf is enable', () => { + const isPackageModules = false; + const projectConfig = { + obfuscationMergedObConfig: { + options: { + disableObfuscation: false, + enableFileNameObfuscation: true, + bytecodeObf: { + enable: true + }, + }, + }, + buildMode: "not Debug" + }; + const result = enableObfuscatedFilePathConfig(isPackageModules, projectConfig); + expect(result).to.be.false; + }); }); describe('getRelativeSourcePath', () => { @@ -2171,6 +2253,7 @@ describe('test for ConfigResolve', function() { AtKeepCollections.clear(); const obConfigResolver = new ObConfigResolver(projectConfig, printObfLogger); obConfigResolver.resolveObfuscationConfigs(); + obConfigResolver.emitConsumerConfigFiles(); const atKeepContent = fs.readFileSync(sourceObConfig.exportRulePath, 'utf-8'); expect(atKeepContent).to.include('-enable-property-obfuscation'); expect(atKeepContent).to.include('-keep-global-name'); diff --git a/arkguard/test/ut/initialization/Initializer.spec.ts b/arkguard/test/ut/initialization/Initializer.spec.ts index 69ae8b1a74a59bea840589dc173b8265e4ee86c8..7657a550feefd6f7514ad08989fb70c4414ab04c 100644 --- a/arkguard/test/ut/initialization/Initializer.spec.ts +++ b/arkguard/test/ut/initialization/Initializer.spec.ts @@ -14,11 +14,23 @@ */ import { - clearHistoryUnobfuscatedMap, - historyAllUnobfuscatedNamesMap, - historyUnobfuscatedPropMap + clearHistoryUnobfuscatedMap, + historyAllUnobfuscatedNamesMap, + historyUnobfuscatedPropMap, + initObfuscationConfig } from '../../../src/initialization/Initializer'; -import { expect } from 'chai'; +import { + expect, + assert +} from 'chai'; +import { + describe, + it +} from 'mocha'; +import { + HvigorErrorInfo, + MergedConfig, +} from '../../../src/ArkObfuscator'; describe('Tester Cases for .', function () { it('Tester Cases for .', function () { @@ -31,3 +43,76 @@ describe('Tester Cases for .', function () { expect(historyUnobfuscatedPropMap.size).to.equal(0); }); }); + +function printObfLogger(errorInfo: string, errorCodeInfo: HvigorErrorInfo | string, level: string): void { + switch (level) { + case 'warn': + console.warn(errorInfo); + break; + case 'error': + console.error(errorInfo); + break; + default: + break; + } +} +const projectConfig = { + 'obfuscationOptions': { + 'selfConfig': { + 'ruleOptions': { + 'enable': true, + 'rules': ['./test/testData/obfuscation/Configs/bytecodeObf/bytecodeObf_enable.txt'] + }, + 'consumerRules': [], + }, + 'dependencies': { + 'libraries': [], + 'hars': [] + }, + obfuscationCacheDir: "" + } +}; +interface ArkProjectConfig { + isBytecodeObfEnabled?: boolean; + isArkguardEnabled?: boolean; + allowEtsAnnotations?: boolean; + obfuscationMergedObConfig?: MergedConfig; +} + +describe('test for set arkguard mode property correctly for arkProjectConfig', function () { + describe('test for set arkguard mode property correctly for arkProjectConfig', () => { + it('should set isBytecodeObfEnabled when enable bytecodeObf', () => { + const arkProjectConfig: ArkProjectConfig = {}; + initObfuscationConfig(projectConfig, arkProjectConfig, printObfLogger); + expect(arkProjectConfig.isBytecodeObfEnabled).to.be.true; + expect(arkProjectConfig.isArkguardEnabled).to.be.false; + }); + + it('should set isArkguardEnabled when enable arkguardObf', () => { + const arkProjectConfig: ArkProjectConfig = {}; + projectConfig.obfuscationOptions.selfConfig.ruleOptions.rules = ['./test/testData/obfuscation/Configs/bytecodeObf/arkguard_enable.txt']; + initObfuscationConfig(projectConfig, arkProjectConfig, printObfLogger); + expect(arkProjectConfig.isArkguardEnabled).to.be.true; + expect(arkProjectConfig.isBytecodeObfEnabled).to.be.false; + }); + + it('should not set isArkguardEnabled and isBytecodeObfEnabled when obf is disabled', () => { + const arkProjectConfig: ArkProjectConfig = {}; + projectConfig.obfuscationOptions.selfConfig.ruleOptions.enable = false; + initObfuscationConfig(projectConfig, arkProjectConfig, printObfLogger); + expect(arkProjectConfig.isBytecodeObfEnabled).to.be.undefined; + expect(arkProjectConfig.isArkguardEnabled).to.be.undefined; + }); + + it('should not set enableEtsAnnotation if allowEtsAnnotations is enabled in arkProjectConfig', () => { + const arkProjectConfig: ArkProjectConfig = { + allowEtsAnnotations: true, + obfuscationMergedObConfig: new MergedConfig(), + }; + projectConfig.obfuscationOptions.selfConfig.ruleOptions.enable = true; + projectConfig.obfuscationOptions.selfConfig.ruleOptions.rules = ['./test/testData/obfuscation/Configs/bytecodeObf/arkguard_enable.txt']; + initObfuscationConfig(projectConfig, arkProjectConfig, printObfLogger); + expect(arkProjectConfig.obfuscationMergedObConfig?.options.enableEtsAnnotation).to.be.true; + }); + }); +}); diff --git a/arkguard/test/ut/transformer/RenameIdentifierTransformer.spec.ts b/arkguard/test/ut/transformer/RenameIdentifierTransformer.spec.ts index 6082c194a381940cfbbcd3d30d0bacf0188d3a3c..41856bcf8d6604e92596ab26aa214f1a893c6fd3 100644 --- a/arkguard/test/ut/transformer/RenameIdentifierTransformer.spec.ts +++ b/arkguard/test/ut/transformer/RenameIdentifierTransformer.spec.ts @@ -617,11 +617,138 @@ describe('Teste Cases for .', function () { const expectContent = `export declare function foo(para: number): void;`; assert.strictEqual(compareStringsIgnoreNewlines(actualContent, expectContent), true); }) + + it('should obfuscate annotationDeclaration when top-level obfuscation is enable', () => { + let options: IOptions = { + 'mNameObfuscation': { + 'mEnable': true, + 'mRenameProperties': false, + 'mReservedProperties': [], + 'mTopLevel': true, + 'mKeepParameterNames': false + }, + 'mAllowEtsAnnotations': true + }; + assert.strictEqual(options !== undefined, true); + const renameIdentifierFactory = secharmony.transformerPlugin.createTransformerFactory(options); + const fileContent = `@interface __$$ETS_ANNOTATION$$__Anno1 {prop1: number = 1}`; + const textWriter = ts.createTextWriter('\n'); + let arkobfuscator = new ArkObfuscatorForTest(); + arkobfuscator.init(options); + const sourceFile: ts.SourceFile = ts.createSourceFile('demo.ts', fileContent, ts.ScriptTarget.ES2015, true, undefined, { + 'etsAnnotationsEnable': true + }, true); + let transformedResult: ts.TransformationResult = ts.transform(sourceFile, [renameIdentifierFactory], {}); + let ast: ts.SourceFile = transformedResult.transformed[0] as ts.SourceFile; + arkobfuscator.createObfsPrinter(ast.isDeclarationFile).writeFile(ast, textWriter, undefined); + const actualContent = textWriter.getText(); + const expectContent = `@interface __$$ETS_ANNOTATION$$__a { + prop1: number = 1; + }`; + assert.strictEqual(compareStringsIgnoreNewlines(actualContent, expectContent), true); + PropCollections.clearPropsCollections(); + }) + + it('should not obfuscate when annotationName is in top-level whitelist', function () { + let options: IOptions = { + 'mNameObfuscation': { + 'mEnable': true, + 'mRenameProperties': false, + 'mReservedProperties': [], + 'mTopLevel': true, + 'mKeepParameterNames': false + }, + 'mAllowEtsAnnotations': true + }; + assert.strictEqual(options !== undefined, true); + PropCollections.reservedProperties.add('Anno1'); + const renameIdentifierFactory = secharmony.transformerPlugin.createTransformerFactory(options); + const fileContent = `@interface __$$ETS_ANNOTATION$$__Anno1 {prop1: number = 1}`; + const textWriter = ts.createTextWriter('\n'); + let arkobfuscator = new ArkObfuscatorForTest(); + arkobfuscator.init(options); + const sourceFile: ts.SourceFile = ts.createSourceFile('demo.ts', fileContent, ts.ScriptTarget.ES2015, true, undefined, { + 'etsAnnotationsEnable': true + }, true); + let transformedResult: ts.TransformationResult = ts.transform(sourceFile, [renameIdentifierFactory], {}); + let ast: ts.SourceFile = transformedResult.transformed[0] as ts.SourceFile; + arkobfuscator.createObfsPrinter(ast.isDeclarationFile).writeFile(ast, textWriter, undefined); + const actualContent = textWriter.getText(); + const expectContent = `@interface __$$ETS_ANNOTATION$$__Anno1 { + prop1: number = 1; + }`; + assert.strictEqual(compareStringsIgnoreNewlines(actualContent, expectContent), true); + PropCollections.clearPropsCollections(); + }) + + it('should not obfuscate when annotationName is exported and not enable export-obfuscation', function () { + let options: IOptions = { + 'mNameObfuscation': { + 'mEnable': true, + 'mRenameProperties': false, + 'mReservedProperties': [], + 'mTopLevel': true, + 'mKeepParameterNames': false + }, + 'mAllowEtsAnnotations': true, + 'mExportObfuscation': false, + }; + assert.strictEqual(options !== undefined, true); + const renameIdentifierFactory = secharmony.transformerPlugin.createTransformerFactory(options); + const fileContent = `export @interface __$$ETS_ANNOTATION$$__Anno1 {prop1: number = 1}`; + const textWriter = ts.createTextWriter('\n'); + let arkobfuscator = new ArkObfuscatorForTest(); + arkobfuscator.init(options); + const sourceFile: ts.SourceFile = ts.createSourceFile('demo.ts', fileContent, ts.ScriptTarget.ES2015, true, undefined, { + 'etsAnnotationsEnable': true + }, true); + let transformedResult: ts.TransformationResult = ts.transform(sourceFile, [renameIdentifierFactory], {}); + let ast: ts.SourceFile = transformedResult.transformed[0] as ts.SourceFile; + arkobfuscator.createObfsPrinter(ast.isDeclarationFile).writeFile(ast, textWriter, undefined); + const actualContent = textWriter.getText(); + const expectContent = `export @interface __$$ETS_ANNOTATION$$__Anno1 { + prop1: number = 1; + }`; + assert.strictEqual(compareStringsIgnoreNewlines(actualContent, expectContent), true); + PropCollections.clearPropsCollections(); + }) + + it('should obfuscate when annotationName is exported and enable export-obfuscation', function () { + let options: IOptions = { + 'mNameObfuscation': { + 'mEnable': true, + 'mRenameProperties': false, + 'mReservedProperties': [], + 'mTopLevel': true, + 'mKeepParameterNames': false + }, + 'mAllowEtsAnnotations': true, + 'mExportObfuscation': true, + }; + assert.strictEqual(options !== undefined, true); + const renameIdentifierFactory = secharmony.transformerPlugin.createTransformerFactory(options); + const fileContent = `export @interface __$$ETS_ANNOTATION$$__Anno1 {prop1: number = 1}`; + const textWriter = ts.createTextWriter('\n'); + let arkobfuscator = new ArkObfuscatorForTest(); + arkobfuscator.init(options); + const sourceFile: ts.SourceFile = ts.createSourceFile('demo.ts', fileContent, ts.ScriptTarget.ES2015, true, undefined, { + 'etsAnnotationsEnable': true + }, true); + let transformedResult: ts.TransformationResult = ts.transform(sourceFile, [renameIdentifierFactory], {}); + let ast: ts.SourceFile = transformedResult.transformed[0] as ts.SourceFile; + arkobfuscator.createObfsPrinter(ast.isDeclarationFile).writeFile(ast, textWriter, undefined); + const actualContent = textWriter.getText(); + const expectContent = `export @interface __$$ETS_ANNOTATION$$__a { + prop1: number = 1; + }`; + assert.strictEqual(compareStringsIgnoreNewlines(actualContent, expectContent), true); + PropCollections.clearPropsCollections(); + }) }) }) }) -function compareStringsIgnoreNewlines(str1: string, str2: string): boolean { +export function compareStringsIgnoreNewlines(str1: string, str2: string): boolean { const normalize = (str: string) => str.replace(/[\n\r\s]+/g, ''); return normalize(str1) === normalize(str2); } \ No newline at end of file diff --git a/arkguard/test/ut/transformer/RenamePropertiesTransformer.spec.ts b/arkguard/test/ut/transformer/RenamePropertiesTransformer.spec.ts index 24f8a3f516a3d97fe3d5631ff23442a46d79746c..213e75d6679d6bc377f3c973b6e3520b8a8dbc6f 100644 --- a/arkguard/test/ut/transformer/RenamePropertiesTransformer.spec.ts +++ b/arkguard/test/ut/transformer/RenamePropertiesTransformer.spec.ts @@ -33,6 +33,9 @@ import ts, { } from 'typescript'; import secharmony from '../../../src/transformers/rename/RenamePropertiesTransformer'; import { ArkObfuscator } from '../../../src/ArkObfuscator'; +import { compareStringsIgnoreNewlines } from './RenameIdentifierTransformer.spec'; +import { ArkObfuscatorForTest } from '../../../src/ArkObfuscatorForTest' +import { PropCollections } from '../../../src/utils/CommonCollections'; describe('Tester Cases for .', function () { @@ -202,5 +205,87 @@ describe('Tester Cases for .', function () { expect(((node.indexType as UnionTypeNode).types[0] as LiteralTypeNode).literal).to.be.equal(((parentNodes.indexType as UnionTypeNode).types[0] as LiteralTypeNode).literal); expect(((node.indexType as UnionTypeNode).types[1] as LiteralTypeNode).literal).to.be.equal(((parentNodes.indexType as UnionTypeNode).types[1] as LiteralTypeNode).literal); }); + + it('should not rename property in annotation decl and callsite when using prop', function () { + ArkObfuscator.isKeptCurrentFile = false; + options = { + mNameObfuscation: { + mEnable: true, + mNameGeneratorType: 1, + mRenameProperties: true, + mKeepStringProperty: false, + mReservedProperties: [] + }, + }; + const renameIdentifierFactory = secharmony.transformerPlugin.createTransformerFactory(options as IOptions); + const fileContent = ` + @interface __$$ETS_ANNOTATION$$__Anno1 { + prop1: number = 1; + } + @__$$ETS_ANNOTATION$$__Anno1({prop: 1}) + class myClass1 { + prop1: number = 1; + } + let var1: myClass1 = new myClass1(); + let var2 = var1.prop1; + `; + const textWriter = ts.createTextWriter('\n'); + let arkobfuscator = new ArkObfuscatorForTest(); + arkobfuscator.init(options); + const sourceFile: ts.SourceFile = ts.createSourceFile('demo.ts', fileContent, ts.ScriptTarget.ES2015, true, undefined, { + 'etsAnnotationsEnable': true + }, true); + let transformedResult: ts.TransformationResult = ts.transform(sourceFile, [renameIdentifierFactory], {}); + let ast: ts.SourceFile = transformedResult.transformed[0] as ts.SourceFile; + arkobfuscator.createObfsPrinter(ast.isDeclarationFile).writeFile(ast, textWriter, undefined); + const actualContent = textWriter.getText(); + const expectContent = ` + @interface __$$ETS_ANNOTATION$$__Anno1 { + prop1: number = 1; + } + @__$$ETS_ANNOTATION$$__Anno1({ prop: 1 }) + class myClass1 { + g: number = 1; + } + let var1: myClass1 = new myClass1(); + let var2 = var1.g; + `; + assert.strictEqual(compareStringsIgnoreNewlines(actualContent, expectContent), true); + PropCollections.clearPropsCollections(); + }); + + it('should rename annotation called as prop when using prop obfuscation', function () { + ArkObfuscator.isKeptCurrentFile = false; + options = { + mNameObfuscation: { + mEnable: true, + mNameGeneratorType: 1, + mRenameProperties: true, + mKeepStringProperty: false, + mReservedProperties: [] + }, + }; + const renameIdentifierFactory = secharmony.transformerPlugin.createTransformerFactory(options as IOptions); + const fileContent = ` + @ns.__$$ETS_ANNOTATION$$__Anno1({prop: 1}) + class myClass1 {} + `; + const textWriter = ts.createTextWriter('\n'); + let arkobfuscator = new ArkObfuscatorForTest(); + arkobfuscator.init(options); + const sourceFile: ts.SourceFile = ts.createSourceFile('demo.ts', fileContent, ts.ScriptTarget.ES2015, true, undefined, { + 'etsAnnotationsEnable': true + }, true); + let transformedResult: ts.TransformationResult = ts.transform(sourceFile, [renameIdentifierFactory], {}); + let ast: ts.SourceFile = transformedResult.transformed[0] as ts.SourceFile; + arkobfuscator.createObfsPrinter(ast.isDeclarationFile).writeFile(ast, textWriter, undefined); + const actualContent = textWriter.getText(); + const expectContent = ` + @ns.__$$ETS_ANNOTATION$$__g({ prop: 1 }) + class myClass1 {} + `; + assert.strictEqual(compareStringsIgnoreNewlines(actualContent, expectContent), true); + PropCollections.clearPropsCollections(); + }); }); }); diff --git a/arkguard/test/ut/utils/ApiExtractor.spec.ts b/arkguard/test/ut/utils/ApiExtractor.spec.ts index 0f29756774df4f0bfe1b9963a446f8849bed3198..628598b86bf5eced441aa88919fdf94b6dd059b2 100644 --- a/arkguard/test/ut/utils/ApiExtractor.spec.ts +++ b/arkguard/test/ut/utils/ApiExtractor.spec.ts @@ -1091,6 +1091,22 @@ describe('test for ApiExtractor', function () { expect(AtKeepCollections.keepAsConsumer.propertyNames.has('globalFunc04')).to.be.true; expect(AtKeepCollections.keepAsConsumer.propertyNames.has('globalMyClass04')).to.be.true; }) + it('should collect atKeep names from annotation declarations if enabled', function () { + let filePath: string = 'test/ut/utils/apiTest_visitAtKeepNames/atKeepAnnotation.ets'; + AtKeepCollections.clear(); + scanProjectConfig.mEnableAtKeep = true; + collectApi(filePath, ApiExtractor.ApiType.PROJECT); + expect(AtKeepCollections.keepSymbol.globalNames.size).to.be.equal(2); + expect(AtKeepCollections.keepSymbol.globalNames.has('MyAnnotation01')).to.be.true; + expect(AtKeepCollections.keepSymbol.globalNames.has('MyAnnotation02')).to.be.true; + expect(AtKeepCollections.keepSymbol.propertyNames.size).to.be.equal(1); + expect(AtKeepCollections.keepSymbol.propertyNames.has('MyAnnotation02')).to.be.true; + expect(AtKeepCollections.keepAsConsumer.globalNames.size).to.be.equal(2); + expect(AtKeepCollections.keepAsConsumer.globalNames.has('MyAnnotation04')).to.be.true; + expect(AtKeepCollections.keepAsConsumer.globalNames.has('MyAnnotation05')).to.be.true; + expect(AtKeepCollections.keepAsConsumer.propertyNames.size).to.be.equal(1); + expect(AtKeepCollections.keepAsConsumer.globalNames.has('MyAnnotation05')).to.be.true; + }) it('should collect atKeep names from .ets', function () { let filePath: string = 'test/ut/utils/apiTest_visitAtKeepNames/atKeepTest01.ets'; AtKeepCollections.clear(); @@ -1200,5 +1216,15 @@ describe('test for ApiExtractor', function () { expect(fileWhiteList.fileKeepInfo.stringProperties.size).to.be.equal(0); expect(fileWhiteList.fileKeepInfo.structProperties.size).to.be.equal(0); }) + it('should collect decoratorMap if need scanDecorator', function () { + let filePath: string = 'test/ut/utils/apiTest_collectFileWhiteList/collectFileWhiteList02.ets'; + scanProjectConfig.scanDecorator = true; + collectApi(filePath, ApiExtractor.ApiType.PROJECT); + const fileWhiteList: FileWhiteList = projectWhiteListManager?.getFileWhiteListMap().get(filePath)!; + if (fileWhiteList?.bytecodeObfuscateKeepInfo?.decoratorMap) { + const decoratorKeys = Object.keys(fileWhiteList.bytecodeObfuscateKeepInfo.decoratorMap); + expect(decoratorKeys.length).to.be.greaterThan(0); + } + }) }) }); \ No newline at end of file diff --git a/arkguard/test/ut/utils/ApiReader.spec.ts b/arkguard/test/ut/utils/ApiReader.spec.ts index 3d0e7ed55e06bd35a9960aff206fefb9c334ab81..32563048f2542087916c4c90acfc52b65dc082fe 100644 --- a/arkguard/test/ut/utils/ApiReader.spec.ts +++ b/arkguard/test/ut/utils/ApiReader.spec.ts @@ -13,7 +13,12 @@ * limitations under the License. */ -import { readProjectPropertiesByCollectedPaths, ReseverdSetForArkguard } from '../../../src/common/ApiReader'; +import { + readProjectPropertiesByCollectedPaths, + ReseverdSetForArkguard, + scanProjectConfig, + initScanProjectConfig +} from '../../../src/common/ApiReader'; import { assert, expect } from 'chai'; import { NameGeneratorType } from '../../../src/generator/NameFactory'; import { @@ -40,7 +45,7 @@ describe('test for ApiReader', function () { mRenameProperties: true, mKeepStringProperty: false, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -88,7 +93,7 @@ describe('test for ApiReader', function () { mRenameProperties: true, mKeepStringProperty: false, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -142,7 +147,7 @@ describe('test for ApiReader', function () { mRenameProperties: false, mKeepStringProperty: false, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -181,7 +186,7 @@ describe('test for ApiReader', function () { mRenameProperties: false, mKeepStringProperty: false, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -270,7 +275,7 @@ describe('test for ApiReader', function () { mRenameProperties: true, mKeepStringProperty: false, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -360,7 +365,7 @@ describe('test for ApiReader', function () { mKeepStringProperty: false, mTopLevel: true, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -396,7 +401,7 @@ describe('test for ApiReader', function () { mKeepStringProperty: false, mTopLevel: true, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -486,7 +491,7 @@ describe('test for ApiReader', function () { mKeepStringProperty: false, mTopLevel: false, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -630,7 +635,7 @@ describe('test for ApiReader', function () { mKeepStringProperty: false, mTopLevel: true, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -776,7 +781,7 @@ describe('test for ApiReader', function () { mKeepStringProperty: false, mTopLevel: true, mNameGeneratorType: NameGeneratorType.ORDERED, - mReservedNames: [], + mReservedNames: [], mReservedToplevelNames: [] } }; @@ -876,5 +881,58 @@ describe('test for ApiReader', function () { expect(fileWhiteList.fileKeepInfo.exported.propertyNames.has('otherElement2')).to.be.false; expect(fileWhiteList.fileKeepInfo.exported.propertyNames.has('o2')).to.be.true; }); + it('decorate collect test', function () { + const filePath = 'test/ut/utils/apiTest_collectFileWhiteList/collectFileWhiteList02.ets' + const fileList: Set = new Set([filePath]); + let config: IOptions = { + mNameObfuscation: { + mEnable: true, + mReservedProperties: [], + mRenameProperties: true, + mKeepStringProperty: false, + mTopLevel: false, + mNameGeneratorType: NameGeneratorType.ORDERED, + mReservedNames: [], + mReservedToplevelNames: [] + } + }; + let cachePath = 'test/ut/utils/obfuscation'; + initProjectWhiteListManager(cachePath, false, false); + let projectAndLibs: ReseverdSetForArkguard = + readProjectPropertiesByCollectedPaths(fileList, + { + mNameObfuscation: config.mNameObfuscation, + mExportObfuscation: true, + mKeepFileSourceCode: { + mKeepSourceOfPaths: new Set(), + mkeepFilesAndDependencies: new Set(), + } + }, true, true); + const fileWhiteList: FileWhiteList = projectWhiteListManager!.getFileWhiteListMap().get(filePath)!; + if (fileWhiteList?.bytecodeObfuscateKeepInfo?.decoratorMap) { + const decoratorKeys = Object.keys(fileWhiteList.bytecodeObfuscateKeepInfo.decoratorMap); + expect(decoratorKeys.length).to.be.greaterThan(0); + } + }); + }); + + describe('test initScanProjectConfig', function () { + it('scanDecorator is false', function () { + let customProfiles = {} + initScanProjectConfig(customProfiles, false, false) + expect(scanProjectConfig.scanDecorator).to.be.false; + }); + + it('scanDecorator is default', function () { + let customProfiles = {} + initScanProjectConfig(customProfiles, false) + expect(scanProjectConfig.scanDecorator).to.be.false; + }); + + it('scanDecorator is true', function () { + let customProfiles = {} + initScanProjectConfig(customProfiles, false, true) + expect(scanProjectConfig.scanDecorator).to.be.true; + }); }); }); \ No newline at end of file diff --git a/arkguard/test/ut/utils/KeepParameterUtils.spec.ts b/arkguard/test/ut/utils/KeepParameterUtils.spec.ts index 9c1e22f976a22e8c704a6449af40ebb7d9428cc5..5942689068cb9b4ad637a34ad6fa867d5a8b27af 100644 --- a/arkguard/test/ut/utils/KeepParameterUtils.spec.ts +++ b/arkguard/test/ut/utils/KeepParameterUtils.spec.ts @@ -212,8 +212,8 @@ describe('Tester Cases for shouldKeepParameter.', function () { it('Tester 2-10: When node is method and method name is not kept, shouldKeepParameter returns false', function () { let content = `declare class A { - constructor(para1: number); - method(para2: number): void; + constructor(para11: number); + method1(para12: number): void; }`; const ast = ts.createSourceFile(path, content, ts.ScriptTarget.ES2015, true); let method: ts.MethodDeclaration = (ast.statements[0] as ts.ClassDeclaration).members[1] as ts.MethodDeclaration; diff --git a/arkguard/test/ut/utils/NodeUtils.spec.ts b/arkguard/test/ut/utils/NodeUtils.spec.ts index ff2672b37ec77148a7e5a75b13f2e583b5ee3d87..5411595ce4413e78065c4131a946725faac968ac 100644 --- a/arkguard/test/ut/utils/NodeUtils.spec.ts +++ b/arkguard/test/ut/utils/NodeUtils.spec.ts @@ -581,4 +581,47 @@ describe('test for NodeUtils', function () { expect(hasExportModifier(sourceFile.statements[0])).to.be.true; }) }) + + describe('test for isObjectLiteralInAnnotation', function () { + it('should return false when node is not ObjectLiteral', function () { + const node = ts.factory.createObjectBindingPattern([]); + expect(NodeUtils.isObjectLiteralInAnnotation(node, '.d.ets')).to.be.false; + }) + it('should return true if annotation is in .d.ets files', function () { + const node = ts.factory.createObjectLiteralExpression( + [ts.factory.createPropertyAssignment( + ts.factory.createIdentifier("a"), + ts.factory.createNumericLiteral("1") + )], + false + ); + const expr = ts.factory.createCallExpression( + ts.factory.createIdentifier("Anno1"), + undefined, + [node] + ); + (node as Mutable).parent = expr; + const decorator = ts.factory.createDecorator(expr); + (expr as Mutable).parent = decorator; + expect(NodeUtils.isObjectLiteralInAnnotation(node, '.d.ets')).to.be.true; + }) + it('should return true if annotation is in .ts files and with annotationPrefix', function () { + const node = ts.factory.createObjectLiteralExpression( + [ts.factory.createPropertyAssignment( + ts.factory.createIdentifier("a"), + ts.factory.createNumericLiteral("1") + )], + false + ); + const expr = ts.factory.createCallExpression( + ts.factory.createIdentifier("__$$ETS_ANNOTATION$$__Anno1"), + undefined, + [node] + ); + (node as Mutable).parent = expr; + const decorator = ts.factory.createDecorator(expr); + (expr as Mutable).parent = decorator; + expect(NodeUtils.isObjectLiteralInAnnotation(node, '.ts')).to.be.true; + }) +}) }) \ No newline at end of file diff --git a/arkguard/test/ut/utils/PrinterTimeAndmemUtils.spec.ts b/arkguard/test/ut/utils/PrinterTimeAndmemUtils.spec.ts index 4e7c2ce735dd3957d42034a478d5803a8f69030a..a3675c328738d2c8ad03a09490b8fba788936e0c 100644 --- a/arkguard/test/ut/utils/PrinterTimeAndmemUtils.spec.ts +++ b/arkguard/test/ut/utils/PrinterTimeAndmemUtils.spec.ts @@ -16,20 +16,23 @@ import * as fs from 'fs'; import * as path from 'path'; import { + PerfMode, TimeAndMemTimeTracker, clearTimeAndMemPrinterData, + configurePerformancePrinter, + disablePrinterTimeAndMemConfig, enableTimeAndMemoryPrint, endSingleFileForMoreTimeEvent, getObfuscationCacheDir, getMemoryPerformanceData, getTimePerformanceData, initPerformanceTimeAndMemPrinter, + initPrinterTimeAndMemConfig, startSingleFileForMoreTimeEvent, writeTimeAndMemoryPerformanceData, } from '../../../src/utils/PrinterTimeAndMemUtils'; import { expect } from 'chai'; import { performanceTimeAndMemPrinter } from '../../../src/ArkObfuscator'; -import type { IOptions } from '../../../src/configs/IOptions'; import { printerTimeAndMemDataConfig } from '../../../src/initialization/Initializer'; describe('test Cases for .', function () { @@ -67,35 +70,50 @@ describe('test Cases for .', function () { }); describe('Tester Cases for ', () => { - it('Printer config is not set', () => { - const mCustomProfiles: IOptions = {}; - initPerformanceTimeAndMemPrinter(mCustomProfiles); - expect(performanceTimeAndMemPrinter.filesPrinter).to.be.undefined; + it('should block performance printer when mTimeAndMemPrinter is false', () => { + printerTimeAndMemDataConfig.mTimeAndMemPrinter = false; + performanceTimeAndMemPrinter.singleFilePrinter = new TimeAndMemTimeTracker(); + performanceTimeAndMemPrinter.filesPrinter = new TimeAndMemTimeTracker(); + + initPerformanceTimeAndMemPrinter(); + expect(performanceTimeAndMemPrinter.singleFilePrinter).to.be.undefined; - }); - - it('Printer config is set all false', () => { - const mCustomProfiles: IOptions = { - mPerformanceTimeAndMemPrinter: { - mFilesPrinter: false, - mSingleFilePrinter: false, - }, - }; - initPerformanceTimeAndMemPrinter(mCustomProfiles); expect(performanceTimeAndMemPrinter.filesPrinter).to.be.undefined; - expect(performanceTimeAndMemPrinter.singleFilePrinter).to.be.undefined; }); - - it('Printer config is set not all false', () => { - const mCustomProfiles: IOptions = { - mPerformanceTimeAndMemPrinter: { - mFilesPrinter: false, - mSingleFilePrinter: true, - }, - }; - initPerformanceTimeAndMemPrinter(mCustomProfiles); + + it('should not block performance printer when mTimeAndMemPrinter is true', () => { + printerTimeAndMemDataConfig.mTimeAndMemPrinter = true; + performanceTimeAndMemPrinter.singleFilePrinter = new TimeAndMemTimeTracker(); + performanceTimeAndMemPrinter.filesPrinter = new TimeAndMemTimeTracker(); + + initPerformanceTimeAndMemPrinter(); + + expect(performanceTimeAndMemPrinter.singleFilePrinter).to.not.be.undefined; expect(performanceTimeAndMemPrinter.filesPrinter).to.not.be.undefined; + }); + }); + + describe('Tester Cases for ', () => { + it('should configure performance printer for advanced mode', () => { + printerTimeAndMemDataConfig.mTimeAndMemPrinter = false; + performanceTimeAndMemPrinter.singleFilePrinter = undefined; + performanceTimeAndMemPrinter.filesPrinter = undefined; + + configurePerformancePrinter(PerfMode.ADVANCED); + expect(performanceTimeAndMemPrinter.singleFilePrinter).to.not.be.undefined; + expect(performanceTimeAndMemPrinter.filesPrinter).to.not.be.undefined; + expect(printerTimeAndMemDataConfig.mTimeAndMemPrinter).to.be.true; + }); + + it('should block performance printer for normal mode', () => { + performanceTimeAndMemPrinter.singleFilePrinter = new TimeAndMemTimeTracker(); + performanceTimeAndMemPrinter.filesPrinter = new TimeAndMemTimeTracker(); + + configurePerformancePrinter(PerfMode.NORMAL); + + expect(performanceTimeAndMemPrinter.singleFilePrinter).to.be.undefined; + expect(performanceTimeAndMemPrinter.filesPrinter).to.be.undefined; }); }); @@ -149,6 +167,22 @@ describe('test Cases for .', function () { }); }); + describe('Tester Cases for ', () => { + it('start a initPrinterTimeAndMemConfig', () => { + printerTimeAndMemDataConfig.mTimeAndMemPrinter = false; + initPrinterTimeAndMemConfig(); + expect(printerTimeAndMemDataConfig.mTimeAndMemPrinter).to.be.true; + }); + }); + + describe('Tester Cases for ', () => { + it('start a disablePrinterTimeAndMemConfig', () => { + printerTimeAndMemDataConfig.mTimeAndMemPrinter = true; + disablePrinterTimeAndMemConfig(); + expect(printerTimeAndMemDataConfig.mTimeAndMemPrinter).to.be.false; + }); + }); + describe('Tester Cases for ', () => { it('start a singleFile event for more timeEvent when mMoreTimePrint is true', () => { if (!performanceTimeAndMemPrinter.singleFilePrinter) { @@ -273,6 +307,7 @@ describe('test Cases for .', function () { }); await enableTimeAndMemoryPrint(); + await new Promise(resolve => setTimeout(resolve, 100)); expect(fs.existsSync(timePerformanceFilePath)).to.be.true; expect(fs.existsSync(memoryPerformanceFilePath)).to.be.true; @@ -281,6 +316,11 @@ describe('test Cases for .', function () { describe('Tester Cases for ', () => { it('Write file error', () => { + const projectConfig = { + obfuscationOptions: { + obfuscationCacheDir: 'test/', + }, + }; const data = [ { 'name': 'BreakpointConstants.ts', @@ -289,6 +329,7 @@ describe('test Cases for .', function () { }, ]; const fileName = ''; + getObfuscationCacheDir(projectConfig); expect(writeTimeAndMemoryPerformanceData(data, fileName)).to.be.throw; }); }); diff --git a/arkguard/test/ut/utils/ProjectCollections.spec.ts b/arkguard/test/ut/utils/ProjectCollections.spec.ts index f1f6dcd6b3e3c686c2bb4d6eb3fe959e7e70727d..1695ac1e82cb370310c4b07b3b65c05e355a7d16 100644 --- a/arkguard/test/ut/utils/ProjectCollections.spec.ts +++ b/arkguard/test/ut/utils/ProjectCollections.spec.ts @@ -26,7 +26,7 @@ import { FileWhiteList, FileContent } from '../../../src/utils/ProjectCollections'; -import { AtKeepCollections, UnobfuscationCollections } from '../../../src/utils/CommonCollections'; +import { AtIntentCollections, AtKeepCollections, UnobfuscationCollections } from '../../../src/utils/CommonCollections'; import { ApiExtractor } from '../../../src/common/ApiExtractor' import { FileUtils } from '../../../src/utils/FileUtils'; import * as fs from 'fs'; @@ -113,6 +113,8 @@ describe('test for CommonCollections', function () { expect(fileWhiteLists.fileKeepInfo.exported?.globalNames.size).to.be.equal(0); expect(fileWhiteLists.fileKeepInfo.enumProperties.size).to.be.equal(0); expect(fileWhiteLists.fileKeepInfo.stringProperties.size).to.be.equal(0); + expect(fileWhiteLists.fileKeepInfo.arkUIKeepInfo?.propertyNames.size).to.be.equal(0); + expect(fileWhiteLists.fileKeepInfo.arkUIKeepInfo?.globalNames.size).to.be.equal(0); expect(fileWhiteLists.fileReservedInfo.enumProperties.size).to.be.equal(0); expect(fileWhiteLists.fileReservedInfo.propertyParams.size).to.be.equal(0); }); @@ -159,6 +161,8 @@ describe('test for CommonCollections', function () { fileWhilteListTemp.fileKeepInfo.exported.globalNames.add('test7'); fileWhilteListTemp.fileKeepInfo.exported.propertyNames.add('test8'); fileWhilteListTemp.fileKeepInfo.stringProperties.add('test9'); + fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo.globalNames.add('test111'); + fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo.propertyNames.add('test112'); fileWhilteListTemp.fileReservedInfo.enumProperties.add('test10'); fileWhilteListTemp.fileReservedInfo.propertyParams.add('test11'); const fileWhilteList: FileWhiteList | undefined = projectWhiteListManagerForTest.getFileWhiteListMap().get('testPath3'); @@ -171,6 +175,8 @@ describe('test for CommonCollections', function () { expect(fileWhilteList?.fileKeepInfo.exported.globalNames.has('test7')).to.be.true; expect(fileWhilteList?.fileKeepInfo.exported.propertyNames.has('test8')).to.be.true; expect(fileWhilteList?.fileKeepInfo.stringProperties.has('test9')).to.be.true; + expect(fileWhilteList?.fileKeepInfo.arkUIKeepInfo.globalNames.has('test111')).to.be.true; + expect(fileWhilteList?.fileKeepInfo.arkUIKeepInfo.propertyNames.has('test112')).to.be.true; expect(fileWhilteList?.fileReservedInfo.enumProperties.has('test10')).to.be.true; expect(fileWhilteList?.fileReservedInfo.propertyParams.has('test11')).to.be.true; expect(fileWhilteListTemp.fileKeepInfo.keepSymbol?.globalNames.size).to.be.equal(1); @@ -184,6 +190,8 @@ describe('test for CommonCollections', function () { expect(fileWhilteListTemp.fileKeepInfo.stringProperties.size).to.be.equal(1); expect(fileWhilteListTemp.fileReservedInfo.enumProperties.size).to.be.equal(1); expect(fileWhilteListTemp.fileReservedInfo.propertyParams.size).to.be.equal(1); + expect(fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo.globalNames.size).to.be.equal(1); + expect(fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo.propertyNames.size).to.be.equal(1); }); it('should not collect atKeep if not enabled', () => { let projectWhiteListManager = new ProjectWhiteListManager(cachePath, false, false); @@ -198,6 +206,8 @@ describe('test for CommonCollections', function () { fileWhilteListTemp.fileKeepInfo.exported.globalNames.add('test7'); fileWhilteListTemp.fileKeepInfo.exported.propertyNames.add('test8'); fileWhilteListTemp.fileKeepInfo.stringProperties.add('test9'); + fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo.globalNames.add('test111'); + fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo.propertyNames.add('test112'); fileWhilteListTemp.fileReservedInfo.enumProperties.add('test10'); fileWhilteListTemp.fileReservedInfo.propertyParams.add('test11'); const fileWhilteList: FileWhiteList | undefined = projectWhiteListManager.getFileWhiteListMap().get('testPath4'); @@ -210,6 +220,8 @@ describe('test for CommonCollections', function () { expect(fileWhilteList?.fileKeepInfo.exported.globalNames.has('test7')).to.be.true; expect(fileWhilteList?.fileKeepInfo.exported.propertyNames.has('test8')).to.be.true; expect(fileWhilteList?.fileKeepInfo.stringProperties.has('test9')).to.be.true; + expect(fileWhilteList?.fileKeepInfo.arkUIKeepInfo.globalNames.has('test111')).to.be.true; + expect(fileWhilteList?.fileKeepInfo.arkUIKeepInfo.propertyNames.has('test112')).to.be.true; expect(fileWhilteList?.fileReservedInfo.enumProperties.has('test10')).to.be.true; expect(fileWhilteList?.fileReservedInfo.propertyParams.has('test11')).to.be.true; }); @@ -236,6 +248,8 @@ describe('test for CommonCollections', function () { fileWhilteListTemp.fileKeepInfo.exported.globalNames.add('test7'); fileWhilteListTemp.fileKeepInfo.exported.propertyNames.add('test8'); fileWhilteListTemp.fileKeepInfo.stringProperties.add('test9'); + fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo?.globalNames.add('test111'); + fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo?.propertyNames.add('test112'); fileWhilteListTemp.fileReservedInfo.enumProperties.add('test10'); fileWhilteListTemp.fileReservedInfo.propertyParams.add('test11'); projectWhiteListManager.setCurrentCollector('testPath2'); @@ -262,6 +276,10 @@ describe('test for CommonCollections', function () { expect(UnobfuscationCollections.reservedStrProp.size==0).to.be.true; expect(ApiExtractor.mConstructorPropertySet.size==0).to.be.true; expect(ApiExtractor.mEnumMemberSet.size==0).to.be.true; + expect(AtIntentCollections.globalNames.size==1).to.be.true; + expect(AtIntentCollections.propertyNames.size==1).to.be.true; + expect(AtIntentCollections.globalNames.has('test111')).to.be.true; + expect(AtIntentCollections.propertyNames.has('test112')).to.be.true; }); it('should update fileWhiteLists and projectWhiteList if is incremental(project white list changed)', () => { let projectWhiteListManager = new ProjectWhiteListManager(cachePath, true, true); @@ -281,6 +299,8 @@ describe('test for CommonCollections', function () { fileWhilteListTemp.fileKeepInfo.exported.globalNames.add('test7'); fileWhilteListTemp.fileKeepInfo.exported.propertyNames.add('test8'); fileWhilteListTemp.fileKeepInfo.stringProperties.add('test9'); + fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo.globalNames.add('test122'); + fileWhilteListTemp.fileKeepInfo.arkUIKeepInfo.propertyNames.add('test123'); fileWhilteListTemp.fileReservedInfo.enumProperties.add('test10'); fileWhilteListTemp.fileReservedInfo.propertyParams.add('test11'); fileWhilteListTemp.fileReservedInfo.propertyParams.add('test31'); @@ -313,6 +333,8 @@ describe('test for CommonCollections', function () { expect(ApiExtractor.mConstructorPropertySet.has('test31')).to.be.true; expect(UnobfuscationCollections.reservedExportName.has('test33')).to.be.true; expect(UnobfuscationCollections.reservedExportNameAndProp.has('test12')).to.be.false; + expect(AtIntentCollections.globalNames.has('test122')).to.be.true; + expect(AtIntentCollections.propertyNames.has('test123')).to.be.true; }); it('should update fileWhiteLists and projectWhiteList if is incremental(project white list not changed)', () => { let projectWhiteListManager = new ProjectWhiteListManager(cachePath, true, true); @@ -332,6 +354,24 @@ describe('test for CommonCollections', function () { expect(projectWhiteListManager.getShouldReObfuscate()).to.be.false; }); }); + + describe('test for createProjectWhiteList when bytecodeObfuscate enable', function () { + it('should add property decorated to projectWhiteList when bytecodeObfuscate enable)', () => { + let projectWhiteListManager = new ProjectWhiteListManager(cachePath, false, false); + projectWhiteListManager.setCurrentCollector("testPath5") + const fileWhiteLists = projectWhiteListManager.createFileWhiteList(); + fileWhiteLists.bytecodeObfuscateKeepInfo = { + "decoratorMap": { + "Track": ["prop1"] + } + }; + projectWhiteListManager.getFileWhiteListMap().set("testPath5", fileWhiteLists); + projectWhiteListManager.createOrUpdateWhiteListCaches(); + const cacheContent = fs.readFileSync(projectWhiteListManager.getProjectWhiteListCachePath(), 'utf-8'); + const parsedCache = JSON.parse(cacheContent); + expect(parsedCache.projectKeepInfo.globalNames).to.include("prop1"); + }); + }) }) describe('test for FilePathManager', function () { diff --git a/arkguard/test/ut/utils/ScopeAnalyzer.spec.ts b/arkguard/test/ut/utils/ScopeAnalyzer.spec.ts index ed10c4ec266e3d5a92ce9832a2ca64cf61e61ee0..a9be991b62ad28f0994185cffb25638e89498b37 100644 --- a/arkguard/test/ut/utils/ScopeAnalyzer.spec.ts +++ b/arkguard/test/ut/utils/ScopeAnalyzer.spec.ts @@ -317,7 +317,7 @@ describe('ScopeAnalyzer ut', function () { sourceFile = createSourceFile(newFilePath, fileContent, ScriptTarget.ES2015, true); checker = TypeUtils.createChecker(sourceFile); scopeManager = createScopeManager(); - scopeManager.analyze(sourceFile, checker, false); + scopeManager.analyze(sourceFile, checker, false, newFilePath); } describe('analyze', function () { @@ -456,7 +456,7 @@ describe('ScopeAnalyzer ut', function () { let sourceFile = createSourceFile(filePath, fileContent, ScriptTarget.ES2015, true); let checker = TypeUtils.createChecker(sourceFile); let scopeManager = createScopeManager(); - scopeManager.analyze(sourceFile, checker, false); + scopeManager.analyze(sourceFile, checker, false, filePath); const functionDeclaration = sourceFile.statements[0] as FunctionDeclaration; const parameter = functionDeclaration.parameters[0] as ParameterDeclaration; @@ -472,7 +472,7 @@ describe('ScopeAnalyzer ut', function () { let sourceFile = createSourceFile(filePath, fileContent, ScriptTarget.ES2015, true); let checker = TypeUtils.createChecker(sourceFile); let scopeManager = createScopeManager(); - scopeManager.analyze(sourceFile, checker, false); + scopeManager.analyze(sourceFile, checker, false, filePath); it('getReservedNames', function () { const reservedNames = scopeManager.getReservedNames(); assert.strictEqual(reservedNames.size === 0, true); @@ -542,7 +542,7 @@ describe('ScopeAnalyzer ut', function () { let sourceFile = createSourceFile(filePath, fileContent, ScriptTarget.ES2015, true); let checker = TypeUtils.createChecker(sourceFile); let scopeManager = createScopeManager(); - scopeManager.analyze(sourceFile, checker, false); + scopeManager.analyze(sourceFile, checker, false, filePath); it('getReservedNames', function () { const reservedNames = scopeManager.getReservedNames(); @@ -581,13 +581,13 @@ describe('ScopeAnalyzer ut', function () { let scopeManager = createScopeManager(); it('exportObfuscation is false', function () { - scopeManager.analyze(sourceFile, checker, false); + scopeManager.analyze(sourceFile, checker, false, filePath); const rootScope = scopeManager.getRootScope(); assert.deepEqual(rootScope.defs.size, 0); }); it('exportObfuscation is true', function () { - scopeManager.analyze(sourceFile, checker, true); + scopeManager.analyze(sourceFile, checker, true, filePath); const rootScope = scopeManager.getRootScope(); assert.strictEqual(rootScope.defs.size, 1); }); @@ -623,7 +623,7 @@ describe('ScopeAnalyzer ut', function () { let sourceFile = createSourceFile(filePath, fileContent, ScriptTarget.ES2015, true); let checker = TypeUtils.createChecker(sourceFile); let scopeManager = createScopeManager(); - scopeManager.analyze(sourceFile, checker, false); + scopeManager.analyze(sourceFile, checker, false, filePath); it('getReservedNames', function () { const reservedNames = scopeManager.getReservedNames(); @@ -666,7 +666,7 @@ describe('ScopeAnalyzer ut', function () { let sourceFile = createSourceFile(filePath, fileContent, ScriptTarget.ES2015, true); let checker = TypeUtils.createChecker(sourceFile); let scopeManager = createScopeManager(); - scopeManager.analyze(sourceFile, checker, false); + scopeManager.analyze(sourceFile, checker, false, filePath); it('getReservedNames', function () { const reservedNames = scopeManager.getReservedNames(); @@ -701,7 +701,7 @@ describe('ScopeAnalyzer ut', function () { let sourceFile = createSourceFile(filePath, fileContent, ScriptTarget.ES2015, true); let checker = TypeUtils.createChecker(sourceFile); let scopeManager = createScopeManager(); - scopeManager.analyze(sourceFile, checker, false); + scopeManager.analyze(sourceFile, checker, false, filePath); it('getReservedNames', function () { const reservedNames = scopeManager.getReservedNames(); diff --git a/arkguard/test/ut/utils/apiTest_collectFileWhiteList/collectFileWhiteList02.ets b/arkguard/test/ut/utils/apiTest_collectFileWhiteList/collectFileWhiteList02.ets new file mode 100644 index 0000000000000000000000000000000000000000..a6464b217cfcc049996e4aad63162e0e64cfa488 --- /dev/null +++ b/arkguard/test/ut/utils/apiTest_collectFileWhiteList/collectFileWhiteList02.ets @@ -0,0 +1,8 @@ +@ObservedV2 +class son{ + @Trace aaaa:number=100; +} + +class father{ + bbb:number=100; +} \ No newline at end of file diff --git a/arkguard/test/ut/utils/apiTest_visitAtKeepNames/atKeepAnnotation.ets b/arkguard/test/ut/utils/apiTest_visitAtKeepNames/atKeepAnnotation.ets new file mode 100644 index 0000000000000000000000000000000000000000..c78baa7d212e30fdf4556887babdd3baa3b3fbaa --- /dev/null +++ b/arkguard/test/ut/utils/apiTest_visitAtKeepNames/atKeepAnnotation.ets @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2025 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. + */ + +// @KeepSymbol +@interface MyAnnotation01 { + authorName: string; +} + +// @KeepSymbol +export @interface MyAnnotation02 { + authorName: string; +} + +@interface MyAnnotation03 { + // @KeepSymbol + authorName: string; +} + +// @KeepAsConsumer +@interface MyAnnotation04 { + authorName: string; +} + +// @KeepAsConsumer +export @interface MyAnnotation05 { + authorName: string; +} + +@interface MyAnnotation06 { + // @KeepAsConsumer + authorName: string; +} \ No newline at end of file diff --git a/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected01.json b/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected01.json index 9112b78b8c162e2b22640688812abe5562b5a399..6bde5ff86f41a23d37e29854d37ad3d97906b01f 100644 --- a/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected01.json +++ b/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected01.json @@ -35,7 +35,15 @@ ], "stringProperties": [ "test9" - ] + ], + "arkUIKeepInfo": { + "propertyNames": [ + "test112" + ], + "globalNames": [ + "test111" + ] + } }, "fileReservedInfo": { "enumProperties": [ @@ -64,7 +72,11 @@ "globalNames": [] }, "enumProperties": [], - "stringProperties": [] + "stringProperties": [], + "arkUIKeepInfo": { + "propertyNames": [], + "globalNames": [] + } }, "fileReservedInfo": { "enumProperties": [], @@ -89,7 +101,11 @@ ] }, "enumProperties": [], - "stringProperties": [] + "stringProperties": [], + "arkUIKeepInfo": { + "propertyNames": [], + "globalNames": [] + } }, "fileReservedInfo": { "enumProperties": [], diff --git a/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected02.json b/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected02.json index f0d382095b9c07298d38c9d700aba35cb3ef92e6..419d982f190777835007520932081ad18917268c 100644 --- a/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected02.json +++ b/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected02.json @@ -35,7 +35,15 @@ ], "stringProperties": [ "test9" - ] + ], + "arkUIKeepInfo": { + "propertyNames": [ + "test112" + ], + "globalNames": [ + "test111" + ] + } }, "fileReservedInfo": { "enumProperties": [ @@ -64,7 +72,11 @@ ] }, "enumProperties": [], - "stringProperties": [] + "stringProperties": [], + "arkUIKeepInfo": { + "propertyNames": [], + "globalNames": [] + } }, "fileReservedInfo": { "enumProperties": [], @@ -108,7 +120,15 @@ ], "stringProperties": [ "test9" - ] + ], + "arkUIKeepInfo": { + "propertyNames": [ + "test123" + ], + "globalNames": [ + "test122" + ] + } }, "fileReservedInfo": { "enumProperties": [ diff --git a/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected03.json b/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected03.json index 809b11a7834e2585c2f32c6e871671a0abf6e7fd..af417be3794957d5ec09c6ccfcd765e3db28256d 100644 --- a/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected03.json +++ b/arkguard/test/ut/utils/obfuscation/fileWhiteLists_expected03.json @@ -35,7 +35,15 @@ ], "stringProperties": [ "test9" - ] + ], + "arkUIKeepInfo": { + "propertyNames": [ + "test112" + ], + "globalNames": [ + "test111" + ] + } }, "fileReservedInfo": { "enumProperties": [ @@ -64,7 +72,11 @@ ] }, "enumProperties": [], - "stringProperties": [] + "stringProperties": [], + "arkUIKeepInfo": { + "propertyNames": [], + "globalNames": [] + } }, "fileReservedInfo": { "enumProperties": [], @@ -108,7 +120,15 @@ ], "stringProperties": [ "test9" - ] + ], + "arkUIKeepInfo": { + "propertyNames": [ + "test123" + ], + "globalNames": [ + "test122" + ] + } }, "fileReservedInfo": { "enumProperties": [ @@ -143,7 +163,11 @@ "enumProperties": [ "test02" ], - "stringProperties": [] + "stringProperties": [], + "arkUIKeepInfo": { + "propertyNames": [], + "globalNames": [] + } }, "fileReservedInfo": { "enumProperties": [], diff --git a/arkguard/test/ut/utils/obfuscation/projectWhiteList_expected01.json b/arkguard/test/ut/utils/obfuscation/projectWhiteList_expected01.json index d7ce25e326a86bc8b3f0962365f9ddd08a4f3e47..a2a5d19ca71fef5d36055828a0216b533cbd7a8c 100644 --- a/arkguard/test/ut/utils/obfuscation/projectWhiteList_expected01.json +++ b/arkguard/test/ut/utils/obfuscation/projectWhiteList_expected01.json @@ -9,12 +9,14 @@ "test02", "test6", "test9", + "test112", "test12" ], "globalNames": [ "test1", "test3", "test7", + "test111", "test13" ] }, diff --git a/arkguard/test/ut/utils/obfuscation/projectWhiteList_expected02.json b/arkguard/test/ut/utils/obfuscation/projectWhiteList_expected02.json index 212230f3d0898b7467e954306840c9ab23a84caf..c3773352499cb6ebb61bea4d7330df463255b235 100644 --- a/arkguard/test/ut/utils/obfuscation/projectWhiteList_expected02.json +++ b/arkguard/test/ut/utils/obfuscation/projectWhiteList_expected02.json @@ -8,14 +8,18 @@ "test8", "test02", "test6", - "test9" + "test9", + "test112", + "test123" ], "globalNames": [ "test1", "test3", "test7", + "test111", "test33", - "test32" + "test32", + "test122" ] }, "projectReservedInfo": { diff --git a/arkguard/tools/timesum.py b/arkguard/tools/timesum.py index 20781a7d79c0715ba9e931a608bd09d41c772a98..d7515007b4aed0330f5b43c39eff482d77dc2608 100644 --- a/arkguard/tools/timesum.py +++ b/arkguard/tools/timesum.py @@ -19,6 +19,8 @@ limitations under the License. from collections import defaultdict import json import logging +import os +import stat # Configure logging to display timestamps and messages logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(message)s") @@ -33,7 +35,8 @@ def gen_parent(data): """ # Sort the data by timestamp (ts) data = sorted(data, key=lambda x: x["ts"]) - for i in range(len(data)): + data_length = len(data) + for i in range(data_length): current = data[i] # Current event current_end = current["ts"] + current["dur"] # End time of the current event for j in range(i - 1, -1, -1): # Candidate parent event @@ -136,8 +139,12 @@ def re_gen_ts_and_dur(data_with_parent): flattened.extend(nodes) # Save the flattened data to a JSON file - with open("data.json", "w") as f: - json.dump(flattened, f, indent=2) + if os.path.exists('data.json'): + os.remove('data.json') + flags = os.O_WRONLY | os.O_CREAT | os.O_EXCL + modes = stat.S_IWUSR | stat.S_IRUSR + with os.fdopen(os.open('data.json', flags, modes), 'w') as file: + json.dump(flattened, file, indent=2) return groups @@ -158,8 +165,8 @@ def group_by_parent(data): if __name__ == "__main__": # Load input data from a JSON file with open("timePerformanceData.json", "r") as f: - data = json.load(f) + datas = json.load(f) # Generate parent information for each event - data_with_parent = gen_parent(data) + data_with_parents = gen_parent(datas) # Regenerate timestamps and durations based on parent relationships - re_gen_ts_and_dur(data_with_parent) + re_gen_ts_and_dur(data_with_parents) diff --git a/bundle.json b/bundle.json index 0029c20177423dde5df05252502ca58f60d61776..3ea4b67716580490c83ee24a95b068b98b2402fd 100644 --- a/bundle.json +++ b/bundle.json @@ -1,5 +1,5 @@ { - "name": "@arkcompiller/ets_frontend", + "name": "@ohos/ets_frontend", "description": "支持应用TS/JS语言代码的编译,行为符合ArkUI框架需要的Strict模式的ES2015标准", "version": "3.1", "license": "Apache License 2.0", @@ -22,12 +22,11 @@ "runtime_core", "zlib", "bounds_checking_function", - "protobuf" + "protobuf", + "icu", + "abseil-cpp" ], - "third_party": [ - "json", - "icu" - ] + "third_party": [] }, "build": { "sub_component": [ diff --git a/es2panda/BUILD.gn b/es2panda/BUILD.gn index d7f663a2bb92b56aac0ea96c668bfc51ea120271..56f0a55564f9829840842e4c3ca74afb81840ac9 100644 --- a/es2panda/BUILD.gn +++ b/es2panda/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2021-2022 Huawei Device Co., Ltd. +# Copyright (c) 2021-2025 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 @@ -293,14 +293,18 @@ config("es2abc_config_src") { config("es2abc_config_common") { configs = [ "$ark_root:ark_config", - "$sdk_libc_secshared_config", "$ark_root/libpandafile:arkfile_public_config", "$ark_root/libpandabase:arkbase_public_config", "$ark_root/assembler:arkassembler_public_config", "$ark_root/abc2program:abc2program_public_config", - "$ark_third_party_root/json:nlohmann_json_config", ":es2abc_config_src", ] + if (defined(is_arkui_x) && is_arkui_x) { + configs += [ + "$sdk_libc_secshared_config", + "$ark_third_party_root/json:nlohmann_json_config", + ] + } if (enable_bytecode_optimizer) { defines = [ "ENABLE_BYTECODE_OPT" ] @@ -343,7 +347,11 @@ action_foreach("gen_keywords_headers") { # generate headers for es2panda compiler isa_gen = "${ark_root}/isa/gen.rb" -isa_gen_data = "$root_gen_dir/isa/isa.yaml" +if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) { + isa_gen_data = "$root_build_dir/gen/isa/isa.yaml" +} else { + isa_gen_data = "$root_gen_dir/isa/isa.yaml" +} isa_gen_require = "${ark_root}/isa/isapi.rb" action_foreach("gen_isa_headers") { deps = [ "//arkcompiler/runtime_core/isa:isa_combine" ] @@ -361,11 +369,13 @@ action_foreach("gen_isa_headers") { outputs = [ "${generated_header_dir}/{{source_name_part}}" ] script = "scripts/gen_isa.sh" - inputs = [ - "${isa_gen}", - "${isa_gen_data}", - "${isa_gen_require}", - ] + if (defined(ohos_indep_compiler_enable) && !ohos_indep_compiler_enable) { + inputs = [ + "${isa_gen}", + "${isa_gen_data}", + "${isa_gen_require}", + ] + } args = [ "-g", rebase_path("${isa_gen}"), @@ -394,21 +404,25 @@ ohos_static_library("es2panda_lib") { "../merge_abc:panda_assembly_proto_public_config", ] - include_dirs = [ - "${target_out_dir}", - "//third_party/icu/icu4c/source/common", - "//third_party/icu/icu4c/source/i18n", - "//third_party/icu/icu4c/source", - ] + include_dirs = [ "${target_out_dir}" ] deps = [ ":gen_isa_headers", ":gen_keywords_headers", - "$ark_third_party_root/icu/icu4c:static_icuuc", "../merge_abc:panda_assembly_proto_static", ] + external_deps = [ sdk_libc_secshared_dep ] + if (ark_standalone_build || (defined(is_arkui_x) && is_arkui_x)) { + deps += [ "$ark_third_party_root/icu/icu4c:static_icuuc" ] + include_dirs += [ + "//third_party/icu/icu4c/source/common", + "//third_party/icu/icu4c/source/i18n", + "//third_party/icu/icu4c/source", + ] + } else { + external_deps += [ "icu:static_icuuc" ] + } - external_deps = [] if (!is_arkui_x) { external_deps += [ "json:nlohmann_json_static", @@ -451,7 +465,14 @@ ohos_static_library("es2panda_lib") { "-Wno-c++20-designator", "-Wno-implicit-fallthrough", ] - + if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) { + external_deps += [ "runtime_core:libarkassembler_static" ] + if (enable_hilog) { + external_deps += [ "hilog:libhilog" ] + } + cflags += [ "-I" + rebase_path( + "$root_build_dir/gen/arkcompiler/runtime_core/compiler/generated") ] + } part_name = "ets_frontend" subsystem_name = "arkcompiler" } @@ -481,7 +502,30 @@ ohos_executable("es2panda") { "//arkcompiler/ets_frontend/merge_abc:panda_assembly_proto_static", ] - external_deps = [ "zlib:libz" ] + external_deps = [ + "json:nlohmann_json_static", + "zlib:libz", + sdk_libc_secshared_dep, + ] + + if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) { + external_deps += [ + "abseil-cpp:absl_base_static", + "icu:shared_icuuc", + "runtime_core:libarkassembler_static", + ] + if (enable_hilog) { + external_deps += [ "hilog:libhilog" ] + } + cflags = [ + "-Wno-constant-conversion", + "-I" + rebase_path( + "$root_build_dir/gen/arkcompiler/runtime_core/bytecode_optimizer"), + "-I" + rebase_path( + "$root_build_dir/gen/arkcompiler/runtime_core/compiler/generated"), + ] + } + if (ark_standalone_build) { external_deps += [ "protobuf:protobuf_lite_static", diff --git a/es2panda/aot/emitFiles.cpp b/es2panda/aot/emitFiles.cpp index 10396d754610c0c05f3856e6da4a85b6d8babdde..121f0824f43a815d4c2ac6cb215cea27a2ff8fb3 100644 --- a/es2panda/aot/emitFiles.cpp +++ b/es2panda/aot/emitFiles.cpp @@ -49,13 +49,10 @@ void EmitFileQueue::Schedule() { ASSERT(jobsCount_ == 0); std::unique_lock lock(m_); - auto targetApi = options_->CompilerOptions().targetApiVersion; - auto targetSubApi = options_->CompilerOptions().targetApiSubVersion; if (mergeAbc_) { // generate merged abc - auto emitMergedAbcJob = new EmitMergedAbcJob(options_->CompilerOutput(), - options_->CompilerOptions().transformLib, progsInfo_, targetApi, targetSubApi); + auto emitMergedAbcJob = new EmitMergedAbcJob(options_, progsInfo_); // One job should be placed before the jobs on which it depends to prevent blocking jobs_.push_back(emitMergedAbcJob); jobsCount_++; @@ -65,6 +62,8 @@ void EmitFileQueue::Schedule() ScheduleEmitCacheJobs(emitMergedAbcJob); } } else { + auto targetApi = options_->CompilerOptions().targetApiVersion; + auto targetSubApi = options_->CompilerOptions().targetApiSubVersion; for (const auto &info: progsInfo_) { try { // generate multi abcs @@ -109,9 +108,11 @@ void EmitMergedAbcJob::Run() progs.push_back(&(info.second->program)); } + panda::pandasm::EmitterConfig emitConfig {targetApiVersion_, targetApiSubVersion_, + options_->CompilerOptions().isDebug, options_->CompilerOptions().fileThreadCount}; bool success = panda::pandasm::AsmEmitter::EmitPrograms( panda::os::file::File::GetExtendedFilePath(outputFileName_), progs, true, - targetApiVersion_, targetApiSubVersion_); + emitConfig); panda::Timer::timerEnd(panda::EVENT_EMIT_MERGED_PROGRAM, ""); diff --git a/es2panda/aot/emitFiles.h b/es2panda/aot/emitFiles.h index 9a223386c6741919cfc26cc7bef3efd565348038..f3d3ad2e78b307194375f647fc1956115bc80ff3 100644 --- a/es2panda/aot/emitFiles.h +++ b/es2panda/aot/emitFiles.h @@ -45,17 +45,19 @@ private: class EmitMergedAbcJob : public util::WorkerJob { public: - explicit EmitMergedAbcJob(const std::string &outputFileName, const std::string &transformLib, - const std::map &progsInfo, - uint8_t targetApi, std::string targetSubApi) - : outputFileName_(outputFileName), transformLib_(transformLib), - progsInfo_(progsInfo), targetApiVersion_(targetApi), targetApiSubVersion_(targetSubApi) {}; + explicit EmitMergedAbcJob(const std::unique_ptr &options, + const std::map &progsInfo) + : options_(options), outputFileName_(options->CompilerOutput()), + transformLib_(options->CompilerOptions().transformLib), + progsInfo_(progsInfo), targetApiVersion_(options->CompilerOptions().targetApiVersion), + targetApiSubVersion_(options->CompilerOptions().targetApiSubVersion) {}; NO_COPY_SEMANTIC(EmitMergedAbcJob); NO_MOVE_SEMANTIC(EmitMergedAbcJob); ~EmitMergedAbcJob() override = default; void Run() override; private: + const std::unique_ptr &options_; std::string outputFileName_; std::string transformLib_; const std::map &progsInfo_; diff --git a/es2panda/aot/options.cpp b/es2panda/aot/options.cpp index 0ae82fe65fdb6c60b9628bb340c07f2ff3dbccb1..3a4f766e5a064d40b9e26d26c797b459ce850f18 100644 --- a/es2panda/aot/options.cpp +++ b/es2panda/aot/options.cpp @@ -420,8 +420,8 @@ bool Options::Parse(int argc, const char **argv) "bc-min-version are enabled, only bc-version will take effects"); panda::PandArg bcMinVersion("bc-min-version", false, "Print ark bytecode minimum supported version"); // todo(huyunhui): change default api verion to 0 after refactoring - // Current api version is 18 - panda::PandArg targetApiVersion("target-api-version", 18, + // Current api version is 20 + panda::PandArg targetApiVersion("target-api-version", 20, "Specify the targeting api version for es2abc to generated the corresponding version of bytecode"); panda::PandArg targetBcVersion("target-bc-version", false, "Print the corresponding ark bytecode version"\ "for target api version. If both target-bc-version and bc-version are enabled, only target-bc-version"\ diff --git a/es2panda/binder/binder.cpp b/es2panda/binder/binder.cpp index 32b9e3809cb95483aee1f42278fc31916aca99e4..c26216945a93b8924f2a8439e2e3c1eb86f95a2c 100644 --- a/es2panda/binder/binder.cpp +++ b/es2panda/binder/binder.cpp @@ -757,6 +757,7 @@ void Binder::ResolveReference(const ir::AstNode *parent, ir::AstNode *childNode) } case ir::AstNodeType::SUPER_EXPRESSION: { VariableScope *varScope = scope_->EnclosingVariableScope(); + CHECK_NOT_NULL(varScope); varScope->AddFlag(VariableScopeFlags::USE_SUPER); ResolveReferences(childNode); @@ -844,6 +845,7 @@ void Binder::ResolveReference(const ir::AstNode *parent, ir::AstNode *childNode) if (Program()->Extension() == ScriptExtension::TS && (Program()->TargetApiVersion() < 11 || (!prop->IsStatic() && !prop->IsPrivate()))) { const ir::ScriptFunction *ctor = util::Helpers::GetContainingConstructor(prop); + CHECK_NOT_NULL(ctor); auto scopeCtx = LexicalScope::Enter(this, ctor->Scope()); ResolveReferences(childNode); break; diff --git a/es2panda/compiler/core/dynamicContext.cpp b/es2panda/compiler/core/dynamicContext.cpp index a6e2c3d60f869ed0da5b74792dce646fca4f63f2..5949319bc46e5e18f31266a8e77ba48570edd3f8 100644 --- a/es2panda/compiler/core/dynamicContext.cpp +++ b/es2panda/compiler/core/dynamicContext.cpp @@ -95,6 +95,17 @@ bool LexEnvContext::HasTryCatch() const return envScope_->HasEnv(); } +void LexEnvContext::HandleForUpdateDirectReturnContext() +{ + if (!envScope_->HasEnv()) { + return; + } + const auto *node = envScope_->Scope()->Node(); + if (node->IsForUpdateStatement()) { + pg_->PopLexEnv(node); + } +} + void LexEnvContext::AbortContext([[maybe_unused]] ControlFlowChange cfc, const util::StringView &targetLabel) { @@ -105,7 +116,8 @@ void LexEnvContext::AbortContext([[maybe_unused]] ControlFlowChange cfc, const auto *node = envScope_->Scope()->Node(); // Process the continue label in the ForUpdate Statement. if (node->IsForUpdateStatement()) { - if (targetLabel == LabelTarget::CONTINUE_LABEL || targetLabel == LabelTarget::BREAK_LABEL) { + if (targetLabel == LabelTarget::CONTINUE_LABEL || targetLabel == LabelTarget::BREAK_LABEL || + targetLabel == LabelTarget::RETURN_LABEL) { return; } diff --git a/es2panda/compiler/core/dynamicContext.h b/es2panda/compiler/core/dynamicContext.h index 3fa63347fd75b3c8d6fb343a2c89c3d4f7841f83..3ab8647bc270927d616d51862e0c195f537e84c6 100644 --- a/es2panda/compiler/core/dynamicContext.h +++ b/es2panda/compiler/core/dynamicContext.h @@ -125,6 +125,12 @@ public: { return tryEndFlag; } + /** + * Handle for update direct return context + * If the lexical environment context is in for update statement, pop the lexical environment + */ + void HandleForUpdateDirectReturnContext(); + private: VariableEnvScope *envScope_; CatchTable *catchTable_ {}; diff --git a/es2panda/compiler/core/emitter/emitter.cpp b/es2panda/compiler/core/emitter/emitter.cpp index 051e0d84d0fd7a81ac2b1da693f3fa65364a362c..3855d73498c1fc3809c821a5a5a9f66fbc519d3e 100644 --- a/es2panda/compiler/core/emitter/emitter.cpp +++ b/es2panda/compiler/core/emitter/emitter.cpp @@ -71,11 +71,15 @@ void FunctionEmitter::Generate(util::PatchFix *patchFixHelper) GenFunctionCatchTables(); GenLiteralBuffers(); GenConcurrentFunctionModuleRequests(); - GenAnnotations(); + if (pg_->Binder()->Program()->IsEnableAnnotations()) { + GenAnnotations(); + } if (patchFixHelper != nullptr) { patchFixHelper->ProcessFunction(pg_, func_, literalBuffers_); } - GenExpectedPropertyCountAnnotation(); + if (util::Helpers::IsEnableExpectedPropertyCountApiVersion(pg_->Binder()->Program()->TargetApiVersion())) { + GenExpectedPropertyCountAnnotation(); + } GenSlotNumberAnnotation(); if (pg_->Context()->IsMergeAbc()) { GenConcurrentModuleRequestsAnnotation(); @@ -207,11 +211,6 @@ void FunctionEmitter::GenInstructionDebugInfo(const IRNode *ins, panda::pandasm: if (pg_->IsDebug()) { size_t insLen = GetIRNodeWholeLength(ins); - if (insLen != 0) { - pandaIns->ins_debug.bound_left = offset_; - pandaIns->ins_debug.bound_right = offset_ + insLen; - } - offset_ += insLen; pandaIns->ins_debug.column_number = columnNum; } @@ -453,10 +452,9 @@ void FunctionEmitter::GenFunctionInstructions() func_->ins.reserve(pg_->Insns().size()); for (const auto *ins : pg_->Insns()) { - auto &pandaIns = func_->ins.emplace_back(); - - ins->Transform(&pandaIns); - GenInstructionDebugInfo(ins, &pandaIns); + auto *pandaIns = ins->Transform(); + func_->ins.emplace_back(pandaIns); + GenInstructionDebugInfo(ins, pandaIns); } } @@ -668,7 +666,9 @@ Emitter::Emitter(CompilerContext *context): source_lang_(context->SourceLang()) } AddSharedModuleRecord(context); AddScopeNamesRecord(context); - AddExpectedPropertyCountRecord(); + if (util::Helpers::IsEnableExpectedPropertyCountApiVersion(context->Binder()->Program()->TargetApiVersion())) { + AddExpectedPropertyCountRecord(); + } AddSlotNumberRecord(); if (context->IsMergeAbc()) { AddConcurrentModuleRequestsRecord(); @@ -1257,7 +1257,7 @@ void Emitter::DumpAsm(const panda::pandasm::Program *prog) ss << ") {" << std::endl; for (const auto &ins : func.ins) { - ss << (ins.set_label ? "" : "\t") << ins.ToString("", true, func.GetTotalRegs()) << std::endl; + ss << (ins->IsLabel() ? "" : "\t") << ins->ToString("", true, func.GetTotalRegs()) << std::endl; } ss << "}" << std::endl << std::endl; diff --git a/es2panda/compiler/core/emitter/emitter.h b/es2panda/compiler/core/emitter/emitter.h index f43cf2f36de5a70bce851154e7177481a1595fc3..7353567fc52414202740c3d32ba840b41e788a3a 100644 --- a/es2panda/compiler/core/emitter/emitter.h +++ b/es2panda/compiler/core/emitter/emitter.h @@ -34,7 +34,7 @@ namespace panda::pandasm { struct Program; struct Function; -struct Ins; +class Ins; struct Record; } // namespace panda::pandasm diff --git a/es2panda/compiler/core/pandagen.cpp b/es2panda/compiler/core/pandagen.cpp index 4806d01e945863fb973a04d9aea304d436751f2c..f2bb23e6996107fdacf3df580a268f0918f68058 100644 --- a/es2panda/compiler/core/pandagen.cpp +++ b/es2panda/compiler/core/pandagen.cpp @@ -105,7 +105,8 @@ void PandaGen::SetInSendable() size_t PandaGen::GetExpectedPropertyCount() const { - if (rootNode_->IsProgram()) { + if (rootNode_->IsProgram() || + !util::Helpers::IsEnableExpectedPropertyCountApiVersion(context_->Binder()->Program()->TargetApiVersion())) { return 0; } @@ -1267,6 +1268,15 @@ void PandaGen::ValidateClassDirectReturn(const ir::AstNode *node) BranchIfStrictNotUndefined(node, notUndefined); GetThis(func); ThrowIfSuperNotCorrectCall(func, 0); + + auto *iter = dynamicContext_; + while (iter) { + if (iter->Type() == DynamicContextType::LEX_ENV) { + auto *envContext = static_cast(iter); + envContext->HandleForUpdateDirectReturnContext(); + } + iter = iter->Prev(); + } Branch(node, condEnd); SetLabel(node, notUndefined); diff --git a/es2panda/compiler/debugger/debuginfoDumper.cpp b/es2panda/compiler/debugger/debuginfoDumper.cpp index 37d2beb5aaea490381b03d9ee91239ada5c06fb0..5bbbd2b5d716bc5260b8bdfe1cb4b9e6f9cacfff 100644 --- a/es2panda/compiler/debugger/debuginfoDumper.cpp +++ b/es2panda/compiler/debugger/debuginfoDumper.cpp @@ -55,7 +55,7 @@ void DebugInfoDumper::WrapArray(const char *name, const std::vector &array, b for (elem = array.begin(); elem != array.end(); ++elem) { Indent(); // NOLINTNEXTLINE - if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { WriteIns(*elem); // NOLINTNEXTLINE } else if constexpr (std::is_same_v) { @@ -86,25 +86,19 @@ void DebugInfoDumper::WrapArray(const char *name, const std::vector &array, b ss_ << "]" << PutComma(comma); } -void DebugInfoDumper::WriteIns(const pandasm::Ins &ins) +void DebugInfoDumper::WriteIns(const pandasm::InsPtr &ins) { ss_ << "{"; - { - pandasm::Ins insCopy; - insCopy.opcode = ins.opcode; - insCopy.set_label = ins.set_label; - insCopy.label = ins.label; - WriteProperty("opcode", insCopy.ToString()); - } + WriteProperty("opcode", ins->OpcodeToString()); indent_++; - WrapArray("regs", ins.regs); - WrapArray("ids", ins.ids); - WrapArray("imms", ins.imms); + WrapArray("regs", ins->Regs()); + WrapArray("ids", ins->Ids()); + WrapArray("imms", ins->Imms()); ss_ << std::endl; Indent(); ss_ << "\"label\": " - << "\"" << ins.label << "\","; - WritePosInfo(ins.ins_debug); + << "\"" << (ins->IsLabel() ? ins->Label() : "") << "\","; + WritePosInfo(ins->ins_debug); indent_--; Indent(); ss_ << "}"; @@ -129,8 +123,6 @@ void DebugInfoDumper::WritePosInfo(const pandasm::debuginfo::Ins &posInfo) ss_ << std::endl; Indent(); ss_ << "\"debug_pos_info\": {"; - WriteProperty("boundLeft", posInfo.bound_left); - WriteProperty("boundRight", posInfo.bound_right); WriteProperty("sourceLineNum", static_cast(posInfo.line_number), false); Indent(); ss_ << "}" << std::endl; diff --git a/es2panda/compiler/debugger/debuginfoDumper.h b/es2panda/compiler/debugger/debuginfoDumper.h index a9d0aecf5ad882c84432dd1283e0b584016b0e50..02a6dfbbbfdbaf9a87cf3448dc21797b60a1544c 100644 --- a/es2panda/compiler/debugger/debuginfoDumper.h +++ b/es2panda/compiler/debugger/debuginfoDumper.h @@ -36,7 +36,7 @@ public: private: template void WrapArray(const char *name, const std::vector &array, bool comma = true); - void WriteIns(const pandasm::Ins &ins); + void WriteIns(const pandasm::InsPtr &ins); void WriteMetaData(const std::vector &metaData); void WriteProperty(const char *key, const Value &value, bool comma = true); void WritePosInfo(const pandasm::debuginfo::Ins &posInfo); diff --git a/es2panda/compiler/templates/isa.h.erb b/es2panda/compiler/templates/isa.h.erb index 9d5137be16beb2f485a1461f27f1544316ad5ad3..eeaef9e919d300d1e05b3d62dac41860be398271 100644 --- a/es2panda/compiler/templates/isa.h.erb +++ b/es2panda/compiler/templates/isa.h.erb @@ -57,11 +57,9 @@ public: return 0; } - void Transform(pandasm::Ins *ins) const override + pandasm::Ins *Transform() const override { - ins->opcode = pandasm::Opcode::INVALID; - ins->set_label = true; - ins->label = id_; + return new pandasm::LabelIns(id_); } ICSlot SetIcSlot(IcSizeType currentSlot) override @@ -236,30 +234,21 @@ public: return <%= reg_cnt %>; } - void Transform(pandasm::Ins* ins) const override + pandasm::Ins *Transform() const override { - ins->opcode = pandasm::Opcode::<%= node_kind %>; -% if op_map['reg'].length != 0 - ins->regs.reserve(<%= op_map['reg'].length %>); -% end -% if op_map['imm'].length != 0 - ins->imms.reserve(<%= op_map['imm'].length %>); -% end -% if op_map['str'].length + op_map['lbl'].length != 0 - ins->ids.reserve(<%= op_map['str'].length + op_map['lbl'].length %>); -% end -% for reg in op_map['reg'] - ins->regs.emplace_back(<%= reg %>); -% end -% for imm in op_map['imm'] - ins->imms.emplace_back(<%= imm %>); -% end -% for str in op_map['str'] - ins->ids.emplace_back(<%= str %>.Mutf8()); -% end -% for lbl in op_map['lbl'] - ins->ids.emplace_back(<%= lbl %>->Id()); +% pa_ins_args_list = Array.new +% ctor_arg_list.each do |arg| +% type = arg.split(" ")[0] +% name = arg.split(" ")[1] +% if type == "util::StringView" +% pa_ins_args_list.push("#{name}_.Mutf8()") +% elsif type == "Label*" +% pa_ins_args_list.push("#{name}_->Id()") +% else +% pa_ins_args_list.push("#{name}_") +% end % end + return new pandasm::<%= class_name %>(<%= pa_ins_args_list.join(", ") %>); } ICSlot SetIcSlot(IcSizeType slot) override diff --git a/es2panda/es2abc_config.gni b/es2panda/es2abc_config.gni index 7f9c8c833a0653ee3e86f41759b99f239f16c40b..9427086588d14b3b6294d1dce362f7f525ffd18e 100644 --- a/es2panda/es2abc_config.gni +++ b/es2panda/es2abc_config.gni @@ -64,7 +64,17 @@ template("es2abc_gen_abc") { script = "${es2abc_root}/scripts/generate_js_bytecode.py" deps = extra_dependencies - deps += es2abc_build_deps + if (ark_standalone_build || is_arkui_x) { + deps += es2abc_build_deps + } else { + if (host_toolchain == toolchain_mac) { + external_deps = ["ets_frontend:es2panda($toolchain_mac)"] + } else if (host_toolchain == toolchain_win) { + external_deps = ["ets_frontend:es2panda(${host_toolchain})"] + } else { + external_deps = ["ets_frontend:es2panda($toolchain_linux)"] + } + } args = [ "--src-js", @@ -125,7 +135,15 @@ template("es2abc_gen_newest_abc") { script = "${es2abc_root}/scripts/generate_js_bytecode.py" deps = extra_dependencies - deps += es2abc_build_deps + if (host_toolchain == toolchain_mac) { + external_deps = ["ets_frontend:es2panda($toolchain_mac)"] + } else if (host_toolchain == toolchain_win) { + external_deps = ["ets_frontend:es2panda(${host_toolchain})"] + } else if (ark_standalone_build) { + deps += es2abc_build_deps + } else { + external_deps = ["ets_frontend:es2panda($toolchain_linux)"] + } args = [ "--src-js", diff --git a/es2panda/es2panda.cpp b/es2panda/es2panda.cpp index 3bb600c0385622e95f9e2a1bf4113dedacca6175..ddd62b5d9ed6c5e269071188dafac115873cdcd9 100644 --- a/es2panda/es2panda.cpp +++ b/es2panda/es2panda.cpp @@ -223,9 +223,9 @@ void Compiler::DumpAsm(const panda::pandasm::Program *prog) int Compiler::CompileFiles(CompilerOptions &options, std::map &progsInfo, panda::ArenaAllocator *allocator) { - util::SymbolTable *symbolTable = nullptr; + std::unique_ptr symbolTable; if (!options.patchFixOptions.symbolTable.empty() || !options.patchFixOptions.dumpSymbolTable.empty()) { - symbolTable = new util::SymbolTable(options.patchFixOptions.symbolTable, + symbolTable = std::make_unique(options.patchFixOptions.symbolTable, options.patchFixOptions.dumpSymbolTable); if (!symbolTable->Initialize(options.targetApiVersion, options.targetApiSubVersion)) { std::cerr << "Failed to initialize for Hotfix." << std::endl; @@ -236,7 +236,7 @@ int Compiler::CompileFiles(CompilerOptions &options, bool failed = false; std::unordered_set optimizationPendingProgs; auto queue = new compiler::CompileFileQueue(options.fileThreadCount, &options, progsInfo, - optimizationPendingProgs, symbolTable, allocator); + optimizationPendingProgs, symbolTable.get(), allocator); try { queue->Schedule(); @@ -256,8 +256,6 @@ int Compiler::CompileFiles(CompilerOptions &options, if (!options.patchFixOptions.dumpSymbolTable.empty()) { symbolTable->WriteSymbolTable(); } - delete symbolTable; - symbolTable = nullptr; } if (options.requireGlobalOptimization) { diff --git a/es2panda/ir/base/annotation.h b/es2panda/ir/base/annotation.h index ce9c16f1721cc92318dbf4acff85b96bbbf93199..6df31ff5a5b4033782bcc32247f1b670f5ffadaf 100644 --- a/es2panda/ir/base/annotation.h +++ b/es2panda/ir/base/annotation.h @@ -20,8 +20,7 @@ #include #include #include - -#include +#include namespace panda::es2panda::compiler { class PandaGen; @@ -48,9 +47,7 @@ public: name_.insert(0, "."); expr = expr->AsMemberExpression()->Object(); } - name_.insert(0, expr->AsIdentifier()->Name().Utf8()); - name_.erase(0, std::strlen(annotationPrefix)); nameView_ = util::StringView(name_); } diff --git a/es2panda/ir/expressions/callExpression.cpp b/es2panda/ir/expressions/callExpression.cpp index 96085be9abf3b5aae3ab14ebbf795f948895d79f..cc1963c9c7e2328303b78c411401b456ba3ec07f 100644 --- a/es2panda/ir/expressions/callExpression.cpp +++ b/es2panda/ir/expressions/callExpression.cpp @@ -180,7 +180,11 @@ void CallExpression::Compile(compiler::PandaGen *pg) const realCallee->Compile(pg); } - pg->StoreAccumulator(this, callee); + if (realCallee->IsMemberExpression()) { + pg->StoreAccumulator(realCallee->AsMemberExpression()->Property(), callee); + } else { + pg->StoreAccumulator(this, callee); + } pg->GetOptionalChain()->CheckNullish(optional_, callee); if (containsSpread) { @@ -202,6 +206,16 @@ void CallExpression::Compile(compiler::PandaGen *pg) const } if (hasThis) { + /* + * To obtain more accurate line number information in the MemberExpression scenario, + * bind CallThis to the property node instead of the entire callee. + * especially for cases involving async stack tracing. + */ + if (realCallee->IsMemberExpression()) { + pg->CallThis(realCallee->AsMemberExpression()->Property(), callee, + static_cast(arguments_.size() + 1)); + return; + } pg->CallThis(this, callee, static_cast(arguments_.size() + 1)); return; } diff --git a/es2panda/ir/expressions/memberExpression.cpp b/es2panda/ir/expressions/memberExpression.cpp index c86f519c0a84935cbc97ad19c577e4c2b68acaaf..c36674e1608c5dd5e23ecb151f308d7cf5a034ce 100644 --- a/es2panda/ir/expressions/memberExpression.cpp +++ b/es2panda/ir/expressions/memberExpression.cpp @@ -93,9 +93,9 @@ void MemberExpression::Compile(compiler::PandaGen *pg, compiler::VReg objReg) co compiler::Operand prop = CompileKey(pg); if (object_->IsSuperExpression()) { - pg->LoadSuperProperty(this, objReg, prop); + pg->LoadSuperProperty(property_, objReg, prop); } else { - pg->LoadObjProperty(this, objReg, prop); + pg->LoadObjProperty(property_, objReg, prop); } } diff --git a/es2panda/ir/irnode.h b/es2panda/ir/irnode.h index 576c50cbf3a23e6f5b412c277434b10335623747..bde613106d340335170fef5d04fe8249cf14d994 100644 --- a/es2panda/ir/irnode.h +++ b/es2panda/ir/irnode.h @@ -33,7 +33,7 @@ class AstNode; } // namespace panda::es2panda::ir namespace panda::pandasm { -struct Ins; +class Ins; } // namespace panda::pandasm namespace panda::es2panda::compiler { @@ -120,7 +120,7 @@ public: virtual Formats GetFormats() const = 0; virtual size_t Registers([[maybe_unused]] std::array *regs) = 0; virtual size_t Registers([[maybe_unused]] std::array *regs) const = 0; - virtual void Transform(panda::pandasm::Ins *ins) const = 0; + virtual panda::pandasm::Ins *Transform() const = 0; virtual ICSlot SetIcSlot(IcSizeType currentSlot) = 0; virtual bool InlineCacheEnabled() = 0; virtual ICSlot GetIcSlot() = 0; diff --git a/es2panda/lexer/lexer.cpp b/es2panda/lexer/lexer.cpp index ff656fe34d5579f7be08ea2c3d605658b3e0ab2d..b5e4726b1e07a426a5f7450afb2411a0985045f3 100644 --- a/es2panda/lexer/lexer.cpp +++ b/es2panda/lexer/lexer.cpp @@ -271,6 +271,7 @@ void Lexer::ScanNumberLeadingZero() case LEX_CHAR_8: case LEX_CHAR_9: { ThrowError("Invalid octal digit"); + break; } default: { break; @@ -371,14 +372,27 @@ void Lexer::ConvertNumber(size_t exponentSignPos) GetToken().src_ = sv; } - try { - GetToken().number_ = static_cast(std::stold(utf8, nullptr)); - } catch (const std::invalid_argument &) { + errno = 0; + char *endptr = nullptr; + double value = std::strtod(utf8.c_str(), &endptr); + + if (endptr == utf8.c_str()) { ThrowError("Invalid number"); - } catch (const std::out_of_range &) { - // TODO(frobert): look for a more elegant solution to this - GetToken().number_ = std::numeric_limits::infinity(); + return; } + + /* + * Extreme value handling: + * If the number exceeds Number.MAX_VALUE (~1.7976931348623157e+308), treat it as Infinity / -Infinity + * If the number is smaller than Number.MIN_VALUE (5e-324), it may be rounded to 0.0 or Number.MIN_VALUE, + * depending on platform behavior. + */ + if (errno == ERANGE && std::abs(value) > std::numeric_limits::max()) { + value = (value > 0.0 ? std::numeric_limits::infinity() + : -std::numeric_limits::infinity()); + } + + GetToken().number_ = value; } void Lexer::ScanNumber(bool allowNumericSeparator, bool allowBigInt) { diff --git a/es2panda/lexer/token/token.h b/es2panda/lexer/token/token.h index 168af8dad068d953050888866a4c3c76d523bc69..383f9a1c229baee590ff412b5b16d64d4eed9d95 100644 --- a/es2panda/lexer/token/token.h +++ b/es2panda/lexer/token/token.h @@ -85,6 +85,11 @@ public: return src_; } + void SetIdent(const util::StringView &ident) + { + src_ = ident; + } + const util::StringView &BigInt() const { ASSERT(type_ == TokenType::LITERAL_NUMBER && (flags_ & TokenFlags::NUMBER_BIGINT)); diff --git a/es2panda/parser/parserImpl.cpp b/es2panda/parser/parserImpl.cpp index cf578562b764135d0c0878bee238ba18d9df6b22..0dab3b7005fa022e95dab4bb43f5501d3e77ae12 100644 --- a/es2panda/parser/parserImpl.cpp +++ b/es2panda/parser/parserImpl.cpp @@ -117,7 +117,9 @@ Program ParserImpl::Parse(const SourceFile &sourceFile, const CompilerOptions &o program_.SetDebug(options.isDebug); program_.SetTargetApiVersion(options.targetApiVersion); program_.SetTargetApiSubVersion(options.targetApiSubVersion); - program_.SetEnableAnnotations(options.enableAnnotations); + if (util::Helpers::IsSupportAnnotationVersion(program_.TargetApiVersion())) { + program_.SetEnableAnnotations(options.enableAnnotations); + } program_.SetEnableEtsImplements(options.enableEtsImplements); program_.SetShared(sourceFile.isSharedModule); program_.SetModuleRecordFieldName(options.moduleRecordFieldName); @@ -1489,7 +1491,7 @@ ir::Expression *ParserImpl::ParseTsTypeLiteralOrInterfaceMember() char32_t nextToken = lexer_->Lookahead(); if (lexer_->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY && nextToken != LEX_CHAR_LEFT_PAREN && nextToken != LEX_CHAR_COLON && nextToken != LEX_CHAR_COMMA && nextToken != LEX_CHAR_LESS_THAN && - nextToken != LEX_CHAR_SEMICOLON) { + nextToken != LEX_CHAR_SEMICOLON && nextToken != LEX_CHAR_QUESTION) { readonly = true; lexer_->NextToken(lexer::LexerNextTokenFlags::KEYWORD_TO_IDENT); } @@ -2787,6 +2789,47 @@ ir::Expression *ParserImpl::ParseClassKeyAnnotation() return nullptr; } +bool ParserImpl::CheckAnnotationPrefix(const util::StringView &Ident) +{ + auto prefixLen = std::strlen(ir::Annotation::annotationPrefix); + return Ident.Length() >= prefixLen && + Ident.Substr(0, prefixLen) == ir::Annotation::annotationPrefix; +} + +void ParserImpl::ThrowAnnotationNotEnable() +{ + std::string errMessage = + "Current configuration does not support using annotations. " + "Annotations can be used in the version of API 20 or higher versions.\n" + "Solutions: > Check the compatibleSdkVersion in build-profile.json5." + "> If compatibleSdkVersion is set to API 20 or higher version." + "> If you're running es2abc in commandline without IDE, please check whether target-api-version and " + "enable-annotations options are correctly configured."; + ThrowSyntaxError(errMessage); +} + +ir::Statement *ParserImpl::ParseAnnotationUsage(ir::Expression *expr, lexer::SourcePosition start) +{ + auto *exprTemp = expr; + if (exprTemp->IsCallExpression()) { + exprTemp = expr->AsCallExpression()->Callee(); + } + if (exprTemp->IsMemberExpression() || exprTemp->IsIdentifier()) { + auto *ident = exprTemp->IsIdentifier() ? exprTemp->AsIdentifier() + : exprTemp->AsMemberExpression()->Property()->AsIdentifier(); + if (CheckAnnotationPrefix(ident->Name())) { + if (!program_.IsEnableAnnotations()) { + ThrowAnnotationNotEnable(); + } + ident->SetName(ident->Name().Substr(std::strlen(ir::Annotation::annotationPrefix), ident->Name().Length())); + ir::Statement *resultAnnotation = static_cast(AllocNode(expr)); + resultAnnotation->SetRange({start, expr->End()}); + return resultAnnotation; + } + } + return nullptr; +} + ir::Statement *ParserImpl::ParseDecoratorAndAnnotation() { ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_AT); @@ -2795,23 +2838,22 @@ ir::Statement *ParserImpl::ParseDecoratorAndAnnotation() lexer::SourcePosition start = lexer_->GetToken().Start(); lexer_->NextToken(); // eat '@' - if (lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && - lexer_->GetToken().Ident().Utf8().rfind(ir::Annotation::annotationPrefix, 0) != std::string_view::npos) { - // Annotation usage case - if (!program_.IsEnableAnnotations()) { - ThrowSyntaxError("Annotations are not enabled"); - } - ir::Expression *expr = ParseLeftHandSideExpression(); - ir::Statement *resultAnnotation = static_cast(AllocNode(expr)); - resultAnnotation->SetRange({start, expr->End()}); + ir::Expression *expr = ParseLeftHandSideExpression(); + auto *resultAnnotation = ParseAnnotationUsage(expr, start); + if (resultAnnotation != nullptr) { return resultAnnotation; } - ir::Expression *expr = ParseLeftHandSideExpression(); if (expr->IsIdentifier() && expr->AsIdentifier()->Name().Utf8() == ir::Annotation::interfaceString) { // Annotation declaration case if (!program_.IsEnableAnnotations()) { - ThrowSyntaxError("Annotations are not enabled"); + ThrowAnnotationNotEnable(); + } + + if (!CheckAnnotationPrefix(lexer_->GetToken().Ident())) { + std::stringstream ss; + ss << "Annotation declaration need to be prefixed with '" << ir::Annotation::annotationPrefix << "'"; + ThrowSyntaxError(ss.str()); } lexer_->Rewind(lexPos); return nullptr; @@ -3135,13 +3177,16 @@ bool ParserImpl::IsMethodDefinitionsAreSame(const ir::MethodDefinition *property return IsPropertyKeysAreSame(property->Key(), overload->Key()); } -ir::Identifier *ParserImpl::SetIdentNodeInClassDefinition(bool isDeclare, binder::ConstDecl **decl) +ir::Identifier *ParserImpl::SetIdentNodeInClassDefinition(bool isDeclare, binder::ConstDecl **decl, bool isAnnotation) { if (!isDeclare) { CheckStrictReservedWord(); } - const util::StringView &identStr = lexer_->GetToken().Ident(); + const util::StringView &identStr = + isAnnotation ? lexer_->GetToken().Ident().Substr(std::strlen(ir::Annotation::annotationPrefix), + lexer_->GetToken().Ident().Length()) + : lexer_->GetToken().Ident(); *decl = Binder()->AddDecl(lexer_->GetToken().Start(), isDeclare, identStr); @@ -3154,7 +3199,7 @@ ir::Identifier *ParserImpl::SetIdentNodeInClassDefinition(bool isDeclare, binder } ir::ClassDefinition *ParserImpl::ParseClassDefinition(bool isDeclaration, bool idRequired, bool isDeclare, - bool isAbstract) + bool isAbstract, bool isAnnotation) { isDeclare = isDeclare | (context_.Status() & ParserStatus::IN_AMBIENT_CONTEXT); lexer::SourcePosition startLoc = lexer_->GetToken().Start(); @@ -3168,7 +3213,7 @@ ir::ClassDefinition *ParserImpl::ParseClassDefinition(bool isDeclaration, bool i 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); + identNode = SetIdentNodeInClassDefinition(isDeclare, &decl, isAnnotation); } else if (isDeclaration && idRequired) { ThrowSyntaxError("Unexpected token, expected an identifier."); } @@ -3735,7 +3780,9 @@ ArenaVector ParserImpl::ParseFunctionParams(bool isDeclare, } } + context_.Status() |= ParserStatus::FUNCTION_PARAM; ir::Expression *parameter = ParseFunctionParameter(isDeclare); + context_.Status() &= ~ParserStatus::FUNCTION_PARAM; ValidateFunctionParam(params, parameter, &seenOptional); params.push_back(parameter); @@ -4086,7 +4133,6 @@ ir::ScriptFunction *ParserImpl::ParseFunction(ParserStatus newStatus, funcParamScope->BindNode(funcNode); funcNode->SetRange({startLoc, endLoc}); funcNode->CalculateFunctionExpectedPropertyCount(); - return funcNode; } diff --git a/es2panda/parser/parserImpl.h b/es2panda/parser/parserImpl.h index a69af8e055f135e4ee3c80c84f4fa630b3ba24fd..3254760260be2bb6559dcbfb1eab16d30ff0af67 100644 --- a/es2panda/parser/parserImpl.h +++ b/es2panda/parser/parserImpl.h @@ -322,7 +322,11 @@ private: void CheckClassGeneratorMethod(ClassElmentDescriptor *desc); void CheckClassPrivateIdentifier(ClassElmentDescriptor *desc); void CheckFieldKey(ir::Expression *propName); + bool CheckAnnotationPrefix(const util::StringView &Ident); + void ThrowAnnotationNotEnable(); + ir::Expression *ParseClassKeyAnnotation(); + ir::Statement *ParseAnnotationUsage(ir::Expression *expr, lexer::SourcePosition start); ir::Statement *ParseDecoratorAndAnnotation(); std::pair, ArenaVector> ParseDecoratorsAndAnnotations(); ir::Statement *ParseClassElement(const ArenaVector &properties, @@ -335,9 +339,9 @@ private: ir::MethodDefinition *CheckClassMethodOverload(ir::Statement *property, ir::MethodDefinition **ctor, bool isDeclare, lexer::SourcePosition errorInfo, ir::MethodDefinition *lastOverload, bool implExists, bool isAbstract = false); - ir::Identifier *SetIdentNodeInClassDefinition(bool isDeclare, binder::ConstDecl **decl); + ir::Identifier *SetIdentNodeInClassDefinition(bool isDeclare, binder::ConstDecl **decl, bool isAnnotation = false); ir::ClassDefinition *ParseClassDefinition(bool isDeclaration, bool idRequired = true, bool isDeclare = false, - bool isAbstract = false); + bool isAbstract = false, bool isAnnotation = false); ir::Expression *ParseSuperClass(bool isDeclare, bool *hasSuperClass, bool *isExtendsFromNull); ArenaVector ParseTSClassImplements(bool isDeclare); void ValidateClassConstructor(const ir::MethodDefinition *ctor, @@ -602,7 +606,7 @@ private: ir::VariableDeclaration *ParseContextualLet(VariableParsingFlags flags, StatementParsingFlags stmFlags = StatementParsingFlags::ALLOW_LEXICAL, bool isDeclare = false); - void VerifySupportLazyImportVersion(bool isNamedImport); + void VerifySupportLazyImportVersion(); util::StringView GetNamespaceExportInternalName() { diff --git a/es2panda/parser/program/program.cpp b/es2panda/parser/program/program.cpp index 5151f3845c35b604012dd754b291710a9f0ec940..992292ea0023783bce88558618fc237f0615d396 100644 --- a/es2panda/parser/program/program.cpp +++ b/es2panda/parser/program/program.cpp @@ -48,6 +48,7 @@ Program::Program(Program &&other) targetApiVersion_(other.targetApiVersion_), useDefineSemantic_(other.useDefineSemantic_), isShared_(other.isShared_), + enableAnnotations_(other.enableAnnotations_), enableEtsImplements_(other.enableEtsImplements_), targetApiSubVersion_(other.targetApiSubVersion_), moduleRecordFieldName_(other.moduleRecordFieldName_), @@ -79,6 +80,7 @@ Program &Program::operator=(Program &&other) targetApiVersion_ = other.targetApiVersion_; useDefineSemantic_ = other.useDefineSemantic_; isShared_ = other.isShared_; + enableAnnotations_ = other.enableAnnotations_; enableEtsImplements_ = other.enableEtsImplements_; targetApiSubVersion_ = other.targetApiSubVersion_; moduleRecordFieldName_ = other.moduleRecordFieldName_; diff --git a/es2panda/parser/program/program.h b/es2panda/parser/program/program.h index 493fff1a021dd357725a7380477f3c0bebe004c8..f19e6ed06982fb58a80bb259ab59e2fa98fc8e4a 100644 --- a/es2panda/parser/program/program.h +++ b/es2panda/parser/program/program.h @@ -230,7 +230,7 @@ public: enableAnnotations_ = enableAnnotations; } - bool IsEnableAnnotations() + bool IsEnableAnnotations() const { return enableAnnotations_; } diff --git a/es2panda/parser/statementParser.cpp b/es2panda/parser/statementParser.cpp index 3a0b46e5ca19ada2c9740c7bfc5ab461dee5c0b0..b158dbae4e889c22e9181b959a159b02d6afdbd6 100644 --- a/es2panda/parser/statementParser.cpp +++ b/es2panda/parser/statementParser.cpp @@ -690,7 +690,7 @@ ir::ClassDeclaration *ParserImpl::ParseClassDeclaration(bool idRequired, ArenaVe bool isAbstract, bool isExported, bool isAnnotation) { lexer::SourcePosition startLoc = lexer_->GetToken().Start(); - ir::ClassDefinition *classDefinition = ParseClassDefinition(true, idRequired, isDeclare, isAbstract); + ir::ClassDefinition *classDefinition = ParseClassDefinition(true, idRequired, isDeclare, isAbstract, isAnnotation); if (isExported && !idRequired) { classDefinition->SetAsExportDefault(); } @@ -2610,6 +2610,10 @@ ir::ExportNamedDeclaration *ParserImpl::ParseExportNamedSpecifiers(const lexer:: } lexer::Token localToken = lexer_->GetToken(); + if (program_.IsEnableAnnotations() && CheckAnnotationPrefix(lexer_->GetToken().Ident())) { + localToken.SetIdent(lexer_->GetToken().Ident().Substr(std::strlen(ir::Annotation::annotationPrefix), + lexer_->GetToken().Ident().Length())); + } auto *local = AllocNode(lexer_->GetToken().Ident()); local->SetRange(lexer_->GetToken().Loc()); @@ -2990,6 +2994,10 @@ void ParserImpl::ParseNamedImportSpecifiers(ArenaVector *specifie } lexer::Token importedToken = lexer_->GetToken(); + if (program_.IsEnableAnnotations() && CheckAnnotationPrefix(lexer_->GetToken().Ident())) { + importedToken.SetIdent(lexer_->GetToken().Ident().Substr(std::strlen(ir::Annotation::annotationPrefix), + lexer_->GetToken().Ident().Length())); + } auto *imported = AllocNode(importedToken.Ident()); ir::Identifier *local = nullptr; imported->SetRange(lexer_->GetToken().Loc()); @@ -3186,30 +3194,18 @@ ir::AstNode *ParserImpl::ParseImportSpecifiers(ArenaVector *speci return nullptr; } -void ParserImpl::VerifySupportLazyImportVersion(bool isNamedImport) +void ParserImpl::VerifySupportLazyImportVersion() { - if (isNamedImport) { - if (!util::Helpers::IsSupportLazyImportVersion(program_.TargetApiVersion(), - program_.GetTargetApiSubVersion())) { - std::string errMessage = "Current configuration does not support using lazy import. Lazy import can be " - "used in the beta3 version of API 12 or higher versions.\n" - "Solutions: > Check the compatibleSdkVersion and compatibleSdkVersionStage in build-profile.json5." - "> If compatibleSdkVersion is set to API 12, then compatibleSdkVersionStage needs to be configured " - "as beta3." - "> If you're running es2abc in commandline without IDE, please check whether target-api-version and " - "target-api-sub-version options are correctly configured."; - ThrowSyntaxError(errMessage); - } - } else { - if (!util::Helpers::IsSupportLazyImportDefaultVersion(program_.TargetApiVersion())) { - std::string errMessage = "Current configuration does not support using lazy import default." - "Lazy import can be used in the version of API 18 or higher versions.\n" - "Solutions: > Check the compatibleSdkVersion in build-profile.json5." - "> If compatibleSdkVersion is set to API 18." - "> If you're running es2abc in commandline without IDE, please check whether target-api-version " - "options are correctly configured."; - ThrowSyntaxError(errMessage); - } + if (!util::Helpers::IsSupportLazyImportVersion(program_.TargetApiVersion(), + program_.GetTargetApiSubVersion())) { + std::string errMessage = "Current configuration does not support using lazy import. Lazy import can be " + "used in the beta3 version of API 12 or higher versions.\n" + "Solutions: > Check the compatibleSdkVersion and compatibleSdkVersionStage in build-profile.json5." + "> If compatibleSdkVersion is set to API 12, then compatibleSdkVersionStage needs to be configured " + "as beta3." + "> If you're running es2abc in commandline without IDE, please check whether target-api-version and " + "target-api-sub-version options are correctly configured."; + ThrowSyntaxError(errMessage); } } @@ -3246,7 +3242,7 @@ ir::Statement *ParserImpl::ParseImportDeclaration(StatementParsingFlags flags) lexer_->GetToken().KeywordType() != lexer::TokenType::KEYW_TYPE) && lexer_->GetToken().KeywordType() != lexer::TokenType::KEYW_FROM; if (isNamedImport || isDefaultImport) { - VerifySupportLazyImportVersion(isNamedImport); + VerifySupportLazyImportVersion(); isLazy = true; } else { lexer_->Rewind(savedPos); diff --git a/es2panda/parser/transformer/transformer.cpp b/es2panda/parser/transformer/transformer.cpp index f41498a83f45dcef9db6024a515f4a11a12ba249..ff06eafee3354db6d79f5cb4889f430b837439eb 100644 --- a/es2panda/parser/transformer/transformer.cpp +++ b/es2panda/parser/transformer/transformer.cpp @@ -697,15 +697,22 @@ std::vector Transformer::VisitInstanceProperty(ir::Cl ir::MemberExpression *left = nullptr; auto *member = GetClassMemberName(it->Key(), it->IsComputed(), it, false); + auto thisExpression = AllocNode(); + // Set the range of the 'this' expression to the property key's range + // for accurate debug to the original field. (e.g., the "prop" in '"prop" = 1'). + thisExpression->SetRange(member->Range()); if (member->IsIdentifier() && !it->IsComputed()) { - left = AllocNode(AllocNode(), member, + left = AllocNode(thisExpression, member, ir::MemberExpression::MemberExpressionKind::PROPERTY_ACCESS, false, false); } else { - left = AllocNode(AllocNode(), member, + left = AllocNode(thisExpression, member, ir::MemberExpression::MemberExpressionKind::ELEMENT_ACCESS, true, false); } + // Set the range of the property access expression (e.g., this["prop"] or this.prop) + // to the property key's range for accurate debug. + left->SetRange(member->Range()); auto assignment = AllocNode(left, it->Value(), lexer::TokenType::PUNCTUATOR_SUBSTITUTION); @@ -1558,20 +1565,33 @@ ir::Expression *Transformer::GetClassMemberName(ir::Expression *key, bool isComp { if (isComputed) { auto name = GetComputedPropertyBinding(node); - return AllocNode(name); + auto *ident = AllocNode(name); + ident->SetRange(key->Range()); + return ident; } if (key->IsIdentifier()) { if (inDecorator) { - return AllocNode(key->AsIdentifier()->Name()); + auto *strLiteral = AllocNode(key->AsIdentifier()->Name()); + strLiteral->SetRange(key->AsIdentifier()->Range()); + return strLiteral; } else { - return AllocNode(key->AsIdentifier()->Name()); + auto *ident = AllocNode(key->AsIdentifier()->Name()); + ident->SetRange(key->AsIdentifier()->Range()); + return ident; } } else if (key->IsStringLiteral()) { - return AllocNode(key->AsStringLiteral()->Str()); + auto *strLiteral = AllocNode(key->AsStringLiteral()->Str()); + strLiteral->SetRange(key->AsStringLiteral()->Range()); + return strLiteral; } else if (key->IsNumberLiteral()) { - return AllocNode(key->AsNumberLiteral()->Number(), key->AsNumberLiteral()->Str()); + auto *numLiteral = AllocNode(key->AsNumberLiteral()->Number(), + key->AsNumberLiteral()->Str()); + numLiteral->SetRange(key->AsNumberLiteral()->Range()); + return numLiteral; } else if (key->IsBigIntLiteral()) { - return AllocNode(key->AsBigIntLiteral()->Str()); + auto *bigIntLiteral = AllocNode(key->AsBigIntLiteral()->Str()); + bigIntLiteral->SetRange(key->AsBigIntLiteral()->Range()); + return bigIntLiteral; } UNREACHABLE(); return nullptr; diff --git a/es2panda/test/base64/availableTargetApiVersion/10/expected.txt b/es2panda/test/base64/availableTargetApiVersion/10/expected.txt index 7196886c4e5cf0f3cb19ad4d939f09f64e2e7c60..ea65d584ae2cfdff4b04e21864de8947fb8f8a77 100644 --- a/es2panda/test/base64/availableTargetApiVersion/10/expected.txt +++ b/es2panda/test/base64/availableTargetApiVersion/10/expected.txt @@ -11,4 +11,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -UEFOREEAAAAAAAAACQAAAJwBAAAAAAAAAAAAAAMAAAA8AAAAAQAAAJgBAAAAAAAASAAAAAEAAABIAAAArgAAAN8AAAASAQAAiAAAAJwBAAACAAAAcAAAAAMAAAB4AAAAAAAAAIQAAAABAAAAhAAAAN8AAAASAQAAiAAAAKIAAACpAAAARAEAADFoZWxsbyB3b3JsZCwgdmVyc2lvbiAxMCEAC3ByaW50AAdzdHIASUxfRVNFeHBlY3RlZFByb3BlcnR5Q291bnRBbm5vdGF0aW9uOwAAAAAAgUAAAAIAADNMX0VTU2xvdE51bWJlckFubm90YXRpb247AAAAAACBQAAAAgAAF2Z1bmNfbWFpbl8wABNMX0dMT0JBTDsAAAAAAAEAAQIAAAEAAAAFAQAAiAIBYQEAAAIABYwBAAAGVAEAAAAA7u4AABVTbG90TnVtYmVyAAAAAQBIAQAABQAAADcHAyEARHBEgUSSPgAASAAAAgA/AQEAYQU/AgIAYQZgBSoDBgBlC2uJAQ4A/////w8AAgARAAAAhgEAAA== +UEFOREEAAAAAAAAACQAAAGQBAAAAAAAAAAAAAAIAAAA8AAAAAQAAAGABAAAAAAAARAAAAAEAAABEAAAAqgAAAN0AAACEAAAAZAEAAAIAAABsAAAAAwAAAHQAAAAAAAAAgAAAAAEAAACAAAAAqgAAAN0AAACEAAAAngAAAKUAAAAOAQAAMWhlbGxvIHdvcmxkLCB2ZXJzaW9uIDEwIQALcHJpbnQAB3N0cgAzTF9FU1Nsb3ROdW1iZXJBbm5vdGF0aW9uOwAAAAAAgUAAAAIAABdmdW5jX21haW5fMAATTF9HTE9CQUw7AAAAAAABAAECAAABAAAA0AAAAIgCASsBAAACAAVWAQAABh4BAAAA7u4AABVTbG90TnVtYmVyAAAAAQASAQAABQAAADcHAyEARHBEgUSSPgAASAAAAgA/AQEAYQU/AgIAYQZgBSoDBgBlC2uJAQ4A/////w8AAgARAFABAAA= diff --git a/es2panda/test/base64/availableTargetApiVersion/11/expected.txt b/es2panda/test/base64/availableTargetApiVersion/11/expected.txt index d27a626eee9142bd3f06b9183a03466dd2558b81..e4039082c8b3e142fe762b3e74c6659b351f6819 100644 --- a/es2panda/test/base64/availableTargetApiVersion/11/expected.txt +++ b/es2panda/test/base64/availableTargetApiVersion/11/expected.txt @@ -11,4 +11,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -UEFOREEAAAAAAAAACwACAJwBAAAAAAAAAAAAAAMAAAA8AAAAAQAAAJgBAAAAAAAASAAAAAEAAABIAAAArgAAAN8AAAASAQAAiAAAAJwBAAACAAAAcAAAAAMAAAB4AAAAAAAAAIQAAAABAAAAhAAAAN8AAAASAQAAiAAAAKIAAACpAAAARAEAADFoZWxsbyB3b3JsZCwgdmVyc2lvbiAxMSEAC3ByaW50AAdzdHIASUxfRVNFeHBlY3RlZFByb3BlcnR5Q291bnRBbm5vdGF0aW9uOwAAAAAAgUAAAAIAADNMX0VTU2xvdE51bWJlckFubm90YXRpb247AAAAAACBQAAAAgAAF2Z1bmNfbWFpbl8wABNMX0dMT0JBTDsAAAAAAAEAAQIAAAEAAAAFAQAAiAIBYQEAAAIABYwBAAAGVAEAAAAA7u4AABVTbG90TnVtYmVyAAAAAQBIAQAABQAAADcHAyEARHBEgUSSPgAASAAAAgA/AQEAYQU/AgIAYQZgBSoDBgBlC2uJAQ4A/////w8AAgARAAAAhgEAAA== +UEFOREEAAAAAAAAACwACAGQBAAAAAAAAAAAAAAIAAAA8AAAAAQAAAGABAAAAAAAARAAAAAEAAABEAAAAqgAAAN0AAACEAAAAZAEAAAIAAABsAAAAAwAAAHQAAAAAAAAAgAAAAAEAAACAAAAAqgAAAN0AAACEAAAAngAAAKUAAAAOAQAAMWhlbGxvIHdvcmxkLCB2ZXJzaW9uIDExIQALcHJpbnQAB3N0cgAzTF9FU1Nsb3ROdW1iZXJBbm5vdGF0aW9uOwAAAAAAgUAAAAIAABdmdW5jX21haW5fMAATTF9HTE9CQUw7AAAAAAABAAECAAABAAAA0AAAAIgCASsBAAACAAVWAQAABh4BAAAA7u4AABVTbG90TnVtYmVyAAAAAQASAQAABQAAADcHAyEARHBEgUSSPgAASAAAAgA/AQEAYQU/AgIAYQZgBSoDBgBlC2uJAQ4A/////w8AAgARAFABAAA= diff --git a/es2panda/test/base64/availableTargetApiVersion/12/expected.txt b/es2panda/test/base64/availableTargetApiVersion/12/expected.txt index 3308f1d348bd13cb2e9859b58ff09dcd82aa17f8..5851b369e143eaff057f4c075e8764ac61acc54e 100644 --- a/es2panda/test/base64/availableTargetApiVersion/12/expected.txt +++ b/es2panda/test/base64/availableTargetApiVersion/12/expected.txt @@ -11,4 +11,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -UEFOREEAAAAAAAAADAAGANgBAAAAAAAAAAAAAAQAAAA8AAAAAQAAANQBAAABAAAATAAAAAEAAABQAAAAugAAAOsAAAAdAQAAUAEAAIEBAACUAAAA2AEAAAQAAAB4AAAAAwAAAIgAAAD/////////////////////BgAAAOsAAAAdAQAAUAEAAJQAAACuAAAAtQAAADFoZWxsbyB3b3JsZCwgdmVyc2lvbiAxMiEAC3ByaW50AAdzdHIASUxfRVNFeHBlY3RlZFByb3BlcnR5Q291bnRBbm5vdGF0aW9uOwAAAAAAgUAAAAIAACtMX0VTU2NvcGVOYW1lc1JlY29yZDsAAAAAAAEBAAIAAAEAAAAbAQAAAAKBAQAAAAEAM0xfRVNTbG90TnVtYmVyQW5ub3RhdGlvbjsAAAAAAIFAAAACAAAXZnVuY19tYWluXzAAE0xfR0xPQkFMOwAAAAAAAQABAgAAAwD//0MBAACIAgGeAQAAAgAFyQEAAAaRAQAAAAAAAAAVU2xvdE51bWJlcgACAAEAhQEAAAUAAAA3BwMhAERwRIFEkj4AAEgAAAIAPwEBAGEFPwICAGEGYAUqAwYAZQtriQEOAP////8PAAIAEQAAwwEAAA== +UEFOREEAAAAAAAAADAAGAKQBAAAAAAAAAAAAAAMAAAA8AAAAAQAAAKABAAABAAAASAAAAAEAAABMAAAAtgAAAOgAAAAbAQAATAEAAJAAAACkAQAABAAAAHQAAAADAAAAhAAAAP////////////////////8GAAAAtgAAAOgAAAAbAQAAkAAAAKoAAACxAAAAMWhlbGxvIHdvcmxkLCB2ZXJzaW9uIDEyIQALcHJpbnQAB3N0cgArTF9FU1Njb3BlTmFtZXNSZWNvcmQ7AAAAAAABAQACAAABAAAA5gAAAAACTAEAAAABADNMX0VTU2xvdE51bWJlckFubm90YXRpb247AAAAAACBQAAAAgAAF2Z1bmNfbWFpbl8wABNMX0dMT0JBTDsAAAAAAAEAAQIAAAMA//8OAQAAiAIBaQEAAAIABZQBAAAGXAEAAAAAAAAAFVNsb3ROdW1iZXIAAgABAFABAAAFAAAANwcDIQBEcESBRJI+AABIAAACAD8BAQBhBT8CAgBhBmAFKgMGAGULa4kBDgD/////DwACABEAAACOAQAA diff --git a/es2panda/test/base64/availableTargetApiVersion/9/expected.txt b/es2panda/test/base64/availableTargetApiVersion/9/expected.txt index 4493d88c5e760a6b4103669c127dee32f8184fa7..3a5ba6e9a24ed7dcf3b447e691140b28d93df3de 100644 --- a/es2panda/test/base64/availableTargetApiVersion/9/expected.txt +++ b/es2panda/test/base64/availableTargetApiVersion/9/expected.txt @@ -11,4 +11,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -UEFOREEAAAAAAAAACQAAAJgBAAAAAAAAAAAAAAMAAAA8AAAAAQAAAJQBAAAAAAAASAAAAAEAAABIAAAArQAAAN4AAAARAQAAiAAAAJgBAAACAAAAcAAAAAMAAAB4AAAAAAAAAIQAAAABAAAAhAAAAN4AAAARAQAAiAAAAKEAAACoAAAAQgEAAC9oZWxsbyB3b3JsZCwgdmVyc2lvbiA5IQALcHJpbnQAB3N0cgBJTF9FU0V4cGVjdGVkUHJvcGVydHlDb3VudEFubm90YXRpb247AAAAAACBQAAAAgAAM0xfRVNTbG90TnVtYmVyQW5ub3RhdGlvbjsAAAAAAIFAAAACAAAXZnVuY19tYWluXzAAE0xfR0xPQkFMOwAAAAAAAQABAgAAAQAAAAQBAACIAgFfAQAAAgAFigEAAAZSAQAAAO7uAAAVU2xvdE51bWJlcgAAAAEARgEAAAUAAAA3BwMhAERwRIFEkj4AAEgAAAIAPwEBAGEFPwICAGEGYAUqAwYAZQtriQEOAP////8PAAIAEQCEAQAA +UEFOREEAAAAAAAAACQAAAGQBAAAAAAAAAAAAAAIAAAA8AAAAAQAAAGABAAAAAAAARAAAAAEAAABEAAAAqQAAANwAAACEAAAAZAEAAAIAAABsAAAAAwAAAHQAAAAAAAAAgAAAAAEAAACAAAAAqQAAANwAAACEAAAAnQAAAKQAAAAOAQAAL2hlbGxvIHdvcmxkLCB2ZXJzaW9uIDkhAAtwcmludAAHc3RyADNMX0VTU2xvdE51bWJlckFubm90YXRpb247AAAAAACBQAAAAgAAF2Z1bmNfbWFpbl8wABNMX0dMT0JBTDsAAAAAAAEAAQIAAAEAAADPAAAAiAIBKwEAAAIABVYBAAAGHgEAAAAA7u4AABVTbG90TnVtYmVyAAAAAQASAQAABQAAADcHAyEARHBEgUSSPgAASAAAAgA/AQEAYQU/AgIAYQZgBSoDBgBlC2uJAQ4A/////w8AAgARAFABAAA= diff --git a/es2panda/test/bytecode/js/lexicalEnv/constructor-try-catch-expected.txt b/es2panda/test/bytecode/js/lexicalEnv/constructor-try-catch-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..dfa8103e1bf36c2287c6f2bf4cdc93098f3ce40b --- /dev/null +++ b/es2panda/test/bytecode/js/lexicalEnv/constructor-try-catch-expected.txt @@ -0,0 +1,162 @@ +slotNum = 0x0 +.language ECMAScript +.function any .#~@0=#C34(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0xb +.language ECMAScript +.function any .#~@1=#C35(any a0, any a1, any a2, any a3, any a4, any a5) { + nop +label_17: +label_0: + newlexenv 0x1 +label_11: +label_13: + ldai 0x19 + sta v1 + ldai 0x7 + sta v2 +label_7: + lda v1 + less 0x0, v2 + jeqz label_8 +label_9: +label_2: + definefunc 0x1, .#~@1=@1*#f43, 0x0 + stlexvar 0x0, 0x0 + definefunc 0x2, .#~@1=@1*#f46, 0x2 + ldundefined + sta v3 + ldundefined + stricteq 0x3, v3 + jeqz label_5 +label_4: + lda a2 + throw.ifsupernotcorrectcall 0x0 + poplexenv + mov v3, a2 +label_5: + lda v3 + return +label_10: +end_label_10: +label_19: +label_15: + lda.str 123 + sta v3 + tryldglobalbyname 0x4, print + callarg1 0x5, v3 + ldlexvar 0x0, 0x0 + sta v3 + poplexenv + newlexenv 0x1 + lda v3 + stlexvar 0x0, 0x0 + lda v2 + tonumeric 0x7 + inc 0x8 + sta v2 +label_12: +end_label_12: + jmp label_7 +label_20: + sta v0 +label_16: + poplexenv + lda v0 + throw +label_8: + poplexenv + ldundefined + sta v0 + mov v4, v0 + supercallthisrange 0x9, 0x0, v4 + sta v0 + lda a2 + throw.ifsupernotcorrectcall 0x1 + lda v0 + throw.ifsupernotcorrectcall 0x0 + lda v0 + return +label_18: +} + +.catchall label_9, end_label_10, label_19 + +.catchall label_11, end_label_12, label_20 + +slotNum = 0x0 +.language ECMAScript +.function any .#~@1=@1*#f43(any a0, any a1, any a2) { +label_1: +label_0: + ldlexvar 0x0, 0x0 + return +label_2: +} + +slotNum = 0x0 +.language ECMAScript +.function any .#~@1=@1*#f46(any a0, any a1, any a2, any a3, any a4) { +label_1: +label_0: + ldlexvar 0x1, 0x0 + sta v0 + throw.undefinedifholewithname C35 + lda v0 + return +label_2: +} + +slotNum = 0xc +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { + nop +label_7: +label_0: + ldhole + sta v0 + defineclasswithbuffer 0x0, .#~@0=#C34, _1, 0x0, v0 + sta v0 + ldobjbyname 0x1, prototype + lda v0 + sttoglobalrecord 0x3, C34 + newlexenv 0x1 +label_2: +label_4: + tryldglobalbyname 0x4, C34 + sta v1 + defineclasswithbuffer 0x5, .#~@1=#C35, _2, 0x3, v1 + sta v1 + stlexvar 0x0, 0x0 + lda v1 + ldobjbyname 0x6, prototype +label_3: +end_label_3: + jmp label_1 +label_9: + sta v0 +label_6: + poplexenv + lda v0 + throw +label_1: + poplexenv + lda v1 + sttoglobalrecord 0x8, C35 + tryldglobalbyname 0x9, C35 + sta v0 + mov v2, v0 + newobjrange 0xa, 0x1, v2 + returnundefined +label_8: +} + +.catchall label_2, end_label_3, label_9 + + diff --git a/es2panda/test/bytecode/js/lexicalEnv/constructor-try-catch.js b/es2panda/test/bytecode/js/lexicalEnv/constructor-try-catch.js new file mode 100644 index 0000000000000000000000000000000000000000..f3a1fc3929458c2e90e6d1d99b0f5a3c324c7fad --- /dev/null +++ b/es2panda/test/bytecode/js/lexicalEnv/constructor-try-catch.js @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 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. + */ + +class C34 {} +class C35 extends C34 { + constructor(a37, a38 , a39) { + for (let v40 = 7; v40 < 25; v40++) { + try { + let v42; + return v42; + function f43() { + return f43; + } + function f46(a47, a48) { + return C35; + } + } catch (e52) { + let x = '123'; + print(x); + } + } + super(); + } +} + +new C35(); diff --git a/es2panda/test/compiler/annotations-projects/ts_identical_annotations_project/test-ts-identical-annotations-exec.ts b/es2panda/test/compiler/annotations-projects/ts_identical_annotations_project/test-ts-identical-annotations-exec.ts index 84370500e341ae7716a10fa55791095a854dac31..44f43d0ae8b93fafac7a4164091c496ec269a30c 100644 --- a/es2panda/test/compiler/annotations-projects/ts_identical_annotations_project/test-ts-identical-annotations-exec.ts +++ b/es2panda/test/compiler/annotations-projects/ts_identical_annotations_project/test-ts-identical-annotations-exec.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number = 42 } diff --git a/es2panda/test/compiler/annotations-projects/ts_identical_annotations_project/test-ts-identical-annotations.ts b/es2panda/test/compiler/annotations-projects/ts_identical_annotations_project/test-ts-identical-annotations.ts index 56903a4827894404715e606172d83d02d49a0a99..49a9b8d2d8d86bfd4969346a04a525e330a924b0 100644 --- a/es2panda/test/compiler/annotations-projects/ts_identical_annotations_project/test-ts-identical-annotations.ts +++ b/es2panda/test/compiler/annotations-projects/ts_identical_annotations_project/test-ts-identical-annotations.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { b: boolean = true } diff --git a/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_1/test-ts-export-annotations.ts b/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_1/test-ts-export-annotations.ts index 8c10cc06288a7c1197e1b1c601491358d987f698..2a5d2772fd2923a497c5a03ada83b604bc8245f9 100644 --- a/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_1/test-ts-export-annotations.ts +++ b/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_1/test-ts-export-annotations.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -export @interface Anno1 {} +export @interface __$$ETS_ANNOTATION$$__Anno1 {} -export @interface Anno2 { +export @interface __$$ETS_ANNOTATION$$__Anno2 { a: number = 0; } @@ -24,4 +24,3 @@ export class A {} @__$$ETS_ANNOTATION$$__Anno1() export default class B {} - diff --git a/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_1/test-ts-import-annotations-exec.ts b/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_1/test-ts-import-annotations-exec.ts index 446556e337073a83d0a2df990549c128eafc0384..13ab7bdb6b46ded18550f221cbc6019943ba27ab 100644 --- a/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_1/test-ts-import-annotations-exec.ts +++ b/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_1/test-ts-import-annotations-exec.ts @@ -15,20 +15,20 @@ import * as Namespace1 from "./test-ts-export-annotations" -@__$$ETS_ANNOTATION$$__Namespace1.Anno() +@Namespace1.__$$ETS_ANNOTATION$$__Anno() class A {} -@__$$ETS_ANNOTATION$$__Namespace1.Anno +@Namespace1.__$$ETS_ANNOTATION$$__Anno class B {} -@__$$ETS_ANNOTATION$$__Namespace1.Anno1({a: 1, b: "string"}) +@Namespace1.__$$ETS_ANNOTATION$$__Anno1({a: 1, b: "string"}) class C {} -@__$$ETS_ANNOTATION$$__Namespace1.Namespace2.Namespace3.Anno2() +@Namespace1.Namespace2.Namespace3.__$$ETS_ANNOTATION$$__Anno2() class D {} -@__$$ETS_ANNOTATION$$__Namespace1.Namespace2.Namespace3.Anno2 +@Namespace1.Namespace2.Namespace3.__$$ETS_ANNOTATION$$__Anno2 class E {} -@__$$ETS_ANNOTATION$$__Namespace1.Namespace2.Namespace3.Anno3({a: 1, b: "string"}) -class F {} \ No newline at end of file +@Namespace1.Namespace2.Namespace3.__$$ETS_ANNOTATION$$__Anno3({a: 1, b: "string"}) +class F {} diff --git a/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_2/test-ts-export-annotations.ts b/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_2/test-ts-export-annotations.ts index 8c10cc06288a7c1197e1b1c601491358d987f698..6bea13acdc05d843f551afdf62e7a7d27cc561fd 100644 --- a/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_2/test-ts-export-annotations.ts +++ b/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_2/test-ts-export-annotations.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -export @interface Anno1 {} +export @interface __$$ETS_ANNOTATION$$__Anno1 {} -export @interface Anno2 { +export @interface __$$ETS_ANNOTATION$$__Anno2 { a: number = 0; } diff --git a/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_2/test-ts-import-annotations-exec.ts b/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_2/test-ts-import-annotations-exec.ts index 734f114a32138d2d1ce2da8d3df63b0e5b7a59a0..de240324b1c1ae40e9672a936fed27be20d814d7 100644 --- a/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_2/test-ts-import-annotations-exec.ts +++ b/es2panda/test/compiler/annotations-projects/ts_import_annotations_project_2/test-ts-import-annotations-exec.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import { Anno1, Anno2 } from "./test-ts-export-annotations" +import { __$$ETS_ANNOTATION$$__Anno1, __$$ETS_ANNOTATION$$__Anno2 } from "./test-ts-export-annotations" @__$$ETS_ANNOTATION$$__Anno1 class A {} diff --git a/es2panda/test/compiler/annotations/declaration-3d-array-boolean.ts b/es2panda/test/compiler/annotations/declaration-3d-array-boolean.ts index 8bb5148dc721dad55760f4cf315cd6dd0f348a4c..b13f16c168dc4afec2966bf489d0c34eafae41d4 100644 --- a/es2panda/test/compiler/annotations/declaration-3d-array-boolean.ts +++ b/es2panda/test/compiler/annotations/declaration-3d-array-boolean.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: boolean[][][]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: boolean[][][] = [[new Array()]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: boolean[][][] = [[[true, false], [true, false]]]; } diff --git a/es2panda/test/compiler/annotations/declaration-3d-array-enum-number.ts b/es2panda/test/compiler/annotations/declaration-3d-array-enum-number.ts index 8f50c85fbff71f5f2e49017f2143631e206ccdbb..bf399ee5c9305cbeb60cfaec6c81828e837514d2 100644 --- a/es2panda/test/compiler/annotations/declaration-3d-array-enum-number.ts +++ b/es2panda/test/compiler/annotations/declaration-3d-array-enum-number.ts @@ -18,16 +18,16 @@ const enum E { B = -314 } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // without initializer in .ets source code with underlying number type a: E[][][] = [[new Array(0)]]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { // with empty array initializer in .ets source code with underlying number type a: E[][][] = [[new Array(1)]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: E[][][] = [[[42, -314, 42]]]; } diff --git a/es2panda/test/compiler/annotations/declaration-3d-array-enum-string.ts b/es2panda/test/compiler/annotations/declaration-3d-array-enum-string.ts index 8eeef595d0e2bbd1b6afbe902a3920b97f0c564b..a24f1a805f6938f5b29fa3a66b6379ecdb596eb2 100644 --- a/es2panda/test/compiler/annotations/declaration-3d-array-enum-string.ts +++ b/es2panda/test/compiler/annotations/declaration-3d-array-enum-string.ts @@ -18,16 +18,16 @@ const enum E { B = "world!" } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // without initializer in .ets source code with underlying string type a: E[][][] = [[new Array(2)]]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { // with empty array initializer in .ets source code with underlying string type a: E[][][] = [[new Array(3)]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: E[][][] = [[["Hello", "world!", "Hello"]]]; } diff --git a/es2panda/test/compiler/annotations/declaration-3d-array-number.ts b/es2panda/test/compiler/annotations/declaration-3d-array-number.ts index e83e604801225ef9f226b3b862ad60e602dd2418..22d514157862b006230a5d89c581d1d5856c6104 100644 --- a/es2panda/test/compiler/annotations/declaration-3d-array-number.ts +++ b/es2panda/test/compiler/annotations/declaration-3d-array-number.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: number[][][]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: number[][][] = [[new Array()]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: number[][][] = [[[1, -2, 3], [4, -5, 6]]]; } diff --git a/es2panda/test/compiler/annotations/declaration-3d-array-string.ts b/es2panda/test/compiler/annotations/declaration-3d-array-string.ts index 9d2d477d78b5c09c70f7b74b42b74cc38f80640e..09a27904d4751c31a2b11852d7ccb84d003d5461 100644 --- a/es2panda/test/compiler/annotations/declaration-3d-array-string.ts +++ b/es2panda/test/compiler/annotations/declaration-3d-array-string.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: string[][][]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: string[][][] = [[new Array()]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: string[][][] = [[["hello", "world"], ["hello", "world"]]]; } diff --git a/es2panda/test/compiler/annotations/declaration-array-boolean.ts b/es2panda/test/compiler/annotations/declaration-array-boolean.ts index b5e92f592d43e9018fc8ef55a4931d9e1f89c936..c575410d77ecb84c7c4056b56f99dd36be3cc499 100644 --- a/es2panda/test/compiler/annotations/declaration-array-boolean.ts +++ b/es2panda/test/compiler/annotations/declaration-array-boolean.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: boolean[]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: boolean[] = new Array(); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: boolean[] = [true, false, true]; } diff --git a/es2panda/test/compiler/annotations/declaration-array-enum-number.ts b/es2panda/test/compiler/annotations/declaration-array-enum-number.ts index d947e16c08f264c72522e47bdb51582c5d6dc8fb..139e108acbe8ba544fd8a31f859d48cb33bd23e9 100644 --- a/es2panda/test/compiler/annotations/declaration-array-enum-number.ts +++ b/es2panda/test/compiler/annotations/declaration-array-enum-number.ts @@ -18,16 +18,16 @@ const enum E { B = -314 } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // without initializer in .ets source code with underlying number type a: E[] = new Array(0); } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { // with empty array initializer in .ets source code with underlying number type a: E[] = new Array(1); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: E[] = [42, -314, 42]; } diff --git a/es2panda/test/compiler/annotations/declaration-array-enum-string.ts b/es2panda/test/compiler/annotations/declaration-array-enum-string.ts index a55745424cd2cbffdff0f6844cd0e61f46a21db3..39e7411e1a54dfec881d36f64e0a08203b809baa 100644 --- a/es2panda/test/compiler/annotations/declaration-array-enum-string.ts +++ b/es2panda/test/compiler/annotations/declaration-array-enum-string.ts @@ -18,16 +18,16 @@ const enum E { B = "world!" } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // without initializer in .ets source code with underlying string type a: E[] = new Array(2); } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { // with empty array initializer in .ets source code with underlying string type a: E[] = new Array(3); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: E[] = ["Hello", "world!", "Hello"]; } diff --git a/es2panda/test/compiler/annotations/declaration-array-number.ts b/es2panda/test/compiler/annotations/declaration-array-number.ts index d573f6ebb3a1b6e184ad1aa23bb189d8f24308cd..13e7ce6232018cb48c06efb09457f279fa2be5b8 100644 --- a/es2panda/test/compiler/annotations/declaration-array-number.ts +++ b/es2panda/test/compiler/annotations/declaration-array-number.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: number[]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: number[] = new Array(); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: number[] = [1, -2, 3]; } diff --git a/es2panda/test/compiler/annotations/declaration-array-string.ts b/es2panda/test/compiler/annotations/declaration-array-string.ts index 69cfe97efcf42aa24d331347f690be6f4c018abc..2de6642e2463d14334115eb53fe796878f86bf69 100644 --- a/es2panda/test/compiler/annotations/declaration-array-string.ts +++ b/es2panda/test/compiler/annotations/declaration-array-string.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: string[]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: string[] = new Array(); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: string[] = ["Hello", "world", "!"]; } diff --git a/es2panda/test/compiler/annotations/declaration-boolean.ts b/es2panda/test/compiler/annotations/declaration-boolean.ts index e9bf814b7e14fef3b349fe5c28dd3aefae01d47b..086025dbd9a81925f1c84429f7f88a27a32e022e 100644 --- a/es2panda/test/compiler/annotations/declaration-boolean.ts +++ b/es2panda/test/compiler/annotations/declaration-boolean.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: boolean; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: boolean = true; } \ No newline at end of file diff --git a/es2panda/test/compiler/annotations/declaration-combination.ts b/es2panda/test/compiler/annotations/declaration-combination.ts index 15fa1399e46e8c87bfa2a48eed28518b9efaa7a6..7eaa0d8662020b0f5903dfdf53d4857d8bcee05e 100644 --- a/es2panda/test/compiler/annotations/declaration-combination.ts +++ b/es2panda/test/compiler/annotations/declaration-combination.ts @@ -24,7 +24,7 @@ const enum E1 { B = "world" } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number b: number[] = [13, -10] c: string diff --git a/es2panda/test/compiler/annotations/declaration-empty.ts b/es2panda/test/compiler/annotations/declaration-empty.ts index 4d205f1d28c5947498aa920c5ee887ea825a4a16..80ae4e05b8580a0eeb03456386a7854204744303 100644 --- a/es2panda/test/compiler/annotations/declaration-empty.ts +++ b/es2panda/test/compiler/annotations/declaration-empty.ts @@ -13,4 +13,4 @@ * limitations under the License. */ -@interface Anno {} +@interface __$$ETS_ANNOTATION$$__Anno {} diff --git a/es2panda/test/compiler/annotations/declaration-enum-number.ts b/es2panda/test/compiler/annotations/declaration-enum-number.ts index 095d97c985d0ca75c019935f770412d0b8878c07..74f82890046248d5b22dae7f8015a8a4ba17b26f 100644 --- a/es2panda/test/compiler/annotations/declaration-enum-number.ts +++ b/es2panda/test/compiler/annotations/declaration-enum-number.ts @@ -18,11 +18,11 @@ const enum E { B = 314 } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // No initializer with underlying type number a: E = new Number(0) as number; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: E = 42; } \ No newline at end of file diff --git a/es2panda/test/compiler/annotations/declaration-enum-string.ts b/es2panda/test/compiler/annotations/declaration-enum-string.ts index 668b13ba51d72057b1111438bd928c13bedd489f..e8f77e41a217e4caa3a3db46de289c62347a6b45 100644 --- a/es2panda/test/compiler/annotations/declaration-enum-string.ts +++ b/es2panda/test/compiler/annotations/declaration-enum-string.ts @@ -18,11 +18,11 @@ const enum E { B = "world!" } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // No initializer with underlying type string a: E; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: E = "Hello"; } \ No newline at end of file diff --git a/es2panda/test/compiler/annotations/declaration-number.ts b/es2panda/test/compiler/annotations/declaration-number.ts index 47f96358bc2142b3490c406048a8761e8d70f250..241b6909776cdb45499d6cf50d99c0dc8a10fe0f 100644 --- a/es2panda/test/compiler/annotations/declaration-number.ts +++ b/es2panda/test/compiler/annotations/declaration-number.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: number; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: number = 42; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: number = -314; } \ No newline at end of file diff --git a/es2panda/test/compiler/annotations/declaration-string.ts b/es2panda/test/compiler/annotations/declaration-string.ts index 2f67dfdc93f9626c754bb871e1a3ea6eda569e78..52e99594617389227a8f3c2e932abc592571d4c2 100644 --- a/es2panda/test/compiler/annotations/declaration-string.ts +++ b/es2panda/test/compiler/annotations/declaration-string.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: string; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: string = "Hello world!"; } \ No newline at end of file diff --git a/es2panda/test/compiler/annotations/declaration-usage-3d-array-boolean.ts b/es2panda/test/compiler/annotations/declaration-usage-3d-array-boolean.ts index b228a7be88bbcdc9acf8ad31da5fa7d30d5aea2e..e707f942b5deddf83713a8c326d93162c8f4d590 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-3d-array-boolean.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-3d-array-boolean.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: boolean[][][]; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-3d-array-enum-number.ts b/es2panda/test/compiler/annotations/declaration-usage-3d-array-enum-number.ts index 4439bb44647435b12b1217d6530bbedaa4f19297..3c503d4bdc442841224d4ec86bc0bb40042d38e9 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-3d-array-enum-number.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-3d-array-enum-number.ts @@ -18,7 +18,7 @@ const enum E { B = -2 } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E[][][] = [[new Array(0)]]; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-3d-array-enum-string.ts b/es2panda/test/compiler/annotations/declaration-usage-3d-array-enum-string.ts index 3ea8b4242bbbf19418701fbf8dce909f75358500..175a0dcb7a93270affd66c1335480c174a2be5f4 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-3d-array-enum-string.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-3d-array-enum-string.ts @@ -18,7 +18,7 @@ const enum E { B = "world" } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E[][][] = [[new Array(2)]]; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-3d-array-number.ts b/es2panda/test/compiler/annotations/declaration-usage-3d-array-number.ts index 880fe4b3a0ce614fb09658f56b12dc5034efa6ec..9dbe6711ed5b5491114969dd792ba535bf57c904 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-3d-array-number.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-3d-array-number.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number[][][]; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-3d-array-string.ts b/es2panda/test/compiler/annotations/declaration-usage-3d-array-string.ts index 8bdbb7118e9996f7c99637dd147a82d0e24eb1b6..37e8437d72aa2c3145dca40ffa6691294fcb79e2 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-3d-array-string.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-3d-array-string.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: string[][][]; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-array-boolean.ts b/es2panda/test/compiler/annotations/declaration-usage-array-boolean.ts index 06ae0c99571fdd0308b644460b368e65d069b7d4..cd8fece8279a7d132e7a6398b85631455d073d2c 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-array-boolean.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-array-boolean.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: boolean[]; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-array-enum-number.ts b/es2panda/test/compiler/annotations/declaration-usage-array-enum-number.ts index 03162a2deff807a424dc76390e630d22eaa84c1a..07c2b6bb2f0f5c629986f44764655669ae399c8c 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-array-enum-number.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-array-enum-number.ts @@ -18,7 +18,7 @@ const enum E { B = -2, } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E[] = new Array(0); } diff --git a/es2panda/test/compiler/annotations/declaration-usage-array-enum-string.ts b/es2panda/test/compiler/annotations/declaration-usage-array-enum-string.ts index aa3bd9c9fbd145aba6be513f37384ffc078ad36b..52742a3241cc03aafcb0daf8228f2a14bdee1464 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-array-enum-string.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-array-enum-string.ts @@ -18,7 +18,7 @@ const enum E { B = "world", } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E[] = new Array(2); } diff --git a/es2panda/test/compiler/annotations/declaration-usage-array-number.ts b/es2panda/test/compiler/annotations/declaration-usage-array-number.ts index e2003df66c22c54a3302252748e0842a3752300c..2fe6ab909a70db9c28511dce3156556dfe604b73 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-array-number.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-array-number.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number[]; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-array-string.ts b/es2panda/test/compiler/annotations/declaration-usage-array-string.ts index c14f9d9d8fd68fa1d0756c8f21d84b10da738391..c00fe674fcc5ac3a3cebb385e3c3a25224990fbe 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-array-string.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-array-string.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: string[]; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-boolean.ts b/es2panda/test/compiler/annotations/declaration-usage-boolean.ts index b47a2078487b87c4f8b679c8b12633597c77307a..3e7da49918ef6cf00cac1e7740bc1fb3464bc09a 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-boolean.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-boolean.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: boolean; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-combination.ts b/es2panda/test/compiler/annotations/declaration-usage-combination.ts index ca3633d57a3e83867c09edc7b3ab99426ce15cd1..30fa5b53c632a3c12675d4c6295c2f2cd9b85e6e 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-combination.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-combination.ts @@ -24,7 +24,7 @@ const enum E1 { B = "world" } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number b: number[] = [13, -10] c: string diff --git a/es2panda/test/compiler/annotations/declaration-usage-empty.ts b/es2panda/test/compiler/annotations/declaration-usage-empty.ts index badbc9745a1434a8e45996e86aee590e4705958f..b781add198329819f7d9e2290005b6ac08b2e6f2 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-empty.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-empty.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno {} +@interface __$$ETS_ANNOTATION$$__Anno {} @__$$ETS_ANNOTATION$$__Anno class A { diff --git a/es2panda/test/compiler/annotations/declaration-usage-enum-number.ts b/es2panda/test/compiler/annotations/declaration-usage-enum-number.ts index 3bc341432f881e4b6a2d9ad9b0b72fa01ad923ed..ecba445cf885279b39c803c6e6d267855e3ee957 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-enum-number.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-enum-number.ts @@ -18,7 +18,7 @@ const enum E { B = -2 } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E = new Number(0) as number; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-enum-string.ts b/es2panda/test/compiler/annotations/declaration-usage-enum-string.ts index d9c8f8e0477c4cf4d408da1c680efe924ab3e872..320500abe99431974fd5f281561301106df16035 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-enum-string.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-enum-string.ts @@ -18,7 +18,7 @@ const enum E { B = "world" } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-number.ts b/es2panda/test/compiler/annotations/declaration-usage-number.ts index 34e2ac30ec1078242f3e0922547280ed6384173e..637713e19282cae6bd44de9a9827a0ddc003ede0 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-number.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-number.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number; } diff --git a/es2panda/test/compiler/annotations/declaration-usage-string.ts b/es2panda/test/compiler/annotations/declaration-usage-string.ts index 0c627768fd650a5e4bac6cac31df0b4baaf5d8b6..5ad01ef4ed9394074ca233092f0bf41cc67628ab 100644 --- a/es2panda/test/compiler/annotations/declaration-usage-string.ts +++ b/es2panda/test/compiler/annotations/declaration-usage-string.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: string; } diff --git a/es2panda/test/compiler/annotations/export.ts b/es2panda/test/compiler/annotations/export.ts index d11841f8a91f6fa63d0b960f671f4883982a4581..3dd42d6c7458e22e5114fef020eed609dc3a3e8f 100644 --- a/es2panda/test/compiler/annotations/export.ts +++ b/es2panda/test/compiler/annotations/export.ts @@ -15,9 +15,9 @@ // import tests are located in compiler/ts/annotations-projects -export @interface Anno1 {} +export @interface __$$ETS_ANNOTATION$$__Anno1 {} -export @interface Anno2 { +export @interface __$$ETS_ANNOTATION$$__Anno2 { a: number = 0; } diff --git a/es2panda/test/compiler/annotations/multiple-annotations.ts b/es2panda/test/compiler/annotations/multiple-annotations.ts index cf0af17c46b720c83ce8e40a6a328b68010b19f7..246af473b26a6a8d76defe52e36865f928a33bc7 100644 --- a/es2panda/test/compiler/annotations/multiple-annotations.ts +++ b/es2panda/test/compiler/annotations/multiple-annotations.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: number = 1; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { b: string = "string" } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { c: boolean[] = [true, false]; } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/abcinputs/bytecodehar.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/abcinputs/bytecodehar.txt new file mode 100644 index 0000000000000000000000000000000000000000..2bed2a047fa2004fcca50e9d9c5051a4027a913f --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/abcinputs/bytecodehar.txt @@ -0,0 +1,2 @@ +bytecodehar-dynamic-import.ts +bytecodehar-static-import.ts diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/bytecodehar-dynamic-import.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/bytecodehar-dynamic-import.ts new file mode 100644 index 0000000000000000000000000000000000000000..8a98a541e1cfd9b3fc982dbc7d0174ed46c50ea2 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/bytecodehar-dynamic-import.ts @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2025 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 let test: string = "test"; + +function testReplacementWoAt() { + import("@normalized:N&module&bundle&lib/importfile1&1.0.0"); + import("@normalized:N&module&bundle&lib/importfile1&"); + import("@normalized:N&&bundle&lib/importfile1&1.0.0"); + import("@normalized:N&&bundle&lib/importfile1&"); + + // No-effect since no version info in compileContextInfo.json + import("@normalized:N&&&lib2/importfile3&"); +} + +function testReplacementWithAt() { + import("@normalized:N&module&&@ohos/lib/importfile2&1.0.0"); + import("@normalized:N&module&&@ohos/lib/importfile2&"); + import("@normalized:N&&&@ohos/lib/importfile2&1.0.0"); + import("@normalized:N&&&@ohos/lib/importfile2&"); + + // No-effect since no version info in compileContextInfo.json + import("@normalized:N&&&@ohos/lib2/importfile4&"); +} + +function testNonOhmurl() { + import("aaa"); +} + +function testNonConst() { + // Take effect only under release due to bcopt + let a = "@normalized:N&&bundle&lib/importfile1&" + import(a); + + a = "@normalized:N&&bundle&lib/importfile1&"; + let b = "@normalized:N&&bundle&lib/importfile1&"; + import(a); + + a = "@normalized:N&&bundle&lib/importfile1&"; + "@normalized:N&&bundle&lib/importfile1&"; + import(a); +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/bytecodehar-static-import.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/bytecodehar-static-import.ts new file mode 100644 index 0000000000000000000000000000000000000000..9b6252c67f1dd6029d825afb21f17aacfaababd9 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/bytecodehar-static-import.ts @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2025 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. + */ + +// testReplacementWoAt +import * as a from "@normalized:N&module&bundle&lib/importfile1&1.0.0"; +import * as b from "@normalized:N&module&bundle&lib/importfile1&"; +import * as c from "@normalized:N&&bundle&lib/importfile1&1.0.0"; +import * as d from "@normalized:N&&bundle&lib/importfile1&"; + +// No-effect since no version info in compileContextInfo.json +import * as e from "@normalized:N&&&lib2/importfile3&"; + +//testReplacementWithAt +import * as f from "@normalized:N&module&&@ohos/lib/importfile2&1.0.0"; +import * as g from "@normalized:N&module&&@ohos/lib/importfile2&"; +import * as h from "@normalized:N&&&@ohos/lib/importfile2&1.0.0"; +import * as i from "@normalized:N&&&@ohos/lib/importfile2&"; + +// No-effect since no version info in compileContextInfo.json +import * as j from "@normalized:N&&&@ohos/lib2/importfile4&"; + +function foo() { + print([a, b, c, d, e, f, g, h, i, j]); +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/compileContextInfo.json b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/compileContextInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..3c35014906e6b28a3452825af397a0bb1487b1a0 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/compileContextInfo.json @@ -0,0 +1,12 @@ +{ + "compileEntries": [ + "&myapp/hap-file-exec&" + ], + "hspPkgNames": [], + "updateVersionInfo": { + "bytecodehar": { + "lib": "2.0.0", + "@ohos/lib": "2.0.0" + } + } +} diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/hap-file-exec-expected.pa.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/hap-file-exec-expected.pa.txt new file mode 100644 index 0000000000000000000000000000000000000000..6f146bddc005d33fdf60e0a7556f8bad7c9b02ca --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/hap-file-exec-expected.pa.txt @@ -0,0 +1,1670 @@ +All Dependency Files: +program_file: bytecodehar-abcinput.abc +record_name: &bytecodehar/bytecodehar-dynamic-import& +program_file: bytecodehar-abcinput.abc +record_name: &bytecodehar/bytecodehar-static-import& +program_file: hap-file-exec.ts +record_name: &myapp/hap-file-exec& +program_file: importfile1.ts +record_name: bundle&lib/importfile1&2.0.0 +program_file: importfile2.ts +record_name: &@ohos/lib/importfile2&2.0.0 +program_file: importfile3.ts +record_name: &lib2/importfile3& +program_file: importfile4.ts +record_name: &@ohos/lib2/importfile4& + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst(any a0, any a1, any a2) { + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl(any a0, any a1, any a2) { + lda.str aaa + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&module&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib2/importfile4& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&&lib2/importfile3& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x7 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst, 0x0 + definefunc 0x1, &bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl, 0x0 + definefunc 0x2, &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt, 0x0 + definefunc 0x3, &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt, 0x0 + lda.str test + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x4, &bytecodehar/bytecodehar-dynamic-import&.#~A=#A, &bytecodehar/bytecodehar-dynamic-import&_2514, 0x0, v0 + ldobjbyname 0x5, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2466 +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2470 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2514 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt"; "&bytecodehar/bytecodehar-dynamic-import&.#~A=#A"; "@normalized:N&&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&&&@ohos/lib2/importfile4&"; "@normalized:N&&&lib2/importfile3&"; "@normalized:N&&bundle&lib/importfile1&2.0.0"; "@normalized:N&module&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&module&bundle&lib/importfile1&2.0.0"; "aaa"; "prototype"; "test"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x18 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.#*#foo(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + createemptyarray 0x1 + sta v1 + ldlexvar 0x0, 0x0 + sta v2 + throw.undefinedifholewithname a + lda v2 + stownbyindex 0x2, v1, 0x0 + ldlexvar 0x0, 0x1 + sta v2 + throw.undefinedifholewithname b + lda v2 + stownbyindex 0x4, v1, 0x1 + ldlexvar 0x0, 0x2 + sta v2 + throw.undefinedifholewithname c + lda v2 + stownbyindex 0x6, v1, 0x2 + ldlexvar 0x0, 0x3 + sta v2 + throw.undefinedifholewithname d + lda v2 + stownbyindex 0x8, v1, 0x3 + ldlexvar 0x0, 0x4 + sta v2 + throw.undefinedifholewithname e + lda v2 + stownbyindex 0xa, v1, 0x4 + ldlexvar 0x0, 0x5 + sta v2 + throw.undefinedifholewithname f + lda v2 + stownbyindex 0xc, v1, 0x5 + ldlexvar 0x0, 0x6 + sta v2 + throw.undefinedifholewithname g + lda v2 + stownbyindex 0xe, v1, 0x6 + ldlexvar 0x0, 0x7 + sta v2 + throw.undefinedifholewithname h + lda v2 + stownbyindex 0x10, v1, 0x7 + ldlexvar 0x0, 0x8 + sta v2 + throw.undefinedifholewithname i + lda v2 + stownbyindex 0x12, v1, 0x8 + ldlexvar 0x0, 0x9 + sta v2 + throw.undefinedifholewithname j + lda v2 + stownbyindex 0x14, v1, 0x9 + lda v0 + callarg1 0x16, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.func_main_0(any a0, any a1, any a2) { + newlexenv 0xa + definefunc 0x0, &bytecodehar/bytecodehar-static-import&.#*#foo, 0x0 + getmodulenamespace 0x0 + stlexvar 0x0, 0x0 + getmodulenamespace 0x1 + stlexvar 0x0, 0x1 + getmodulenamespace 0x2 + stlexvar 0x0, 0x2 + getmodulenamespace 0x3 + stlexvar 0x0, 0x3 + getmodulenamespace 0x4 + stlexvar 0x0, 0x4 + getmodulenamespace 0x5 + stlexvar 0x0, 0x5 + getmodulenamespace 0x6 + stlexvar 0x0, 0x6 + getmodulenamespace 0x7 + stlexvar 0x0, 0x7 + getmodulenamespace 0x8 + stlexvar 0x0, 0x8 + getmodulenamespace 0x9 + stlexvar 0x0, 0x9 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar/bytecodehar-static-import&.#~A=#A, &bytecodehar/bytecodehar-static-import&_2663, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2523 +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2527 +{ + index: 0 + tag: 2 + val: 10 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 2 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 3 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 4 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 5 + tag: 5 + val: @normalized:N&&&lib2/importfile3& +}, +{ + index: 6 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 7 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 8 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 9 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 10 + tag: 5 + val: @normalized:N&&&@ohos/lib2/importfile4& +}, +{ + index: 11 + tag: 2 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 10 +}, +{ + index: 13 + tag: 5 + val: a +}, +{ + index: 14 + tag: 9 + val: 0 +}, +{ + index: 15 + tag: 5 + val: b +}, +{ + index: 16 + tag: 9 + val: 1 +}, +{ + index: 17 + tag: 5 + val: c +}, +{ + index: 18 + tag: 9 + val: 2 +}, +{ + index: 19 + tag: 5 + val: d +}, +{ + index: 20 + tag: 9 + val: 3 +}, +{ + index: 21 + tag: 5 + val: e +}, +{ + index: 22 + tag: 9 + val: 4 +}, +{ + index: 23 + tag: 5 + val: f +}, +{ + index: 24 + tag: 9 + val: 5 +}, +{ + index: 25 + tag: 5 + val: g +}, +{ + index: 26 + tag: 9 + val: 6 +}, +{ + index: 27 + tag: 5 + val: h +}, +{ + index: 28 + tag: 9 + val: 7 +}, +{ + index: 29 + tag: 5 + val: i +}, +{ + index: 30 + tag: 9 + val: 8 +}, +{ + index: 31 + tag: 5 + val: j +}, +{ + index: 32 + tag: 9 + val: 9 +}, +{ + index: 33 + tag: 2 + val: 1 +}, +{ + index: 34 + tag: 5 + val: Anno2 +}, +{ + index: 35 + tag: 5 + val: Anno2 +}, +{ + index: 36 + tag: 2 + val: 0 +}, +{ + index: 37 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2663 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar/bytecodehar-static-import&.#*#foo"; "&bytecodehar/bytecodehar-static-import&.#~A=#A"; "a"; "b"; "c"; "d"; "e"; "f"; "g"; "h"; "i"; "j"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~A=#A(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0xd +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + getmodulenamespace 0x0 + sta v0 + getmodulenamespace 0x1 + sta v1 + tryldglobalbyname 0x0, print + sta v2 + lda v0 + ldobjbyname 0x1, test + sta v0 + lda v2 + callarg1 0x3, v0 + tryldglobalbyname 0x5, print + sta v0 + lda v1 + ldobjbyname 0x6, test + sta v1 + lda v0 + callarg1 0x8, v1 + ldhole + sta v0 + defineclasswithbuffer 0xa, &myapp/hap-file-exec&.#~A=#A, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0xb, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 2 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar/bytecodehar-dynamic-import& +}, +{ + index: 2 + tag: 5 + val: @normalized:N&&&bytecodehar/bytecodehar-static-import& +}, +{ + index: 3 + tag: 2 + val: 0 +}, +{ + index: 4 + tag: 2 + val: 2 +}, +{ + index: 5 + tag: 5 + val: bytecodeharDynamicImport +}, +{ + index: 6 + tag: 9 + val: 0 +}, +{ + index: 7 + tag: 5 + val: bytecodeharStaticImport +}, +{ + index: 8 + tag: 9 + val: 1 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#~A=#A"; "print"; "prototype"; "test"; +slotNum = 0x0 +.language ECMAScript +.function any bundle&lib/importfile1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot bundle&lib/importfile1&2.0.0_0 +------------------------------------ +slot bundle&lib/importfile1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test1 +}, +{ + index: 5 + tag: 5 + val: test1 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/lib/importfile2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/lib/importfile2&2.0.0_0 +------------------------------------ +slot &@ohos/lib/importfile2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test2 +}, +{ + index: 5 + tag: 5 + val: test2 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &lib2/importfile3&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &lib2/importfile3&_0 +------------------------------------ +slot &lib2/importfile3&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test3 +}, +{ + index: 5 + tag: 5 + val: test3 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/lib2/importfile4&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/lib2/importfile4&_0 +------------------------------------ +slot &@ohos/lib2/importfile4&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test4 +}, +{ + index: 5 + tag: 5 + val: test4 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst(any a0, any a1, any a2) { + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl(any a0, any a1, any a2) { + lda.str aaa + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&module&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib2/importfile4& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&&lib2/importfile3& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x7 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst, 0x0 + definefunc 0x1, &bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl, 0x0 + definefunc 0x2, &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt, 0x0 + definefunc 0x3, &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt, 0x0 + lda.str test + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x4, &bytecodehar/bytecodehar-dynamic-import&.#~A=#A, &bytecodehar/bytecodehar-dynamic-import&_2514, 0x0, v0 + ldobjbyname 0x5, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2466 +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2470 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2514 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt"; "&bytecodehar/bytecodehar-dynamic-import&.#~A=#A"; "@normalized:N&&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&&&@ohos/lib2/importfile4&"; "@normalized:N&&&lib2/importfile3&"; "@normalized:N&&bundle&lib/importfile1&2.0.0"; "@normalized:N&module&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&module&bundle&lib/importfile1&2.0.0"; "aaa"; "prototype"; "test"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x18 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.#*#foo(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + createemptyarray 0x1 + sta v1 + ldlexvar 0x0, 0x0 + sta v2 + throw.undefinedifholewithname a + lda v2 + stownbyindex 0x2, v1, 0x0 + ldlexvar 0x0, 0x1 + sta v2 + throw.undefinedifholewithname b + lda v2 + stownbyindex 0x4, v1, 0x1 + ldlexvar 0x0, 0x2 + sta v2 + throw.undefinedifholewithname c + lda v2 + stownbyindex 0x6, v1, 0x2 + ldlexvar 0x0, 0x3 + sta v2 + throw.undefinedifholewithname d + lda v2 + stownbyindex 0x8, v1, 0x3 + ldlexvar 0x0, 0x4 + sta v2 + throw.undefinedifholewithname e + lda v2 + stownbyindex 0xa, v1, 0x4 + ldlexvar 0x0, 0x5 + sta v2 + throw.undefinedifholewithname f + lda v2 + stownbyindex 0xc, v1, 0x5 + ldlexvar 0x0, 0x6 + sta v2 + throw.undefinedifholewithname g + lda v2 + stownbyindex 0xe, v1, 0x6 + ldlexvar 0x0, 0x7 + sta v2 + throw.undefinedifholewithname h + lda v2 + stownbyindex 0x10, v1, 0x7 + ldlexvar 0x0, 0x8 + sta v2 + throw.undefinedifholewithname i + lda v2 + stownbyindex 0x12, v1, 0x8 + ldlexvar 0x0, 0x9 + sta v2 + throw.undefinedifholewithname j + lda v2 + stownbyindex 0x14, v1, 0x9 + lda v0 + callarg1 0x16, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.func_main_0(any a0, any a1, any a2) { + newlexenv 0xa + definefunc 0x0, &bytecodehar/bytecodehar-static-import&.#*#foo, 0x0 + getmodulenamespace 0x0 + stlexvar 0x0, 0x0 + getmodulenamespace 0x1 + stlexvar 0x0, 0x1 + getmodulenamespace 0x2 + stlexvar 0x0, 0x2 + getmodulenamespace 0x3 + stlexvar 0x0, 0x3 + getmodulenamespace 0x4 + stlexvar 0x0, 0x4 + getmodulenamespace 0x5 + stlexvar 0x0, 0x5 + getmodulenamespace 0x6 + stlexvar 0x0, 0x6 + getmodulenamespace 0x7 + stlexvar 0x0, 0x7 + getmodulenamespace 0x8 + stlexvar 0x0, 0x8 + getmodulenamespace 0x9 + stlexvar 0x0, 0x9 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar/bytecodehar-static-import&.#~A=#A, &bytecodehar/bytecodehar-static-import&_2663, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2523 +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2527 +{ + index: 0 + tag: 2 + val: 10 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 2 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 3 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 4 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 5 + tag: 5 + val: @normalized:N&&&lib2/importfile3& +}, +{ + index: 6 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 7 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 8 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 9 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 10 + tag: 5 + val: @normalized:N&&&@ohos/lib2/importfile4& +}, +{ + index: 11 + tag: 2 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 10 +}, +{ + index: 13 + tag: 5 + val: a +}, +{ + index: 14 + tag: 9 + val: 0 +}, +{ + index: 15 + tag: 5 + val: b +}, +{ + index: 16 + tag: 9 + val: 1 +}, +{ + index: 17 + tag: 5 + val: c +}, +{ + index: 18 + tag: 9 + val: 2 +}, +{ + index: 19 + tag: 5 + val: d +}, +{ + index: 20 + tag: 9 + val: 3 +}, +{ + index: 21 + tag: 5 + val: e +}, +{ + index: 22 + tag: 9 + val: 4 +}, +{ + index: 23 + tag: 5 + val: f +}, +{ + index: 24 + tag: 9 + val: 5 +}, +{ + index: 25 + tag: 5 + val: g +}, +{ + index: 26 + tag: 9 + val: 6 +}, +{ + index: 27 + tag: 5 + val: h +}, +{ + index: 28 + tag: 9 + val: 7 +}, +{ + index: 29 + tag: 5 + val: i +}, +{ + index: 30 + tag: 9 + val: 8 +}, +{ + index: 31 + tag: 5 + val: j +}, +{ + index: 32 + tag: 9 + val: 9 +}, +{ + index: 33 + tag: 2 + val: 1 +}, +{ + index: 34 + tag: 5 + val: Anno2 +}, +{ + index: 35 + tag: 5 + val: Anno2 +}, +{ + index: 36 + tag: 2 + val: 0 +}, +{ + index: 37 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2663 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar/bytecodehar-static-import&.#*#foo"; "&bytecodehar/bytecodehar-static-import&.#~A=#A"; "a"; "b"; "c"; "d"; "e"; "f"; "g"; "h"; "i"; "j"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~A=#A(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0xd +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + getmodulenamespace 0x0 + sta v0 + getmodulenamespace 0x1 + sta v1 + tryldglobalbyname 0x0, print + sta v2 + lda v0 + ldobjbyname 0x1, test + sta v0 + lda v2 + callarg1 0x3, v0 + tryldglobalbyname 0x5, print + sta v0 + lda v1 + ldobjbyname 0x6, test + sta v1 + lda v0 + callarg1 0x8, v1 + ldhole + sta v0 + defineclasswithbuffer 0xa, &myapp/hap-file-exec&.#~A=#A, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0xb, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 2 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar/bytecodehar-dynamic-import& +}, +{ + index: 2 + tag: 5 + val: @normalized:N&&&bytecodehar/bytecodehar-static-import& +}, +{ + index: 3 + tag: 2 + val: 0 +}, +{ + index: 4 + tag: 2 + val: 2 +}, +{ + index: 5 + tag: 5 + val: bytecodeharDynamicImport +}, +{ + index: 6 + tag: 9 + val: 0 +}, +{ + index: 7 + tag: 5 + val: bytecodeharStaticImport +}, +{ + index: 8 + tag: 9 + val: 1 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#~A=#A"; "print"; "prototype"; "test"; +slotNum = 0x0 +.language ECMAScript +.function any bundle&lib/importfile1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot bundle&lib/importfile1&2.0.0_0 +------------------------------------ +slot bundle&lib/importfile1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test1 +}, +{ + index: 5 + tag: 5 + val: test1 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/lib/importfile2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/lib/importfile2&2.0.0_0 +------------------------------------ +slot &@ohos/lib/importfile2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test2 +}, +{ + index: 5 + tag: 5 + val: test2 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &lib2/importfile3&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &lib2/importfile3&_0 +------------------------------------ +slot &lib2/importfile3&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test3 +}, +{ + index: 5 + tag: 5 + val: test3 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/lib2/importfile4&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/lib2/importfile4&_0 +------------------------------------ +slot &@ohos/lib2/importfile4&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test4 +}, +{ + index: 5 + tag: 5 + val: test4 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/hap-file-exec.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/hap-file-exec.ts new file mode 100644 index 0000000000000000000000000000000000000000..6c9b1c36d21c906a373e1b53da815a5fade14555 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/hap-file-exec.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2025 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 * as bytecodeharDynamicImport from "@normalized:N&&&bytecodehar/bytecodehar-dynamic-import&"; +import * as bytecodeharStaticImport from "@normalized:N&&&bytecodehar/bytecodehar-static-import&"; + +print(bytecodeharDynamicImport.test) +print(bytecodeharStaticImport.test) + +@bytecodeharDynamicImport.__$$ETS_ANNOTATION$$__Anno1() +@bytecodeharStaticImport.__$$ETS_ANNOTATION$$__Anno2() +class A { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile1.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile1.ts new file mode 100644 index 0000000000000000000000000000000000000000..5635f70b7138307a334a7526af3c8d596a37dc73 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile1.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2025 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 test1: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile2.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile2.ts new file mode 100644 index 0000000000000000000000000000000000000000..5267ff5e2937f60b551f7dc08245daca4a93ff68 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile2.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2025 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 test2: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile3.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile3.ts new file mode 100644 index 0000000000000000000000000000000000000000..d9a8057d7ba62b25ef432a284327fb347718ea56 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile3.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2025 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 test3: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile4.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile4.ts new file mode 100644 index 0000000000000000000000000000000000000000..3fedda824b526993822e0c90fc38728ec99e45f9 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/importfile4.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2025 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 test4: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/recordnames.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/recordnames.txt new file mode 100644 index 0000000000000000000000000000000000000000..185dca611160d3ada3534a652765594eb6ec9472 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-accuate-version-update/recordnames.txt @@ -0,0 +1,7 @@ +bytecodehar-dynamic-import:&bytecodehar/bytecodehar-dynamic-import& +bytecodehar-static-import:&bytecodehar/bytecodehar-static-import& +importfile1:bundle&lib/importfile1&2.0.0 +importfile2:&@ohos/lib/importfile2&2.0.0 +importfile3:&lib2/importfile3& +importfile4:&@ohos/lib2/importfile4& +hap-file-exec:&myapp/hap-file-exec& diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/abcinputs/bytecodehar1.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/abcinputs/bytecodehar1.txt new file mode 100644 index 0000000000000000000000000000000000000000..44fef6254c424437d17bdd628f89ec1827c753d0 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/abcinputs/bytecodehar1.txt @@ -0,0 +1,2 @@ +bytecodehar1-file1.ts +bytecodehar1-file2.ts diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/abcinputs/bytecodehar2.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/abcinputs/bytecodehar2.txt new file mode 100644 index 0000000000000000000000000000000000000000..01249cd0afb7ae24d54f9a1b926115fc33893104 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/abcinputs/bytecodehar2.txt @@ -0,0 +1,2 @@ +bytecodehar2-file1.ts +bytecodehar2-file2.ts diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar1-file1.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar1-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..27094c100af48c267e81b02ae128158162289e0b --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar1-file1.ts @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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 {test as test1} from '@normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0' + +export function test() { + print('bytecodehar1.file1.test'); + import('@normalized:N&&&sourcehar/sourcehar-file1&2.0.0') +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar1-file2.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar1-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..5962b22672130d07d4de572d0a55364e61b84dec --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar1-file2.ts @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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 {test as test1} from "@normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file2&1.0.0" + +export function test() { + print('bytecodehar1.file2.test'); + import("@normalized:N&&&sourcehar/sourcehar-file2&2.0.0") +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar2-file1.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar2-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..fc82d9af7342aa36651045fde1b22f60a5147c20 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar2-file1.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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 test() { + print('bytecodehar2.file1.test'); +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar2-file2.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar2-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..aacfd725551080ed37cc0ff7f3bd39b9b7179cd1 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/bytecodehar2-file2.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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 test() { + print('bytecodehar2.file2.test'); +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class A { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/compileContextInfo.json b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/compileContextInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..a8744ff6d302a7650651886c9655de5ad7c3e609 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/compileContextInfo.json @@ -0,0 +1,44 @@ +{ + "compileEntries": [ + "&myapp/hap-file-exec&" + ], + "hspPkgNames": [], + "pkgContextInfo": { + "myapp": { + "packageName": "myapp", + "bundleName": "", + "moduleName": "", + "version": "", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "bytecodehar1": { + "packageName": "bytecodehar1", + "bundleName": "", + "moduleName": "", + "version": "2.0.0", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "@ohos/bytecodehar2": { + "packageName": "@ohos/bytecodehar2", + "bundleName": "", + "moduleName": "", + "version": "2.0.0", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "sourcehar": { + "packageName": "sourcehar", + "bundleName": "", + "moduleName": "", + "version": "2.0.0", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + } + } +} diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/hap-file-exec-expected.pa.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/hap-file-exec-expected.pa.txt new file mode 100644 index 0000000000000000000000000000000000000000..d327a5a78ae710fd6825297c7ad8bc8a44aeacec --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/hap-file-exec-expected.pa.txt @@ -0,0 +1,1354 @@ +All Dependency Files: +program_file: bytecodehar1-abcinput.abc +record_name: &bytecodehar1/bytecodehar1-file1&2.0.0 +program_file: bytecodehar2-abcinput.abc +record_name: &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +program_file: hap-file-exec.ts +record_name: &myapp/hap-file-exec& +program_file: sourcehar-file1.ts +record_name: &sourcehar/sourcehar-file1&2.0.0 +program_file: sourcehar-file2.ts +record_name: &sourcehar/sourcehar-file2&2.0.0 + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file1&2.0.0_1844, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1782 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1786 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno1 +}, +{ + index: 9 + tag: 5 + val: Anno1 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1844 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file1&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file1&2.0.0"; "bytecodehar1.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file2&2.0.0_1915, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1853 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1857 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno2 +}, +{ + index: 9 + tag: 5 + val: Anno2 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1915 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file2&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file2&2.0.0"; "bytecodehar1.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1655, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1607 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1611 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1655 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A"; "bytecodehar2.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1712, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1664 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1668 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno2 +}, +{ + index: 5 + tag: 5 + val: Anno2 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1712 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A"; "bytecodehar2.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.#*#main(any a0, any a1, any a2) { +label_1: +label_0: + ldexternalmodulevar 0x2 + sta v0 + throw.undefinedifholewithname test + lda v0 + callarg0 0x0 + ldexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname A + mov v1, v0 + newobjrange 0x2, 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~B=#B(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-file-exec&.#*#main, 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x1, &myapp/hap-file-exec&.#~B=#B, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 3 +}, +{ + index: 3 + tag: 5 + val: A +}, +{ + index: 4 + tag: 5 + val: A +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 5 + val: Anno1 +}, +{ + index: 7 + tag: 5 + val: Anno1 +}, +{ + index: 8 + tag: 9 + val: 0 +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 9 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +{ + index: 14 + tag: 2 + val: 0 +}, +{ + index: 15 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#*#main"; "&myapp/hap-file-exec&.#~B=#B"; "A"; "prototype"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 1 +}, +{ + index: 8 + tag: 5 + val: test +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file1&2.0.0.#*#test"; "print"; "sourcehar.file1.test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file2&2.0.0.#*#test"; "print"; "sourcehar.file2.test"; +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file1&2.0.0_1844, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1782 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1786 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno1 +}, +{ + index: 9 + tag: 5 + val: Anno1 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1844 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file1&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file1&2.0.0"; "bytecodehar1.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1655, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1607 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1611 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1655 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A"; "bytecodehar2.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.#*#main(any a0, any a1, any a2) { +label_1: +label_0: + ldexternalmodulevar 0x2 + sta v0 + throw.undefinedifholewithname test + lda v0 + callarg0 0x0 + ldexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname A + mov v1, v0 + newobjrange 0x2, 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~B=#B(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-file-exec&.#*#main, 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x1, &myapp/hap-file-exec&.#~B=#B, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 3 +}, +{ + index: 3 + tag: 5 + val: A +}, +{ + index: 4 + tag: 5 + val: A +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 5 + val: Anno1 +}, +{ + index: 7 + tag: 5 + val: Anno1 +}, +{ + index: 8 + tag: 9 + val: 0 +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 9 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +{ + index: 14 + tag: 2 + val: 0 +}, +{ + index: 15 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#*#main"; "&myapp/hap-file-exec&.#~B=#B"; "A"; "prototype"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 1 +}, +{ + index: 8 + tag: 5 + val: test +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file1&2.0.0.#*#test"; "print"; "sourcehar.file1.test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file2&2.0.0.#*#test"; "print"; "sourcehar.file2.test"; diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/hap-file-exec.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/hap-file-exec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8fe9e1625e9e5f9626041a272bd5853e1937ba51 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/hap-file-exec.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2025 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 { test, __$$ETS_ANNOTATION$$__Anno1, A } from "@normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0" + +function main() { + test(); + let a = new A(); +} + +@__$$ETS_ANNOTATION$$__Anno1({ b: true }) +class B { } \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/recordnames.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/recordnames.txt new file mode 100644 index 0000000000000000000000000000000000000000..70074eddf79afcc444b4ccee16630de0b4fa6d9d --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/recordnames.txt @@ -0,0 +1,7 @@ +bytecodehar1-file1:&bytecodehar1/bytecodehar1-file1&2.0.0 +bytecodehar1-file2:&bytecodehar1/bytecodehar1-file2&2.0.0 +bytecodehar2-file1:&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +bytecodehar2-file2:&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +sourcehar-file1:&sourcehar/sourcehar-file1&2.0.0 +sourcehar-file2:&sourcehar/sourcehar-file2&2.0.0 +hap-file-exec:&myapp/hap-file-exec& diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/sourcehar-file1.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/sourcehar-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..f688431373716beb39877a74cd5d87297d0a64e3 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/sourcehar-file1.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 {test as test1} from '@normalized:N&&&sourcehar/sourcehar-file2&2.0.0' + +export function test() { + print('sourcehar.file1.test'); +} \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/sourcehar-file2.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/sourcehar-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..7702af07787a7190c88033b40fe1024e0f5e8e24 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-dependency-resolve/sourcehar-file2.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2025 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 test() { + print('sourcehar.file2.test'); +} \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/abcinputs/bytecodehar.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/abcinputs/bytecodehar.txt new file mode 100644 index 0000000000000000000000000000000000000000..2bed2a047fa2004fcca50e9d9c5051a4027a913f --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/abcinputs/bytecodehar.txt @@ -0,0 +1,2 @@ +bytecodehar-dynamic-import.ts +bytecodehar-static-import.ts diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/bytecodehar-dynamic-import.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/bytecodehar-dynamic-import.ts new file mode 100644 index 0000000000000000000000000000000000000000..30d55ea9aefa0f15c5b3654293d3f95021d5ae69 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/bytecodehar-dynamic-import.ts @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2025 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 let test: string = "test"; + +function testReplacementWoAt() { + import("@normalized:N&module&bundle&lib/importfile1&1.0.0"); + import("@normalized:N&module&bundle&lib/importfile1&"); + import("@normalized:N&module&bundle&lib/importfile1&1.0.0"); + import("@normalized:N&module&bundle&lib/importfile1&"); + + // No-effect since no version info in compileContextInfo.json + import("@normalized:N&&&lib2/importfile3&"); +} + +function testReplacementWithAt() { + import("@normalized:N&lib&&@ohos/lib/importfile2&1.0.0"); + import("@normalized:N&lib&&@ohos/lib/importfile2&"); + import("@normalized:N&lib&&@ohos/lib/importfile2&1.0.0"); + import("@normalized:N&lib&&@ohos/lib/importfile2&"); + + // No-effect since no version info in compileContextInfo.json + import("@normalized:N&&&@ohos/lib2/importfile4&"); +} + +function testNonOhmurl() { + import("aaa"); +} + +function testNonConst() { + // Take effect only under release due to bcopt + let a = "@normalized:N&module&bundle&lib/importfile1&" + import(a); + + a = "@normalized:N&module&bundle&lib/importfile1&"; + let b = "@normalized:N&module&bundle&lib/importfile1&"; + import(a); + + a = "@normalized:N&module&bundle&lib/importfile1&"; + "@normalized:N&module&bundle&lib/importfile1&"; + import(a); +} + +@interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A1 { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/bytecodehar-static-import.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/bytecodehar-static-import.ts new file mode 100644 index 0000000000000000000000000000000000000000..e8d2d8608ccdee5f66f5df5c96c221b6b0353a8c --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/bytecodehar-static-import.ts @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2025 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. + */ + +// testReplacementWoAt +import * as a from "@normalized:N&module&bundle&lib/importfile1&1.0.0"; +import * as b from "@normalized:N&module&bundle&lib/importfile1&"; +import * as c from "@normalized:N&&bundle&lib/importfile1&1.0.0"; +import * as d from "@normalized:N&&bundle&lib/importfile1&"; + +// No-effect since no version info in compileContextInfo.json +import * as e from "@normalized:N&&&lib2/importfile3&"; + +//testReplacementWithAt +import * as f from "@normalized:N&module&&@ohos/lib/importfile2&1.0.0"; +import * as g from "@normalized:N&module&&@ohos/lib/importfile2&"; +import * as h from "@normalized:N&&&@ohos/lib/importfile2&1.0.0"; +import * as i from "@normalized:N&&&@ohos/lib/importfile2&"; + +// No-effect since no version info in compileContextInfo.json +import * as j from "@normalized:N&&&@ohos/lib2/importfile4&"; + +function foo() { + print([a, b, c, d, e, f, g, h, i, j]); +} + +@interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class B { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/compileContextInfo.json b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/compileContextInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..f7127bcf76b35ba74fb1a0d26f7adc3dd276681f --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/compileContextInfo.json @@ -0,0 +1,17 @@ +{ + "compileEntries": [ + "com.inter_app.hsp&myapp/inter-app-hsp-file-exec&" + ], + "hspPkgNames": [ + "lib", + "@ohos/lib" + ], + "updateVersionInfo": { + "bytecodehar": { + "lib": "2.0.0", + "@ohos/lib": "2.0.0" + } + }, + "needModifyRecord": true, + "bundleName": "com.inter_app.hsp" +} diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile1.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile1.ts new file mode 100644 index 0000000000000000000000000000000000000000..5635f70b7138307a334a7526af3c8d596a37dc73 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile1.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2025 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 test1: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile2.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile2.ts new file mode 100644 index 0000000000000000000000000000000000000000..5267ff5e2937f60b551f7dc08245daca4a93ff68 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile2.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2025 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 test2: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile3.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile3.ts new file mode 100644 index 0000000000000000000000000000000000000000..d9a8057d7ba62b25ef432a284327fb347718ea56 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile3.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2025 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 test3: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile4.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile4.ts new file mode 100644 index 0000000000000000000000000000000000000000..3fedda824b526993822e0c90fc38728ec99e45f9 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/importfile4.ts @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2025 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 test4: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/inter-app-hsp-file-exec-expected.pa.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/inter-app-hsp-file-exec-expected.pa.txt new file mode 100644 index 0000000000000000000000000000000000000000..cf4b80b652cb86899bbfe097ffbcf3b538ac6061 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/inter-app-hsp-file-exec-expected.pa.txt @@ -0,0 +1,1508 @@ +All Dependency Files: +program_file: bytecodehar-abcinput.abc +record_name: com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import& +program_file: bytecodehar-abcinput.abc +record_name: com.inter_app.hsp&bytecodehar/bytecodehar-static-import& +program_file: importfile3.ts +record_name: com.inter_app.hsp&lib2/importfile3& +program_file: importfile4.ts +record_name: com.inter_app.hsp&@ohos/lib2/importfile4& +program_file: inter-app-hsp-file-exec.ts +record_name: com.inter_app.hsp&myapp/inter-app-hsp-file-exec& + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst(any a0, any a1, any a2) { + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl(any a0, any a1, any a2) { + lda.str aaa + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt(any a0, any a1, any a2) { + lda.str @normalized:N&lib&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&lib&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&lib&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&lib&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&com.inter_app.hsp&@ohos/lib2/importfile4& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&com.inter_app.hsp&lib2/importfile3& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#~A1=#A1(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x7 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst, 0x0 + definefunc 0x1, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl, 0x0 + definefunc 0x2, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt, 0x0 + definefunc 0x3, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt, 0x0 + lda.str test + stmodulevar 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x4, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#~A1=#A1, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&_2561, 0x0, v0 + ldobjbyname 0x5, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&_2521 +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&_2525 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&_2561 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"@normalized:N&&com.inter_app.hsp&@ohos/lib2/importfile4&"; "@normalized:N&&com.inter_app.hsp&lib2/importfile3&"; "@normalized:N&lib&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&module&bundle&lib/importfile1&2.0.0"; "aaa"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#~A1=#A1"; "prototype"; "test"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x18 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#*#foo(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + createemptyarray 0x1 + sta v1 + ldlexvar 0x0, 0x0 + sta v2 + throw.undefinedifholewithname a + lda v2 + stownbyindex 0x2, v1, 0x0 + ldlexvar 0x0, 0x1 + sta v2 + throw.undefinedifholewithname b + lda v2 + stownbyindex 0x4, v1, 0x1 + ldlexvar 0x0, 0x2 + sta v2 + throw.undefinedifholewithname c + lda v2 + stownbyindex 0x6, v1, 0x2 + ldlexvar 0x0, 0x3 + sta v2 + throw.undefinedifholewithname d + lda v2 + stownbyindex 0x8, v1, 0x3 + ldlexvar 0x0, 0x4 + sta v2 + throw.undefinedifholewithname e + lda v2 + stownbyindex 0xa, v1, 0x4 + ldlexvar 0x0, 0x5 + sta v2 + throw.undefinedifholewithname f + lda v2 + stownbyindex 0xc, v1, 0x5 + ldlexvar 0x0, 0x6 + sta v2 + throw.undefinedifholewithname g + lda v2 + stownbyindex 0xe, v1, 0x6 + ldlexvar 0x0, 0x7 + sta v2 + throw.undefinedifholewithname h + lda v2 + stownbyindex 0x10, v1, 0x7 + ldlexvar 0x0, 0x8 + sta v2 + throw.undefinedifholewithname i + lda v2 + stownbyindex 0x12, v1, 0x8 + ldlexvar 0x0, 0x9 + sta v2 + throw.undefinedifholewithname j + lda v2 + stownbyindex 0x14, v1, 0x9 + lda v0 + callarg1 0x16, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#~B=#B(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.func_main_0(any a0, any a1, any a2) { + newlexenv 0xa + definefunc 0x0, com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#*#foo, 0x0 + getmodulenamespace 0x0 + stlexvar 0x0, 0x0 + getmodulenamespace 0x1 + stlexvar 0x0, 0x1 + getmodulenamespace 0x2 + stlexvar 0x0, 0x2 + getmodulenamespace 0x3 + stlexvar 0x0, 0x3 + getmodulenamespace 0x4 + stlexvar 0x0, 0x4 + getmodulenamespace 0x5 + stlexvar 0x0, 0x5 + getmodulenamespace 0x6 + stlexvar 0x0, 0x6 + getmodulenamespace 0x7 + stlexvar 0x0, 0x7 + getmodulenamespace 0x8 + stlexvar 0x0, 0x8 + getmodulenamespace 0x9 + stlexvar 0x0, 0x9 + ldhole + sta v0 + defineclasswithbuffer 0x1, com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#~B=#B, com.inter_app.hsp&bytecodehar/bytecodehar-static-import&_2702, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-static-import&_2570 +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-static-import&_2574 +{ + index: 0 + tag: 2 + val: 10 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 2 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 3 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 4 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 5 + tag: 5 + val: @normalized:N&&com.inter_app.hsp&lib2/importfile3& +}, +{ + index: 6 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 7 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 8 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 9 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 10 + tag: 5 + val: @normalized:N&&com.inter_app.hsp&@ohos/lib2/importfile4& +}, +{ + index: 11 + tag: 2 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 10 +}, +{ + index: 13 + tag: 5 + val: a +}, +{ + index: 14 + tag: 9 + val: 0 +}, +{ + index: 15 + tag: 5 + val: b +}, +{ + index: 16 + tag: 9 + val: 1 +}, +{ + index: 17 + tag: 5 + val: c +}, +{ + index: 18 + tag: 9 + val: 2 +}, +{ + index: 19 + tag: 5 + val: d +}, +{ + index: 20 + tag: 9 + val: 3 +}, +{ + index: 21 + tag: 5 + val: e +}, +{ + index: 22 + tag: 9 + val: 4 +}, +{ + index: 23 + tag: 5 + val: f +}, +{ + index: 24 + tag: 9 + val: 5 +}, +{ + index: 25 + tag: 5 + val: g +}, +{ + index: 26 + tag: 9 + val: 6 +}, +{ + index: 27 + tag: 5 + val: h +}, +{ + index: 28 + tag: 9 + val: 7 +}, +{ + index: 29 + tag: 5 + val: i +}, +{ + index: 30 + tag: 9 + val: 8 +}, +{ + index: 31 + tag: 5 + val: j +}, +{ + index: 32 + tag: 9 + val: 9 +}, +{ + index: 33 + tag: 2 + val: 0 +}, +{ + index: 34 + tag: 2 + val: 0 +}, +{ + index: 35 + tag: 2 + val: 0 +}, +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-static-import&_2702 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"a"; "b"; "c"; "com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#*#foo"; "com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#~B=#B"; "d"; "e"; "f"; "g"; "h"; "i"; "j"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any bundle&lib/importfile1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot bundle&lib/importfile1&2.0.0_0 +------------------------------------ +slot bundle&lib/importfile1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test1 +}, +{ + index: 5 + tag: 5 + val: test1 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&@ohos/lib/importfile2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&@ohos/lib/importfile2&2.0.0_0 +------------------------------------ +slot com.inter_app.hsp&@ohos/lib/importfile2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test2 +}, +{ + index: 5 + tag: 5 + val: test2 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&lib2/importfile3&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&lib2/importfile3&_0 +------------------------------------ +slot com.inter_app.hsp&lib2/importfile3&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test3 +}, +{ + index: 5 + tag: 5 + val: test3 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&@ohos/lib2/importfile4&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&@ohos/lib2/importfile4&_0 +------------------------------------ +slot com.inter_app.hsp&@ohos/lib2/importfile4&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test4 +}, +{ + index: 5 + tag: 5 + val: test4 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&myapp/inter-app-hsp-file-exec&.#~A=#A(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0xd +.language ECMAScript +.function any com.inter_app.hsp&myapp/inter-app-hsp-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + getmodulenamespace 0x0 + sta v0 + getmodulenamespace 0x1 + sta v1 + tryldglobalbyname 0x0, print + sta v2 + lda v0 + ldobjbyname 0x1, test + sta v0 + lda v2 + callarg1 0x3, v0 + tryldglobalbyname 0x5, print + sta v0 + lda v1 + ldobjbyname 0x6, test + sta v1 + lda v0 + callarg1 0x8, v1 + ldhole + sta v0 + defineclasswithbuffer 0xa, com.inter_app.hsp&myapp/inter-app-hsp-file-exec&.#~A=#A, com.inter_app.hsp&myapp/inter-app-hsp-file-exec&_2, 0x0, v0 + ldobjbyname 0xb, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&myapp/inter-app-hsp-file-exec&_0 +------------------------------------ +slot com.inter_app.hsp&myapp/inter-app-hsp-file-exec&_1 +{ + index: 0 + tag: 2 + val: 2 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import& +}, +{ + index: 2 + tag: 5 + val: @normalized:N&&com.inter_app.hsp&bytecodehar/bytecodehar-static-import& +}, +{ + index: 3 + tag: 2 + val: 0 +}, +{ + index: 4 + tag: 2 + val: 2 +}, +{ + index: 5 + tag: 5 + val: bytecodeharDynamicImport +}, +{ + index: 6 + tag: 9 + val: 0 +}, +{ + index: 7 + tag: 5 + val: bytecodeharStaticImport +}, +{ + index: 8 + tag: 9 + val: 1 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +------------------------------------ +slot com.inter_app.hsp&myapp/inter-app-hsp-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"com.inter_app.hsp&myapp/inter-app-hsp-file-exec&.#~A=#A"; "print"; "prototype"; "test"; +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst(any a0, any a1, any a2) { + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl(any a0, any a1, any a2) { + lda.str aaa + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt(any a0, any a1, any a2) { + lda.str @normalized:N&lib&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&lib&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&lib&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&lib&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&com.inter_app.hsp&@ohos/lib2/importfile4& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&com.inter_app.hsp&lib2/importfile3& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#~A1=#A1(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x7 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst, 0x0 + definefunc 0x1, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl, 0x0 + definefunc 0x2, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt, 0x0 + definefunc 0x3, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt, 0x0 + lda.str test + stmodulevar 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x4, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#~A1=#A1, com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&_2561, 0x0, v0 + ldobjbyname 0x5, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&_2521 +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&_2525 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&_2561 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"@normalized:N&&com.inter_app.hsp&@ohos/lib2/importfile4&"; "@normalized:N&&com.inter_app.hsp&lib2/importfile3&"; "@normalized:N&lib&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&module&bundle&lib/importfile1&2.0.0"; "aaa"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt"; "com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&.#~A1=#A1"; "prototype"; "test"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x18 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#*#foo(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + createemptyarray 0x1 + sta v1 + ldlexvar 0x0, 0x0 + sta v2 + throw.undefinedifholewithname a + lda v2 + stownbyindex 0x2, v1, 0x0 + ldlexvar 0x0, 0x1 + sta v2 + throw.undefinedifholewithname b + lda v2 + stownbyindex 0x4, v1, 0x1 + ldlexvar 0x0, 0x2 + sta v2 + throw.undefinedifholewithname c + lda v2 + stownbyindex 0x6, v1, 0x2 + ldlexvar 0x0, 0x3 + sta v2 + throw.undefinedifholewithname d + lda v2 + stownbyindex 0x8, v1, 0x3 + ldlexvar 0x0, 0x4 + sta v2 + throw.undefinedifholewithname e + lda v2 + stownbyindex 0xa, v1, 0x4 + ldlexvar 0x0, 0x5 + sta v2 + throw.undefinedifholewithname f + lda v2 + stownbyindex 0xc, v1, 0x5 + ldlexvar 0x0, 0x6 + sta v2 + throw.undefinedifholewithname g + lda v2 + stownbyindex 0xe, v1, 0x6 + ldlexvar 0x0, 0x7 + sta v2 + throw.undefinedifholewithname h + lda v2 + stownbyindex 0x10, v1, 0x7 + ldlexvar 0x0, 0x8 + sta v2 + throw.undefinedifholewithname i + lda v2 + stownbyindex 0x12, v1, 0x8 + ldlexvar 0x0, 0x9 + sta v2 + throw.undefinedifholewithname j + lda v2 + stownbyindex 0x14, v1, 0x9 + lda v0 + callarg1 0x16, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#~B=#B(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.func_main_0(any a0, any a1, any a2) { + newlexenv 0xa + definefunc 0x0, com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#*#foo, 0x0 + getmodulenamespace 0x0 + stlexvar 0x0, 0x0 + getmodulenamespace 0x1 + stlexvar 0x0, 0x1 + getmodulenamespace 0x2 + stlexvar 0x0, 0x2 + getmodulenamespace 0x3 + stlexvar 0x0, 0x3 + getmodulenamespace 0x4 + stlexvar 0x0, 0x4 + getmodulenamespace 0x5 + stlexvar 0x0, 0x5 + getmodulenamespace 0x6 + stlexvar 0x0, 0x6 + getmodulenamespace 0x7 + stlexvar 0x0, 0x7 + getmodulenamespace 0x8 + stlexvar 0x0, 0x8 + getmodulenamespace 0x9 + stlexvar 0x0, 0x9 + ldhole + sta v0 + defineclasswithbuffer 0x1, com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#~B=#B, com.inter_app.hsp&bytecodehar/bytecodehar-static-import&_2702, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-static-import&_2570 +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-static-import&_2574 +{ + index: 0 + tag: 2 + val: 10 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 2 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 3 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 4 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 5 + tag: 5 + val: @normalized:N&&com.inter_app.hsp&lib2/importfile3& +}, +{ + index: 6 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 7 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 8 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 9 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 10 + tag: 5 + val: @normalized:N&&com.inter_app.hsp&@ohos/lib2/importfile4& +}, +{ + index: 11 + tag: 2 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 10 +}, +{ + index: 13 + tag: 5 + val: a +}, +{ + index: 14 + tag: 9 + val: 0 +}, +{ + index: 15 + tag: 5 + val: b +}, +{ + index: 16 + tag: 9 + val: 1 +}, +{ + index: 17 + tag: 5 + val: c +}, +{ + index: 18 + tag: 9 + val: 2 +}, +{ + index: 19 + tag: 5 + val: d +}, +{ + index: 20 + tag: 9 + val: 3 +}, +{ + index: 21 + tag: 5 + val: e +}, +{ + index: 22 + tag: 9 + val: 4 +}, +{ + index: 23 + tag: 5 + val: f +}, +{ + index: 24 + tag: 9 + val: 5 +}, +{ + index: 25 + tag: 5 + val: g +}, +{ + index: 26 + tag: 9 + val: 6 +}, +{ + index: 27 + tag: 5 + val: h +}, +{ + index: 28 + tag: 9 + val: 7 +}, +{ + index: 29 + tag: 5 + val: i +}, +{ + index: 30 + tag: 9 + val: 8 +}, +{ + index: 31 + tag: 5 + val: j +}, +{ + index: 32 + tag: 9 + val: 9 +}, +{ + index: 33 + tag: 2 + val: 0 +}, +{ + index: 34 + tag: 2 + val: 0 +}, +{ + index: 35 + tag: 2 + val: 0 +}, +------------------------------------ +slot com.inter_app.hsp&bytecodehar/bytecodehar-static-import&_2702 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"a"; "b"; "c"; "com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#*#foo"; "com.inter_app.hsp&bytecodehar/bytecodehar-static-import&.#~B=#B"; "d"; "e"; "f"; "g"; "h"; "i"; "j"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&lib2/importfile3&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&lib2/importfile3&_0 +------------------------------------ +slot com.inter_app.hsp&lib2/importfile3&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test3 +}, +{ + index: 5 + tag: 5 + val: test3 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&@ohos/lib2/importfile4&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&@ohos/lib2/importfile4&_0 +------------------------------------ +slot com.inter_app.hsp&@ohos/lib2/importfile4&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test4 +}, +{ + index: 5 + tag: 5 + val: test4 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any com.inter_app.hsp&myapp/inter-app-hsp-file-exec&.#~A=#A(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0xd +.language ECMAScript +.function any com.inter_app.hsp&myapp/inter-app-hsp-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + getmodulenamespace 0x0 + sta v0 + getmodulenamespace 0x1 + sta v1 + tryldglobalbyname 0x0, print + sta v2 + lda v0 + ldobjbyname 0x1, test + sta v0 + lda v2 + callarg1 0x3, v0 + tryldglobalbyname 0x5, print + sta v0 + lda v1 + ldobjbyname 0x6, test + sta v1 + lda v0 + callarg1 0x8, v1 + ldhole + sta v0 + defineclasswithbuffer 0xa, com.inter_app.hsp&myapp/inter-app-hsp-file-exec&.#~A=#A, com.inter_app.hsp&myapp/inter-app-hsp-file-exec&_2, 0x0, v0 + ldobjbyname 0xb, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot com.inter_app.hsp&myapp/inter-app-hsp-file-exec&_0 +------------------------------------ +slot com.inter_app.hsp&myapp/inter-app-hsp-file-exec&_1 +{ + index: 0 + tag: 2 + val: 2 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import& +}, +{ + index: 2 + tag: 5 + val: @normalized:N&&com.inter_app.hsp&bytecodehar/bytecodehar-static-import& +}, +{ + index: 3 + tag: 2 + val: 0 +}, +{ + index: 4 + tag: 2 + val: 2 +}, +{ + index: 5 + tag: 5 + val: bytecodeharDynamicImport +}, +{ + index: 6 + tag: 9 + val: 0 +}, +{ + index: 7 + tag: 5 + val: bytecodeharStaticImport +}, +{ + index: 8 + tag: 9 + val: 1 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +------------------------------------ +slot com.inter_app.hsp&myapp/inter-app-hsp-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"com.inter_app.hsp&myapp/inter-app-hsp-file-exec&.#~A=#A"; "print"; "prototype"; "test"; diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/inter-app-hsp-file-exec.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/inter-app-hsp-file-exec.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a849d9f969707261762ff0c326fa52f179632c5 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/inter-app-hsp-file-exec.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2025 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 * as bytecodeharDynamicImport from "@normalized:N&&com.inter_app.hsp&bytecodehar/bytecodehar-dynamic-import&"; +import * as bytecodeharStaticImport from "@normalized:N&&com.inter_app.hsp&bytecodehar/bytecodehar-static-import&"; + +print(bytecodeharDynamicImport.test) +print(bytecodeharStaticImport.test) + +@bytecodeharDynamicImport.__$$ETS_ANNOTATION$$__Anno1() +@bytecodeharStaticImport.__$$ETS_ANNOTATION$$__Anno2() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/recordnames.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/recordnames.txt new file mode 100644 index 0000000000000000000000000000000000000000..7fff897e3c90a12ec32d3925d2a09d3e1ae7b9b1 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-inter-app-hsp/recordnames.txt @@ -0,0 +1,7 @@ +bytecodehar-dynamic-import:&bytecodehar/bytecodehar-dynamic-import& +bytecodehar-static-import:&bytecodehar/bytecodehar-static-import& +importfile1:bundle&lib/importfile1&2.0.0 +importfile2:com.inter_app.hsp&@ohos/lib/importfile2&2.0.0 +importfile3:com.inter_app.hsp&lib2/importfile3& +importfile4:com.inter_app.hsp&@ohos/lib2/importfile4& +inter-app-hsp-file-exec:com.inter_app.hsp&myapp/inter-app-hsp-file-exec& diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/abcinputs/bytecodehar1.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/abcinputs/bytecodehar1.txt new file mode 100644 index 0000000000000000000000000000000000000000..44fef6254c424437d17bdd628f89ec1827c753d0 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/abcinputs/bytecodehar1.txt @@ -0,0 +1,2 @@ +bytecodehar1-file1.ts +bytecodehar1-file2.ts diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/abcinputs/bytecodehar2.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/abcinputs/bytecodehar2.txt new file mode 100644 index 0000000000000000000000000000000000000000..01249cd0afb7ae24d54f9a1b926115fc33893104 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/abcinputs/bytecodehar2.txt @@ -0,0 +1,2 @@ +bytecodehar2-file1.ts +bytecodehar2-file2.ts diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar1-file1.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar1-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..a057a3927b5fe78c9e4448ead9970b7319988517 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar1-file1.ts @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2025 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 {test as test1} from '@normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0' + +export function test() { + print('bytecodehar1.file1.test'); + import('@normalized:N&&&sourcehar/sourcehar-file1&2.0.0') +} + +function A(a) { + this.a = a + this.b = 1 + this.c = 2 +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class B { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar1-file2.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar1-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..3946722605096fbc5999375259e24199cef3fe32 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar1-file2.ts @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2025 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 {test as test1} from "@normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file2&1.0.0" + +export function test() { + print('bytecodehar1.file2.test'); + import("@normalized:N&&&sourcehar/sourcehar-file2&2.0.0") +} + +class Example { + a: number; + + constructor() { + this.a = 0; + } + + setValue(value: number) { + this.a = value; + } +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class A { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar2-file1.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar2-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..c040f93e6cb741f937769bb2c89c3458fbad1481 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar2-file1.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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 test() { + print('bytecodehar2.file1.test'); +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar2-file2.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar2-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..a2da8dcd93249f8f559d3d0a0f70346f048d9035 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/bytecodehar2-file2.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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 test() { + print('bytecodehar2.file2.test'); +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class B { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/compileContextInfo.json b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/compileContextInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..a8744ff6d302a7650651886c9655de5ad7c3e609 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/compileContextInfo.json @@ -0,0 +1,44 @@ +{ + "compileEntries": [ + "&myapp/hap-file-exec&" + ], + "hspPkgNames": [], + "pkgContextInfo": { + "myapp": { + "packageName": "myapp", + "bundleName": "", + "moduleName": "", + "version": "", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "bytecodehar1": { + "packageName": "bytecodehar1", + "bundleName": "", + "moduleName": "", + "version": "2.0.0", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "@ohos/bytecodehar2": { + "packageName": "@ohos/bytecodehar2", + "bundleName": "", + "moduleName": "", + "version": "2.0.0", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "sourcehar": { + "packageName": "sourcehar", + "bundleName": "", + "moduleName": "", + "version": "2.0.0", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + } + } +} diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/hap-file-exec-expected.pa.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/hap-file-exec-expected.pa.txt new file mode 100644 index 0000000000000000000000000000000000000000..d6cd6d3e45ecf6f3b46b4267640feae85631a671 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/hap-file-exec-expected.pa.txt @@ -0,0 +1,1340 @@ +All Dependency Files: +program_file: bytecodehar1-abcinput.abc +record_name: &bytecodehar1/bytecodehar1-file1&2.0.0 +program_file: bytecodehar2-abcinput.abc +record_name: &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +program_file: hap-file-exec.ts +record_name: &myapp/hap-file-exec& +program_file: sourcehar-file1.ts +record_name: &sourcehar/sourcehar-file1&2.0.0 + +slotNum = 0x6 +expectedProperty = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#A(any a0, any a1, any a2, any a3) { + lda a3 + stobjbyname 0x0, a, a2 + ldai 0x1 + stobjbyname 0x2, b, a2 + ldai 0x2 + stobjbyname 0x4, c, a2 + returnundefined +} + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#~B=#B(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x5 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#A, 0x1 + definefunc 0x1, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x2, &bytecodehar1/bytecodehar1-file1&2.0.0.#~B=#B, &bytecodehar1/bytecodehar1-file1&2.0.0_2142, 0x0, v0 + ldobjbyname 0x3, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_2080 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_2084 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno1 +}, +{ + index: 9 + tag: 5 + val: Anno1 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_2142 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file1&2.0.0.#*#A"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#~B=#B"; "@normalized:N&&&sourcehar/sourcehar-file1&2.0.0"; "a"; "b"; "bytecodehar1.file1.test"; "c"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#~@0=#Example(any a0, any a1, any a2) { + ldai 0x0 + stobjbyname 0x0, a, a2 + lda a2 + return +} + +slotNum = 0x2 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#~@0>#setValue(any a0, any a1, any a2, any a3) { + lda a3 + stobjbyname 0x0, a, a2 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x7 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file2&2.0.0.#~@0=#Example, &bytecodehar1/bytecodehar1-file2&2.0.0_2218, 0x0, v0 + ldobjbyname 0x2, prototype + ldhole + sta v0 + defineclasswithbuffer 0x4, &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file2&2.0.0_2240, 0x0, v0 + ldobjbyname 0x5, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_2151 +{ + index: 0 + tag: 0 + val: 5 +}, +{ + index: 1 + tag: 5 + val: Example +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_2160 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno2 +}, +{ + index: 9 + tag: 5 + val: Anno2 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_2218 +{ + index: 0 + tag: 0 + val: 5 +}, +{ + index: 1 + tag: 5 + val: setValue +}, +{ + index: 2 + tag: 0 + val: 6 +}, +{ + index: 3 + tag: 6 + val: &bytecodehar1/bytecodehar1-file2&2.0.0.#~@0>#setValue +}, +{ + index: 4 + tag: 0 + val: 9 +}, +{ + index: 5 + tag: 9 + val: 1 +}, +{ + index: 6 + tag: 0 + val: 2 +}, +{ + index: 7 + tag: 2 + val: 1 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_2240 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file2&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file2&2.0.0.#~@0=#Example"; "&bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file2&2.0.0"; "a"; "bytecodehar1.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1649, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1601 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1605 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1649 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A"; "bytecodehar2.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~B=#B(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~B=#B, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1706, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1658 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1662 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno2 +}, +{ + index: 5 + tag: 5 + val: Anno2 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1706 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~B=#B"; "bytecodehar2.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.#*#main(any a0, any a1, any a2) { +label_1: +label_0: + ldexternalmodulevar 0x2 + sta v0 + throw.undefinedifholewithname test + lda v0 + callarg0 0x0 + ldexternalmodulevar 0x1 + sta v0 + throw.undefinedifholewithname B + mov v1, v0 + newobjrange 0x2, 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~C=#C(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-file-exec&.#*#main, 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x1, &myapp/hap-file-exec&.#~C=#C, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 3 +}, +{ + index: 3 + tag: 5 + val: Anno1 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 5 + val: B +}, +{ + index: 7 + tag: 5 + val: B +}, +{ + index: 8 + tag: 9 + val: 0 +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 9 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +{ + index: 14 + tag: 2 + val: 0 +}, +{ + index: 15 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#*#main"; "&myapp/hap-file-exec&.#~C=#C"; "B"; "prototype"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file1&2.0.0.#*#test"; "print"; "sourcehar.file1.test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file2&2.0.0.#*#test"; "print"; "sourcehar.file2.test"; +slotNum = 0x6 +expectedProperty = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#A(any a0, any a1, any a2, any a3) { + lda a3 + stobjbyname 0x0, a, a2 + ldai 0x1 + stobjbyname 0x2, b, a2 + ldai 0x2 + stobjbyname 0x4, c, a2 + returnundefined +} + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#~B=#B(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x5 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#A, 0x1 + definefunc 0x1, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x2, &bytecodehar1/bytecodehar1-file1&2.0.0.#~B=#B, &bytecodehar1/bytecodehar1-file1&2.0.0_2142, 0x0, v0 + ldobjbyname 0x3, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_2080 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_2084 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno1 +}, +{ + index: 9 + tag: 5 + val: Anno1 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_2142 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file1&2.0.0.#*#A"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#~B=#B"; "@normalized:N&&&sourcehar/sourcehar-file1&2.0.0"; "a"; "b"; "bytecodehar1.file1.test"; "c"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1649, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1601 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1605 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1649 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A"; "bytecodehar2.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.#*#main(any a0, any a1, any a2) { +label_1: +label_0: + ldexternalmodulevar 0x2 + sta v0 + throw.undefinedifholewithname test + lda v0 + callarg0 0x0 + ldexternalmodulevar 0x1 + sta v0 + throw.undefinedifholewithname B + mov v1, v0 + newobjrange 0x2, 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~C=#C(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-file-exec&.#*#main, 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x1, &myapp/hap-file-exec&.#~C=#C, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 3 +}, +{ + index: 3 + tag: 5 + val: Anno1 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 5 + val: B +}, +{ + index: 7 + tag: 5 + val: B +}, +{ + index: 8 + tag: 9 + val: 0 +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 9 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +{ + index: 14 + tag: 2 + val: 0 +}, +{ + index: 15 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#*#main"; "&myapp/hap-file-exec&.#~C=#C"; "B"; "prototype"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file1&2.0.0.#*#test"; "print"; "sourcehar.file1.test"; diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/hap-file-exec.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/hap-file-exec.ts new file mode 100644 index 0000000000000000000000000000000000000000..dfb9dcabd30e577833eb1baf7e2f82ada2a1881c --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/hap-file-exec.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2025 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 { test, __$$ETS_ANNOTATION$$__Anno1, B } from "@normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0" + +function main() { + test(); + let a = new B(); +} + +@__$$ETS_ANNOTATION$$__Anno1({ b: true }) +class C { } diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/recordnames.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/recordnames.txt new file mode 100644 index 0000000000000000000000000000000000000000..70074eddf79afcc444b4ccee16630de0b4fa6d9d --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/recordnames.txt @@ -0,0 +1,7 @@ +bytecodehar1-file1:&bytecodehar1/bytecodehar1-file1&2.0.0 +bytecodehar1-file2:&bytecodehar1/bytecodehar1-file2&2.0.0 +bytecodehar2-file1:&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +bytecodehar2-file2:&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +sourcehar-file1:&sourcehar/sourcehar-file1&2.0.0 +sourcehar-file2:&sourcehar/sourcehar-file2&2.0.0 +hap-file-exec:&myapp/hap-file-exec& diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/sourcehar-file1.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/sourcehar-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..e9215bd1f398efaf7980d8451eb64fbea1bc10dc --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/sourcehar-file1.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2025 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 test() { + print('sourcehar.file1.test'); +} \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/sourcehar-file2.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/sourcehar-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..7702af07787a7190c88033b40fe1024e0f5e8e24 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-test-project/sourcehar-file2.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2025 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 test() { + print('sourcehar.file2.test'); +} \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/abcinputs/bytecodehar.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/abcinputs/bytecodehar.txt new file mode 100644 index 0000000000000000000000000000000000000000..2bed2a047fa2004fcca50e9d9c5051a4027a913f --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/abcinputs/bytecodehar.txt @@ -0,0 +1,2 @@ +bytecodehar-dynamic-import.ts +bytecodehar-static-import.ts diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/bytecodehar-dynamic-import.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/bytecodehar-dynamic-import.ts new file mode 100644 index 0000000000000000000000000000000000000000..773f5fa662c2cd98b0b6e9da42f43ec157d05c10 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/bytecodehar-dynamic-import.ts @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2025 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 let test: string = "test"; + +function testReplacementWoAt() { + import("@normalized:N&module&bundle&lib/importfile1&1.0.0"); + import("@normalized:N&module&bundle&lib/importfile1&"); + import("@normalized:N&&bundle&lib/importfile1&1.0.0"); + import("@normalized:N&&bundle&lib/importfile1&"); + + // No-effect since no version info in compileContextInfo.json + import("@normalized:N&&&lib2/importfile3&"); +} + +function testReplacementWithAt() { + import("@normalized:N&module&&@ohos/lib/importfile2&1.0.0"); + import("@normalized:N&module&&@ohos/lib/importfile2&"); + import("@normalized:N&&&@ohos/lib/importfile2&1.0.0"); + import("@normalized:N&&&@ohos/lib/importfile2&"); + + // No-effect since no version info in compileContextInfo.json + import("@normalized:N&&&@ohos/lib2/importfile4&"); +} + +function testNonOhmurl() { + import("aaa"); +} + +function testNonConst() { + // Take effect only under release due to bcopt + let a = "@normalized:N&&bundle&lib/importfile1&" + import(a); + + a = "@normalized:N&&bundle&lib/importfile1&"; + let b = "@normalized:N&&bundle&lib/importfile1&"; + import(a); + + a = "@normalized:N&&bundle&lib/importfile1&"; + "@normalized:N&&bundle&lib/importfile1&"; + import(a); +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/bytecodehar-static-import.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/bytecodehar-static-import.ts new file mode 100644 index 0000000000000000000000000000000000000000..730ef9995187872998242685c0c477f23116e62d --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/bytecodehar-static-import.ts @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2025 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. + */ + +// testReplacementWoAt +import * as a from "@normalized:N&module&bundle&lib/importfile1&1.0.0"; +import * as b from "@normalized:N&module&bundle&lib/importfile1&"; +import * as c from "@normalized:N&&bundle&lib/importfile1&1.0.0"; +import * as d from "@normalized:N&&bundle&lib/importfile1&"; + +// No-effect since no version info in compileContextInfo.json +import * as e from "@normalized:N&&&lib2/importfile3&"; + +//testReplacementWithAt +import * as f from "@normalized:N&module&&@ohos/lib/importfile2&1.0.0"; +import * as g from "@normalized:N&module&&@ohos/lib/importfile2&"; +import * as h from "@normalized:N&&&@ohos/lib/importfile2&1.0.0"; +import * as i from "@normalized:N&&&@ohos/lib/importfile2&"; + +// No-effect since no version info in compileContextInfo.json +import * as j from "@normalized:N&&&@ohos/lib2/importfile4&"; + +function foo() { + print([a, b, c, d, e, f, g, h, i, j]); +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/compileContextInfo.json b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/compileContextInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..be6b280850e709ed18b7d46fd80490ebbf1e9376 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/compileContextInfo.json @@ -0,0 +1,53 @@ +{ + "compileEntries": [ + "&myapp/hap-file-exec&" + ], + "hspPkgNames": [], + "pkgContextInfo": { + "myapp": { + "packageName": "myapp", + "bundleName": "", + "moduleName": "", + "version": "", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "lib": { + "packageName": "lib", + "bundleName": "bundle", + "moduleName": "module", + "version": "2.0.0", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "@ohos/lib": { + "packageName": "@ohos/lib", + "bundleName": "", + "moduleName": "module", + "version": "2.0.0", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "lib2": { + "packageName": "lib2", + "bundleName": "", + "moduleName": "", + "version": "", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + }, + "@ohos/lib2": { + "packageName": "@ohos/lib2", + "bundleName": "", + "moduleName": "", + "version": "", + "entryPath": "", + "isSo": false, + "dependencyAlias": "" + } + } +} diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/hap-file-exec-expected.pa.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/hap-file-exec-expected.pa.txt new file mode 100644 index 0000000000000000000000000000000000000000..951b2a1d14353002088d287324d24d43ac3593b7 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/hap-file-exec-expected.pa.txt @@ -0,0 +1,1670 @@ +All Dependency Files: +program_file: bytecodehar-abcinput.abc +record_name: &bytecodehar/bytecodehar-dynamic-import& +program_file: bytecodehar-abcinput.abc +record_name: &bytecodehar/bytecodehar-static-import& +program_file: hap-file-exec.ts +record_name: &myapp/hap-file-exec& +program_file: importfile1.ts +record_name: bundle&lib/importfile1&2.0.0 +program_file: importfile2.ts +record_name: &@ohos/lib/importfile2&2.0.0 +program_file: importfile3.ts +record_name: &lib2/importfile3& +program_file: importfile4.ts +record_name: &@ohos/lib2/importfile4& + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst(any a0, any a1, any a2) { + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl(any a0, any a1, any a2) { + lda.str aaa + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&module&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib2/importfile4& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&&lib2/importfile3& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x7 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst, 0x0 + definefunc 0x1, &bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl, 0x0 + definefunc 0x2, &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt, 0x0 + definefunc 0x3, &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt, 0x0 + lda.str test + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x4, &bytecodehar/bytecodehar-dynamic-import&.#~A=#A, &bytecodehar/bytecodehar-dynamic-import&_2498, 0x0, v0 + ldobjbyname 0x5, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2450 +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2454 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2498 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt"; "&bytecodehar/bytecodehar-dynamic-import&.#~A=#A"; "@normalized:N&&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&&&@ohos/lib2/importfile4&"; "@normalized:N&&&lib2/importfile3&"; "@normalized:N&&bundle&lib/importfile1&2.0.0"; "@normalized:N&module&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&module&bundle&lib/importfile1&2.0.0"; "aaa"; "prototype"; "test"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x18 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.#*#foo(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + createemptyarray 0x1 + sta v1 + ldlexvar 0x0, 0x0 + sta v2 + throw.undefinedifholewithname a + lda v2 + stownbyindex 0x2, v1, 0x0 + ldlexvar 0x0, 0x1 + sta v2 + throw.undefinedifholewithname b + lda v2 + stownbyindex 0x4, v1, 0x1 + ldlexvar 0x0, 0x2 + sta v2 + throw.undefinedifholewithname c + lda v2 + stownbyindex 0x6, v1, 0x2 + ldlexvar 0x0, 0x3 + sta v2 + throw.undefinedifholewithname d + lda v2 + stownbyindex 0x8, v1, 0x3 + ldlexvar 0x0, 0x4 + sta v2 + throw.undefinedifholewithname e + lda v2 + stownbyindex 0xa, v1, 0x4 + ldlexvar 0x0, 0x5 + sta v2 + throw.undefinedifholewithname f + lda v2 + stownbyindex 0xc, v1, 0x5 + ldlexvar 0x0, 0x6 + sta v2 + throw.undefinedifholewithname g + lda v2 + stownbyindex 0xe, v1, 0x6 + ldlexvar 0x0, 0x7 + sta v2 + throw.undefinedifholewithname h + lda v2 + stownbyindex 0x10, v1, 0x7 + ldlexvar 0x0, 0x8 + sta v2 + throw.undefinedifholewithname i + lda v2 + stownbyindex 0x12, v1, 0x8 + ldlexvar 0x0, 0x9 + sta v2 + throw.undefinedifholewithname j + lda v2 + stownbyindex 0x14, v1, 0x9 + lda v0 + callarg1 0x16, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.func_main_0(any a0, any a1, any a2) { + newlexenv 0xa + definefunc 0x0, &bytecodehar/bytecodehar-static-import&.#*#foo, 0x0 + getmodulenamespace 0x0 + stlexvar 0x0, 0x0 + getmodulenamespace 0x1 + stlexvar 0x0, 0x1 + getmodulenamespace 0x2 + stlexvar 0x0, 0x2 + getmodulenamespace 0x3 + stlexvar 0x0, 0x3 + getmodulenamespace 0x4 + stlexvar 0x0, 0x4 + getmodulenamespace 0x5 + stlexvar 0x0, 0x5 + getmodulenamespace 0x6 + stlexvar 0x0, 0x6 + getmodulenamespace 0x7 + stlexvar 0x0, 0x7 + getmodulenamespace 0x8 + stlexvar 0x0, 0x8 + getmodulenamespace 0x9 + stlexvar 0x0, 0x9 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar/bytecodehar-static-import&.#~A=#A, &bytecodehar/bytecodehar-static-import&_2647, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2507 +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2511 +{ + index: 0 + tag: 2 + val: 10 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 2 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 3 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 4 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 5 + tag: 5 + val: @normalized:N&&&lib2/importfile3& +}, +{ + index: 6 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 7 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 8 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 9 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 10 + tag: 5 + val: @normalized:N&&&@ohos/lib2/importfile4& +}, +{ + index: 11 + tag: 2 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 10 +}, +{ + index: 13 + tag: 5 + val: a +}, +{ + index: 14 + tag: 9 + val: 0 +}, +{ + index: 15 + tag: 5 + val: b +}, +{ + index: 16 + tag: 9 + val: 1 +}, +{ + index: 17 + tag: 5 + val: c +}, +{ + index: 18 + tag: 9 + val: 2 +}, +{ + index: 19 + tag: 5 + val: d +}, +{ + index: 20 + tag: 9 + val: 3 +}, +{ + index: 21 + tag: 5 + val: e +}, +{ + index: 22 + tag: 9 + val: 4 +}, +{ + index: 23 + tag: 5 + val: f +}, +{ + index: 24 + tag: 9 + val: 5 +}, +{ + index: 25 + tag: 5 + val: g +}, +{ + index: 26 + tag: 9 + val: 6 +}, +{ + index: 27 + tag: 5 + val: h +}, +{ + index: 28 + tag: 9 + val: 7 +}, +{ + index: 29 + tag: 5 + val: i +}, +{ + index: 30 + tag: 9 + val: 8 +}, +{ + index: 31 + tag: 5 + val: j +}, +{ + index: 32 + tag: 9 + val: 9 +}, +{ + index: 33 + tag: 2 + val: 1 +}, +{ + index: 34 + tag: 5 + val: Anno2 +}, +{ + index: 35 + tag: 5 + val: Anno2 +}, +{ + index: 36 + tag: 2 + val: 0 +}, +{ + index: 37 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2647 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar/bytecodehar-static-import&.#*#foo"; "&bytecodehar/bytecodehar-static-import&.#~A=#A"; "a"; "b"; "c"; "d"; "e"; "f"; "g"; "h"; "i"; "j"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~A=#A(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0xd +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + getmodulenamespace 0x0 + sta v0 + getmodulenamespace 0x1 + sta v1 + tryldglobalbyname 0x0, print + sta v2 + lda v0 + ldobjbyname 0x1, test + sta v0 + lda v2 + callarg1 0x3, v0 + tryldglobalbyname 0x5, print + sta v0 + lda v1 + ldobjbyname 0x6, test + sta v1 + lda v0 + callarg1 0x8, v1 + ldhole + sta v0 + defineclasswithbuffer 0xa, &myapp/hap-file-exec&.#~A=#A, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0xb, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 2 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar/bytecodehar-dynamic-import& +}, +{ + index: 2 + tag: 5 + val: @normalized:N&&&bytecodehar/bytecodehar-static-import& +}, +{ + index: 3 + tag: 2 + val: 0 +}, +{ + index: 4 + tag: 2 + val: 2 +}, +{ + index: 5 + tag: 5 + val: bytecodeharDynamicImport +}, +{ + index: 6 + tag: 9 + val: 0 +}, +{ + index: 7 + tag: 5 + val: bytecodeharStaticImport +}, +{ + index: 8 + tag: 9 + val: 1 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#~A=#A"; "print"; "prototype"; "test"; +slotNum = 0x0 +.language ECMAScript +.function any bundle&lib/importfile1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot bundle&lib/importfile1&2.0.0_0 +------------------------------------ +slot bundle&lib/importfile1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test1 +}, +{ + index: 5 + tag: 5 + val: test1 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/lib/importfile2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/lib/importfile2&2.0.0_0 +------------------------------------ +slot &@ohos/lib/importfile2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test2 +}, +{ + index: 5 + tag: 5 + val: test2 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &lib2/importfile3&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &lib2/importfile3&_0 +------------------------------------ +slot &lib2/importfile3&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test3 +}, +{ + index: 5 + tag: 5 + val: test3 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/lib2/importfile4&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/lib2/importfile4&_0 +------------------------------------ +slot &@ohos/lib2/importfile4&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test4 +}, +{ + index: 5 + tag: 5 + val: test4 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst(any a0, any a1, any a2) { + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl(any a0, any a1, any a2) { + lda.str aaa + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&module&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib/importfile2&2.0.0 + dynamicimport + lda.str @normalized:N&&&@ohos/lib2/importfile4& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt(any a0, any a1, any a2) { + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&module&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&bundle&lib/importfile1&2.0.0 + dynamicimport + lda.str @normalized:N&&&lib2/importfile3& + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x7 +.language ECMAScript +.function any &bytecodehar/bytecodehar-dynamic-import&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst, 0x0 + definefunc 0x1, &bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl, 0x0 + definefunc 0x2, &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt, 0x0 + definefunc 0x3, &bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt, 0x0 + lda.str test + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x4, &bytecodehar/bytecodehar-dynamic-import&.#~A=#A, &bytecodehar/bytecodehar-dynamic-import&_2498, 0x0, v0 + ldobjbyname 0x5, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2450 +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2454 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar/bytecodehar-dynamic-import&_2498 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar/bytecodehar-dynamic-import&.#*#testNonConst"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testNonOhmurl"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWithAt"; "&bytecodehar/bytecodehar-dynamic-import&.#*#testReplacementWoAt"; "&bytecodehar/bytecodehar-dynamic-import&.#~A=#A"; "@normalized:N&&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&&&@ohos/lib2/importfile4&"; "@normalized:N&&&lib2/importfile3&"; "@normalized:N&&bundle&lib/importfile1&2.0.0"; "@normalized:N&module&&@ohos/lib/importfile2&2.0.0"; "@normalized:N&module&bundle&lib/importfile1&2.0.0"; "aaa"; "prototype"; "test"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x18 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.#*#foo(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + createemptyarray 0x1 + sta v1 + ldlexvar 0x0, 0x0 + sta v2 + throw.undefinedifholewithname a + lda v2 + stownbyindex 0x2, v1, 0x0 + ldlexvar 0x0, 0x1 + sta v2 + throw.undefinedifholewithname b + lda v2 + stownbyindex 0x4, v1, 0x1 + ldlexvar 0x0, 0x2 + sta v2 + throw.undefinedifholewithname c + lda v2 + stownbyindex 0x6, v1, 0x2 + ldlexvar 0x0, 0x3 + sta v2 + throw.undefinedifholewithname d + lda v2 + stownbyindex 0x8, v1, 0x3 + ldlexvar 0x0, 0x4 + sta v2 + throw.undefinedifholewithname e + lda v2 + stownbyindex 0xa, v1, 0x4 + ldlexvar 0x0, 0x5 + sta v2 + throw.undefinedifholewithname f + lda v2 + stownbyindex 0xc, v1, 0x5 + ldlexvar 0x0, 0x6 + sta v2 + throw.undefinedifholewithname g + lda v2 + stownbyindex 0xe, v1, 0x6 + ldlexvar 0x0, 0x7 + sta v2 + throw.undefinedifholewithname h + lda v2 + stownbyindex 0x10, v1, 0x7 + ldlexvar 0x0, 0x8 + sta v2 + throw.undefinedifholewithname i + lda v2 + stownbyindex 0x12, v1, 0x8 + ldlexvar 0x0, 0x9 + sta v2 + throw.undefinedifholewithname j + lda v2 + stownbyindex 0x14, v1, 0x9 + lda v0 + callarg1 0x16, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar/bytecodehar-static-import&.func_main_0(any a0, any a1, any a2) { + newlexenv 0xa + definefunc 0x0, &bytecodehar/bytecodehar-static-import&.#*#foo, 0x0 + getmodulenamespace 0x0 + stlexvar 0x0, 0x0 + getmodulenamespace 0x1 + stlexvar 0x0, 0x1 + getmodulenamespace 0x2 + stlexvar 0x0, 0x2 + getmodulenamespace 0x3 + stlexvar 0x0, 0x3 + getmodulenamespace 0x4 + stlexvar 0x0, 0x4 + getmodulenamespace 0x5 + stlexvar 0x0, 0x5 + getmodulenamespace 0x6 + stlexvar 0x0, 0x6 + getmodulenamespace 0x7 + stlexvar 0x0, 0x7 + getmodulenamespace 0x8 + stlexvar 0x0, 0x8 + getmodulenamespace 0x9 + stlexvar 0x0, 0x9 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar/bytecodehar-static-import&.#~A=#A, &bytecodehar/bytecodehar-static-import&_2647, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2507 +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2511 +{ + index: 0 + tag: 2 + val: 10 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 2 + tag: 5 + val: @normalized:N&module&bundle&lib/importfile1&2.0.0 +}, +{ + index: 3 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 4 + tag: 5 + val: @normalized:N&&bundle&lib/importfile1&2.0.0 +}, +{ + index: 5 + tag: 5 + val: @normalized:N&&&lib2/importfile3& +}, +{ + index: 6 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 7 + tag: 5 + val: @normalized:N&module&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 8 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 9 + tag: 5 + val: @normalized:N&&&@ohos/lib/importfile2&2.0.0 +}, +{ + index: 10 + tag: 5 + val: @normalized:N&&&@ohos/lib2/importfile4& +}, +{ + index: 11 + tag: 2 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 10 +}, +{ + index: 13 + tag: 5 + val: a +}, +{ + index: 14 + tag: 9 + val: 0 +}, +{ + index: 15 + tag: 5 + val: b +}, +{ + index: 16 + tag: 9 + val: 1 +}, +{ + index: 17 + tag: 5 + val: c +}, +{ + index: 18 + tag: 9 + val: 2 +}, +{ + index: 19 + tag: 5 + val: d +}, +{ + index: 20 + tag: 9 + val: 3 +}, +{ + index: 21 + tag: 5 + val: e +}, +{ + index: 22 + tag: 9 + val: 4 +}, +{ + index: 23 + tag: 5 + val: f +}, +{ + index: 24 + tag: 9 + val: 5 +}, +{ + index: 25 + tag: 5 + val: g +}, +{ + index: 26 + tag: 9 + val: 6 +}, +{ + index: 27 + tag: 5 + val: h +}, +{ + index: 28 + tag: 9 + val: 7 +}, +{ + index: 29 + tag: 5 + val: i +}, +{ + index: 30 + tag: 9 + val: 8 +}, +{ + index: 31 + tag: 5 + val: j +}, +{ + index: 32 + tag: 9 + val: 9 +}, +{ + index: 33 + tag: 2 + val: 1 +}, +{ + index: 34 + tag: 5 + val: Anno2 +}, +{ + index: 35 + tag: 5 + val: Anno2 +}, +{ + index: 36 + tag: 2 + val: 0 +}, +{ + index: 37 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar/bytecodehar-static-import&_2647 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar/bytecodehar-static-import&.#*#foo"; "&bytecodehar/bytecodehar-static-import&.#~A=#A"; "a"; "b"; "c"; "d"; "e"; "f"; "g"; "h"; "i"; "j"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~A=#A(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0xd +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + getmodulenamespace 0x0 + sta v0 + getmodulenamespace 0x1 + sta v1 + tryldglobalbyname 0x0, print + sta v2 + lda v0 + ldobjbyname 0x1, test + sta v0 + lda v2 + callarg1 0x3, v0 + tryldglobalbyname 0x5, print + sta v0 + lda v1 + ldobjbyname 0x6, test + sta v1 + lda v0 + callarg1 0x8, v1 + ldhole + sta v0 + defineclasswithbuffer 0xa, &myapp/hap-file-exec&.#~A=#A, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0xb, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 2 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar/bytecodehar-dynamic-import& +}, +{ + index: 2 + tag: 5 + val: @normalized:N&&&bytecodehar/bytecodehar-static-import& +}, +{ + index: 3 + tag: 2 + val: 0 +}, +{ + index: 4 + tag: 2 + val: 2 +}, +{ + index: 5 + tag: 5 + val: bytecodeharDynamicImport +}, +{ + index: 6 + tag: 9 + val: 0 +}, +{ + index: 7 + tag: 5 + val: bytecodeharStaticImport +}, +{ + index: 8 + tag: 9 + val: 1 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#~A=#A"; "print"; "prototype"; "test"; +slotNum = 0x0 +.language ECMAScript +.function any bundle&lib/importfile1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot bundle&lib/importfile1&2.0.0_0 +------------------------------------ +slot bundle&lib/importfile1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test1 +}, +{ + index: 5 + tag: 5 + val: test1 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/lib/importfile2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/lib/importfile2&2.0.0_0 +------------------------------------ +slot &@ohos/lib/importfile2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test2 +}, +{ + index: 5 + tag: 5 + val: test2 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &lib2/importfile3&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &lib2/importfile3&_0 +------------------------------------ +slot &lib2/importfile3&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test3 +}, +{ + index: 5 + tag: 5 + val: test3 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/lib2/importfile4&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldtrue + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/lib2/importfile4&_0 +------------------------------------ +slot &@ohos/lib2/importfile4&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test4 +}, +{ + index: 5 + tag: 5 + val: test4 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== + diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/hap-file-exec.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/hap-file-exec.ts new file mode 100644 index 0000000000000000000000000000000000000000..572bc4616e688a06c0e967006701f1326f1d8d60 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/hap-file-exec.ts @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 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 * as bytecodeharDynamicImport from "@normalized:N&&&bytecodehar/bytecodehar-dynamic-import&"; +import * as bytecodeharStaticImport from "@normalized:N&&&bytecodehar/bytecodehar-static-import&"; + +print(bytecodeharDynamicImport.test) +print(bytecodeharStaticImport.test) + +@bytecodeharDynamicImport.__$$ETS_ANNOTATION$$__Anno1() +@bytecodeharStaticImport.__$$ETS_ANNOTATION$$__Anno2() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile1.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile1.ts new file mode 100644 index 0000000000000000000000000000000000000000..afc68146cdbba67e99626c8d8e621fce279997f7 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile1.ts @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 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 test1: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile2.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile2.ts new file mode 100644 index 0000000000000000000000000000000000000000..f31867bafae7f57cced3748a8aac231abda27d72 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile2.ts @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 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 test2: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile3.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile3.ts new file mode 100644 index 0000000000000000000000000000000000000000..314b5403fc82ee28d43ea37dc891ad31ee5efc7c --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile3.ts @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 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 test3: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile4.ts b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile4.ts new file mode 100644 index 0000000000000000000000000000000000000000..fad2380a354687a68f814a2f402d0fffe7936c6d --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/importfile4.ts @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 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 test4: boolean = true; \ No newline at end of file diff --git a/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/recordnames.txt b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/recordnames.txt new file mode 100644 index 0000000000000000000000000000000000000000..185dca611160d3ada3534a652765594eb6ec9472 --- /dev/null +++ b/es2panda/test/compiler/bytecodehar/projects/bytecodehar-annotations-version-update/recordnames.txt @@ -0,0 +1,7 @@ +bytecodehar-dynamic-import:&bytecodehar/bytecodehar-dynamic-import& +bytecodehar-static-import:&bytecodehar/bytecodehar-static-import& +importfile1:bundle&lib/importfile1&2.0.0 +importfile2:&@ohos/lib/importfile2&2.0.0 +importfile3:&lib2/importfile3& +importfile4:&@ohos/lib2/importfile4& +hap-file-exec:&myapp/hap-file-exec& diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/abcinputs/bytecodehar1.txt b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/abcinputs/bytecodehar1.txt new file mode 100644 index 0000000000000000000000000000000000000000..44fef6254c424437d17bdd628f89ec1827c753d0 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/abcinputs/bytecodehar1.txt @@ -0,0 +1,2 @@ +bytecodehar1-file1.ts +bytecodehar1-file2.ts diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/abcinputs/bytecodehar2.txt b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/abcinputs/bytecodehar2.txt new file mode 100644 index 0000000000000000000000000000000000000000..01249cd0afb7ae24d54f9a1b926115fc33893104 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/abcinputs/bytecodehar2.txt @@ -0,0 +1,2 @@ +bytecodehar2-file1.ts +bytecodehar2-file2.ts diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar1-file1.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar1-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..7478e0048213402e23cc0b7943b4732b63481299 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar1-file1.ts @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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 {test as test1} from '@normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0' + +export function test() { + print('bytecodehar1.file1.test'); + import('@normalized:N&&&sourcehar/sourcehar-file1&2.0.0') +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar1-file2.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar1-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..5962b22672130d07d4de572d0a55364e61b84dec --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar1-file2.ts @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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 {test as test1} from "@normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file2&1.0.0" + +export function test() { + print('bytecodehar1.file2.test'); + import("@normalized:N&&&sourcehar/sourcehar-file2&2.0.0") +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar2-file1.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar2-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..fc82d9af7342aa36651045fde1b22f60a5147c20 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar2-file1.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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 test() { + print('bytecodehar2.file1.test'); +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar2-file2.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar2-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..3716361621e705ebf971362f3a919d49d9c63bd1 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/bytecodehar2-file2.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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 test() { + print('bytecodehar2.file2.test'); +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/compileContextInfo.json b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/compileContextInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..43eafd903dcdabf37bff8b31ae5b227be5be0bb2 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/compileContextInfo.json @@ -0,0 +1,13 @@ +{ + "compileEntries": [ + "&myapp/hap-file-exec&" + ], + "hspPkgNames": [], + "updateVersionInfo": { + "bytecodehar1": { + "@ohos/bytecodehar2": "2.0.0" + }, + "@ohos/bytecodehar2": { + } + } +} diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/hap-file-exec-expected.pa.txt b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/hap-file-exec-expected.pa.txt new file mode 100644 index 0000000000000000000000000000000000000000..819272cd4acd1c633cef7a3df0de506fd9e7cbfa --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/hap-file-exec-expected.pa.txt @@ -0,0 +1,1354 @@ +All Dependency Files: +program_file: bytecodehar1-abcinput.abc +record_name: &bytecodehar1/bytecodehar1-file1&2.0.0 +program_file: bytecodehar2-abcinput.abc +record_name: &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +program_file: hap-file-exec.ts +record_name: &myapp/hap-file-exec& +program_file: sourcehar-file1.ts +record_name: &sourcehar/sourcehar-file1&2.0.0 +program_file: sourcehar-file2.ts +record_name: &sourcehar/sourcehar-file2&2.0.0 + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file1&2.0.0_1826, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1764 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1768 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno1 +}, +{ + index: 9 + tag: 5 + val: Anno1 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1826 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file1&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file1&2.0.0"; "bytecodehar1.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file2&2.0.0_1897, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1835 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1839 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno2 +}, +{ + index: 9 + tag: 5 + val: Anno2 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1897 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file2&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file2&2.0.0"; "bytecodehar1.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1637, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1589 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1593 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1637 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A"; "bytecodehar2.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1694, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1646 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1650 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno2 +}, +{ + index: 5 + tag: 5 + val: Anno2 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1694 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A"; "bytecodehar2.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.#*#main(any a0, any a1, any a2) { +label_1: +label_0: + ldexternalmodulevar 0x2 + sta v0 + throw.undefinedifholewithname test + lda v0 + callarg0 0x0 + ldexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname A + mov v1, v0 + newobjrange 0x2, 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~B=#B(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-file-exec&.#*#main, 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x1, &myapp/hap-file-exec&.#~B=#B, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 3 +}, +{ + index: 3 + tag: 5 + val: A +}, +{ + index: 4 + tag: 5 + val: A +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 5 + val: Anno1 +}, +{ + index: 7 + tag: 5 + val: Anno1 +}, +{ + index: 8 + tag: 9 + val: 0 +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 9 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +{ + index: 14 + tag: 2 + val: 0 +}, +{ + index: 15 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#*#main"; "&myapp/hap-file-exec&.#~B=#B"; "A"; "prototype"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 1 +}, +{ + index: 8 + tag: 5 + val: test +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file1&2.0.0.#*#test"; "print"; "sourcehar.file1.test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file2&2.0.0.#*#test"; "print"; "sourcehar.file2.test"; +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file1&2.0.0_1826, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1764 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1768 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno1 +}, +{ + index: 9 + tag: 5 + val: Anno1 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1826 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file1&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file1&2.0.0"; "bytecodehar1.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1637, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1589 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1593 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1637 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A"; "bytecodehar2.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.#*#main(any a0, any a1, any a2) { +label_1: +label_0: + ldexternalmodulevar 0x2 + sta v0 + throw.undefinedifholewithname test + lda v0 + callarg0 0x0 + ldexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname A + mov v1, v0 + newobjrange 0x2, 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~B=#B(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-file-exec&.#*#main, 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x1, &myapp/hap-file-exec&.#~B=#B, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 3 +}, +{ + index: 3 + tag: 5 + val: A +}, +{ + index: 4 + tag: 5 + val: A +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 5 + val: Anno1 +}, +{ + index: 7 + tag: 5 + val: Anno1 +}, +{ + index: 8 + tag: 9 + val: 0 +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 9 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +{ + index: 14 + tag: 2 + val: 0 +}, +{ + index: 15 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#*#main"; "&myapp/hap-file-exec&.#~B=#B"; "A"; "prototype"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 1 +}, +{ + index: 8 + tag: 5 + val: test +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file1&2.0.0.#*#test"; "print"; "sourcehar.file1.test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file2&2.0.0.#*#test"; "print"; "sourcehar.file2.test"; diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/hap-file-exec.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/hap-file-exec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8fe9e1625e9e5f9626041a272bd5853e1937ba51 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/hap-file-exec.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2025 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 { test, __$$ETS_ANNOTATION$$__Anno1, A } from "@normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0" + +function main() { + test(); + let a = new A(); +} + +@__$$ETS_ANNOTATION$$__Anno1({ b: true }) +class B { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/recordnames.txt b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/recordnames.txt new file mode 100644 index 0000000000000000000000000000000000000000..70074eddf79afcc444b4ccee16630de0b4fa6d9d --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/recordnames.txt @@ -0,0 +1,7 @@ +bytecodehar1-file1:&bytecodehar1/bytecodehar1-file1&2.0.0 +bytecodehar1-file2:&bytecodehar1/bytecodehar1-file2&2.0.0 +bytecodehar2-file1:&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +bytecodehar2-file2:&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +sourcehar-file1:&sourcehar/sourcehar-file1&2.0.0 +sourcehar-file2:&sourcehar/sourcehar-file2&2.0.0 +hap-file-exec:&myapp/hap-file-exec& diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/sourcehar-file1.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/sourcehar-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..f688431373716beb39877a74cd5d87297d0a64e3 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/sourcehar-file1.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 {test as test1} from '@normalized:N&&&sourcehar/sourcehar-file2&2.0.0' + +export function test() { + print('sourcehar.file1.test'); +} \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/sourcehar-file2.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/sourcehar-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..7702af07787a7190c88033b40fe1024e0f5e8e24 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-cache-file/sourcehar-file2.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2025 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 test() { + print('sourcehar.file2.test'); +} \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/abcinputs/bytecodehar1.txt b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/abcinputs/bytecodehar1.txt new file mode 100644 index 0000000000000000000000000000000000000000..44fef6254c424437d17bdd628f89ec1827c753d0 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/abcinputs/bytecodehar1.txt @@ -0,0 +1,2 @@ +bytecodehar1-file1.ts +bytecodehar1-file2.ts diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/abcinputs/bytecodehar2.txt b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/abcinputs/bytecodehar2.txt new file mode 100644 index 0000000000000000000000000000000000000000..01249cd0afb7ae24d54f9a1b926115fc33893104 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/abcinputs/bytecodehar2.txt @@ -0,0 +1,2 @@ +bytecodehar2-file1.ts +bytecodehar2-file2.ts diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar1-file1.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar1-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..7478e0048213402e23cc0b7943b4732b63481299 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar1-file1.ts @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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 {test as test1} from '@normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0' + +export function test() { + print('bytecodehar1.file1.test'); + import('@normalized:N&&&sourcehar/sourcehar-file1&2.0.0') +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar1-file2.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar1-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..5962b22672130d07d4de572d0a55364e61b84dec --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar1-file2.ts @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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 {test as test1} from "@normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file2&1.0.0" + +export function test() { + print('bytecodehar1.file2.test'); + import("@normalized:N&&&sourcehar/sourcehar-file2&2.0.0") +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar2-file1.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar2-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..fc82d9af7342aa36651045fde1b22f60a5147c20 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar2-file1.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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 test() { + print('bytecodehar2.file1.test'); +} + +export @interface __$$ETS_ANNOTATION$$__Anno1 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno1() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar2-file2.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar2-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..3716361621e705ebf971362f3a919d49d9c63bd1 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/bytecodehar2-file2.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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 test() { + print('bytecodehar2.file2.test'); +} + +export @interface __$$ETS_ANNOTATION$$__Anno2 { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno2() +class A { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/compileContextInfo.json b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/compileContextInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..43eafd903dcdabf37bff8b31ae5b227be5be0bb2 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/compileContextInfo.json @@ -0,0 +1,13 @@ +{ + "compileEntries": [ + "&myapp/hap-file-exec&" + ], + "hspPkgNames": [], + "updateVersionInfo": { + "bytecodehar1": { + "@ohos/bytecodehar2": "2.0.0" + }, + "@ohos/bytecodehar2": { + } + } +} diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/hap-file-exec-expected.pa.txt b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/hap-file-exec-expected.pa.txt new file mode 100644 index 0000000000000000000000000000000000000000..839d23a63be919aec0c375491c09e70baf8755e3 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/hap-file-exec-expected.pa.txt @@ -0,0 +1,1718 @@ +All Dependency Files: +program_file: bytecodehar1-abcinput.abc +record_name: &bytecodehar1/bytecodehar1-file1&2.0.0 +program_file: bytecodehar1-abcinput.abc +record_name: &bytecodehar1/bytecodehar1-file2&2.0.0 +program_file: bytecodehar2-abcinput.abc +record_name: &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +program_file: bytecodehar2-abcinput.abc +record_name: &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +program_file: hap-file-exec.ts +record_name: &myapp/hap-file-exec& +program_file: hap-add-file.ts +record_name: &myapp/hap-add-file& +program_file: sourcehar-file1.ts +record_name: &sourcehar/sourcehar-file1&2.0.0 +program_file: sourcehar-file2.ts +record_name: &sourcehar/sourcehar-file2&2.0.0 + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file1&2.0.0_1844, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1782 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1786 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno1 +}, +{ + index: 9 + tag: 5 + val: Anno1 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1844 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file1&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file1&2.0.0"; "bytecodehar1.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file2&2.0.0_1915, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1853 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1857 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno2 +}, +{ + index: 9 + tag: 5 + val: Anno2 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1915 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file2&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file2&2.0.0"; "bytecodehar1.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1655, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1607 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1611 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1655 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A"; "bytecodehar2.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1712, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1664 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1668 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno2 +}, +{ + index: 5 + tag: 5 + val: Anno2 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1712 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A"; "bytecodehar2.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.#*#main(any a0, any a1, any a2) { +label_1: +label_0: + lda.str @normalized:N&&&myapp/hap-add-file& + dynamicimport + ldexternalmodulevar 0x2 + sta v0 + throw.undefinedifholewithname test + lda v0 + callarg0 0x0 + ldexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname A + mov v1, v0 + newobjrange 0x2, 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~B=#B(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-file-exec&.#*#main, 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x1, &myapp/hap-file-exec&.#~B=#B, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 3 +}, +{ + index: 3 + tag: 5 + val: A +}, +{ + index: 4 + tag: 5 + val: A +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 5 + val: Anno1 +}, +{ + index: 7 + tag: 5 + val: Anno1 +}, +{ + index: 8 + tag: 9 + val: 0 +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 9 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +{ + index: 14 + tag: 2 + val: 0 +}, +{ + index: 15 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#*#main"; "&myapp/hap-file-exec&.#~B=#B"; "@normalized:N&&&myapp/hap-add-file&"; "A"; "prototype"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &myapp/hap-add-file&.#*#modTest(any a0, any a1, any a2) { +label_1: +label_0: + lda.str @normalized:N&&&bytecodehar1/bytecodehar1-file2&2.0.0 + dynamicimport + tryldglobalbyname 0x0, test + callarg0 0x1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &myapp/hap-add-file&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-add-file&.#*#modTest, 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-add-file&_0 +------------------------------------ +slot &myapp/hap-add-file&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 0 +}, +{ + index: 4 + tag: 2 + val: 0 +}, +{ + index: 5 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-add-file&.#*#modTest"; "@normalized:N&&&bytecodehar1/bytecodehar1-file2&2.0.0"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 1 +}, +{ + index: 8 + tag: 5 + val: test +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file1&2.0.0.#*#test"; "print"; "sourcehar.file1.test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file2&2.0.0.#*#test"; "print"; "sourcehar.file2.test"; +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file1&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file1&2.0.0_1844, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1782 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1786 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno1 +}, +{ + index: 9 + tag: 5 + val: Anno1 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file1&2.0.0_1844 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file1&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file1&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file1&2.0.0"; "bytecodehar1.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar1.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + lda.str @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 + dynamicimport + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &bytecodehar1/bytecodehar1-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &bytecodehar1/bytecodehar1-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A, &bytecodehar1/bytecodehar1-file2&2.0.0_1915, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1853 +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1857 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 2 +}, +{ + index: 8 + tag: 5 + val: Anno2 +}, +{ + index: 9 + tag: 5 + val: Anno2 +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 5 + val: test +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +------------------------------------ +slot &bytecodehar1/bytecodehar1-file2&2.0.0_1915 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&bytecodehar1/bytecodehar1-file2&2.0.0.#*#test"; "&bytecodehar1/bytecodehar1-file2&2.0.0.#~A=#A"; "@normalized:N&&&sourcehar/sourcehar-file2&2.0.0"; "bytecodehar1.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1655, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1607 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1611 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno1 +}, +{ + index: 5 + tag: 5 + val: Anno1 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file1&2.0.0_1655 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0.#~A=#A"; "bytecodehar2.file1.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x3 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test(any a0, any a1, any a2) { + tryldglobalbyname 0x0, print + sta v0 + lda.str bytecodehar2.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +} + +slotNum = 0x0 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A(any a0, any a1, any a2) { + lda a2 + return +} + +slotNum = 0x4 +.language ECMAScript +.function any &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x1 + ldhole + sta v0 + defineclasswithbuffer 0x1, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A, &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1712, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1664 +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1668 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 2 +}, +{ + index: 4 + tag: 5 + val: Anno2 +}, +{ + index: 5 + tag: 5 + val: Anno2 +}, +{ + index: 6 + tag: 5 + val: test +}, +{ + index: 7 + tag: 5 + val: test +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +------------------------------------ +slot &@ohos/bytecodehar2/bytecodehar2-file2&2.0.0_1712 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#*#test"; "&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0.#~A=#A"; "bytecodehar2.file2.test"; "print"; "prototype"; + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.#*#main(any a0, any a1, any a2) { +label_1: +label_0: + lda.str @normalized:N&&&myapp/hap-add-file& + dynamicimport + ldexternalmodulevar 0x2 + sta v0 + throw.undefinedifholewithname test + lda v0 + callarg0 0x0 + ldexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname A + mov v1, v0 + newobjrange 0x2, 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x0 +.language ECMAScript +.function any &myapp/hap-file-exec&.#~B=#B(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any &myapp/hap-file-exec&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-file-exec&.#*#main, 0x0 + ldhole + sta v0 + defineclasswithbuffer 0x1, &myapp/hap-file-exec&.#~B=#B, &myapp/hap-file-exec&_2, 0x0, v0 + ldobjbyname 0x2, prototype + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-file-exec&_0 +------------------------------------ +slot &myapp/hap-file-exec&_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 3 +}, +{ + index: 3 + tag: 5 + val: A +}, +{ + index: 4 + tag: 5 + val: A +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 5 + val: Anno1 +}, +{ + index: 7 + tag: 5 + val: Anno1 +}, +{ + index: 8 + tag: 9 + val: 0 +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 5 + val: test +}, +{ + index: 11 + tag: 9 + val: 0 +}, +{ + index: 12 + tag: 2 + val: 0 +}, +{ + index: 13 + tag: 2 + val: 0 +}, +{ + index: 14 + tag: 2 + val: 0 +}, +{ + index: 15 + tag: 2 + val: 0 +}, +------------------------------------ +slot &myapp/hap-file-exec&_2 +{ + index: 0 + tag: 0 + val: 2 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-file-exec&.#*#main"; "&myapp/hap-file-exec&.#~B=#B"; "@normalized:N&&&myapp/hap-add-file&"; "A"; "prototype"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &myapp/hap-add-file&.#*#modTest(any a0, any a1, any a2) { +label_1: +label_0: + lda.str @normalized:N&&&bytecodehar1/bytecodehar1-file2&2.0.0 + dynamicimport + tryldglobalbyname 0x0, test + callarg0 0x1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &myapp/hap-add-file&.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &myapp/hap-add-file&.#*#modTest, 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &myapp/hap-add-file&_0 +------------------------------------ +slot &myapp/hap-add-file&_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 0 +}, +{ + index: 4 + tag: 2 + val: 0 +}, +{ + index: 5 + tag: 2 + val: 0 +}, +======> strings <====== +"&myapp/hap-add-file&.#*#modTest"; "@normalized:N&&&bytecodehar1/bytecodehar1-file2&2.0.0"; "test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file1.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file1&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file1&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file1&2.0.0_1 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: @normalized:N&&&sourcehar/sourcehar-file2&2.0.0 +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: test1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 1 +}, +{ + index: 8 + tag: 5 + val: test +}, +{ + index: 9 + tag: 5 + val: test +}, +{ + index: 10 + tag: 2 + val: 0 +}, +{ + index: 11 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file1&2.0.0.#*#test"; "print"; "sourcehar.file1.test"; +slotNum = 0x3 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.#*#test(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, print + sta v0 + lda.str sourcehar.file2.test + sta v1 + lda v0 + callarg1 0x1, v1 + returnundefined +label_2: +} + +slotNum = 0x1 +.language ECMAScript +.function any &sourcehar/sourcehar-file2&2.0.0.func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + definefunc 0x0, &sourcehar/sourcehar-file2&2.0.0.#*#test, 0x0 + stmodulevar 0x0 + returnundefined +label_2: +} + + +======> literal array buffer <====== +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_0 +------------------------------------ +slot &sourcehar/sourcehar-file2&2.0.0_1 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: test +}, +{ + index: 5 + tag: 5 + val: test +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&sourcehar/sourcehar-file2&2.0.0.#*#test"; "print"; "sourcehar.file2.test"; diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/hap-file-exec.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/hap-file-exec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b50023d9adf7aef2e9ad2161f836c098168cd4e6 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/hap-file-exec.ts @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2025 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 { test, __$$ETS_ANNOTATION$$__Anno1, A } from "@normalized:N&&&bytecodehar1/bytecodehar1-file1&2.0.0" + +function main() { + import('@normalized:N&&&myapp/hap-add-file&') + test(); + let a = new A(); +} + + +@__$$ETS_ANNOTATION$$__Anno1({ b: true }) +class B { } \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/mod/hap-add-file.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/mod/hap-add-file.ts new file mode 100644 index 0000000000000000000000000000000000000000..d06729e3fa0a08bce25100e75e28f0cd7ba2b0a8 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/mod/hap-add-file.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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. + */ + + +function modTest() { + import('@normalized:N&&&bytecodehar1/bytecodehar1-file2&2.0.0'); + test(); +} \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/recordnames.txt b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/recordnames.txt new file mode 100644 index 0000000000000000000000000000000000000000..92d7f0e7b62ef2bdfa7b8da43b2597890ec30fcb --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/recordnames.txt @@ -0,0 +1,8 @@ +bytecodehar1-file1:&bytecodehar1/bytecodehar1-file1&2.0.0 +bytecodehar1-file2:&bytecodehar1/bytecodehar1-file2&2.0.0 +bytecodehar2-file1:&@ohos/bytecodehar2/bytecodehar2-file1&2.0.0 +bytecodehar2-file2:&@ohos/bytecodehar2/bytecodehar2-file2&2.0.0 +sourcehar-file1:&sourcehar/sourcehar-file1&2.0.0 +sourcehar-file2:&sourcehar/sourcehar-file2&2.0.0 +hap-file-exec:&myapp/hap-file-exec& +mod/hap-add-file:&myapp/hap-add-file& diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/sourcehar-file1.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/sourcehar-file1.ts new file mode 100644 index 0000000000000000000000000000000000000000..f688431373716beb39877a74cd5d87297d0a64e3 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/sourcehar-file1.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 {test as test1} from '@normalized:N&&&sourcehar/sourcehar-file2&2.0.0' + +export function test() { + print('sourcehar.file1.test'); +} \ No newline at end of file diff --git a/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/sourcehar-file2.ts b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/sourcehar-file2.ts new file mode 100644 index 0000000000000000000000000000000000000000..7702af07787a7190c88033b40fe1024e0f5e8e24 --- /dev/null +++ b/es2panda/test/compiler/cache_projects/bytecodehar-annotations-mod-hap-cache-file/sourcehar-file2.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2025 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 test() { + print('sourcehar.file2.test'); +} \ No newline at end of file diff --git a/es2panda/test/compiler/debugInfo/test-for-loop-expected.txt b/es2panda/test/compiler/debugInfo/test-for-loop-expected.txt index c581c730f7ff44bef5ea64c2b0acc388c8b1a82a..1de34365394260c519f6047728e4a78fff60c5f9 100644 --- a/es2panda/test/compiler/debugInfo/test-for-loop-expected.txt +++ b/es2panda/test/compiler/debugInfo/test-for-loop-expected.txt @@ -21,8 +21,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 1, "sourceLineNum": -1 } }, @@ -36,8 +34,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 1, - "boundRight": 2, "sourceLineNum": -1 } }, @@ -51,8 +47,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 2, - "boundRight": 3, "sourceLineNum": -1 } }, @@ -65,8 +59,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 3, - "boundRight": 8, "sourceLineNum": 15 } }, @@ -79,8 +71,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 8, - "boundRight": 10, "sourceLineNum": 15 } }, @@ -91,8 +81,6 @@ "imms": [], "label": "LABEL_2", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 15 } }, @@ -105,8 +93,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 10, - "boundRight": 12, "sourceLineNum": 15 } }, @@ -119,8 +105,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 12, - "boundRight": 14, "sourceLineNum": 15 } }, @@ -133,8 +117,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 14, - "boundRight": 19, "sourceLineNum": 15 } }, @@ -149,8 +131,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 19, - "boundRight": 22, "sourceLineNum": 15 } }, @@ -163,8 +143,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 22, - "boundRight": 24, "sourceLineNum": 15 } }, @@ -177,8 +155,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 24, - "boundRight": 29, "sourceLineNum": 16 } }, @@ -191,8 +167,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 29, - "boundRight": 31, "sourceLineNum": 16 } }, @@ -205,8 +179,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 31, - "boundRight": 34, "sourceLineNum": 17 } }, @@ -217,8 +189,6 @@ "imms": [], "label": "LABEL_1", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 15 } }, @@ -231,8 +201,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 34, - "boundRight": 36, "sourceLineNum": 15 } }, @@ -245,8 +213,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 36, - "boundRight": 38, "sourceLineNum": 15 } }, @@ -259,8 +225,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 38, - "boundRight": 40, "sourceLineNum": 15 } }, @@ -273,8 +237,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 40, - "boundRight": 42, "sourceLineNum": 15 } }, @@ -287,8 +249,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 42, - "boundRight": 44, "sourceLineNum": 15 } }, @@ -301,8 +261,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 44, - "boundRight": 46, "sourceLineNum": 15 } }, @@ -315,8 +273,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 46, - "boundRight": 48, "sourceLineNum": 15 } }, @@ -329,8 +285,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 48, - "boundRight": 50, "sourceLineNum": 15 } }, @@ -343,8 +297,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 50, - "boundRight": 52, "sourceLineNum": 15 } }, @@ -357,8 +309,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 52, - "boundRight": 54, "sourceLineNum": 15 } }, @@ -369,8 +319,6 @@ "imms": [], "label": "LABEL_0", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 15 } }, @@ -383,8 +331,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 54, - "boundRight": 59, "sourceLineNum": 19 } }, @@ -399,8 +345,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 59, - "boundRight": 64, "sourceLineNum": 19 } }, @@ -413,8 +357,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 64, - "boundRight": 69, "sourceLineNum": 20 } }, @@ -427,8 +369,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 69, - "boundRight": 71, "sourceLineNum": 20 } }, @@ -439,8 +379,6 @@ "imms": [], "label": "LABEL_5", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 20 } }, @@ -453,8 +391,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 71, - "boundRight": 73, "sourceLineNum": 20 } }, @@ -467,8 +403,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 73, - "boundRight": 75, "sourceLineNum": 20 } }, @@ -481,8 +415,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 75, - "boundRight": 80, "sourceLineNum": 20 } }, @@ -497,8 +429,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 80, - "boundRight": 83, "sourceLineNum": 20 } }, @@ -511,8 +441,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 83, - "boundRight": 85, "sourceLineNum": 20 } }, @@ -525,8 +453,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 85, - "boundRight": 90, "sourceLineNum": 21 } }, @@ -539,8 +465,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 90, - "boundRight": 92, "sourceLineNum": 21 } }, @@ -555,8 +479,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 92, - "boundRight": 96, "sourceLineNum": 22 } }, @@ -569,8 +491,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 96, - "boundRight": 98, "sourceLineNum": 22 } }, @@ -583,8 +503,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 98, - "boundRight": 100, "sourceLineNum": 22 } }, @@ -597,8 +515,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 100, - "boundRight": 102, "sourceLineNum": 22 } }, @@ -611,8 +527,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 102, - "boundRight": 104, "sourceLineNum": 22 } }, @@ -627,8 +541,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 104, - "boundRight": 107, "sourceLineNum": 22 } }, @@ -639,8 +551,6 @@ "imms": [], "label": "LABEL_4", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 19 } }, @@ -653,8 +563,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 107, - "boundRight": 109, "sourceLineNum": 20 } }, @@ -667,8 +575,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 109, - "boundRight": 111, "sourceLineNum": 20 } }, @@ -681,8 +587,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 111, - "boundRight": 113, "sourceLineNum": 20 } }, @@ -695,8 +599,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 113, - "boundRight": 115, "sourceLineNum": 20 } }, @@ -709,8 +611,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 115, - "boundRight": 117, "sourceLineNum": 20 } }, @@ -723,8 +623,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 117, - "boundRight": 119, "sourceLineNum": 20 } }, @@ -737,8 +635,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 119, - "boundRight": 121, "sourceLineNum": 20 } }, @@ -751,8 +647,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 121, - "boundRight": 123, "sourceLineNum": 20 } }, @@ -765,8 +659,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 123, - "boundRight": 125, "sourceLineNum": 20 } }, @@ -779,8 +671,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 125, - "boundRight": 127, "sourceLineNum": 20 } }, @@ -791,8 +681,6 @@ "imms": [], "label": "LABEL_3", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 19 } }, @@ -805,8 +693,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 127, - "boundRight": 132, "sourceLineNum": 24 } }, @@ -819,8 +705,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 132, - "boundRight": 134, "sourceLineNum": 24 } }, @@ -831,8 +715,6 @@ "imms": [], "label": "LABEL_8", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 24 } }, @@ -845,8 +727,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 134, - "boundRight": 136, "sourceLineNum": 24 } }, @@ -859,8 +739,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 136, - "boundRight": 138, "sourceLineNum": 24 } }, @@ -873,8 +751,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 138, - "boundRight": 143, "sourceLineNum": 24 } }, @@ -889,8 +765,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 143, - "boundRight": 146, "sourceLineNum": 24 } }, @@ -903,8 +777,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 146, - "boundRight": 148, "sourceLineNum": 24 } }, @@ -917,8 +789,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 148, - "boundRight": 153, "sourceLineNum": 25 } }, @@ -931,8 +801,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 153, - "boundRight": 155, "sourceLineNum": 25 } }, @@ -943,8 +811,6 @@ "imms": [], "label": "LABEL_11", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 25 } }, @@ -957,8 +823,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 155, - "boundRight": 157, "sourceLineNum": 25 } }, @@ -971,8 +835,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 157, - "boundRight": 159, "sourceLineNum": 25 } }, @@ -985,8 +847,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 159, - "boundRight": 164, "sourceLineNum": 25 } }, @@ -1001,8 +861,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 164, - "boundRight": 167, "sourceLineNum": 25 } }, @@ -1015,8 +873,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 167, - "boundRight": 169, "sourceLineNum": 25 } }, @@ -1029,8 +885,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 169, - "boundRight": 174, "sourceLineNum": 26 } }, @@ -1043,8 +897,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 174, - "boundRight": 176, "sourceLineNum": 26 } }, @@ -1055,8 +907,6 @@ "imms": [], "label": "LABEL_10", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 24 } }, @@ -1069,8 +919,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 176, - "boundRight": 178, "sourceLineNum": 25 } }, @@ -1083,8 +931,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 178, - "boundRight": 180, "sourceLineNum": 25 } }, @@ -1097,8 +943,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 180, - "boundRight": 182, "sourceLineNum": 25 } }, @@ -1111,8 +955,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 182, - "boundRight": 184, "sourceLineNum": 25 } }, @@ -1125,8 +967,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 184, - "boundRight": 186, "sourceLineNum": 25 } }, @@ -1139,8 +979,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 186, - "boundRight": 188, "sourceLineNum": 25 } }, @@ -1153,8 +991,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 188, - "boundRight": 190, "sourceLineNum": 25 } }, @@ -1167,8 +1003,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 190, - "boundRight": 192, "sourceLineNum": 25 } }, @@ -1181,8 +1015,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 192, - "boundRight": 194, "sourceLineNum": 25 } }, @@ -1195,8 +1027,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 194, - "boundRight": 196, "sourceLineNum": 25 } }, @@ -1207,8 +1037,6 @@ "imms": [], "label": "LABEL_9", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 24 } }, @@ -1219,8 +1047,6 @@ "imms": [], "label": "LABEL_7", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 19 } }, @@ -1233,8 +1059,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 196, - "boundRight": 198, "sourceLineNum": 24 } }, @@ -1247,8 +1071,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 198, - "boundRight": 200, "sourceLineNum": 24 } }, @@ -1261,8 +1083,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 200, - "boundRight": 202, "sourceLineNum": 24 } }, @@ -1275,8 +1095,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 202, - "boundRight": 204, "sourceLineNum": 24 } }, @@ -1289,8 +1107,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 204, - "boundRight": 206, "sourceLineNum": 24 } }, @@ -1303,8 +1119,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 206, - "boundRight": 208, "sourceLineNum": 24 } }, @@ -1317,8 +1131,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 208, - "boundRight": 210, "sourceLineNum": 24 } }, @@ -1331,8 +1143,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 210, - "boundRight": 212, "sourceLineNum": 24 } }, @@ -1345,8 +1155,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 212, - "boundRight": 214, "sourceLineNum": 24 } }, @@ -1359,8 +1167,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 214, - "boundRight": 216, "sourceLineNum": 24 } }, @@ -1371,8 +1177,6 @@ "imms": [], "label": "LABEL_6", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": 19 } }, @@ -1383,8 +1187,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": -1 } }, @@ -1395,8 +1197,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": -1 } } diff --git a/es2panda/test/compiler/debugInfo/test-local-variable-expected.txt b/es2panda/test/compiler/debugInfo/test-local-variable-expected.txt index 90556498d0ac47a604fe9baee66cf5e3c3add079..be4b8491f7caf58d8d88913e48c0cffe18ee2c25 100644 --- a/es2panda/test/compiler/debugInfo/test-local-variable-expected.txt +++ b/es2panda/test/compiler/debugInfo/test-local-variable-expected.txt @@ -21,8 +21,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 1, "sourceLineNum": -1 } }, @@ -36,8 +34,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 1, - "boundRight": 2, "sourceLineNum": -1 } }, @@ -51,8 +47,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 2, - "boundRight": 3, "sourceLineNum": -1 } }, @@ -65,8 +59,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 3, - "boundRight": 8, "sourceLineNum": 15 } }, @@ -81,8 +73,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 8, - "boundRight": 13, "sourceLineNum": 15 } }, @@ -95,8 +85,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 13, - "boundRight": 18, "sourceLineNum": 17 } }, @@ -109,8 +97,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 18, - "boundRight": 20, "sourceLineNum": 17 } }, @@ -123,8 +109,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 20, - "boundRight": 23, "sourceLineNum": 18 } }, @@ -137,8 +121,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 23, - "boundRight": 28, "sourceLineNum": 22 } }, @@ -151,8 +133,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 28, - "boundRight": 30, "sourceLineNum": 22 } }, @@ -165,8 +145,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 30, - "boundRight": 33, "sourceLineNum": 23 } }, @@ -179,8 +157,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 33, - "boundRight": 38, "sourceLineNum": 25 } }, @@ -193,8 +169,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 38, - "boundRight": 40, "sourceLineNum": 25 } }, @@ -207,8 +181,6 @@ ], "label": "", "debug_pos_info": { - "boundLeft": 40, - "boundRight": 45, "sourceLineNum": 27 } }, @@ -221,8 +193,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 45, - "boundRight": 47, "sourceLineNum": 27 } }, @@ -233,8 +203,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": -1 } }, @@ -245,8 +213,6 @@ "imms": [], "label": "", "debug_pos_info": { - "boundLeft": 0, - "boundRight": 0, "sourceLineNum": -1 } } diff --git a/es2panda/test/compiler/js/array-literal-1-expected.txt b/es2panda/test/compiler/js/array-literal-1-expected.txt index 1a9c6f0aeb65047698dda549f7fa0dda1d02d7c4..877137e32a7495feb394e0fe13a0f03b81df55a8 100644 --- a/es2panda/test/compiler/js/array-literal-1-expected.txt +++ b/es2panda/test/compiler/js/array-literal-1-expected.txt @@ -1 +1 @@ -TypeError: is not callable +TypeError: Object is not callable diff --git a/es2panda/test/compiler/js/json-parser-expected.txt b/es2panda/test/compiler/js/json-parser-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..09daa6cc4f4d62bf98424fd88eeb6ac120382257 --- /dev/null +++ b/es2panda/test/compiler/js/json-parser-expected.txt @@ -0,0 +1,49 @@ +1,2,3 1,2,3 +1 1 + +https://www.a.com https://www.a.com +https://www.b.com https://www.b.com +https://www.c.com https://www.c.com +[object Object] [object Object] +Infinity Infinity +-Infinity -Infinity +123 123 +SyntaxError SyntaxError +56320 56320 +{"a":"{\"width\": 18}"} {"a":"{\"width\": 18}"} +{"a":"{\"name\": \"张三\"}"} {"a":"{\"name\": \"张三\"}"} +{"1\u0000":"name"} {"1\u0000":"name"} +0 0 +-Infinity -Infinity +JSON.parse with backslash JSON.parse with backslash +"" "" +Uf Uf +啕晦 啕晦 +"" "" +Uf Uf +啕晦 啕晦 +SyntaxError SyntaxError +SyntaxError SyntaxError +SyntaxError SyntaxError +10 10 +hello hello +true true +14 14 +24 24 +29 29 +36 36 +46 46 +1.79e+308 1.79e+308 +Infinity Infinity +Infinity Infinity +2.225e-308 2.225e-308 +2.225e-309 2.225e-309 +3e-320 3e-320 +5e-324 5e-324 +0 0 +0 0 +2.225e-308 +2.225e-309 +3e-320 +5e-324 +SyntaxError SyntaxError diff --git a/es2panda/test/compiler/js/json-parser.js b/es2panda/test/compiler/js/json-parser.js new file mode 100644 index 0000000000000000000000000000000000000000..bb7a92d40a4a7b8322117cd695a9f62f878d3305 --- /dev/null +++ b/es2panda/test/compiler/js/json-parser.js @@ -0,0 +1,207 @@ +/* + * Copyright (c) 2025 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. + */ + + +let json = JSON.parse("[ 1, 2, 3]"); +print(json,[1,2,3]); +let json2 = JSON.parse("[ 1 ]"); +print(json2,[1]); +let json3 = JSON.parse("[ ]"); +print(json3,[]); +let data = { + "11111111" : "https://www.a.com", + "22222222" : "https://www.b.com", + "00000000" : "https://www.c.com" +} +let strData = JSON.stringify(data); +let res = JSON.parse(strData); +print(res["11111111"],'https://www.a.com'); +print(res["22222222"],'https://www.b.com'); +print(res["00000000"],'https://www.c.com'); + +var a = `{"code": 0, "msg": "ok"}` +function reviver(k, v) { return v; } +var o = JSON.parse(a, reviver); +print(o.toString(),'[object Object]'); + +let strData2 = "1.7976971348623157e+308"; +let res2 = JSON.parse(strData2); +print(res2,Infinity); + +let strData3 = "-1.7976971348623157e+308"; +let res3 = JSON.parse(strData3); +print(res3,-Infinity); + +let strData4 = "123"; +let res4 = JSON.parse(strData4); +print(res4,123); + +try { + JSON.parse(`{"object": 42, "test":{}`) +} catch (error) { + print(error.name,'SyntaxError') + +} + +let strData5 = "\"\\uDC00\""; +let res5 = JSON.parse(strData5); +print(res5.codePointAt(0),56320) + +let strData6 = '{"a": "{\\"width\\": 18}"}' +print(JSON.stringify(JSON.parse(strData6)),'{"a":"{\\"width\\": 18}"}') + +let strData7 = '{"a": "{\\"name\\": \\"张三\\"}"}' +print(JSON.stringify(JSON.parse(strData7)),'{"a":"{\\"name\\": \\"张三\\"}"}') + +let strData8 = '{"1\\u0000":"name"}' +print(JSON.stringify(JSON.parse(strData8)),'{"1\\u0000":"name"}') + +print(JSON.parse('123.456e-789'),0); +print(1 / JSON.parse('-0'),-Infinity); + +var string = "JSON.parse with backslash"; +print(string,"JSON.parse with backslash"); +print(JSON.parse('"\\"\\""'),'""'); // utf8 -> utf8 +print(JSON.parse('"\\u0055\\u0066"'),'Uf'); // utf8 -> utf8 +print(JSON.parse('"\\u5555\\u6666"'),'啕晦'); // utf8 -> utf16 +print(JSON.parse('["\\"\\"","中文"]')[0],'""'); // utf16 -> utf8 +print(JSON.parse('["\\u0055\\u0066","中文"]')[0],'Uf'); // utf16 -> utf8 +print(JSON.parse('["\\u5555\\u6666","中文"]')[0],'啕晦'); // utf16 -> utf16 + +const strData9 = `{"k1":"hello","k2":3}`; +const strErr = strData9.substring(0, strData9.length - 2); +try { + JSON.parse(strErr); +} catch (err) { + print(err.name,'SyntaxError'); +} + +const strData10 = `{"k1":"hello","k2": 3}`; +const strErr2 = strData10.substring(0, strData10.length - 2); +try { + JSON.parse(strErr2); +} catch (err) { + print(err.name,'SyntaxError'); +} + +const strData11 = `{"k1":"hello","k2":311111}`; +const strErr3 = strData11.substring(0, strData11.length - 2); +try { + JSON.parse(strErr3); +} catch (err) { + print(err.name,'SyntaxError'); +} + +let jsonSingleStr = `{ + "a": 10, + "b": "hello", + "c": true, + "d": null, + "e": 5, + "f": 6, + "g": 7, + "h": 8, + "i": 9, + "j": 10, + "k": 11, + "l": 12, + "m": 13, + "n": 14, + "o": 15, + "p": 16, + "q": 17, + "r": 18, + "s": 19, + "t": 20, + "u": 21, + "v": 22, + "w": 23, + "x": 24, + "y": 25, + "z": 26, + "A": 27, + "B": 28, + "C": 29, + "D": 30, + "E": 31, + "F": 32, + "G": 33, + "H": 34, + "I": 35, + "J": 36, + "K": 37, + "L": 38, + "M": 39, + "N": 40, + "O": 41, + "P": 42, + "Q": 43, + "R": 44, + "S": 45, + "T": 46, + "U": 47, + "V": 48, + "W": 49, + "X": 50, + "Y": 51, + "Z": 52 +}`; + +let parsedObj = JSON.parse(jsonSingleStr); +print(parsedObj.a, 10); +print(parsedObj.b, 'hello'); +print(parsedObj.c, true); +print(parsedObj.n, 14); +print(parsedObj.x, 24); +print(parsedObj.C, 29); +print(parsedObj.J, 36); +print(parsedObj.T, 46); + +let numStr = `{ + "numberval1": 1.79e+308, + "numberval2": 1.7976931348623158e+309, + "numberval3": 5e+320, + "numberval4": 2.225e-308, + "numberval5": 2.225e-309, + "numberval6": 3e-320, + "numberval7": 5e-324, + "numberval8": 5e-325, + "numberval9": 7e-350 +}`; +let numParsedObj = JSON.parse(numStr); +print(numParsedObj.numberval1, 1.79e+308);// DBL_MAX +print(numParsedObj.numberval2, Infinity);// greater than DBL_MAX, expect Infinity +print(numParsedObj.numberval3, Infinity);// greater than DBL_MAX, expect Infinity +print(numParsedObj.numberval4, 2.225e-308);// DBL_MIN +print(numParsedObj.numberval5, 2.225e-309);// less than DBL_MIN +print(numParsedObj.numberval6, 3e-320);// less than DBL_MIN +print(numParsedObj.numberval7, 5e-324);// Number.MIN_VALUE +print(numParsedObj.numberval8, 0);// less than Number.MIN_VALUE, expect 0 +print(numParsedObj.numberval9, 0);// less than Number.MIN_VALUE, expect 0 + +print(2.225e-308); // 2.225e-308 +print(2.225e-309); // 2.225e-309 +print(3e-320); // 3e-320 +print(5e-324); // 5e-324 + +{ + let err = {}; + try { + JSON.parse(`{"object哈哈": 42, "test":{}`) + } catch (error) { + err = error; + } + print(err.name, 'SyntaxError'); +} \ No newline at end of file diff --git a/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-nosuper-exception-expected.txt b/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-nosuper-exception-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..5ab2536e66495936b2204205a550c80b8b4d8355 --- /dev/null +++ b/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-nosuper-exception-expected.txt @@ -0,0 +1,10 @@ +ReferenceError: undefinedsub-class must call super before use 'this' +ReferenceError: undefinedsub-class must call super before use 'this' +ReferenceError: undefinedsub-class must call super before use 'this' +ReferenceError: undefinedsub-class must call super before use 'this' +ReferenceError: undefinedsub-class must call super before use 'this' +ReferenceError: undefinedsub-class must call super before use 'this' +ReferenceError: undefinedsub-class must call super before use 'this' +ReferenceError: undefinedsub-class must call super before use 'this' +ReferenceError: undefinedsub-class must call super before use 'this' +ReferenceError: undefinedsub-class must call super before use 'this' diff --git a/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-nosuper-exception.js b/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-nosuper-exception.js new file mode 100644 index 0000000000000000000000000000000000000000..75672f2a6b9c6964bf738b7dd38462a5a2623f2e --- /dev/null +++ b/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-nosuper-exception.js @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2025 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. + */ + +class C34 {} +class C35 extends C34 { + constructor(a37, a38 , a39) { + for (let v40 = 0; v40 < 10; v40++) { + try { + let v42; + return v42; + function f43() { + return f43; + } + function f46(a47, a48) { + return C35; + } + } catch (e52) { + print(e52); + } + } + super(); + } +} +new C35(); \ No newline at end of file diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_for_below_API11_version-expected.txt b/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-super-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_for_below_API11_version-expected.txt rename to es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-super-expected.txt diff --git a/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-super.js b/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-super.js new file mode 100644 index 0000000000000000000000000000000000000000..d9f14924444f619b6875e940eb75b5f0d896dfc3 --- /dev/null +++ b/es2panda/test/compiler/js/lexicalEnv/classEnv/constructor-try-catch-super.js @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2025 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. + */ + +class C34 {} +class C35 extends C34 { + constructor(a37, a38 , a39) { + super(); + for (let v40 = 0; v40 < 10; v40++) { + try { + let v42; + return v42; + function f43() { + return f43; + } + function f46(a47, a48) { + return C35; + } + } catch (e52) { + print(e52); + } + } + } +} +new C35(); diff --git a/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/abcinputs/main_hap.txt b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/abcinputs/main_hap.txt new file mode 100644 index 0000000000000000000000000000000000000000..8cf0b55aaaaf93acdb66613576bdfa749ea3c659 --- /dev/null +++ b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/abcinputs/main_hap.txt @@ -0,0 +1,2 @@ +main_hap.ts +main_hap_import_file.ts diff --git a/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/abcinputs/sdk_hap.txt b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/abcinputs/sdk_hap.txt new file mode 100644 index 0000000000000000000000000000000000000000..128e160248bbfe2d832e30a4bb511a0aef8c35da --- /dev/null +++ b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/abcinputs/sdk_hap.txt @@ -0,0 +1,2 @@ +sdk_hap.ts +sdk_hap_import_file.ts diff --git a/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/main_hap-expected.pa.txt b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/main_hap-expected.pa.txt new file mode 100644 index 0000000000000000000000000000000000000000..f8c85e90b8ac47f49cc3df51a1f80ee4f48d501a --- /dev/null +++ b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/main_hap-expected.pa.txt @@ -0,0 +1,306 @@ +slotNum = 0x2 +.language ECMAScript +.function any &src_hap_to/main_hap&.#*#main(any a0, any a1, any a2) { + ldexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname mainHapAddTest + lda v0 + callarg0 0x0 + returnundefined +} + +slotNum = 0x3 +.language ECMAScript +.function any &src_hap_to/main_hap&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &src_hap_to/main_hap&.#*#main, 0x0 + callarg0 0x1 + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &src_hap_to/main_hap&_1084 +------------------------------------ +slot &src_hap_to/main_hap&_1088 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: &src_hap_to/main_hap_import_file& +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: mainHapAddTest +}, +{ + index: 4 + tag: 5 + val: mainHapAddTest +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +======> strings <====== +"&src_hap_to/main_hap&.#*#main"; "mainHapAddTest"; +slotNum = 0x1 +.language ECMAScript +.function any &src_hap_to/main_hap_import_file&.#*#mainHapAddTest(any a0, any a1, any a2, any a3, any a4) { + lda a4 + add2 0x0, a3 + return +} + +slotNum = 0x1 +.language ECMAScript +.function any &src_hap_to/main_hap_import_file&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &src_hap_to/main_hap_import_file&.#*#mainHapAddTest, 0x2 + stmodulevar 0x0 + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &src_hap_to/main_hap_import_file&_1130 +------------------------------------ +slot &src_hap_to/main_hap_import_file&_1134 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: mainHapAddTest +}, +{ + index: 5 + tag: 5 + val: mainHapAddTest +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&src_hap_to/main_hap_import_file&.#*#mainHapAddTest"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + +slotNum = 0x2 +.language ECMAScript +.function any &src_hap_to/sdk_hap&.#*#main(any a0, any a1, any a2) { + ldexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname sdkHapAddTest + lda v0 + callarg0 0x0 + returnundefined +} + +slotNum = 0x3 +.language ECMAScript +.function any &src_hap_to/sdk_hap&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &src_hap_to/sdk_hap&.#*#main, 0x0 + callarg0 0x1 + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &src_hap_to/sdk_hap&_1051 +------------------------------------ +slot &src_hap_to/sdk_hap&_1055 +{ + index: 0 + tag: 2 + val: 1 +}, +{ + index: 1 + tag: 5 + val: &src_hap/sdk_hap_import_file& +}, +{ + index: 2 + tag: 2 + val: 1 +}, +{ + index: 3 + tag: 5 + val: sdkHapAddTest +}, +{ + index: 4 + tag: 5 + val: sdkHapAddTest +}, +{ + index: 5 + tag: 9 + val: 0 +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +{ + index: 8 + tag: 2 + val: 0 +}, +{ + index: 9 + tag: 2 + val: 0 +}, +======> strings <====== +"&src_hap_to/sdk_hap&.#*#main"; "sdkHapAddTest"; +slotNum = 0x1 +.language ECMAScript +.function any &src_hap_to/sdk_hap_import_file&.#*#sdkHapAddTest(any a0, any a1, any a2, any a3, any a4) { + lda a4 + add2 0x0, a3 + return +} + +slotNum = 0x1 +.language ECMAScript +.function any &src_hap_to/sdk_hap_import_file&.func_main_0(any a0, any a1, any a2) { + definefunc 0x0, &src_hap_to/sdk_hap_import_file&.#*#sdkHapAddTest, 0x2 + stmodulevar 0x0 + returnundefined +} + + +======> literal array buffer <====== +------------------------------------ +slot &src_hap_to/sdk_hap_import_file&_1097 +------------------------------------ +slot &src_hap_to/sdk_hap_import_file&_1101 +{ + index: 0 + tag: 2 + val: 0 +}, +{ + index: 1 + tag: 2 + val: 0 +}, +{ + index: 2 + tag: 2 + val: 0 +}, +{ + index: 3 + tag: 2 + val: 1 +}, +{ + index: 4 + tag: 5 + val: sdkHapAddTest +}, +{ + index: 5 + tag: 5 + val: sdkHapAddTest +}, +{ + index: 6 + tag: 2 + val: 0 +}, +{ + index: 7 + tag: 2 + val: 0 +}, +======> strings <====== +"&src_hap_to/sdk_hap_import_file&.#*#sdkHapAddTest"; + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + + +======> literal array buffer <====== +======> strings <====== + diff --git a/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/main_hap.ts b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/main_hap.ts new file mode 100644 index 0000000000000000000000000000000000000000..71370610b2920fe8a0eb3db310a42cf0e1251730 --- /dev/null +++ b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/main_hap.ts @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2025 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 {mainHapAddTest} from '&src_hap_to/main_hap_import_file&' + +function main(): void { + mainHapAddTest(); +} + +main() diff --git a/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/main_hap_import_file.ts b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/main_hap_import_file.ts new file mode 100644 index 0000000000000000000000000000000000000000..b27f3ac054e476ab6ca42bfb6ebcf1071152f3d1 --- /dev/null +++ b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/main_hap_import_file.ts @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2025 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 mainHapAddTest(a: number, b: number): number +{ + return a + b; +} \ No newline at end of file diff --git a/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/modify_pkg_name.txt b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/modify_pkg_name.txt new file mode 100644 index 0000000000000000000000000000000000000000..7a945914df60d5279963503cfc3feffe25c9c5d4 --- /dev/null +++ b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/modify_pkg_name.txt @@ -0,0 +1 @@ +src_hap:src_hap_to diff --git a/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/recordnames.txt b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/recordnames.txt new file mode 100644 index 0000000000000000000000000000000000000000..0fc5ee282130b69148afbc05d4085c2556319ddd --- /dev/null +++ b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/recordnames.txt @@ -0,0 +1,4 @@ +main_hap:&src_hap_to/main_hap& +main_hap_import_file:&src_hap_to/main_hap_import_file& +sdk_hap:&src_hap/sdk_hap& +sdk_hap_import_file:&src_hap/sdk_hap_import_file& diff --git a/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/sdk_hap.ts b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/sdk_hap.ts new file mode 100644 index 0000000000000000000000000000000000000000..8087e36196f4df495ece5b7d5b33a82ecb5cbd77 --- /dev/null +++ b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/sdk_hap.ts @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2025 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 {sdkHapAddTest} from '&src_hap/sdk_hap_import_file&' + +function main(): void { + sdkHapAddTest(); +} + +main() diff --git a/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/sdk_hap_import_file.ts b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/sdk_hap_import_file.ts new file mode 100644 index 0000000000000000000000000000000000000000..041a885320f588cc68f561fb2d7b4fa1446fa172 --- /dev/null +++ b/es2panda/test/compiler/merge_hap/projects/merge_hap_replace_perfix_pkg_name/sdk_hap_import_file.ts @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2025 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 sdkHapAddTest(a: number, b: number): number +{ + return a + b; +} \ No newline at end of file diff --git a/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-1-expected.txt b/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-1-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..4fd6ce6872b3ca43bf5892e5865ecae098c2c696 --- /dev/null +++ b/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-1-expected.txt @@ -0,0 +1,38 @@ +1.79e+308 +Infinity +Infinity +2.225e-308 +2.225e-309 +3e-320 +5e-324 +0 +0 +-1.79e+308 +-Infinity +-Infinity +-2.225e-308 +-2.225e-309 +-3e-320 +-5e-324 +0 +0 +false +false +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true +true diff --git a/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-1.ts b/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-1.ts new file mode 100644 index 0000000000000000000000000000000000000000..6f765b620664a54d33c37b3e4d0a211f75484f49 --- /dev/null +++ b/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-1.ts @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2025 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. + */ + + +let numStr = `{ + "numberval1": 1.79e+308, + "numberval2": 1.7976931348623158e+309, + "numberval3": 5e+320, + "numberval4": 2.225e-308, + "numberval5": 2.225e-309, + "numberval6": 3e-320, + "numberval7": 5e-324, + "numberval8": 5e-325, + "numberval9": 7e-350, + "numberval10": -1.79e+308, + "numberval11": -1.7976931348623158e+309, + "numberval12": -5e+320, + "numberval13": -2.225e-308, + "numberval14": -2.225e-309, + "numberval15": -3e-320, + "numberval16": -5e-324, + "numberval17": -5e-325, + "numberval18": -7e-350 +}`; + +let numParsedObj = JSON.parse(numStr); +print(numParsedObj.numberval1);// DBL_MAX, 1.79e+308 +print(numParsedObj.numberval2);// greater than DBL_MAX, expect Infinity +print(numParsedObj.numberval3);// greater than DBL_MAX, expect Infinity +print(numParsedObj.numberval4);// DBL_MIN, 2.225e-308 +print(numParsedObj.numberval5);// less than DBL_MIN, 2.225e-309 +print(numParsedObj.numberval6);// less than DBL_MIN, 3e-320 +print(numParsedObj.numberval7);// Number.MIN_VALUE, 5e-324 +print(numParsedObj.numberval8);// less than Number.MIN_VALUE, expect 0 +print(numParsedObj.numberval9);// less than Number.MIN_VALUE, expect 0 + +print(numParsedObj.numberval10); // -1.79e+308 +print(numParsedObj.numberval11); // -Infinity +print(numParsedObj.numberval12); // -Infinity +print(numParsedObj.numberval13); // -2.225e-308 +print(numParsedObj.numberval14); // -2.225e-309 +print(numParsedObj.numberval15); // -3e-320 +print(numParsedObj.numberval16); // -5e-324 +print(numParsedObj.numberval17); // -0 +print(numParsedObj.numberval18); // -0 + +print(Object.is(numParsedObj.numberval2, numParsedObj.numberval11)) // false +print(Object.is(numParsedObj.numberval18, numParsedObj.numberval9)) // false + +print(Object.is(numParsedObj.numberval1, 1.79e+308)); // true +print(Object.is(numParsedObj.numberval2, Infinity)); // true +print(Object.is(numParsedObj.numberval3, Infinity)); // true +print(Object.is(numParsedObj.numberval4, 2.225e-308)); // true +print(Object.is(numParsedObj.numberval5, 2.225e-309)); // true +print(Object.is(numParsedObj.numberval6, 3e-320)); // true +print(Object.is(numParsedObj.numberval7, Number.MIN_VALUE)); // true +print(Object.is(numParsedObj.numberval8, 0)); // true +print(Object.is(numParsedObj.numberval9, 0)); // true + +print(Object.is(numParsedObj.numberval10, -1.79e+308)); // true +print(Object.is(numParsedObj.numberval11, -Infinity)); // true +print(Object.is(numParsedObj.numberval12, -Infinity)); // true +print(Object.is(numParsedObj.numberval13, -2.225e-308)); // true +print(Object.is(numParsedObj.numberval14, -2.225e-309)); // true +print(Object.is(numParsedObj.numberval15, -3e-320)); // true +print(Object.is(numParsedObj.numberval16, -5e-324)); // true +print(Object.is(numParsedObj.numberval17, -0)); // true, distinguishes from 0 +print(Object.is(numParsedObj.numberval18, -0)); // true \ No newline at end of file diff --git a/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-2-expected.txt b/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-2-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..9ee55078c115a54972821ed3759d4cce4ff5a666 --- /dev/null +++ b/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-2-expected.txt @@ -0,0 +1,18 @@ +1.79e+308 +Infinity +Infinity +2.225e-308 +2.225e-309 +3e-320 +5e-324 +0 +0 +-1.79e+308 +-Infinity +-Infinity +-2.225e-308 +-2.225e-309 +-3e-320 +-5e-324 +0 +0 diff --git a/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-2.ts b/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-2.ts new file mode 100644 index 0000000000000000000000000000000000000000..bfa7afc80d33026c02b2700f1844cc7e9ef9c0fc --- /dev/null +++ b/es2panda/test/compiler/ts/cases/compiler/test-ts-extremely-number-2.ts @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2025 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. + */ + + +print(1.79e+308); +print(1.7976931348623158e+309); +print(5e+320); +print(2.225e-308); +print(2.225e-309); +print(3e-320); +print(5e-324); +print(5e-325); +print(7e-350); + +print(-1.79e+308); +print(-1.7976931348623158e+309); +print(-5e+320); +print(-2.225e-308); +print(-2.225e-309); +print(-3e-320); +print(-5e-324); +print(-5e-325); +print(-7e-350); \ No newline at end of file diff --git a/es2panda/test/compiler/ts/cases/compiler/test-ts-func-param-expected.txt b/es2panda/test/compiler/ts/cases/compiler/test-ts-func-param-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..25d54ae75586b1d426ebc99503cb5141b6319aec --- /dev/null +++ b/es2panda/test/compiler/ts/cases/compiler/test-ts-func-param-expected.txt @@ -0,0 +1,2 @@ +333 +111 1 diff --git a/es2panda/test/compiler/ts/cases/compiler/test-ts-func-param.ts b/es2panda/test/compiler/ts/cases/compiler/test-ts-func-param.ts new file mode 100644 index 0000000000000000000000000000000000000000..717ae2477f4c7617015a2459b60ef6c117980a29 --- /dev/null +++ b/es2panda/test/compiler/ts/cases/compiler/test-ts-func-param.ts @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2025 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. + */ + + +let a = "111"; +let b = "222"; +let c = true; +function test1() { + print("333") +} +function test2(aa : string = c ? (test1(),a) : (test1(),b), dd:number = 1) { + print(aa, dd); +} + +test2() diff --git a/es2panda/test/compiler/ts/cases/conformance/functions/test-ts-declare-function-1.ts b/es2panda/test/compiler/ts/cases/conformance/functions/test-ts-declare-function-1.ts index 0cb3633e5b585c7cf1cacae5fd2f579feae7c03b..c2ec7c2624228af689abe066be206a7b6ad13793 100644 --- a/es2panda/test/compiler/ts/cases/conformance/functions/test-ts-declare-function-1.ts +++ b/es2panda/test/compiler/ts/cases/conformance/functions/test-ts-declare-function-1.ts @@ -24,8 +24,8 @@ class C { } let c = new C(); -let env = ArkTools.getLexicalEnv(c.method1); -if (env !== undefined) { +let res = ArkTools.currentEnvIsGlobal(c.method1); +if (res !== true) { print(1); } else { print(2); diff --git a/es2panda/test/config.py b/es2panda/test/config.py index 6e57dedbad40e21ee0b2c5b275cae1cbebdc7e31..6cf0d5ede391eb662cc6c2aa3e066182908d756f 100644 --- a/es2panda/test/config.py +++ b/es2panda/test/config.py @@ -22,7 +22,26 @@ API_VERSION_MAP = { "API12beta2": "12.0.2.0", "API12beta3": "12.0.6.0", "API13": "12.0.6.0", + "API14": "12.0.6.0", + "API15": "12.0.6.0", + "API16": "12.0.6.0", + "API17": "12.0.6.0", + "API18": "13.0.1.0", + "API19": "13.0.1.0", + "API20": "13.0.1.0", } + +ARK_JS_VM_LIST = {"API9", "API10", "API11", "API12beta1", "API12beta3", "API18"} + +ES2ABC_API_SUPPORT = { + "default": ["API9", "API10", "API11", "API12beta1", "API12beta2", "API12beta3", + "API13", "API14", "API15", "API16", "API17", "API18"], + "5.0": ["API9", "API10", "API11", "API12beta1", "API12beta2", "API12beta3", + "API13", "API14", "API15", "API16", "API17"], + "5.1": ["API9", "API10", "API11", "API12beta1", "API12beta2", "API12beta3", + "API13", "API14", "API15", "API16", "API17", "API18"], +} + MIN_SUPPORT_BC_VERSION = "API12beta1" MIX_COMPILE_ENTRY_POINT = "import" diff --git a/es2panda/test/parser/annotations/declaration-3d-array-boolean-expected.txt b/es2panda/test/parser/annotations/declaration-3d-array-boolean-expected.txt index 4c936880569b6656f65a26c70923310db237b381..8c9283391a83cb6213cbd8d5f22274499acdde27 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-boolean-expected.txt +++ b/es2panda/test/parser/annotations/declaration-3d-array-boolean-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -190,7 +190,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -224,7 +224,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -486,7 +486,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, @@ -520,7 +520,7 @@ }, "end": { "line": 24, - "column": 17 + "column": 39 } } }, @@ -812,7 +812,7 @@ "loc": { "start": { "line": 24, - "column": 18 + "column": 40 }, "end": { "line": 26, diff --git a/es2panda/test/parser/annotations/declaration-3d-array-boolean.ts b/es2panda/test/parser/annotations/declaration-3d-array-boolean.ts index 8bb5148dc721dad55760f4cf315cd6dd0f348a4c..b13f16c168dc4afec2966bf489d0c34eafae41d4 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-boolean.ts +++ b/es2panda/test/parser/annotations/declaration-3d-array-boolean.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: boolean[][][]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: boolean[][][] = [[new Array()]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: boolean[][][] = [[[true, false], [true, false]]]; } diff --git a/es2panda/test/parser/annotations/declaration-3d-array-enum-number-expected.txt b/es2panda/test/parser/annotations/declaration-3d-array-enum-number-expected.txt index 0a07759fa1a9fae16b424b80c1fe18d1d238dfa9..8405fb734e1ed811f3b7d1fbfa51343a31f1343a 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-enum-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-3d-array-enum-number-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 17 + "column": 39 } } }, @@ -431,7 +431,7 @@ "loc": { "start": { "line": 21, - "column": 18 + "column": 40 }, "end": { "line": 24, @@ -465,7 +465,7 @@ }, "end": { "line": 26, - "column": 17 + "column": 39 } } }, @@ -770,7 +770,7 @@ "loc": { "start": { "line": 26, - "column": 18 + "column": 40 }, "end": { "line": 29, @@ -804,7 +804,7 @@ }, "end": { "line": 31, - "column": 17 + "column": 39 } } }, @@ -1081,7 +1081,7 @@ "loc": { "start": { "line": 31, - "column": 18 + "column": 40 }, "end": { "line": 33, diff --git a/es2panda/test/parser/annotations/declaration-3d-array-enum-number.ts b/es2panda/test/parser/annotations/declaration-3d-array-enum-number.ts index 744a142fe28730bf84d1f48621bdcdd2254e9126..4a04e01d3ba4e4b68442a5c36ac47339c99bcf5d 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-enum-number.ts +++ b/es2panda/test/parser/annotations/declaration-3d-array-enum-number.ts @@ -18,16 +18,16 @@ const enum E { B = 314 } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // without initializer in .ets source code with underlying number type a: E[][][] = [[new Array(0)]]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { // with empty array initializer in .ets source code with underlying number type a: E[][][] = [[new Array(1)]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: E[][][] = [[[42, 314, 42]]]; } diff --git a/es2panda/test/parser/annotations/declaration-3d-array-enum-string-expected.txt b/es2panda/test/parser/annotations/declaration-3d-array-enum-string-expected.txt index 953a3b9d73e3d7aeea255f16224cb373666417f4..bbbcb10019dd63e85b541d61be034a411f8d0c93 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-enum-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-3d-array-enum-string-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 17 + "column": 39 } } }, @@ -431,7 +431,7 @@ "loc": { "start": { "line": 21, - "column": 18 + "column": 40 }, "end": { "line": 24, @@ -465,7 +465,7 @@ }, "end": { "line": 26, - "column": 17 + "column": 39 } } }, @@ -770,7 +770,7 @@ "loc": { "start": { "line": 26, - "column": 18 + "column": 40 }, "end": { "line": 29, @@ -804,7 +804,7 @@ }, "end": { "line": 31, - "column": 17 + "column": 39 } } }, @@ -1081,7 +1081,7 @@ "loc": { "start": { "line": 31, - "column": 18 + "column": 40 }, "end": { "line": 33, diff --git a/es2panda/test/parser/annotations/declaration-3d-array-enum-string.ts b/es2panda/test/parser/annotations/declaration-3d-array-enum-string.ts index 8eeef595d0e2bbd1b6afbe902a3920b97f0c564b..a24f1a805f6938f5b29fa3a66b6379ecdb596eb2 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-enum-string.ts +++ b/es2panda/test/parser/annotations/declaration-3d-array-enum-string.ts @@ -18,16 +18,16 @@ const enum E { B = "world!" } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // without initializer in .ets source code with underlying string type a: E[][][] = [[new Array(2)]]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { // with empty array initializer in .ets source code with underlying string type a: E[][][] = [[new Array(3)]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: E[][][] = [[["Hello", "world!", "Hello"]]]; } diff --git a/es2panda/test/parser/annotations/declaration-3d-array-number-expected.txt b/es2panda/test/parser/annotations/declaration-3d-array-number-expected.txt index 6731c66866aef0dcf8cabc5d330d5f8bfc5381ce..6ba651775b65a0184302e9369a8509a191a6197a 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-3d-array-number-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -190,7 +190,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -224,7 +224,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -486,7 +486,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, @@ -520,7 +520,7 @@ }, "end": { "line": 24, - "column": 17 + "column": 39 } } }, @@ -840,7 +840,7 @@ "loc": { "start": { "line": 24, - "column": 18 + "column": 40 }, "end": { "line": 26, diff --git a/es2panda/test/parser/annotations/declaration-3d-array-number.ts b/es2panda/test/parser/annotations/declaration-3d-array-number.ts index 9b4c19e954ca1490a45ff58a91e65a12135e454c..63d77e8e81e28e70cd3e816d7083138190467ea6 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-number.ts +++ b/es2panda/test/parser/annotations/declaration-3d-array-number.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: number[][][]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: number[][][] = [[new Array()]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: number[][][] = [[[1, 2, 3], [4, 5, 6]]]; } diff --git a/es2panda/test/parser/annotations/declaration-3d-array-string-expected.txt b/es2panda/test/parser/annotations/declaration-3d-array-string-expected.txt index ab3dd1bc1da156b40340a5f16f8215899cb80ce3..f92907c304a6eb37acfbc8a7c4dc1353e42a2147 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-3d-array-string-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -190,7 +190,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -224,7 +224,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -486,7 +486,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, @@ -520,7 +520,7 @@ }, "end": { "line": 24, - "column": 17 + "column": 39 } } }, @@ -812,7 +812,7 @@ "loc": { "start": { "line": 24, - "column": 18 + "column": 40 }, "end": { "line": 26, diff --git a/es2panda/test/parser/annotations/declaration-3d-array-string.ts b/es2panda/test/parser/annotations/declaration-3d-array-string.ts index 9d2d477d78b5c09c70f7b74b42b74cc38f80640e..09a27904d4751c31a2b11852d7ccb84d003d5461 100644 --- a/es2panda/test/parser/annotations/declaration-3d-array-string.ts +++ b/es2panda/test/parser/annotations/declaration-3d-array-string.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: string[][][]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: string[][][] = [[new Array()]]; } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: string[][][] = [[["hello", "world"], ["hello", "world"]]]; } diff --git a/es2panda/test/parser/annotations/declaration-array-boolean-expected.txt b/es2panda/test/parser/annotations/declaration-array-boolean-expected.txt index 25bca148bd87373a4e9d5520d7d42a6f5b95137d..4d3196200f7b44bc2b28fa13c450dcac9f327fb0 100644 --- a/es2panda/test/parser/annotations/declaration-array-boolean-expected.txt +++ b/es2panda/test/parser/annotations/declaration-array-boolean-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -164,7 +164,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -198,7 +198,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -404,7 +404,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, @@ -438,7 +438,7 @@ }, "end": { "line": 24, - "column": 17 + "column": 39 } } }, @@ -645,7 +645,7 @@ "loc": { "start": { "line": 24, - "column": 18 + "column": 40 }, "end": { "line": 26, diff --git a/es2panda/test/parser/annotations/declaration-array-boolean.ts b/es2panda/test/parser/annotations/declaration-array-boolean.ts index b5e92f592d43e9018fc8ef55a4931d9e1f89c936..c575410d77ecb84c7c4056b56f99dd36be3cc499 100644 --- a/es2panda/test/parser/annotations/declaration-array-boolean.ts +++ b/es2panda/test/parser/annotations/declaration-array-boolean.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: boolean[]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: boolean[] = new Array(); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: boolean[] = [true, false, true]; } diff --git a/es2panda/test/parser/annotations/declaration-array-enum-number-expected.txt b/es2panda/test/parser/annotations/declaration-array-enum-number-expected.txt index 2c0dff61970473caaca69c2548c5c5883b0db7c5..c54ae5762ca19c9250f1caa67d98f03f8276b196 100644 --- a/es2panda/test/parser/annotations/declaration-array-enum-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-array-enum-number-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 17 + "column": 39 } } }, @@ -375,7 +375,7 @@ "loc": { "start": { "line": 21, - "column": 18 + "column": 40 }, "end": { "line": 24, @@ -409,7 +409,7 @@ }, "end": { "line": 26, - "column": 17 + "column": 39 } } }, @@ -658,7 +658,7 @@ "loc": { "start": { "line": 26, - "column": 18 + "column": 40 }, "end": { "line": 29, @@ -692,7 +692,7 @@ }, "end": { "line": 31, - "column": 17 + "column": 39 } } }, @@ -913,7 +913,7 @@ "loc": { "start": { "line": 31, - "column": 18 + "column": 40 }, "end": { "line": 33, diff --git a/es2panda/test/parser/annotations/declaration-array-enum-number.ts b/es2panda/test/parser/annotations/declaration-array-enum-number.ts index 11b05547110aa9349ccd85aab9adc3fb4b3428f0..fe4efedad57d14334d92389152c8be1405d4791c 100644 --- a/es2panda/test/parser/annotations/declaration-array-enum-number.ts +++ b/es2panda/test/parser/annotations/declaration-array-enum-number.ts @@ -18,16 +18,16 @@ const enum E { B = 314 } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // without initializer in .ets source code with underlying number type a: E[] = new Array(0); } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { // with empty array initializer in .ets source code with underlying number type a: E[] = new Array(1); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: E[] = [42, 314, 42]; } diff --git a/es2panda/test/parser/annotations/declaration-array-enum-string-expected.txt b/es2panda/test/parser/annotations/declaration-array-enum-string-expected.txt index ee84947486312f1c48dd90ff8ce7b6007bc619f4..e598eac92c747fde49129b7ffcf5d35a59dce700 100644 --- a/es2panda/test/parser/annotations/declaration-array-enum-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-array-enum-string-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 17 + "column": 39 } } }, @@ -375,7 +375,7 @@ "loc": { "start": { "line": 21, - "column": 18 + "column": 40 }, "end": { "line": 24, @@ -409,7 +409,7 @@ }, "end": { "line": 26, - "column": 17 + "column": 39 } } }, @@ -658,7 +658,7 @@ "loc": { "start": { "line": 26, - "column": 18 + "column": 40 }, "end": { "line": 29, @@ -692,7 +692,7 @@ }, "end": { "line": 31, - "column": 17 + "column": 39 } } }, @@ -913,7 +913,7 @@ "loc": { "start": { "line": 31, - "column": 18 + "column": 40 }, "end": { "line": 33, diff --git a/es2panda/test/parser/annotations/declaration-array-enum-string.ts b/es2panda/test/parser/annotations/declaration-array-enum-string.ts index a55745424cd2cbffdff0f6844cd0e61f46a21db3..39e7411e1a54dfec881d36f64e0a08203b809baa 100644 --- a/es2panda/test/parser/annotations/declaration-array-enum-string.ts +++ b/es2panda/test/parser/annotations/declaration-array-enum-string.ts @@ -18,16 +18,16 @@ const enum E { B = "world!" } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // without initializer in .ets source code with underlying string type a: E[] = new Array(2); } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { // with empty array initializer in .ets source code with underlying string type a: E[] = new Array(3); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: E[] = ["Hello", "world!", "Hello"]; } diff --git a/es2panda/test/parser/annotations/declaration-array-number-expected.txt b/es2panda/test/parser/annotations/declaration-array-number-expected.txt index b977d890471435e412d9ee714d8d7d9c027df9da..b157c668a35b22da030fb708c4535819feae6629 100644 --- a/es2panda/test/parser/annotations/declaration-array-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-array-number-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -164,7 +164,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -198,7 +198,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -404,7 +404,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, @@ -438,7 +438,7 @@ }, "end": { "line": 24, - "column": 17 + "column": 39 } } }, @@ -645,7 +645,7 @@ "loc": { "start": { "line": 24, - "column": 18 + "column": 40 }, "end": { "line": 26, diff --git a/es2panda/test/parser/annotations/declaration-array-number.ts b/es2panda/test/parser/annotations/declaration-array-number.ts index 20b83d18433cd15daea94a5042bceed5f01f1aca..e2a8a5567227bf4df2eec0010fd4f1f289df0b1b 100644 --- a/es2panda/test/parser/annotations/declaration-array-number.ts +++ b/es2panda/test/parser/annotations/declaration-array-number.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: number[]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: number[] = new Array(); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: number[] = [1, 2, 3]; } diff --git a/es2panda/test/parser/annotations/declaration-array-string-expected.txt b/es2panda/test/parser/annotations/declaration-array-string-expected.txt index 280bb6e06cf931b868ad0e62d3633df7afd6a492..80e6ca76fcc5d3c739644c6365e4f2c32f17b71b 100644 --- a/es2panda/test/parser/annotations/declaration-array-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-array-string-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -164,7 +164,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -198,7 +198,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -404,7 +404,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, @@ -438,7 +438,7 @@ }, "end": { "line": 24, - "column": 17 + "column": 39 } } }, @@ -645,7 +645,7 @@ "loc": { "start": { "line": 24, - "column": 18 + "column": 40 }, "end": { "line": 26, diff --git a/es2panda/test/parser/annotations/declaration-array-string.ts b/es2panda/test/parser/annotations/declaration-array-string.ts index 69cfe97efcf42aa24d331347f690be6f4c018abc..2de6642e2463d14334115eb53fe796878f86bf69 100644 --- a/es2panda/test/parser/annotations/declaration-array-string.ts +++ b/es2panda/test/parser/annotations/declaration-array-string.ts @@ -13,14 +13,14 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: string[]; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: string[] = new Array(); } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { a: string[] = ["Hello", "world", "!"]; } diff --git a/es2panda/test/parser/annotations/declaration-boolean-expected.txt b/es2panda/test/parser/annotations/declaration-boolean-expected.txt index 3ad0c6449779f9e817e4c6cfaa61b6cec77691b9..55945c1f9b4cbb83d40a2f512f8cae5fb0359236 100644 --- a/es2panda/test/parser/annotations/declaration-boolean-expected.txt +++ b/es2panda/test/parser/annotations/declaration-boolean-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -151,7 +151,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -185,7 +185,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -336,7 +336,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-boolean.ts b/es2panda/test/parser/annotations/declaration-boolean.ts index e9bf814b7e14fef3b349fe5c28dd3aefae01d47b..086025dbd9a81925f1c84429f7f88a27a32e022e 100644 --- a/es2panda/test/parser/annotations/declaration-boolean.ts +++ b/es2panda/test/parser/annotations/declaration-boolean.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: boolean; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: boolean = true; } \ No newline at end of file diff --git a/es2panda/test/parser/annotations/declaration-combination-expected.txt b/es2panda/test/parser/annotations/declaration-combination-expected.txt index 43531af2d56bcf038b3e25fc76511057c409a67c..5fac4e23ca8ca8ee7b2c581b97dce5310756cde9 100644 --- a/es2panda/test/parser/annotations/declaration-combination-expected.txt +++ b/es2panda/test/parser/annotations/declaration-combination-expected.txt @@ -279,7 +279,7 @@ }, "end": { "line": 27, - "column": 16 + "column": 38 } } }, @@ -1416,7 +1416,7 @@ "loc": { "start": { "line": 27, - "column": 17 + "column": 39 }, "end": { "line": 38, diff --git a/es2panda/test/parser/annotations/declaration-combination.ts b/es2panda/test/parser/annotations/declaration-combination.ts index 79cb3c6032425101a731f9d8460a3d4ed52ad4e5..2c23ae9d6eb9413ee5b666d0ccc3c6b19788e1ae 100644 --- a/es2panda/test/parser/annotations/declaration-combination.ts +++ b/es2panda/test/parser/annotations/declaration-combination.ts @@ -24,7 +24,7 @@ const enum E1 { B = "world" } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number b: number[] = [13, 10] c: string diff --git a/es2panda/test/parser/annotations/declaration-empty-expected.txt b/es2panda/test/parser/annotations/declaration-empty-expected.txt index 2d482ef3bf7baa0634ec0fdccc8e92a09f22701e..eabbd5ebed59971549630b47a04767fd300cdbb3 100644 --- a/es2panda/test/parser/annotations/declaration-empty-expected.txt +++ b/es2panda/test/parser/annotations/declaration-empty-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -95,7 +95,7 @@ }, "end": { "line": 16, - "column": 19 + "column": 41 } } }, @@ -104,11 +104,11 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 16, - "column": 19 + "column": 41 } } }, @@ -121,7 +121,7 @@ }, "end": { "line": 16, - "column": 19 + "column": 41 } } } diff --git a/es2panda/test/parser/annotations/declaration-empty.ts b/es2panda/test/parser/annotations/declaration-empty.ts index 4d205f1d28c5947498aa920c5ee887ea825a4a16..80ae4e05b8580a0eeb03456386a7854204744303 100644 --- a/es2panda/test/parser/annotations/declaration-empty.ts +++ b/es2panda/test/parser/annotations/declaration-empty.ts @@ -13,4 +13,4 @@ * limitations under the License. */ -@interface Anno {} +@interface __$$ETS_ANNOTATION$$__Anno {} diff --git a/es2panda/test/parser/annotations/declaration-enum-number-expected.txt b/es2panda/test/parser/annotations/declaration-enum-number-expected.txt index 5b5801e6bb461b4c2ab384b471b08bd07244d6b3..2861338efa556be75bb7acb3caf4f7405f7080df 100644 --- a/es2panda/test/parser/annotations/declaration-enum-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-enum-number-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 17 + "column": 39 } } }, @@ -346,7 +346,7 @@ "loc": { "start": { "line": 21, - "column": 18 + "column": 40 }, "end": { "line": 24, @@ -380,7 +380,7 @@ }, "end": { "line": 26, - "column": 17 + "column": 39 } } }, @@ -545,7 +545,7 @@ "loc": { "start": { "line": 26, - "column": 18 + "column": 40 }, "end": { "line": 28, diff --git a/es2panda/test/parser/annotations/declaration-enum-number.ts b/es2panda/test/parser/annotations/declaration-enum-number.ts index 095d97c985d0ca75c019935f770412d0b8878c07..74f82890046248d5b22dae7f8015a8a4ba17b26f 100644 --- a/es2panda/test/parser/annotations/declaration-enum-number.ts +++ b/es2panda/test/parser/annotations/declaration-enum-number.ts @@ -18,11 +18,11 @@ const enum E { B = 314 } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // No initializer with underlying type number a: E = new Number(0) as number; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: E = 42; } \ No newline at end of file diff --git a/es2panda/test/parser/annotations/declaration-enum-string-expected.txt b/es2panda/test/parser/annotations/declaration-enum-string-expected.txt index 090667cd366df32f40a521e0e200c8903bbef1dd..b259e706c72419dadb88d2ca1b5e3ecb850d87aa 100644 --- a/es2panda/test/parser/annotations/declaration-enum-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-enum-string-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 17 + "column": 39 } } }, @@ -277,7 +277,7 @@ "loc": { "start": { "line": 21, - "column": 18 + "column": 40 }, "end": { "line": 24, @@ -311,7 +311,7 @@ }, "end": { "line": 26, - "column": 17 + "column": 39 } } }, @@ -476,7 +476,7 @@ "loc": { "start": { "line": 26, - "column": 18 + "column": 40 }, "end": { "line": 28, diff --git a/es2panda/test/parser/annotations/declaration-enum-string.ts b/es2panda/test/parser/annotations/declaration-enum-string.ts index 668b13ba51d72057b1111438bd928c13bedd489f..e8f77e41a217e4caa3a3db46de289c62347a6b45 100644 --- a/es2panda/test/parser/annotations/declaration-enum-string.ts +++ b/es2panda/test/parser/annotations/declaration-enum-string.ts @@ -18,11 +18,11 @@ const enum E { B = "world!" } -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { // No initializer with underlying type string a: E; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: E = "Hello"; } \ No newline at end of file diff --git a/es2panda/test/parser/annotations/declaration-number-expected.txt b/es2panda/test/parser/annotations/declaration-number-expected.txt index d692da40994e60c33a2b000a841d517bb78f9d95..04bc5cdf91f5fe3fff19898f9e106a9f5d77e311 100644 --- a/es2panda/test/parser/annotations/declaration-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-number-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -151,7 +151,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -185,7 +185,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -336,7 +336,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-number.ts b/es2panda/test/parser/annotations/declaration-number.ts index e5c48f9af641f0f0451ad667183c8164203d6cee..340bf0775121cf0aa3f3e170616d7863fce60745 100644 --- a/es2panda/test/parser/annotations/declaration-number.ts +++ b/es2panda/test/parser/annotations/declaration-number.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: number; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: number = 42; } \ No newline at end of file diff --git a/es2panda/test/parser/annotations/declaration-string-expected.txt b/es2panda/test/parser/annotations/declaration-string-expected.txt index 45fdfa8882ac05aca4fb7f6b24c7f01151e4463d..e1d5699252b77da084321058fc483eaafa0f7d18 100644 --- a/es2panda/test/parser/annotations/declaration-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-string-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -151,7 +151,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -185,7 +185,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -336,7 +336,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-string.ts b/es2panda/test/parser/annotations/declaration-string.ts index 2f67dfdc93f9626c754bb871e1a3ea6eda569e78..52e99594617389227a8f3c2e932abc592571d4c2 100644 --- a/es2panda/test/parser/annotations/declaration-string.ts +++ b/es2panda/test/parser/annotations/declaration-string.ts @@ -13,10 +13,10 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: string; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { a: string = "Hello world!"; } \ No newline at end of file diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-boolean-expected.txt b/es2panda/test/parser/annotations/declaration-usage-3d-array-boolean-expected.txt index a4e4f5d1e82d74a12bf142aad26a926ea6095b4d..22b62cab12a136255338cc4739779e359b8553ad 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-boolean-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-boolean-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -190,7 +190,7 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 18, @@ -304,7 +304,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -563,7 +563,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-boolean.ts b/es2panda/test/parser/annotations/declaration-usage-3d-array-boolean.ts index b228a7be88bbcdc9acf8ad31da5fa7d30d5aea2e..e707f942b5deddf83713a8c326d93162c8f4d590 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-boolean.ts +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-boolean.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: boolean[][][]; } diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-number-expected.txt b/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-number-expected.txt index 2dbeae8061aec5a19f9275fa3397455ebdf8b4dc..2d65b1e6836573fc9368d4c758ca07e138a78bf1 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-number-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 16 + "column": 38 } } }, @@ -431,7 +431,7 @@ "loc": { "start": { "line": 21, - "column": 17 + "column": 39 }, "end": { "line": 23, @@ -545,7 +545,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 25, @@ -804,7 +804,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 27, diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-number.ts b/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-number.ts index 112d363eaad046ee58e2504d9f4f2a482b9a3a59..7a8eb2c54925cde23ecd823ed3aef199248372ed 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-number.ts +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-number.ts @@ -18,7 +18,7 @@ const enum E { B = 2 } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E[][][] = [[new Array(0)]]; } diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-string-expected.txt b/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-string-expected.txt index 8911a2388b26c5728c2a942d27fe3cee8be67c49..6835399a7b9af20e533edc1d5066aec1673417f6 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-string-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 16 + "column": 38 } } }, @@ -431,7 +431,7 @@ "loc": { "start": { "line": 21, - "column": 17 + "column": 39 }, "end": { "line": 23, @@ -545,7 +545,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 25, @@ -804,7 +804,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 27, diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-string.ts b/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-string.ts index 3ea8b4242bbbf19418701fbf8dce909f75358500..175a0dcb7a93270affd66c1335480c174a2be5f4 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-string.ts +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-enum-string.ts @@ -18,7 +18,7 @@ const enum E { B = "world" } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E[][][] = [[new Array(2)]]; } diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-number-expected.txt b/es2panda/test/parser/annotations/declaration-usage-3d-array-number-expected.txt index c53855fdb4153b7457af023d6e0fba035ac87804..c3b2c24a2a206b5d077404a2c2752dec09e0d24c 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-number-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -190,7 +190,7 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 18, @@ -304,7 +304,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -563,7 +563,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-number.ts b/es2panda/test/parser/annotations/declaration-usage-3d-array-number.ts index 9b32dad4ff7d4870557417742cc733ffaaebb54a..94b2ec54c9e68f424a113447b34d0fac6dfdb6ab 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-number.ts +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-number.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number[][][]; } diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-string-expected.txt b/es2panda/test/parser/annotations/declaration-usage-3d-array-string-expected.txt index a2d10906343c4a3bdd7e54d181b3c7581ebb9984..7c408210768edef8518d3ab714ee90d3397e3aeb 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-string-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -190,7 +190,7 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 18, @@ -304,7 +304,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -563,7 +563,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-usage-3d-array-string.ts b/es2panda/test/parser/annotations/declaration-usage-3d-array-string.ts index 8bdbb7118e9996f7c99637dd147a82d0e24eb1b6..37e8437d72aa2c3145dca40ffa6691294fcb79e2 100644 --- a/es2panda/test/parser/annotations/declaration-usage-3d-array-string.ts +++ b/es2panda/test/parser/annotations/declaration-usage-3d-array-string.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: string[][][]; } diff --git a/es2panda/test/parser/annotations/declaration-usage-array-boolean-expected.txt b/es2panda/test/parser/annotations/declaration-usage-array-boolean-expected.txt index 7588f64ce7d4636cf24107aa44f1a8cd3fc21df2..0fe8d00444ed91cb40c8bf34aab6f05e8efb409e 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-boolean-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-array-boolean-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -164,7 +164,7 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 18, @@ -278,7 +278,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -507,7 +507,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-usage-array-boolean.ts b/es2panda/test/parser/annotations/declaration-usage-array-boolean.ts index 06ae0c99571fdd0308b644460b368e65d069b7d4..cd8fece8279a7d132e7a6398b85631455d073d2c 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-boolean.ts +++ b/es2panda/test/parser/annotations/declaration-usage-array-boolean.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: boolean[]; } diff --git a/es2panda/test/parser/annotations/declaration-usage-array-enum-number-expected.txt b/es2panda/test/parser/annotations/declaration-usage-array-enum-number-expected.txt index ac78e9174353a9e1f3747a29e46829417c6f080e..1cf2806754de87b69f771bbcfdcfcfa2a89d4aa9 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-enum-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-array-enum-number-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 16 + "column": 38 } } }, @@ -375,7 +375,7 @@ "loc": { "start": { "line": 21, - "column": 17 + "column": 39 }, "end": { "line": 23, @@ -489,7 +489,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 25, @@ -718,7 +718,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 27, diff --git a/es2panda/test/parser/annotations/declaration-usage-array-enum-number.ts b/es2panda/test/parser/annotations/declaration-usage-array-enum-number.ts index 801fefe3f00ce1065410d499d662429b5fa778cb..0524e6a24061e029b58c17628eab418defb047e1 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-enum-number.ts +++ b/es2panda/test/parser/annotations/declaration-usage-array-enum-number.ts @@ -18,7 +18,7 @@ const enum E { B = 2, } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E[] = new Array(0); } diff --git a/es2panda/test/parser/annotations/declaration-usage-array-enum-string-expected.txt b/es2panda/test/parser/annotations/declaration-usage-array-enum-string-expected.txt index b2cc2f5d774d922f1df503732bbbdb4c0dfc9ddc..99c0d05521c5b8f91eb5887ad6cca9ccb24b5189 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-enum-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-array-enum-string-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 16 + "column": 38 } } }, @@ -375,7 +375,7 @@ "loc": { "start": { "line": 21, - "column": 17 + "column": 39 }, "end": { "line": 23, @@ -489,7 +489,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 25, @@ -718,7 +718,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 27, diff --git a/es2panda/test/parser/annotations/declaration-usage-array-enum-string.ts b/es2panda/test/parser/annotations/declaration-usage-array-enum-string.ts index aa3bd9c9fbd145aba6be513f37384ffc078ad36b..52742a3241cc03aafcb0daf8228f2a14bdee1464 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-enum-string.ts +++ b/es2panda/test/parser/annotations/declaration-usage-array-enum-string.ts @@ -18,7 +18,7 @@ const enum E { B = "world", } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E[] = new Array(2); } diff --git a/es2panda/test/parser/annotations/declaration-usage-array-number-expected.txt b/es2panda/test/parser/annotations/declaration-usage-array-number-expected.txt index ffb333697923a4b728f228084459c322c49860c7..1dacb954aa0d193e77ef3eee43ca9ca8f44d8b64 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-array-number-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -164,7 +164,7 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 18, @@ -278,7 +278,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -507,7 +507,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-usage-array-number.ts b/es2panda/test/parser/annotations/declaration-usage-array-number.ts index 47fc593175b4fa8ff2a64fb04fce8b61adb0fd25..995e9a06345d6a291a308254cec1cf665b13ae11 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-number.ts +++ b/es2panda/test/parser/annotations/declaration-usage-array-number.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number[]; } diff --git a/es2panda/test/parser/annotations/declaration-usage-array-string-expected.txt b/es2panda/test/parser/annotations/declaration-usage-array-string-expected.txt index 78da22a43a7798b5eba6f64c1e246cb2f130bd58..f9baa7b888e95148f6c55ede30d5548e8da0bdfa 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-array-string-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -164,7 +164,7 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 18, @@ -278,7 +278,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -507,7 +507,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-usage-array-string.ts b/es2panda/test/parser/annotations/declaration-usage-array-string.ts index c14f9d9d8fd68fa1d0756c8f21d84b10da738391..c00fe674fcc5ac3a3cebb385e3c3a25224990fbe 100644 --- a/es2panda/test/parser/annotations/declaration-usage-array-string.ts +++ b/es2panda/test/parser/annotations/declaration-usage-array-string.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: string[]; } diff --git a/es2panda/test/parser/annotations/declaration-usage-boolean-expected.txt b/es2panda/test/parser/annotations/declaration-usage-boolean-expected.txt index b77604f15c3717ae11c95de27463a0a5ed32e4d7..3b769f56fa20cc908626e016fe700e394126d028 100644 --- a/es2panda/test/parser/annotations/declaration-usage-boolean-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-boolean-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -151,7 +151,7 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 18, @@ -265,7 +265,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -451,7 +451,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-usage-boolean.ts b/es2panda/test/parser/annotations/declaration-usage-boolean.ts index b47a2078487b87c4f8b679c8b12633597c77307a..3e7da49918ef6cf00cac1e7740bc1fb3464bc09a 100644 --- a/es2panda/test/parser/annotations/declaration-usage-boolean.ts +++ b/es2panda/test/parser/annotations/declaration-usage-boolean.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: boolean; } diff --git a/es2panda/test/parser/annotations/declaration-usage-combination-expected.txt b/es2panda/test/parser/annotations/declaration-usage-combination-expected.txt index 22dba78913f600f7fc0cf9a3374c4c167ddc5655..c0ec68a50c611f3551716f35d888876ce82064c4 100644 --- a/es2panda/test/parser/annotations/declaration-usage-combination-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-combination-expected.txt @@ -279,7 +279,7 @@ }, "end": { "line": 27, - "column": 16 + "column": 38 } } }, @@ -1416,7 +1416,7 @@ "loc": { "start": { "line": 27, - "column": 17 + "column": 39 }, "end": { "line": 38, @@ -1530,7 +1530,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 40, @@ -2527,7 +2527,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 42, diff --git a/es2panda/test/parser/annotations/declaration-usage-combination.ts b/es2panda/test/parser/annotations/declaration-usage-combination.ts index 16b861ff38393433f3b5df2683e26b8c8b600c2f..ffac927a7597ccc0c53cde7819c78a833797e666 100644 --- a/es2panda/test/parser/annotations/declaration-usage-combination.ts +++ b/es2panda/test/parser/annotations/declaration-usage-combination.ts @@ -24,7 +24,7 @@ const enum E1 { B = "world" } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number b: number[] = [13, 10] c: string diff --git a/es2panda/test/parser/annotations/declaration-usage-empty-expected.txt b/es2panda/test/parser/annotations/declaration-usage-empty-expected.txt index 4ab2bc897cff30e1458f345db3d9293a17b0bea6..06af843949b5c81d22b6ba07607f5999ddec2c26 100644 --- a/es2panda/test/parser/annotations/declaration-usage-empty-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-empty-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -95,7 +95,7 @@ }, "end": { "line": 16, - "column": 19 + "column": 41 } } }, @@ -104,11 +104,11 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 16, - "column": 19 + "column": 41 } } }, @@ -121,7 +121,7 @@ }, "end": { "line": 16, - "column": 19 + "column": 41 } } }, @@ -216,7 +216,7 @@ "type": "Annotation", "expression": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 18, @@ -328,7 +328,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -452,7 +452,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 23, diff --git a/es2panda/test/parser/annotations/declaration-usage-empty.ts b/es2panda/test/parser/annotations/declaration-usage-empty.ts index badbc9745a1434a8e45996e86aee590e4705958f..b781add198329819f7d9e2290005b6ac08b2e6f2 100644 --- a/es2panda/test/parser/annotations/declaration-usage-empty.ts +++ b/es2panda/test/parser/annotations/declaration-usage-empty.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno {} +@interface __$$ETS_ANNOTATION$$__Anno {} @__$$ETS_ANNOTATION$$__Anno class A { diff --git a/es2panda/test/parser/annotations/declaration-usage-enum-number-expected.txt b/es2panda/test/parser/annotations/declaration-usage-enum-number-expected.txt index 0f2c03ff8ebfb3c93eac4b7f3b291b128297be07..08708ed1c48f95f6e18337769ca142ef79b87730 100644 --- a/es2panda/test/parser/annotations/declaration-usage-enum-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-enum-number-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 16 + "column": 38 } } }, @@ -346,7 +346,7 @@ "loc": { "start": { "line": 21, - "column": 17 + "column": 39 }, "end": { "line": 23, @@ -460,7 +460,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 25, @@ -646,7 +646,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 27, diff --git a/es2panda/test/parser/annotations/declaration-usage-enum-number.ts b/es2panda/test/parser/annotations/declaration-usage-enum-number.ts index 693f1476e14f946bcfb570fdfd52acee7dcb4678..c296d79b90aa1e53f48c5017279bc3a835d56a7f 100644 --- a/es2panda/test/parser/annotations/declaration-usage-enum-number.ts +++ b/es2panda/test/parser/annotations/declaration-usage-enum-number.ts @@ -18,7 +18,7 @@ const enum E { B = 2 } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E = new Number(0) as number; } diff --git a/es2panda/test/parser/annotations/declaration-usage-enum-string-expected.txt b/es2panda/test/parser/annotations/declaration-usage-enum-string-expected.txt index 56ae1cc18a71bfd94c9c18ee16eef70783e08e54..1a8d1d292a7dc96eaa622d319834f6ef94d394a6 100644 --- a/es2panda/test/parser/annotations/declaration-usage-enum-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-enum-string-expected.txt @@ -126,7 +126,7 @@ }, "end": { "line": 21, - "column": 16 + "column": 38 } } }, @@ -277,7 +277,7 @@ "loc": { "start": { "line": 21, - "column": 17 + "column": 39 }, "end": { "line": 23, @@ -391,7 +391,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 25, @@ -577,7 +577,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 27, diff --git a/es2panda/test/parser/annotations/declaration-usage-enum-string.ts b/es2panda/test/parser/annotations/declaration-usage-enum-string.ts index d9c8f8e0477c4cf4d408da1c680efe924ab3e872..320500abe99431974fd5f281561301106df16035 100644 --- a/es2panda/test/parser/annotations/declaration-usage-enum-string.ts +++ b/es2panda/test/parser/annotations/declaration-usage-enum-string.ts @@ -18,7 +18,7 @@ const enum E { B = "world" } -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: E; } diff --git a/es2panda/test/parser/annotations/declaration-usage-number-expected.txt b/es2panda/test/parser/annotations/declaration-usage-number-expected.txt index 96d98fe81f94be154e8c20dbf3a477c614cd3ee6..e43e54db0e5ece96e115e1f39faf0f1da4c1d77b 100644 --- a/es2panda/test/parser/annotations/declaration-usage-number-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-number-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -151,7 +151,7 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 18, @@ -265,7 +265,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -451,7 +451,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-usage-number.ts b/es2panda/test/parser/annotations/declaration-usage-number.ts index 50b8417b90ae216b9d84b38d781c557cc6ed4631..8fc55a987b0bee2f512ce35370d78c922d2473f8 100644 --- a/es2panda/test/parser/annotations/declaration-usage-number.ts +++ b/es2panda/test/parser/annotations/declaration-usage-number.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: number; } diff --git a/es2panda/test/parser/annotations/declaration-usage-string-expected.txt b/es2panda/test/parser/annotations/declaration-usage-string-expected.txt index b8bec61953d09780cbb5b262a14437bd759ab717..613d0f63c96a41ebce407f627551a2398b8c2c93 100644 --- a/es2panda/test/parser/annotations/declaration-usage-string-expected.txt +++ b/es2panda/test/parser/annotations/declaration-usage-string-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 16 + "column": 38 } } }, @@ -151,7 +151,7 @@ "loc": { "start": { "line": 16, - "column": 17 + "column": 39 }, "end": { "line": 18, @@ -265,7 +265,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 20, @@ -451,7 +451,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno", + "name": "Anno", "loc": { "start": { "line": 22, diff --git a/es2panda/test/parser/annotations/declaration-usage-string.ts b/es2panda/test/parser/annotations/declaration-usage-string.ts index 0c627768fd650a5e4bac6cac31df0b4baaf5d8b6..5ad01ef4ed9394074ca233092f0bf41cc67628ab 100644 --- a/es2panda/test/parser/annotations/declaration-usage-string.ts +++ b/es2panda/test/parser/annotations/declaration-usage-string.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -@interface Anno { +@interface __$$ETS_ANNOTATION$$__Anno { a: string; } diff --git a/es2panda/test/parser/annotations/export-expected.txt b/es2panda/test/parser/annotations/export-expected.txt index 4ae0d3f25dcada0cfeed10792de8c8514bed0a64..ddccdb842b6c87f0b5c286dce968b610d22b49a4 100644 --- a/es2panda/test/parser/annotations/export-expected.txt +++ b/es2panda/test/parser/annotations/export-expected.txt @@ -16,7 +16,7 @@ }, "end": { "line": 16, - "column": 24 + "column": 46 } } }, @@ -97,7 +97,7 @@ }, "end": { "line": 16, - "column": 27 + "column": 49 } } }, @@ -106,11 +106,11 @@ "loc": { "start": { "line": 16, - "column": 25 + "column": 47 }, "end": { "line": 16, - "column": 27 + "column": 49 } } }, @@ -123,7 +123,7 @@ }, "end": { "line": 16, - "column": 27 + "column": 49 } } }, @@ -136,7 +136,7 @@ }, "end": { "line": 16, - "column": 27 + "column": 49 } } }, @@ -155,7 +155,7 @@ }, "end": { "line": 18, - "column": 24 + "column": 46 } } }, @@ -306,7 +306,7 @@ "loc": { "start": { "line": 18, - "column": 25 + "column": 47 }, "end": { "line": 20, @@ -435,7 +435,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno1", + "name": "Anno1", "loc": { "start": { "line": 22, @@ -619,7 +619,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno1", + "name": "Anno1", "loc": { "start": { "line": 25, diff --git a/es2panda/test/parser/annotations/export.ts b/es2panda/test/parser/annotations/export.ts index 8c10cc06288a7c1197e1b1c601491358d987f698..6bea13acdc05d843f551afdf62e7a7d27cc561fd 100644 --- a/es2panda/test/parser/annotations/export.ts +++ b/es2panda/test/parser/annotations/export.ts @@ -13,9 +13,9 @@ * limitations under the License. */ -export @interface Anno1 {} +export @interface __$$ETS_ANNOTATION$$__Anno1 {} -export @interface Anno2 { +export @interface __$$ETS_ANNOTATION$$__Anno2 { a: number = 0; } diff --git a/es2panda/test/parser/annotations/import-qualified-expected.txt b/es2panda/test/parser/annotations/import-qualified-expected.txt index 5f41d5ec6c794cd017804ed80bc6792cc55defa2..4706b8ceea2d07224e35c72f56928d9a05ceb025 100644 --- a/es2panda/test/parser/annotations/import-qualified-expected.txt +++ b/es2panda/test/parser/annotations/import-qualified-expected.txt @@ -152,7 +152,7 @@ "type": "MemberExpression", "object": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Namespace1", + "name": "Namespace1", "loc": { "start": { "line": 18, @@ -160,7 +160,7 @@ }, "end": { "line": 18, - "column": 34 + "column": 12 } } }, @@ -170,7 +170,7 @@ "loc": { "start": { "line": 18, - "column": 35 + "column": 13 }, "end": { "line": 18, @@ -348,7 +348,7 @@ "type": "MemberExpression", "object": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Namespace1", + "name": "Namespace1", "loc": { "start": { "line": 21, @@ -356,7 +356,7 @@ }, "end": { "line": 21, - "column": 34 + "column": 12 } } }, @@ -366,7 +366,7 @@ "loc": { "start": { "line": 21, - "column": 35 + "column": 13 }, "end": { "line": 21, @@ -533,7 +533,7 @@ "type": "MemberExpression", "object": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Namespace1", + "name": "Namespace1", "loc": { "start": { "line": 24, @@ -541,7 +541,7 @@ }, "end": { "line": 24, - "column": 34 + "column": 12 } } }, @@ -551,7 +551,7 @@ "loc": { "start": { "line": 24, - "column": 35 + "column": 13 }, "end": { "line": 24, @@ -841,7 +841,7 @@ "type": "MemberExpression", "object": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Namespace1", + "name": "Namespace1", "loc": { "start": { "line": 27, @@ -849,7 +849,7 @@ }, "end": { "line": 27, - "column": 34 + "column": 12 } } }, @@ -859,11 +859,11 @@ "loc": { "start": { "line": 27, - "column": 35 + "column": 13 }, "end": { "line": 27, - "column": 45 + "column": 23 } } }, @@ -876,7 +876,7 @@ }, "end": { "line": 27, - "column": 45 + "column": 23 } } }, @@ -886,11 +886,11 @@ "loc": { "start": { "line": 27, - "column": 46 + "column": 24 }, "end": { "line": 27, - "column": 56 + "column": 34 } } }, @@ -903,7 +903,7 @@ }, "end": { "line": 27, - "column": 56 + "column": 34 } } }, @@ -913,7 +913,7 @@ "loc": { "start": { "line": 27, - "column": 57 + "column": 35 }, "end": { "line": 27, @@ -1095,7 +1095,7 @@ "type": "MemberExpression", "object": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Namespace1", + "name": "Namespace1", "loc": { "start": { "line": 30, @@ -1103,7 +1103,7 @@ }, "end": { "line": 30, - "column": 34 + "column": 12 } } }, @@ -1113,11 +1113,11 @@ "loc": { "start": { "line": 30, - "column": 35 + "column": 13 }, "end": { "line": 30, - "column": 45 + "column": 23 } } }, @@ -1130,7 +1130,7 @@ }, "end": { "line": 30, - "column": 45 + "column": 23 } } }, @@ -1140,11 +1140,11 @@ "loc": { "start": { "line": 30, - "column": 46 + "column": 24 }, "end": { "line": 30, - "column": 56 + "column": 34 } } }, @@ -1157,7 +1157,7 @@ }, "end": { "line": 30, - "column": 56 + "column": 34 } } }, @@ -1167,7 +1167,7 @@ "loc": { "start": { "line": 30, - "column": 57 + "column": 35 }, "end": { "line": 30, @@ -1338,7 +1338,7 @@ "type": "MemberExpression", "object": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Namespace1", + "name": "Namespace1", "loc": { "start": { "line": 33, @@ -1346,7 +1346,7 @@ }, "end": { "line": 33, - "column": 34 + "column": 12 } } }, @@ -1356,11 +1356,11 @@ "loc": { "start": { "line": 33, - "column": 35 + "column": 13 }, "end": { "line": 33, - "column": 45 + "column": 23 } } }, @@ -1373,7 +1373,7 @@ }, "end": { "line": 33, - "column": 45 + "column": 23 } } }, @@ -1383,11 +1383,11 @@ "loc": { "start": { "line": 33, - "column": 46 + "column": 24 }, "end": { "line": 33, - "column": 56 + "column": 34 } } }, @@ -1400,7 +1400,7 @@ }, "end": { "line": 33, - "column": 56 + "column": 34 } } }, @@ -1410,7 +1410,7 @@ "loc": { "start": { "line": 33, - "column": 57 + "column": 35 }, "end": { "line": 33, diff --git a/es2panda/test/parser/annotations/import-qualified.ts b/es2panda/test/parser/annotations/import-qualified.ts index 61a16cadc23bdf4093d5231431b3f39fe03730b5..742f0f07ae26c1d3623f306f2097e0fa626ef272 100644 --- a/es2panda/test/parser/annotations/import-qualified.ts +++ b/es2panda/test/parser/annotations/import-qualified.ts @@ -15,20 +15,20 @@ import * as Namespace1 from "./a" -@__$$ETS_ANNOTATION$$__Namespace1.Anno() +@Namespace1.__$$ETS_ANNOTATION$$__Anno() class A {} -@__$$ETS_ANNOTATION$$__Namespace1.Anno +@Namespace1.__$$ETS_ANNOTATION$$__Anno class B {} -@__$$ETS_ANNOTATION$$__Namespace1.Anno1({a: 1, b: "string"}) +@Namespace1.__$$ETS_ANNOTATION$$__Anno1({a: 1, b: "string"}) class C {} -@__$$ETS_ANNOTATION$$__Namespace1.Namespace2.Namespace3.Anno2() +@Namespace1.Namespace2.Namespace3.__$$ETS_ANNOTATION$$__Anno2() class D {} -@__$$ETS_ANNOTATION$$__Namespace1.Namespace2.Namespace3.Anno2 +@Namespace1.Namespace2.Namespace3.__$$ETS_ANNOTATION$$__Anno2 class E {} -@__$$ETS_ANNOTATION$$__Namespace1.Namespace2.Namespace3.Anno3({a: 1, b: "string"}) +@Namespace1.Namespace2.Namespace3.__$$ETS_ANNOTATION$$__Anno3({a: 1, b: "string"}) class F {} \ No newline at end of file diff --git a/es2panda/test/parser/annotations/import-unqualified-expected.txt b/es2panda/test/parser/annotations/import-unqualified-expected.txt index c4468f2f494453208f12eee7054f1022c0fb4b12..cf5699a10342fd0b4634b761277ab5dfc3e71c60 100644 --- a/es2panda/test/parser/annotations/import-unqualified-expected.txt +++ b/es2panda/test/parser/annotations/import-unqualified-expected.txt @@ -205,7 +205,7 @@ "type": "Annotation", "expression": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno1", + "name": "Anno1", "loc": { "start": { "line": 18, @@ -361,7 +361,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno1", + "name": "Anno1", "loc": { "start": { "line": 21, @@ -530,7 +530,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno1", + "name": "Anno1", "loc": { "start": { "line": 24, @@ -714,7 +714,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno2", + "name": "Anno2", "loc": { "start": { "line": 27, diff --git a/es2panda/test/parser/annotations/multiple-annotations-expected.txt b/es2panda/test/parser/annotations/multiple-annotations-expected.txt index 2111cf0e0b4d168abfc132426ef9d37bb30f8176..135d60a478b86545dfa4aa64354bedc0c1a64599 100644 --- a/es2panda/test/parser/annotations/multiple-annotations-expected.txt +++ b/es2panda/test/parser/annotations/multiple-annotations-expected.txt @@ -14,7 +14,7 @@ }, "end": { "line": 16, - "column": 17 + "column": 39 } } }, @@ -165,7 +165,7 @@ "loc": { "start": { "line": 16, - "column": 18 + "column": 40 }, "end": { "line": 18, @@ -199,7 +199,7 @@ }, "end": { "line": 20, - "column": 17 + "column": 39 } } }, @@ -350,7 +350,7 @@ "loc": { "start": { "line": 20, - "column": 18 + "column": 40 }, "end": { "line": 22, @@ -384,7 +384,7 @@ }, "end": { "line": 24, - "column": 17 + "column": 39 } } }, @@ -577,7 +577,7 @@ "loc": { "start": { "line": 24, - "column": 18 + "column": 40 }, "end": { "line": 26, @@ -691,7 +691,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno1", + "name": "Anno1", "loc": { "start": { "line": 28, @@ -796,7 +796,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno2", + "name": "Anno2", "loc": { "start": { "line": 29, @@ -901,7 +901,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno3", + "name": "Anno3", "loc": { "start": { "line": 30, @@ -1116,7 +1116,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno1", + "name": "Anno1", "loc": { "start": { "line": 32, @@ -1221,7 +1221,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno2", + "name": "Anno2", "loc": { "start": { "line": 33, @@ -1326,7 +1326,7 @@ "type": "CallExpression", "callee": { "type": "Identifier", - "name": "__$$ETS_ANNOTATION$$__Anno3", + "name": "Anno3", "loc": { "start": { "line": 34, diff --git a/es2panda/test/parser/annotations/multiple-annotations.ts b/es2panda/test/parser/annotations/multiple-annotations.ts index cf0af17c46b720c83ce8e40a6a328b68010b19f7..246af473b26a6a8d76defe52e36865f928a33bc7 100644 --- a/es2panda/test/parser/annotations/multiple-annotations.ts +++ b/es2panda/test/parser/annotations/multiple-annotations.ts @@ -13,15 +13,15 @@ * limitations under the License. */ -@interface Anno1 { +@interface __$$ETS_ANNOTATION$$__Anno1 { a: number = 1; } -@interface Anno2 { +@interface __$$ETS_ANNOTATION$$__Anno2 { b: string = "string" } -@interface Anno3 { +@interface __$$ETS_ANNOTATION$$__Anno3 { c: boolean[] = [true, false]; } diff --git a/es2panda/test/parser/js/language/import/lazy-import-expected.txt b/es2panda/test/parser/js/language/import/lazy-import-expected.txt index 4954838d6cc001d0aa8dde53ce5f6871eb745642..d8b751d51e8d777383cd772579e8700ea5059229 100644 --- a/es2panda/test/parser/js/language/import/lazy-import-expected.txt +++ b/es2panda/test/parser/js/language/import/lazy-import-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x6 -expectedProperty = 0x3 .language ECMAScript .function any .#~A=#A(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/parser/js/language/import/syntax/api12/beta2/import-lazy-beta2-2-expected.txt b/es2panda/test/parser/js/language/import/syntax/api12/beta2/import-lazy-beta2-2-expected.txt index a5a0f51d284f302b4377ff68cac0556af37b7922..592aff13d028666c9cbf346dcff965e03217645d 100644 --- a/es2panda/test/parser/js/language/import/syntax/api12/beta2/import-lazy-beta2-2-expected.txt +++ b/es2panda/test/parser/js/language/import/syntax/api12/beta2/import-lazy-beta2-2-expected.txt @@ -1,2 +1,2 @@ -SyntaxError: Current configuration does not support using lazy import default.Lazy import can be used in the version of API 18 or higher versions. -Solutions: > Check the compatibleSdkVersion in build-profile.json5.> If compatibleSdkVersion is set to API 18.> If you're running es2abc in commandline without IDE, please check whether target-api-version options are correctly configured. [import-lazy-beta2-2.js:16:13] +SyntaxError: Current configuration does not support using lazy import. Lazy import can be used in the beta3 version of API 12 or higher versions. +Solutions: > Check the compatibleSdkVersion and compatibleSdkVersionStage in build-profile.json5.> If compatibleSdkVersion is set to API 12, then compatibleSdkVersionStage needs to be configured as beta3.> If you're running es2abc in commandline without IDE, please check whether target-api-version and target-api-sub-version options are correctly configured. [import-lazy-beta2-2.js:16:13] diff --git a/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-2-expected.txt b/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-2-expected.txt index aeccb2f589e10fd2675de4604f824907e5fb8b80..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-2-expected.txt +++ b/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-2-expected.txt @@ -1,2 +0,0 @@ -SyntaxError: Current configuration does not support using lazy import default.Lazy import can be used in the version of API 18 or higher versions. -Solutions: > Check the compatibleSdkVersion in build-profile.json5.> If compatibleSdkVersion is set to API 18.> If you're running es2abc in commandline without IDE, please check whether target-api-version options are correctly configured. [import-lazy-2.js:16:13] diff --git a/es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_supported_runtime_version-expected.txt b/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-1-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_supported_runtime_version-expected.txt rename to es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-1-expected.txt diff --git a/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-1.js b/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-1.js new file mode 100644 index 0000000000000000000000000000000000000000..1be01909715173e3ac0e62f32098f04778e4eb92 --- /dev/null +++ b/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-1.js @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 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 lazy a from './a' \ No newline at end of file diff --git a/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-2-expected.txt b/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-2-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..d9309c18906f21418839b077c5dba619fb60d059 --- /dev/null +++ b/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-2-expected.txt @@ -0,0 +1 @@ +SyntaxError: Unexpected token. [import-lazy-defalut-2.js:16:13] diff --git a/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-2.js b/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-2.js new file mode 100644 index 0000000000000000000000000000000000000000..9311c81e83a1cb29495c319b4db09175470452e6 --- /dev/null +++ b/es2panda/test/parser/js/language/import/syntax/api12/beta3/import-lazy-defalut-2.js @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2025 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 lazy type {a} from './a' \ No newline at end of file diff --git a/es2panda/test/parser/ts/test-func-param10-expected.txt b/es2panda/test/parser/ts/test-func-param10-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..2f0ae83bd703e6bbcaf119efaefcc567093b9794 --- /dev/null +++ b/es2panda/test/parser/ts/test-func-param10-expected.txt @@ -0,0 +1,712 @@ +{ + "type": "Program", + "statements": [ + { + "type": "VariableDeclaration", + "declarations": [ + { + "type": "VariableDeclarator", + "id": { + "type": "Identifier", + "name": "a", + "loc": { + "start": { + "line": 17, + "column": 5 + }, + "end": { + "line": 17, + "column": 6 + } + } + }, + "init": { + "type": "StringLiteral", + "value": "111", + "loc": { + "start": { + "line": 17, + "column": 9 + }, + "end": { + "line": 17, + "column": 14 + } + } + }, + "loc": { + "start": { + "line": 17, + "column": 5 + }, + "end": { + "line": 17, + "column": 14 + } + } + } + ], + "kind": "let", + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 17, + "column": 15 + } + } + }, + { + "type": "VariableDeclaration", + "declarations": [ + { + "type": "VariableDeclarator", + "id": { + "type": "Identifier", + "name": "b", + "loc": { + "start": { + "line": 18, + "column": 5 + }, + "end": { + "line": 18, + "column": 6 + } + } + }, + "init": { + "type": "StringLiteral", + "value": "222", + "loc": { + "start": { + "line": 18, + "column": 9 + }, + "end": { + "line": 18, + "column": 14 + } + } + }, + "loc": { + "start": { + "line": 18, + "column": 5 + }, + "end": { + "line": 18, + "column": 14 + } + } + } + ], + "kind": "let", + "loc": { + "start": { + "line": 18, + "column": 1 + }, + "end": { + "line": 18, + "column": 15 + } + } + }, + { + "type": "VariableDeclaration", + "declarations": [ + { + "type": "VariableDeclarator", + "id": { + "type": "Identifier", + "name": "c", + "loc": { + "start": { + "line": 19, + "column": 5 + }, + "end": { + "line": 19, + "column": 6 + } + } + }, + "init": { + "type": "BooleanLiteral", + "value": true, + "loc": { + "start": { + "line": 19, + "column": 9 + }, + "end": { + "line": 19, + "column": 13 + } + } + }, + "loc": { + "start": { + "line": 19, + "column": 5 + }, + "end": { + "line": 19, + "column": 13 + } + } + } + ], + "kind": "let", + "loc": { + "start": { + "line": 19, + "column": 1 + }, + "end": { + "line": 19, + "column": 14 + } + } + }, + { + "type": "FunctionDeclaration", + "function": { + "type": "ScriptFunction", + "id": { + "type": "Identifier", + "name": "test1", + "loc": { + "start": { + "line": 20, + "column": 10 + }, + "end": { + "line": 20, + "column": 15 + } + } + }, + "generator": false, + "async": false, + "expression": false, + "params": [], + "body": { + "type": "BlockStatement", + "statements": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "CallExpression", + "callee": { + "type": "Identifier", + "name": "print", + "loc": { + "start": { + "line": 21, + "column": 5 + }, + "end": { + "line": 21, + "column": 10 + } + } + }, + "arguments": [ + { + "type": "StringLiteral", + "value": "333", + "loc": { + "start": { + "line": 21, + "column": 11 + }, + "end": { + "line": 21, + "column": 16 + } + } + } + ], + "optional": false, + "loc": { + "start": { + "line": 21, + "column": 5 + }, + "end": { + "line": 21, + "column": 17 + } + } + }, + "loc": { + "start": { + "line": 21, + "column": 5 + }, + "end": { + "line": 21, + "column": 17 + } + } + } + ], + "loc": { + "start": { + "line": 20, + "column": 18 + }, + "end": { + "line": 22, + "column": 2 + } + } + }, + "loc": { + "start": { + "line": 20, + "column": 1 + }, + "end": { + "line": 22, + "column": 2 + } + } + }, + "loc": { + "start": { + "line": 20, + "column": 1 + }, + "end": { + "line": 22, + "column": 2 + } + } + }, + { + "type": "FunctionDeclaration", + "function": { + "type": "ScriptFunction", + "id": { + "type": "Identifier", + "name": "test2", + "loc": { + "start": { + "line": 23, + "column": 10 + }, + "end": { + "line": 23, + "column": 15 + } + } + }, + "generator": false, + "async": false, + "expression": false, + "params": [ + { + "type": "AssignmentPattern", + "left": { + "type": "Identifier", + "name": "aa", + "typeAnnotation": { + "type": "TSStringKeyword", + "loc": { + "start": { + "line": 23, + "column": 21 + }, + "end": { + "line": 23, + "column": 27 + } + } + }, + "loc": { + "start": { + "line": 23, + "column": 16 + }, + "end": { + "line": 23, + "column": 18 + } + } + }, + "right": { + "type": "ConditionalExpression", + "test": { + "type": "Identifier", + "name": "c", + "loc": { + "start": { + "line": 23, + "column": 30 + }, + "end": { + "line": 23, + "column": 31 + } + } + }, + "consequent": { + "type": "SequenceExpression", + "expressions": [ + { + "type": "CallExpression", + "callee": { + "type": "Identifier", + "name": "test1", + "loc": { + "start": { + "line": 23, + "column": 35 + }, + "end": { + "line": 23, + "column": 40 + } + } + }, + "arguments": [], + "optional": false, + "loc": { + "start": { + "line": 23, + "column": 35 + }, + "end": { + "line": 23, + "column": 42 + } + } + }, + { + "type": "Identifier", + "name": "a", + "loc": { + "start": { + "line": 23, + "column": 43 + }, + "end": { + "line": 23, + "column": 44 + } + } + } + ], + "loc": { + "start": { + "line": 23, + "column": 34 + }, + "end": { + "line": 23, + "column": 45 + } + } + }, + "alternate": { + "type": "SequenceExpression", + "expressions": [ + { + "type": "CallExpression", + "callee": { + "type": "Identifier", + "name": "test1", + "loc": { + "start": { + "line": 23, + "column": 49 + }, + "end": { + "line": 23, + "column": 54 + } + } + }, + "arguments": [], + "optional": false, + "loc": { + "start": { + "line": 23, + "column": 49 + }, + "end": { + "line": 23, + "column": 56 + } + } + }, + { + "type": "Identifier", + "name": "b", + "loc": { + "start": { + "line": 23, + "column": 57 + }, + "end": { + "line": 23, + "column": 58 + } + } + } + ], + "loc": { + "start": { + "line": 23, + "column": 48 + }, + "end": { + "line": 23, + "column": 59 + } + } + }, + "loc": { + "start": { + "line": 23, + "column": 30 + }, + "end": { + "line": 23, + "column": 59 + } + } + }, + "loc": { + "start": { + "line": 23, + "column": 16 + }, + "end": { + "line": 23, + "column": 59 + } + } + }, + { + "type": "AssignmentPattern", + "left": { + "type": "Identifier", + "name": "dd", + "typeAnnotation": { + "type": "TSNumberKeyword", + "loc": { + "start": { + "line": 23, + "column": 64 + }, + "end": { + "line": 23, + "column": 70 + } + } + }, + "loc": { + "start": { + "line": 23, + "column": 61 + }, + "end": { + "line": 23, + "column": 63 + } + } + }, + "right": { + "type": "NumberLiteral", + "value": 1, + "loc": { + "start": { + "line": 23, + "column": 73 + }, + "end": { + "line": 23, + "column": 74 + } + } + }, + "loc": { + "start": { + "line": 23, + "column": 61 + }, + "end": { + "line": 23, + "column": 74 + } + } + } + ], + "body": { + "type": "BlockStatement", + "statements": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "CallExpression", + "callee": { + "type": "Identifier", + "name": "print", + "loc": { + "start": { + "line": 24, + "column": 5 + }, + "end": { + "line": 24, + "column": 10 + } + } + }, + "arguments": [ + { + "type": "Identifier", + "name": "aa", + "loc": { + "start": { + "line": 24, + "column": 11 + }, + "end": { + "line": 24, + "column": 13 + } + } + }, + { + "type": "Identifier", + "name": "dd", + "loc": { + "start": { + "line": 24, + "column": 15 + }, + "end": { + "line": 24, + "column": 17 + } + } + } + ], + "optional": false, + "loc": { + "start": { + "line": 24, + "column": 5 + }, + "end": { + "line": 24, + "column": 18 + } + } + }, + "loc": { + "start": { + "line": 24, + "column": 5 + }, + "end": { + "line": 24, + "column": 19 + } + } + } + ], + "loc": { + "start": { + "line": 23, + "column": 76 + }, + "end": { + "line": 25, + "column": 2 + } + } + }, + "loc": { + "start": { + "line": 23, + "column": 1 + }, + "end": { + "line": 25, + "column": 2 + } + } + }, + "loc": { + "start": { + "line": 23, + "column": 1 + }, + "end": { + "line": 25, + "column": 2 + } + } + }, + { + "type": "ExpressionStatement", + "expression": { + "type": "CallExpression", + "callee": { + "type": "Identifier", + "name": "test2", + "loc": { + "start": { + "line": 27, + "column": 1 + }, + "end": { + "line": 27, + "column": 6 + } + } + }, + "arguments": [], + "optional": false, + "loc": { + "start": { + "line": 27, + "column": 1 + }, + "end": { + "line": 27, + "column": 8 + } + } + }, + "loc": { + "start": { + "line": 27, + "column": 1 + }, + "end": { + "line": 27, + "column": 8 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 28, + "column": 1 + } + } +} diff --git a/es2panda/test/parser/ts/test-func-param10.ts b/es2panda/test/parser/ts/test-func-param10.ts new file mode 100644 index 0000000000000000000000000000000000000000..717ae2477f4c7617015a2459b60ef6c117980a29 --- /dev/null +++ b/es2panda/test/parser/ts/test-func-param10.ts @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2025 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. + */ + + +let a = "111"; +let b = "222"; +let c = true; +function test1() { + print("333") +} +function test2(aa : string = c ? (test1(),a) : (test1(),b), dd:number = 1) { + print(aa, dd); +} + +test2() diff --git a/es2panda/test/parser/ts/test-func-param11-expected.txt b/es2panda/test/parser/ts/test-func-param11-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..610308b8d9c8eb343a7d0be82a445b6439de739f --- /dev/null +++ b/es2panda/test/parser/ts/test-func-param11-expected.txt @@ -0,0 +1,360 @@ +{ + "type": "Program", + "statements": [ + { + "type": "FunctionDeclaration", + "function": { + "type": "ScriptFunction", + "id": { + "type": "Identifier", + "name": "bar", + "loc": { + "start": { + "line": 17, + "column": 10 + }, + "end": { + "line": 17, + "column": 13 + } + } + }, + "generator": false, + "async": false, + "expression": false, + "params": [ + { + "type": "AssignmentPattern", + "left": { + "type": "Identifier", + "name": "fn", + "loc": { + "start": { + "line": 17, + "column": 14 + }, + "end": { + "line": 17, + "column": 16 + } + } + }, + "right": { + "type": "ArrowFunctionExpression", + "function": { + "type": "ScriptFunction", + "id": null, + "generator": false, + "async": false, + "expression": true, + "params": [ + { + "type": "Identifier", + "name": "b", + "typeAnnotation": { + "type": "TSNumberKeyword", + "loc": { + "start": { + "line": 17, + "column": 23 + }, + "end": { + "line": 17, + "column": 29 + } + } + }, + "loc": { + "start": { + "line": 17, + "column": 19 + }, + "end": { + "line": 17, + "column": 30 + } + } + } + ], + "body": { + "type": "BinaryExpression", + "operator": "+", + "left": { + "type": "Identifier", + "name": "b", + "loc": { + "start": { + "line": 17, + "column": 34 + }, + "end": { + "line": 17, + "column": 35 + } + } + }, + "right": { + "type": "NumberLiteral", + "value": 1, + "loc": { + "start": { + "line": 17, + "column": 38 + }, + "end": { + "line": 17, + "column": 39 + } + } + }, + "loc": { + "start": { + "line": 17, + "column": 34 + }, + "end": { + "line": 17, + "column": 39 + } + } + }, + "loc": { + "start": { + "line": 17, + "column": 19 + }, + "end": { + "line": 17, + "column": 39 + } + } + }, + "loc": { + "start": { + "line": 17, + "column": 19 + }, + "end": { + "line": 17, + "column": 39 + } + } + }, + "loc": { + "start": { + "line": 17, + "column": 14 + }, + "end": { + "line": 17, + "column": 39 + } + } + }, + { + "type": "Identifier", + "name": "a", + "typeAnnotation": { + "type": "TSStringKeyword", + "loc": { + "start": { + "line": 17, + "column": 44 + }, + "end": { + "line": 17, + "column": 50 + } + } + }, + "loc": { + "start": { + "line": 17, + "column": 41 + }, + "end": { + "line": 17, + "column": 42 + } + } + } + ], + "body": { + "type": "BlockStatement", + "statements": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "CallExpression", + "callee": { + "type": "MemberExpression", + "object": { + "type": "Identifier", + "name": "console", + "loc": { + "start": { + "line": 18, + "column": 5 + }, + "end": { + "line": 18, + "column": 12 + } + } + }, + "property": { + "type": "Identifier", + "name": "log", + "loc": { + "start": { + "line": 18, + "column": 13 + }, + "end": { + "line": 18, + "column": 16 + } + } + }, + "computed": false, + "optional": false, + "loc": { + "start": { + "line": 18, + "column": 5 + }, + "end": { + "line": 18, + "column": 16 + } + } + }, + "arguments": [ + { + "type": "CallExpression", + "callee": { + "type": "Identifier", + "name": "fn", + "loc": { + "start": { + "line": 18, + "column": 17 + }, + "end": { + "line": 18, + "column": 19 + } + } + }, + "arguments": [ + { + "type": "NumberLiteral", + "value": 5, + "loc": { + "start": { + "line": 18, + "column": 20 + }, + "end": { + "line": 18, + "column": 21 + } + } + } + ], + "optional": false, + "loc": { + "start": { + "line": 18, + "column": 17 + }, + "end": { + "line": 18, + "column": 22 + } + } + }, + { + "type": "Identifier", + "name": "a", + "loc": { + "start": { + "line": 18, + "column": 24 + }, + "end": { + "line": 18, + "column": 25 + } + } + } + ], + "optional": false, + "loc": { + "start": { + "line": 18, + "column": 5 + }, + "end": { + "line": 18, + "column": 26 + } + } + }, + "loc": { + "start": { + "line": 18, + "column": 5 + }, + "end": { + "line": 18, + "column": 27 + } + } + } + ], + "loc": { + "start": { + "line": 17, + "column": 52 + }, + "end": { + "line": 19, + "column": 2 + } + } + }, + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 19, + "column": 2 + } + } + }, + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 19, + "column": 2 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 20, + "column": 1 + } + } +} diff --git a/es2panda/test/parser/ts/test-func-param11.ts b/es2panda/test/parser/ts/test-func-param11.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e36915b21b10ec5973b188cd6103ddc1c01776b --- /dev/null +++ b/es2panda/test/parser/ts/test-func-param11.ts @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2025 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. + */ + + +function bar(fn = (b: number) => b + 1, a: string) { + console.log(fn(5), a); +} diff --git a/es2panda/test/parser/ts/test-readonly-optional-property-expected.txt b/es2panda/test/parser/ts/test-readonly-optional-property-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..970e539cfff96898fc2bc0796450c18f039c6b88 --- /dev/null +++ b/es2panda/test/parser/ts/test-readonly-optional-property-expected.txt @@ -0,0 +1,101 @@ +{ + "type": "Program", + "statements": [ + { + "type": "TSInterfaceDeclaration", + "body": { + "type": "TSInterfaceBody", + "body": [ + { + "type": "TSPropertySignature", + "computed": false, + "optional": true, + "readonly": false, + "key": { + "type": "Identifier", + "name": "readonly", + "loc": { + "start": { + "line": 18, + "column": 2 + }, + "end": { + "line": 18, + "column": 10 + } + } + }, + "typeAnnotation": { + "type": "TSNumberKeyword", + "loc": { + "start": { + "line": 18, + "column": 13 + }, + "end": { + "line": 18, + "column": 19 + } + } + }, + "loc": { + "start": { + "line": 18, + "column": 2 + }, + "end": { + "line": 18, + "column": 20 + } + } + } + ], + "loc": { + "start": { + "line": 17, + "column": 16 + }, + "end": { + "line": 19, + "column": 2 + } + } + }, + "id": { + "type": "Identifier", + "name": "test", + "loc": { + "start": { + "line": 17, + "column": 11 + }, + "end": { + "line": 17, + "column": 15 + } + } + }, + "extends": [], + "loc": { + "start": { + "line": 17, + "column": 1 + }, + "end": { + "line": 19, + "column": 2 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 19, + "column": 2 + } + } +} diff --git a/es2panda/test/parser/ts/test-readonly-optional-property.ts b/es2panda/test/parser/ts/test-readonly-optional-property.ts new file mode 100644 index 0000000000000000000000000000000000000000..2f9df72f3a191ca5a7042f06a6057be18afcec25 --- /dev/null +++ b/es2panda/test/parser/ts/test-readonly-optional-property.ts @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2025 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. + */ + + +interface test { + readonly?: number; +} \ No newline at end of file diff --git a/es2panda/test/parser/ts/transformed_cases/test-class-auto-accessor-1-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases/test-class-auto-accessor-1-transformed-expected.txt index 5b64b2d04215f2c8526ec7f4203e13c5461bbff0..58587ab7649cee422721d48330ede07ad7aa24ba 100644 --- a/es2panda/test/parser/ts/transformed_cases/test-class-auto-accessor-1-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases/test-class-auto-accessor-1-transformed-expected.txt @@ -63,12 +63,12 @@ "type": "ThisExpression", "loc": { "start": { - "line": 1, - "column": 1 + "line": 18, + "column": 14 }, "end": { - "line": 1, - "column": 1 + "line": 18, + "column": 20 } } }, @@ -77,12 +77,12 @@ "name": "###A#auto_accessor_storage#1", "loc": { "start": { - "line": 1, - "column": 1 + "line": 18, + "column": 14 }, "end": { - "line": 1, - "column": 1 + "line": 18, + "column": 20 } } }, @@ -90,12 +90,12 @@ "optional": false, "loc": { "start": { - "line": 1, - "column": 1 + "line": 18, + "column": 14 }, "end": { - "line": 1, - "column": 1 + "line": 18, + "column": 20 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases/test-class-auto-accessor-2-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases/test-class-auto-accessor-2-transformed-expected.txt index dc2bdf78115563ca156789f0d64e58c7fee074f2..027f8933cd3e1a0a4975e073ea5d5c7a6f326bc3 100644 --- a/es2panda/test/parser/ts/transformed_cases/test-class-auto-accessor-2-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases/test-class-auto-accessor-2-transformed-expected.txt @@ -164,12 +164,12 @@ "type": "ThisExpression", "loc": { "start": { - "line": 1, - "column": 1 + "line": 19, + "column": 15 }, "end": { - "line": 1, - "column": 1 + "line": 19, + "column": 27 } } }, @@ -178,12 +178,12 @@ "name": "###Test#auto_accessor_storage#1", "loc": { "start": { - "line": 1, - "column": 1 + "line": 19, + "column": 15 }, "end": { - "line": 1, - "column": 1 + "line": 19, + "column": 27 } } }, @@ -191,12 +191,12 @@ "optional": false, "loc": { "start": { - "line": 1, - "column": 1 + "line": 19, + "column": 15 }, "end": { - "line": 1, - "column": 1 + "line": 19, + "column": 27 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases/test-class-constructor1-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases/test-class-constructor1-transformed-expected.txt index 822c6e99a9d91dd8b889bb7eec6b867df5455e1a..46330a78dbf8bae09a48b513da8c3d9809696663 100644 --- a/es2panda/test/parser/ts/transformed_cases/test-class-constructor1-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases/test-class-constructor1-transformed-expected.txt @@ -76,12 +76,12 @@ "type": "ThisExpression", "loc": { "start": { - "line": 1, - "column": 1 + "line": 18, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 18, + "column": 10 } } }, @@ -90,12 +90,12 @@ "name": "prop1", "loc": { "start": { - "line": 1, - "column": 1 + "line": 18, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 18, + "column": 10 } } }, @@ -103,12 +103,12 @@ "optional": false, "loc": { "start": { - "line": 1, - "column": 1 + "line": 18, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 18, + "column": 10 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases/test-class-constructor2-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases/test-class-constructor2-transformed-expected.txt index 40bb140f3b04ebc6fa0da5af9b1fabc1b5b22e18..b22c158c2321839ba2f7e4d9e4f632f936467935 100644 --- a/es2panda/test/parser/ts/transformed_cases/test-class-constructor2-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases/test-class-constructor2-transformed-expected.txt @@ -103,12 +103,12 @@ "type": "ThisExpression", "loc": { "start": { - "line": 1, - "column": 1 + "line": 18, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 18, + "column": 9 } } }, @@ -117,12 +117,12 @@ "name": "prop", "loc": { "start": { - "line": 1, - "column": 1 + "line": 18, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 18, + "column": 9 } } }, @@ -130,12 +130,12 @@ "optional": false, "loc": { "start": { - "line": 1, - "column": 1 + "line": 18, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 18, + "column": 9 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases/test-class-constructor3-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases/test-class-constructor3-transformed-expected.txt index 7936bfad6d5464516dfeb051a95a18c8c357bc98..57e42ec3ecf1c3acf02fa64cd6498ec09886122e 100644 --- a/es2panda/test/parser/ts/transformed_cases/test-class-constructor3-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases/test-class-constructor3-transformed-expected.txt @@ -268,12 +268,12 @@ "type": "ThisExpression", "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 9 } } }, @@ -282,12 +282,12 @@ "name": "prop", "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 9 } } }, @@ -295,12 +295,12 @@ "optional": false, "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 9 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases/test-class-constructor4-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases/test-class-constructor4-transformed-expected.txt index 1548646ed413e2fb18d0340788a9f54437f053eb..3e56df7b4fc87decfd290201e0acaa9212495399 100644 --- a/es2panda/test/parser/ts/transformed_cases/test-class-constructor4-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases/test-class-constructor4-transformed-expected.txt @@ -424,12 +424,12 @@ "type": "ThisExpression", "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 10 } } }, @@ -438,12 +438,12 @@ "name": "prop1", "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 10 } } }, @@ -451,12 +451,12 @@ "optional": false, "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 10 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases/test-class-decorator-1-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases/test-class-decorator-1-transformed-expected.txt index edaef8740c93924aa349706fc2aa271d7de93057..3c0ec91edb6cb0555d1e5b15326e10166eb530ee 100644 --- a/es2panda/test/parser/ts/transformed_cases/test-class-decorator-1-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases/test-class-decorator-1-transformed-expected.txt @@ -890,12 +890,12 @@ "name": "a", "loc": { "start": { - "line": 1, - "column": 1 + "line": 23, + "column": 12 }, "end": { - "line": 1, - "column": 1 + "line": 23, + "column": 13 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-class-constructor1-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-class-constructor1-transformed-expected.txt index 1dad3f2b1e6aa872b39fafea6b97529ab9f48aeb..8a02b47f7b312fd0565b3c89bd30d2c825e38bcf 100644 --- a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-class-constructor1-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-class-constructor1-transformed-expected.txt @@ -424,12 +424,12 @@ "type": "ThisExpression", "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 10 } } }, @@ -438,12 +438,12 @@ "name": "prop1", "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 10 } } }, @@ -451,12 +451,12 @@ "optional": false, "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 10 } } }, @@ -507,12 +507,12 @@ "type": "ThisExpression", "loc": { "start": { - "line": 1, - "column": 1 + "line": 21, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 21, + "column": 11 } } }, @@ -521,12 +521,12 @@ "name": "###B#prop2#1", "loc": { "start": { - "line": 1, - "column": 1 + "line": 21, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 21, + "column": 11 } } }, @@ -534,12 +534,12 @@ "optional": false, "loc": { "start": { - "line": 1, - "column": 1 + "line": 21, + "column": 5 }, "end": { - "line": 1, - "column": 1 + "line": 21, + "column": 11 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-decorator-1-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-decorator-1-transformed-expected.txt index 4632b52a56404a3d35b63dbbc64130e36e3a1109..f826e0a0dc18e04cf20bb920d1750aaac09da22a 100644 --- a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-decorator-1-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-decorator-1-transformed-expected.txt @@ -948,12 +948,12 @@ "name": "a", "loc": { "start": { - "line": 1, - "column": 1 + "line": 23, + "column": 12 }, "end": { - "line": 1, - "column": 1 + "line": 23, + "column": 13 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-switchCase-statement-1-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-switchCase-statement-1-transformed-expected.txt index e4097e957069196bc9a42731f659f012f900637c..b4d0eec5fba219ed4a9edab52d64ed4764ee0434 100644 --- a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-switchCase-statement-1-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-switchCase-statement-1-transformed-expected.txt @@ -303,12 +303,12 @@ "name": "p", "loc": { "start": { - "line": 1, - "column": 1 + "line": 20, + "column": 26 }, "end": { - "line": 1, - "column": 1 + "line": 20, + "column": 27 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-ts-export-classes-1-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-ts-export-classes-1-transformed-expected.txt index 226a8ad0d5f7f246e35cf45f518187618834fadc..173727186b5a3159e87a9afb7ce821d5943b9841 100644 --- a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-ts-export-classes-1-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-ts-export-classes-1-transformed-expected.txt @@ -199,12 +199,12 @@ "name": "a", "loc": { "start": { - "line": 1, - "column": 1 + "line": 17, + "column": 30 }, "end": { - "line": 1, - "column": 1 + "line": 17, + "column": 31 } } }, diff --git a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-ts-export-classes-2-transformed-expected.txt b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-ts-export-classes-2-transformed-expected.txt index b56614dff42a1bbe4a27afebb3004460da3f147d..8294b94320c35144bdd46fe78af6f2f72edb4bb5 100644 --- a/es2panda/test/parser/ts/transformed_cases_api_version_10/test-ts-export-classes-2-transformed-expected.txt +++ b/es2panda/test/parser/ts/transformed_cases_api_version_10/test-ts-export-classes-2-transformed-expected.txt @@ -214,12 +214,12 @@ "name": "a", "loc": { "start": { - "line": 1, - "column": 1 + "line": 17, + "column": 24 }, "end": { - "line": 1, - "column": 1 + "line": 17, + "column": 25 } } }, diff --git a/es2panda/test/runner.py b/es2panda/test/runner.py index f378d108c383ef54f2a3cf610c6d82b24009c76a..9b625b98c185d5cb8247db3621fa5efa990c18bf 100755 --- a/es2panda/test/runner.py +++ b/es2panda/test/runner.py @@ -25,7 +25,7 @@ import re import shutil import subprocess import sys -from config import API_VERSION_MAP, MIN_SUPPORT_BC_VERSION, MIX_COMPILE_ENTRY_POINT +from config import API_VERSION_MAP, ARK_JS_VM_LIST, MIN_SUPPORT_BC_VERSION, MIX_COMPILE_ENTRY_POINT, ES2ABC_API_SUPPORT def is_directory(parser, arg): @@ -974,7 +974,6 @@ class CompilerProjectTest(Test): mod_files_info.append(abc_line) final_file_info_f.writelines(abc_line) - def gen_files_info(self, runner): # After collect_record_mapping, self.file_record_mapping stores {'source file name' : 'source file record name'} self.collect_record_mapping() @@ -1412,7 +1411,9 @@ class BcVersionTest(Test): 15: "12.0.6.0", 16: "12.0.6.0", 17: "12.0.6.0", - 18: "13.0.1.0" + 18: "13.0.1.0", + 19: "13.0.1.0", + 20: "13.0.1.0", } self.es2abc_script_expect = { 8: "0.0.0.2", @@ -1428,7 +1429,9 @@ class BcVersionTest(Test): 15: "12.0.6.0", 16: "12.0.6.0", 17: "12.0.6.0", - 18: "13.0.1.0" + 18: "13.0.1.0", + 19: "13.0.1.0", + 20: "13.0.1.0", } def run(self): @@ -1884,6 +1887,40 @@ class ArkJsVmDownload: # Obtain different versions of ark_js_vm and their depen self.git_clone(self.url, self.local_path) print("\ndownload finish.\n") +class CodeDownloader: + def __init__(self, args, url, components_name, max_retries=3): + self.build_dir = args.build_dir + self.url = url + self.local_path = path.join(self.build_dir, components_name) + self.max_retries = max_retries + + def run_cmd_cwd(self, cmd): + try: + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + _, _ = proc.communicate() + return proc.wait() + except Exception as e: + print(f"Error executing command: {e}") + return -1 + + def git_clone(self, git_url, code_dir): + cmd = ["git", "clone", git_url, code_dir, "--depth=1"] + retries = 1 + while retries <= self.max_retries: + ret = self.run_cmd_cwd(cmd) + if ret == 0: + break + else: + print(f"\nWarning: Attempt #{retries} to clone '{git_url}' failed. Retrying...") + retries += 1 + assert ret == 0, f"\nError: Cloning '{git_url}' failed." + + def run(self): + if not os.path.exists(self.local_path): + print(f"\nStart downloading {self.url}...\n") + self.git_clone(self.url, self.local_path) + print("\nDownload finished.\n") + print(self.local_path) class AbcTestCasesPrepare: def __init__(self, args): @@ -1907,34 +1944,42 @@ class AbcTestCasesPrepare: files = fnmatch.filter(files, self.test_root + "**" + self.args.filter) return files - def gen_abc_versions(self, flags, source_path): - for api_version in API_VERSION_MAP: + def get_output_path(self, source_path, main_version, beta_version, es2abc_version): + base = path.splitext(source_path)[0] + suffix = f"version_API{main_version}{beta_version}" + return f"{base}_{es2abc_version}_{suffix}.abc" if es2abc_version != "default" else f"{base}_{suffix}.abc" + + def gen_abc_versions(self, flags, source_path, es2abc_version): + supported_apis = ES2ABC_API_SUPPORT.get(es2abc_version) + for api_version in supported_apis: main_version, beta_version = AbcTestCasesPrepare.split_api_version(api_version) - output_path = "%s_version_API%s%s.abc" % ( - path.splitext(source_path)[0], - main_version, - beta_version, - ) + output_path = self.get_output_path(source_path, main_version, beta_version, es2abc_version) self.test_abc_path_list.add(output_path) - _, stderr = self.compile_for_target_version(flags, source_path, output_path, main_version, beta_version) + _, stderr = self.compile_for_target_version(flags, source_path, output_path, main_version, beta_version, es2abc_version) if stderr: - raise RuntimeError(f"abc generate error: " % (stderr.decode("utf-8", errors="ignore"))) + raise RuntimeError(f"abc generate error: {stderr}") - def gen_abc_tests(self, directory, extension, flags, abc_mode): + def gen_abc_tests(self, directory, extension, flags, abc_mode, es2abc_versions=["default"]): if abc_mode not in self.valid_mode_list: raise ValueError(f"Invalid abc_mode value: {abc_mode}") test_source_list = self.add_abc_directory(directory, extension) - for input_path in test_source_list: - self.gen_abc_versions(flags, input_path) - def compile_for_target_version(self, flags, input_path, output_path, target_api_version, target_api_sub_version=""): + for es2abc_version in es2abc_versions: + for input_path in test_source_list: + self.gen_abc_versions(flags, input_path, es2abc_version) + + def compile_for_target_version(self, flags, input_path, output_path, target_api_version, target_api_sub_version="", es2abc_version="default"): + es2panda_path = ( + self.es2panda if es2abc_version == "default" + else os.path.join(self.args.build_dir, "es2abc_version", es2abc_version, "es2abc") + ) cmd = [] - cmd.append(self.es2panda) + cmd.append(es2panda_path) cmd.append(input_path) cmd.extend(flags) cmd.append("--target-api-version=%s" % (target_api_version)) cmd.extend(["--output=%s" % (output_path)]) - if target_api_version != "": + if target_api_sub_version != "": cmd.append("--target-api-sub-version=%s" % (target_api_sub_version)) process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate(timeout=10) @@ -1969,7 +2014,6 @@ class AbcVersionControlRunner(Runner): def run(self): for test in self.tests: test.run(self) - self.args.abc_tests_prepare.remove_abc_tests() class VersionControlRunner(Runner): @@ -2046,6 +2090,7 @@ class TestAbcVersionControl(Test): if self.abc_mode == "mix_compile_mode" and test_stage != "runtime": support_name = "" expected_name = path.splitext(self.path)[0].split("_version_API")[0] + expected_name = re.sub(r"_(\d+\.\d+)(?=(_|$))", "", expected_name) expected_path = "%s_%s%s-expected.txt" % (expected_name, support_name, test_stage) return expected_path @@ -2068,51 +2113,74 @@ class TestAbcVersionControl(Test): cmd.extend(self.flags) cmd.append("--target-api-version=%s" % (target_api_version)) cmd.extend(["--output=%s" % (output_path)]) - if target_api_version != "": + if target_api_sub_version != "": cmd.append("--target-api-sub-version=%s" % (target_api_sub_version)) + self.log_cmd(cmd) stdout, stderr = self.run_process(cmd) return stdout, stderr - def generate_abc(self, runner, target_api_version, target_api_sub_version=""): - compile_expected_path = None - target_abc_name = ( - "%s_target_%s%s.abc" % (path.splitext(self.path)[0], target_api_version, target_api_sub_version) - ).replace("/", "_") - self.target_abc_path = path.join(runner.build_dir, target_abc_name) - _, stderr = self.compile_for_target_version( - runner, self.path, self.target_abc_path, target_api_version, target_api_sub_version - ) - format_content = "" - self.is_support = False + def build_abc_filename(self, target_api_version, target_api_sub_version): + prefix = f"{path.splitext(self.path)[0]}" + abc_name = f"{prefix}_target_{target_api_version}{target_api_sub_version}.abc" + return abc_name.replace("/", "_") - # Extract the API versions of the input abc files from the file name of the test case. + def extract_input_versions(self): input_api_versions = self.extract_api_versions(path.split(self.path)[1]) input_version_numbers = [API_VERSION_MAP.get(api) for api in input_api_versions] - sorted(input_version_numbers, key=TestAbcVersionControl.version_number_to_tuple) - min_input_version_number = input_version_numbers[0] - max_input_version_number = input_version_numbers[-1] + return sorted(input_version_numbers, key=TestAbcVersionControl.version_number_to_tuple) + + def determine_expected_behavior(self, target_api_version, target_api_sub_version, input_version_numbers): target_version = "API" + target_api_version + target_api_sub_version target_version_number = API_VERSION_MAP.get(target_version) + min_input_version_number = input_version_numbers[0] + max_input_version_number = input_version_numbers[-1] + if TestAbcVersionControl.compare_version_number(target_version_number, self.min_support_version_number) < 0: compile_expected_path = self.get_path_to_expected( - self.is_support, "compile_target_version_below_min_support" + False, "compile_target_version_below_min_support" ) - format_content = target_api_version + return False, compile_expected_path, target_api_version + elif ( TestAbcVersionControl.compare_version_number(min_input_version_number, self.min_support_version_number) < 0 ): - compile_expected_path = self.get_path_to_expected(self.is_support, "compile_cur_version_below_min_support") - format_content = self.path + compile_expected_path = self.get_path_to_expected(False, "compile_cur_version_below_min_support") + return False, compile_expected_path, self.path + elif TestAbcVersionControl.compare_version_number(target_version_number, max_input_version_number) < 0: - compile_expected_path = self.get_path_to_expected(self.is_support, "compile_target_version_below_cur") - format_content = self.path + compile_expected_path = self.get_path_to_expected(False, "compile_target_version_below_cur") + return False, compile_expected_path, self.path + elif self.is_discard: - compile_expected_path = self.get_path_to_expected(self.is_support, "compile_discard") - else: - self.is_support = True + compile_expected_path = self.get_path_to_expected(False, "compile_discard") + return False, compile_expected_path, "" + + return True, None, None + + def generate_abc(self, runner, target_api_version, target_api_sub_version=""): + compile_expected_path = None + target_abc_name = self.build_abc_filename(target_api_version, target_api_sub_version) + self.target_abc_path = path.join(runner.build_dir, target_abc_name) + + _, stderr = self.compile_for_target_version( + runner, self.path, self.target_abc_path, target_api_version, target_api_sub_version + ) + format_content = "" + self.is_support = False + + # Extract the API versions of the input abc files from the file name of the test case. + input_version_numbers = self.extract_input_versions() + + is_support, compile_expected_path, format_content = self.determine_expected_behavior( + target_api_version, target_api_sub_version, input_version_numbers + ) + self.is_support = is_support + if self.is_support: if stderr: self.passed = False + else: + self.passed = True return stderr try: @@ -2123,18 +2191,12 @@ class TestAbcVersionControl(Test): self.passed = False return stderr - def execute_abc(self, runner, vm_api_version, vm_api_sub_version="", entry_point=""): + def execute_abc(self, runner, vm_version, entry_point=""): cmd = [] - if vm_api_version != "12": - vm_api_sub_version = "" - # there is no virtual machine with version api12beta2 available. - # chosen api12beta1 as a replacement. - elif vm_api_version == "12" and vm_api_sub_version == "beta2": - vm_api_sub_version = "beta1" ark_js_vm_dir = os.path.join( runner.build_dir, "ark_js_vm_version", - "API%s%s" % (vm_api_version, vm_api_sub_version), + vm_version, ) ld_library_path = os.path.join(ark_js_vm_dir, "lib") os.environ["LD_LIBRARY_PATH"] = ld_library_path @@ -2143,6 +2205,7 @@ class TestAbcVersionControl(Test): if entry_point != "": cmd.append("--entry-point=%s" % entry_point) cmd.append(self.target_abc_path) + self.log_cmd(cmd) stdout, stderr = self.run_process(cmd) return stdout, stderr @@ -2150,11 +2213,9 @@ class TestAbcVersionControl(Test): stderr = None target_version = "API" + target_api_version + target_api_sub_version target_version_number = API_VERSION_MAP.get(target_version) - for api_version in API_VERSION_MAP: - vm_api_version, vm_api_sub_version = AbcTestCasesPrepare.split_api_version(api_version) - vm_version = "API" + vm_api_version + vm_api_sub_version + for vm_version in ARK_JS_VM_LIST: vm_version_number = API_VERSION_MAP.get(vm_version) - _, stderr = self.execute_abc(runner, vm_api_version, vm_api_sub_version, self.entry_point) + _, stderr = self.execute_abc(runner, vm_version, self.entry_point) self.is_support = ( TestAbcVersionControl.compare_version_number(vm_version_number, target_version_number) >= 0 ) @@ -2188,26 +2249,141 @@ class TestAbcVersionControl(Test): target_api_version, target_api_sub_version = AbcTestCasesPrepare.split_api_version(api_version) stderr = self.generate_abc(runner, target_api_version, target_api_sub_version) if not self.passed: - self.error = stderr.decode("utf-8", errors="ignore") + self.error = stderr return self if stderr: continue stderr = self.test_abc_execution(runner, target_api_version, target_api_sub_version) self.remove_abc(self.target_abc_path) if not self.passed: - self.error = stderr.decode("utf-8", errors="ignore") + self.error = stderr return self return self +class Es2abcVersionControlRunner(Runner): + def __init__(self, args): + super().__init__(args, "Es2abcVersionControl") + self.valid_mode_list = ["non_merge_mode", "merge_mode"] + + def add_directory(self, directory, extension, flags, abc_mode, is_discard=False): + if abc_mode not in self.valid_mode_list: + raise ValueError(f"Invalid abc_mode value: {abc_mode}") + glob_expression = path.join(self.test_root, directory, "*.%s" % (extension)) + files = glob(glob_expression) + files = fnmatch.filter(files, self.test_root + "**" + self.args.filter) + self.tests += list(map(lambda f: TestEs2abcVersionControl(f, flags, abc_mode, is_discard), files)) + + def test_path(self, src): + return src + + def run(self): + for test in self.tests: + test.run(self) + self.args.abc_tests_prepare.remove_abc_tests() + +class TestEs2abcVersionControl(TestAbcVersionControl): + def __init__(self, test_path, flags, abc_mode, is_discard, es2abc_versions=None): + super().__init__(test_path, flags, abc_mode, is_discard) + self.es2abc_versions = es2abc_versions or list(ES2ABC_API_SUPPORT.keys()) + + @staticmethod + def version_str_to_tuple(version: str): + if isinstance(version, list): + version = ".".join(version) + return tuple(int(x) for x in version.split(".")) + + @classmethod + def get_max_supported_version(cls, es2abc_version: str) -> str: + supported_apis = ES2ABC_API_SUPPORT.get(es2abc_version, ES2ABC_API_SUPPORT["default"]) + max_api = max(supported_apis, key=lambda api: cls.version_str_to_tuple(API_VERSION_MAP[api])) + return API_VERSION_MAP[max_api] + + @classmethod + def should_skip_abc_file(cls, file_version: str, es2abc_version: str) -> bool: + max_supported_version = cls.get_max_supported_version(es2abc_version) + return cls.version_str_to_tuple(file_version) > cls.version_str_to_tuple(max_supported_version) + + def build_abc_filename(self, target_api_version, target_api_sub_version, es2abc_version): + prefix = f"{path.splitext(self.path)[0]}" + if es2abc_version == "default" or es2abc_version is None: + abc_name = f"{prefix}_target_{target_api_version}{target_api_sub_version}.abc" + else: + abc_name = f"{prefix}_{es2abc_version}_target_{target_api_version}{target_api_sub_version}.abc" + return abc_name.replace("/", "_") + + def compile_for_target_version( + self, runner, input_path, output_path, target_api_version, target_api_sub_version="", es2abc_version="default" + ): + cmd = [] + if es2abc_version != "default": + runner.es2panda = os.path.join(runner.build_dir, "es2abc_version", es2abc_version, "es2abc") + cmd.append(runner.es2panda) + cmd.append(input_path) + cmd.extend(self.flags) + cmd.append("--target-api-version=%s" % target_api_version) + cmd.extend(["--output=%s" % output_path]) + if target_api_sub_version: + cmd.append("--target-api-sub-version=%s" % target_api_sub_version) + self.es2abc_cmd = ' '.join(cmd) + stdout, stderr = self.run_process(cmd) + return stdout, stderr + + def generate_abc(self, runner, target_api_version, target_api_sub_version=""): + compile_expected_path = None + input_version_numbers = self.extract_input_versions() + + for es2abc_version in self.es2abc_versions: + target_abc_name = self.build_abc_filename(target_api_version, target_api_sub_version, es2abc_version) + self.target_abc_path = path.join(runner.build_dir, target_abc_name) + + _, stderr = self.compile_for_target_version( + runner, self.path, self.target_abc_path, target_api_version, target_api_sub_version, es2abc_version + ) + + format_content = "" + self.is_support = False + + # The version of the abc file exceeds the maximum supported range of es2abc + if self.should_skip_abc_file(input_version_numbers, es2abc_version): + continue + + is_support, compile_expected_path, format_content = self.determine_expected_behavior( + target_api_version, target_api_sub_version, input_version_numbers + ) + self.is_support = is_support + if self.is_support: + if stderr: + self.passed = False + else: + self.passed = True + return stderr + + try: + with open(compile_expected_path, "r") as fp: + expected = fp.read() + self.passed = expected.format(format_content) in self.output and self.process.returncode in [0, 1] + except Exception: + self.passed = False + return stderr + return None + + def run(self, runner): + for api_version in API_VERSION_MAP: + target_api_version, target_api_sub_version = AbcTestCasesPrepare.split_api_version(api_version) + stderr = self.generate_abc(runner, target_api_version, target_api_sub_version) + if not self.passed: + self.error = stderr + return self + return self class TestVersionControl(Test): def __init__(self, test_path, flags, test_version, feature_type, module_path_list): Test.__init__(self, test_path, flags) self.beta_version_default = 3 - self.version_with_sub_version_list = [12] - self.target_api_version_list = ["9", "10", "11", "12", "18"] + self.version_with_sub_version_list = ["12"] + self.target_api_version_list = ["9", "10", "11", "12", "18", "20"] self.target_api_sub_version_list = ["beta1", "beta2", "beta3"] - self.specific_api_version_list = ["API11", "API12beta3"] + self.specific_api_version_list = ["API18", "API12beta3", "API11"] self.output = None self.process = None self.test_version = test_version @@ -2344,7 +2520,7 @@ class TestVersionControl(Test): def run_process(self, cmd): self.process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = self.process.communicate() - self.output = stdout.decode("utf-8", errors="ignore") + stderr.decode("utf-8", errors="ignore").split("\n")[0] + self.output = stdout.decode("utf-8", errors="ignore") + stderr.decode("utf-8", errors="ignore") return stdout, stderr def run_process_compile(self, runner, target_api_version, target_api_sub_version="bata3", dump_type=""): @@ -2362,6 +2538,7 @@ class TestVersionControl(Test): cmd.append("--dump-ast") elif dump_type == "assembly": cmd.append("--dump-assembly") + self.log_cmd(cmd) stdout, stderr = self.run_process(cmd) return stdout, stderr @@ -2389,12 +2566,13 @@ class TestVersionControl(Test): ark_js_vm_path = os.path.join(ark_js_vm_dir, "ark_js_vm") cmd.append(ark_js_vm_path) cmd.append(self.test_abc_path) + self.log_cmd(cmd) self.process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = self.process.communicate() self.output = stdout.decode("utf-8", errors="ignore") + stderr.decode("utf-8", errors="ignore").split("\n")[0] return stdout, stderr - def run_for_single_version(self, runner, target_api_version, target_api_sub_version="beta3"): + def run_for_single_version(self, runner, target_api_version, target_api_sub_version=""): cur_api_version = "API" + target_api_version + target_api_sub_version is_support = True if self.compare_two_versions(cur_api_version, self.test_version) >= 0 else False compile_expected_path = None @@ -2415,6 +2593,7 @@ class TestVersionControl(Test): self.passed = False if not self.passed or (stderr and self.passed): return stderr + cur_api_version_number = API_VERSION_MAP.get(cur_api_version) for api_version in self.target_api_version_list: # The interception capability of API9 version of ark_js_vm has not yet been launched. if api_version == "9": @@ -2422,9 +2601,18 @@ class TestVersionControl(Test): for api_sub_version in self.target_api_sub_version_list: if not api_version in self.version_with_sub_version_list and api_sub_version != "beta3": continue + elif not api_version in self.version_with_sub_version_list: + api_sub_version = "" cur_runtime_api_version = "API" + api_version + api_sub_version + cur_runtime_api_version_number = API_VERSION_MAP.get(cur_runtime_api_version) is_below_abc_version = ( - False if self.compare_two_versions(cur_runtime_api_version, cur_api_version) >= 0 else True + False + if TestAbcVersionControl.compare_version_number( + cur_runtime_api_version_number, + cur_api_version_number, + ) + >= 0 + else True ) self.generate_module_abc(runner, cur_runtime_api_version) _, stderr = self.runtime_for_target_version(runner, api_version, api_sub_version) @@ -2498,8 +2686,21 @@ def prepare_for_obfuscation(compiler_test_infos, test_root): def add_directory_for_version_control(runners, args): - ark_js_vm_prepared = ArkJsVmDownload(args) - ark_js_vm_prepared.run() + tools = [ + { + "url": "https://gitee.com/zhongmingwei123123/ark_js_vm_version.git", + "components_name": "ark_js_vm_version" + }, + { + "url": "https://gitee.com/li_yue1999/es2abc_version.git", + "components_name": "es2abc_version" + } + ] + + for tool in tools: + downloader = CodeDownloader(args, tool['url'], tool['components_name']) + downloader.run() + runner = VersionControlRunner(args) runner.add_directory( "version_control/API11/syntax_feature", @@ -2591,33 +2792,44 @@ def add_directory_for_version_control(runners, args): "version_control/API12beta3/bytecode_feature/import_target", ) runner.add_directory( - "version_control/API16/bytecode_feature", + "version_control/API18/bytecode_feature", "js", [], - "API16", + "API18", "bytecode_feature", ) runner.add_directory( - "version_control/API16/bytecode_feature", + "version_control/API18/bytecode_feature", "ts", ["--module"], - "API16", + "API18", + "bytecode_feature", + ) + runner.add_directory( + "version_control/API20/bytecode_feature", + "ts", + ["--module", "--enable-annotations"], + "API20", "bytecode_feature", ) runners.append(runner) abc_tests_prepare = AbcTestCasesPrepare(args) + es2abc_versions = list(ES2ABC_API_SUPPORT.keys()) + abc_tests_prepare.gen_abc_tests( "version_control/bytecode_version_control/non_merge_mode", "js", ["--module"], "non_merge_mode", + es2abc_versions ) abc_tests_prepare.gen_abc_tests( "version_control/bytecode_version_control/merge_mode", "js", ["--module", "--merge-abc"], "merge_mode", + es2abc_versions ) abc_tests_prepare.gen_abc_tests( "version_control/bytecode_version_control/mixed_compile", @@ -2648,6 +2860,21 @@ def add_directory_for_version_control(runners, args): ) runners.append(abc_version_control_runner) + es2abc_version_control_runner = Es2abcVersionControlRunner(args) + es2abc_version_control_runner.add_directory( + "version_control/bytecode_version_control/non_merge_mode", + "abc", + ["--module", "--enable-abc-input"], + "non_merge_mode", + ) + es2abc_version_control_runner.add_directory( + "version_control/bytecode_version_control/merge_mode", + "abc", + ["--module", "--enable-abc-input", "--merge-abc"], + "merge_mode", + ) + runners.append(es2abc_version_control_runner) + def add_directory_for_regression(runners, args): runner = RegressionRunner(args) runner.add_directory("parser/concurrent", "js", ["--module", "--dump-ast"]) @@ -2676,7 +2903,8 @@ def add_directory_for_regression(runners, args): runner.add_directory("parser/js/language/import/syntax/api12/beta2", "js", ["--parse-only", "--module", "--target-api-version=12", "--target-api-sub-version=beta2"]) runner.add_directory("parser/js/language/import", "ts", - ["--dump-assembly", "--dump-literal-buffer", "--module", "--target-api-version=18"]) + ["--dump-assembly", "--dump-literal-buffer", "--module", "--target-api-version=12", + "--target-api-sub-version=beta3"]) runner.add_directory("parser/sendable_class", "ts", ["--dump-assembly", "--dump-literal-buffer", "--module", "--target-api-sub-version=beta3"]) runner.add_directory("parser/sendable_class/api12beta2", "ts", @@ -2771,7 +2999,7 @@ def add_directory_for_compiler(runners, args): "--file-threads=8"])) compiler_test_infos.append(CompilerTestInfo("compiler/bytecodehar/projects", "ts", ["--merge-abc", "--dump-assembly", "--enable-abc-input", - "--dump-deps-info", "--remove-redundant-file", + "--dump-deps-info", "--remove-redundant-file", "--enable-annotations", "--dump-literal-buffer", "--dump-string", "--abc-class-threads=4"])) compiler_test_infos.append(CompilerTestInfo("compiler/bytecodehar/js/projects", "js", ["--merge-abc", "--dump-assembly", "--enable-abc-input", @@ -2782,7 +3010,7 @@ def add_directory_for_compiler(runners, args): "--abc-class-threads=4"])) compiler_test_infos.append(CompilerTestInfo("compiler/cache_projects", "ts", ["--merge-abc", "--dump-assembly", "--enable-abc-input", - "--dump-deps-info", "--remove-redundant-file", + "--dump-deps-info", "--remove-redundant-file", "--enable-annotations", "--dump-literal-buffer", "--dump-string", "--abc-class-threads=4", "--cache-file"])) diff --git a/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 97% rename from es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 2657d967535b7d42723020d9ae130271fc7ca863..eae6c92044b0cfbcaf5744908d034235569763d1 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x4 -expectedProperty = 0x1 .language ECMAScript .function any .A(any a0, any a1, any a2, any a3) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index 13a61838909bb08d516049d0f3647ecd0d410330..918314e6e16548c4a76b4f01f92d40354167def8 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x4 -expectedProperty = 0x1 .language ECMAScript .function any .#~A=#A(any a0, any a1, any a2, any a3) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..13a61838909bb08d516049d0f3647ecd0d410330 --- /dev/null +++ b/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,73 @@ +slotNum = 0x4 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~A=#A(any a0, any a1, any a2, any a3) { +label_1: +label_0: + ldlexvar 0x0, 0x0 + callruntime.callinit 0x0, a2 + lda a3 + stobjbyname 0x2, a, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .#~A>#instance_initializer(any a0, any a1, any a2) { +label_1: +label_0: + lda.str a + definepropertybyname 0x0, a, a2 + returnundefined +label_2: +} + +slotNum = 0xb +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { + nop +label_7: +label_0: + newlexenv 0x1 +label_2: +label_4: + ldhole + sta v1 + defineclasswithbuffer 0x0, .#~A=#A, _2, 0x1, v1 + sta v1 + ldobjbyname 0x1, prototype + definemethod 0x3, .#~A>#instance_initializer, 0x0 + stlexvar 0x0, 0x0 +label_3: +end_label_3: + jmp label_1 +label_9: + sta v0 +label_6: + poplexenv + lda v0 + throw +label_1: + poplexenv + lda.str b + sta v0 + mov v2, v1 + mov v3, v0 + newobjrange 0x4, 0x2, v2 + sta v0 + tryldglobalbyname 0x6, print + sta v1 + lda v0 + ldobjbyname 0x7, a + sta v0 + lda v1 + callarg1 0x9, v0 + returnundefined +label_8: +} + +.catchall label_2, end_label_3, label_9 + + diff --git a/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_unsupported_compile_asm_version-expected.txt index 477926b113c103bf6b1af54dac9b78cae8e9fbad..f8ea73ca5f3bc2b65c6462279538148ed44ae72d 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_unsupported_compile_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/class_init_callinit_unsupported_compile_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .A(any a0, any a1, any a2, any a3) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 98% rename from es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index d5dbb31f3fa9b36d9ef5a5337c872e59d5cdba6d..b7e43e9e1fb3742bb4f8a4bf6d06dbd0363112dd 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x4 -expectedProperty = 0x1 .language ECMAScript .function any .TestPrivateProperty(any a0, any a1, any a2, any a3) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index a4e2f5e25d68ac12686740a4b01fa1f00ae5bef0..d568dbc64c403cdaa4f769ffeee74f889a849be6 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x4 -expectedProperty = 0x1 .language ECMAScript .function any .#~@0=#TestPrivateProperty(any a0, any a1, any a2, any a3) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt index 90da189592f8d76f107b81ff6da4fef6d3d8229f..2d887353700d529600f18099893bcf0c89261257 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt @@ -1,7 +1,6 @@ .language ECMAScript slotNum = 0x4 -expectedProperty = 0x1 .function any .#~@0=#TestPrivateProperty(any a0, any a1, any a2, any a3) { label_1: label_0: diff --git a/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..a4e2f5e25d68ac12686740a4b01fa1f00ae5bef0 --- /dev/null +++ b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,103 @@ +slotNum = 0x4 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@0=#TestPrivateProperty(any a0, any a1, any a2, any a3) { +label_1: +label_0: + ldlexvar 0x0, 0x1 + callruntime.callinit 0x0, a2 + lda a3 + stprivateproperty 0x2, 0x0, 0x0, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .#~@0>#getPrivateField(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + ldprivateproperty 0x0, 0x0, 0x0 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .#~@0>#instance_initializer(any a0, any a1, any a2) { +label_1: +label_0: + ldundefined + callruntime.defineprivateproperty 0x0, 0x0, 0x0, a2 + returnundefined +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .#~@0>#setPrivateField(any a0, any a1, any a2, any a3) { +label_1: +label_0: + lda a3 + stprivateproperty 0x0, 0x0, 0x0, a2 + returnundefined +label_2: +} + +slotNum = 0x11 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { + nop +label_7: +label_0: + newlexenv 0x2 +label_2: +label_4: + ldhole + sta v1 + defineclasswithbuffer 0x0, .#~@0=#TestPrivateProperty, _2, 0x1, v1 + sta v1 + ldobjbyname 0x1, prototype + definemethod 0x3, .#~@0>#instance_initializer, 0x0 + stlexvar 0x0, 0x1 + callruntime.createprivateproperty 0x1, _3 +label_3: +end_label_3: + jmp label_1 +label_9: + sta v0 +label_6: + poplexenv + lda v0 + throw +label_1: + poplexenv + ldai 0xa + sta v0 + mov v3, v1 + mov v4, v0 + newobjrange 0x4, 0x2, v3 + sta v0 + ldobjbyname 0x6, setPrivateField + sta v1 + ldai 0x14 + sta v2 + lda v1 + callthis1 0x8, v0, v2 + tryldglobalbyname 0xa, print + sta v1 + lda v0 + ldobjbyname 0xb, getPrivateField + callthis0 0xd, v0 + sta v0 + lda v1 + callarg1 0xf, v0 + returnundefined +label_8: +} + +.catchall label_2, end_label_3, label_9 + + diff --git a/es2panda/test/version_control/API11/bytecode_feature/class_private_property_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_unsupported_compile_asm_version-expected.txt index f7d4404293294735de27c59e31d20633d84080be..382ae3503f71696fcf11789af52716b4c7944d29 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/class_private_property_unsupported_compile_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/class_private_property_unsupported_compile_asm_version-expected.txt @@ -1 +1,2 @@ -SyntaxError: Unexpected token in class property [class_private_property.js:17:5] \ No newline at end of file +SyntaxError: Unexpected token in class property [class_private_property.js:17:5] +The size of programs is expected to be 1, but is 0 diff --git a/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 98% rename from es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 63208d0f05f24cd30343f28341311e74ff69f5e9..0f3aceeaadb575a70660d8adcccc371c0875166e 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .A(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index e7087b0c6e227f487f71723bf8c89bd06d7fd6a6..2c0f076a938f21a23c07a55def36c83766324f0f 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~A=#A(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..e7087b0c6e227f487f71723bf8c89bd06d7fd6a6 --- /dev/null +++ b/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,88 @@ +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~A=#A(any a0, any a1, any a2) { +label_1: +label_0: + ldlexvar 0x0, 0x1 + callruntime.callinit 0x0, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .#~A>#instance_initializer(any a0, any a1, any a2) { +label_1: +label_0: + ldlexvar 0x0, 0x0 + sta v0 + ldlexvar 0x1, 0x0 + sta v1 + throw.undefinedifholewithname a + lda v1 + callruntime.definefieldbyvalue 0x0, v0, a2 + returnundefined +label_2: +} + +slotNum = 0xc +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { + nop +label_7: +label_0: + newlexenv 0x1 + lda.str a + sta v0 + lda.str b + add2 0x0, v0 + stlexvar 0x0, 0x0 + newlexenv 0x2 +label_2: +label_4: + ldhole + sta v1 + ldlexvar 0x1, 0x0 + sta v2 + throw.undefinedifholewithname a + lda v2 + callruntime.topropertykey + stlexvar 0x0, 0x0 + defineclasswithbuffer 0x1, .#~A=#A, _2, 0x0, v1 + sta v1 + ldobjbyname 0x2, prototype + definemethod 0x4, .#~A>#instance_initializer, 0x0 + stlexvar 0x0, 0x1 +label_3: +end_label_3: + jmp label_1 +label_9: + sta v0 +label_6: + poplexenv + lda v0 + throw +label_1: + poplexenv + mov v3, v1 + newobjrange 0x5, 0x1, v3 + sta v0 + tryldglobalbyname 0x7, print + sta v1 + ldlexvar 0x0, 0x0 + sta v2 + throw.undefinedifholewithname a + lda v2 + ldobjbyvalue 0x8, v0 + sta v0 + lda v1 + callarg1 0xa, v0 + returnundefined +label_8: +} + +.catchall label_2, end_label_3, label_9 + + diff --git a/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_unsupported_compile_asm_version-expected.txt index 71dce896947194f79ee8dd4ff9d03da0dbff9c7a..2146d9664381b09bf5604ff65b464810c9185e3d 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_unsupported_compile_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/computed_property_name_as_class_key_unsupported_compile_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x0 -expectedProperty = 0x1 .language ECMAScript .function any .A(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 97% rename from es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 69bb8f2086f3c64df358870bf9f387f7b38ab731..abb8d603e850df27ddec1d97e52b05829581e40d 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -13,7 +13,6 @@ label_2: } slotNum = 0x6 -expectedProperty = 0x2 .language ECMAScript .function any .TestTypeA(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index 67e2e6c37a2ac26739c415cc91543a987fff4b5d..520550704fce57cc575b74d2e3627e27ab3ec0c4 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -13,7 +13,6 @@ label_2: } slotNum = 0x6 -expectedProperty = 0x2 .language ECMAScript .function any .#&X~@0=#TestTypeA(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..67e2e6c37a2ac26739c415cc91543a987fff4b5d --- /dev/null +++ b/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,55 @@ +slotNum = 0x1 +.language ECMAScript +.function any .#&#X(any a0, any a1, any a2, any a3) { +label_1: +label_0: + newlexenv 0x1 + ldhole + sta v0 + callruntime.definesendableclass 0x0, .#&X~@0=#TestTypeA, _3, 0x0, v0 + stlexvar 0x0, 0x0 + returnundefined +label_2: +} + +slotNum = 0x6 +expectedProperty = 0x2 +.language ECMAScript +.function any .#&X~@0=#TestTypeA(any a0, any a1, any a2) { +label_1: +label_0: + lda.str A + stobjbyname 0x0, name, a2 + callruntime.ldsendableclass 0x0 + sta v0 + mov v1, v0 + newobjrange 0x2, 0x1, v1 + stobjbyname 0x4, test, a2 + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_4: +label_0: + ldundefined + sta v0 + definefunc 0x0, .#&#X, 0x1 + sta v1 + lda v0 + callruntime.istrue 0x1 + jnez label_3 +label_2: + createemptyobject + sta v0 +label_3: + lda v1 + callarg1 0x2, v0 + returnundefined +label_5: +} + + diff --git a/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_unsupported_compile_asm_version-expected.txt index 6e671f61e26c94990488569cc9bc102a594d6f7d..c24923ed0ec6685bf48c1d87984262c7668e6211 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_unsupported_compile_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/define_ld_sendable_class_unsupported_compile_asm_version-expected.txt @@ -32,7 +32,6 @@ label_8: .catchall label_2, end_label_3, label_9 slotNum = 0x6 -expectedProperty = 0x2 .language ECMAScript .function any .TestTypeA(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 98% rename from es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 33c4531ae9437172fdeb6e84393e3cf2c5821524..9809190ee53e5e15cd9e1c0c73483b1c78f1cf93 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x4 -expectedProperty = 0x1 .language ECMAScript .function any .InObjSyntax(any a0, any a1, any a2, any a3) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index 4493a6c93d32e6185de7f9864d13c92b06590c83..0674d69a08d2e87afe0fbaee4417b7118392f5db 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -17,7 +17,6 @@ label_4: } slotNum = 0x4 -expectedProperty = 0x1 .language ECMAScript .function any .#~@0=#InObjSyntax(any a0, any a1, any a2, any a3) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt index 46915b5bf72ae6a9e27baadd2e35795017d661f8..6d4c25cbeeedc82abbc28782abf3057b3fb26c02 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt @@ -18,7 +18,6 @@ label_4: } slotNum = 0x4 -expectedProperty = 0x1 .function any .#~@0=#InObjSyntax(any a0, any a1, any a2, any a3) { label_1: label_0: diff --git a/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..4493a6c93d32e6185de7f9864d13c92b06590c83 --- /dev/null +++ b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,95 @@ +slotNum = 0x3 +.language ECMAScript +.function any .#~@0<#getPrivateProperty(any a0, any a1, any a2, any a3) { +label_3: +label_0: + lda a3 + testin 0x0, 0x0, 0x0 + callruntime.isfalse 0x2 + jnez label_1 +label_2: + ldtrue + return +label_1: + ldfalse + return +label_4: +} + +slotNum = 0x4 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@0=#InObjSyntax(any a0, any a1, any a2, any a3) { +label_1: +label_0: + ldlexvar 0x0, 0x1 + callruntime.callinit 0x0, a2 + lda a3 + stprivateproperty 0x2, 0x0, 0x0, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .#~@0>#instance_initializer(any a0, any a1, any a2) { +label_1: +label_0: + lda.str private + callruntime.defineprivateproperty 0x0, 0x0, 0x0, a2 + returnundefined +label_2: +} + +slotNum = 0xd +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { + nop +label_7: +label_0: + newlexenv 0x2 +label_2: +label_4: + ldhole + sta v1 + defineclasswithbuffer 0x0, .#~@0=#InObjSyntax, _2, 0x1, v1 + sta v1 + ldobjbyname 0x1, prototype + definemethod 0x3, .#~@0>#instance_initializer, 0x0 + stlexvar 0x0, 0x1 + callruntime.createprivateproperty 0x1, _3 +label_3: +end_label_3: + jmp label_1 +label_9: + sta v0 +label_6: + poplexenv + lda v0 + throw +label_1: + poplexenv + tryldglobalbyname 0x4, print + sta v0 + lda v1 + ldobjbyname 0x5, getPrivateProperty + sta v2 + lda.str foo + sta v3 + mov v4, v1 + mov v5, v3 + newobjrange 0x7, 0x2, v4 + sta v3 + lda v2 + callthis1 0x9, v1, v3 + sta v1 + lda v0 + callarg1 0xb, v1 + returnundefined +label_8: +} + +.catchall label_2, end_label_3, label_9 + + diff --git a/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_unsupported_compile_asm_version-expected.txt index 07c1ce9d18fcc7a4de91ff1de1e1e6488c5525a0..6f86f64511d408bb2d3143b64453c710731cced2 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_unsupported_compile_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/in_obj_syntax_unsupported_compile_asm_version-expected.txt @@ -1 +1,2 @@ -SyntaxError: Unexpected token in class property [in_obj_syntax.js:17:5] \ No newline at end of file +SyntaxError: Unexpected token in class property [in_obj_syntax.js:17:5] +The size of programs is expected to be 1, but is 0 diff --git a/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 98% rename from es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 9358f6779e4f0501600a2ad0be9ceaff35a5efe5..2417ecc1e70054fc2737a7d02af5e1a77b4f4063 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x2 -expectedProperty = 0x3 .language ECMAScript .function any .A(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index aa00c9181c2dc6fbfcf0794e14911bc97cad2921..26d24c71b275f5ea1861d5dcb9bcdb5f9d4701cc 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x2 -expectedProperty = 0x3 .language ECMAScript .function any .#~A=#A(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..aa00c9181c2dc6fbfcf0794e14911bc97cad2921 --- /dev/null +++ b/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,75 @@ +slotNum = 0x2 +expectedProperty = 0x3 +.language ECMAScript +.function any .#~A=#A(any a0, any a1, any a2) { +label_1: +label_0: + ldlexvar 0x0, 0x1 + callruntime.callinit 0x0, a2 + lda a2 + return +label_2: +} + +slotNum = 0x6 +.language ECMAScript +.function any .#~A>#instance_initializer(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + callruntime.definefieldbyindex 0x0, 0x1, a2 + ldlexvar 0x0, 0x0 + sta v0 + lda.str a + callruntime.definefieldbyvalue 0x2, v0, a2 + ldlexvar 0x1, 0x0 + sta v0 + throw.undefinedifholewithname a + lda v0 + definepropertybyname 0x4, b, a2 + returnundefined +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { + nop +label_7: +label_0: + newlexenv 0x1 + lda.str a + stlexvar 0x0, 0x0 + newlexenv 0x2 +label_2: +label_4: + ldhole + sta v1 + ldlexvar 0x1, 0x0 + sta v2 + throw.undefinedifholewithname a + lda v2 + callruntime.topropertykey + stlexvar 0x0, 0x0 + defineclasswithbuffer 0x0, .#~A=#A, _2, 0x0, v1 + ldobjbyname 0x1, prototype + definemethod 0x3, .#~A>#instance_initializer, 0x0 + stlexvar 0x0, 0x1 +label_3: +end_label_3: + jmp label_1 +label_9: + sta v0 +label_6: + poplexenv + lda v0 + throw +label_1: + poplexenv + returnundefined +label_8: +} + +.catchall label_2, end_label_3, label_9 + + diff --git a/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_unsupported_compile_asm_version-expected.txt index 302fa2a5806c5d48a639c70dc5d44f0cf7dc3f8e..18d32ff7d158922e027351f151fe92a66bbdc75d 100644 --- a/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_unsupported_compile_asm_version-expected.txt +++ b/es2panda/test/version_control/API11/bytecode_feature/public_field_replace_set_semantics_as_define_unsupported_compile_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x0 -expectedProperty = 0x3 .language ECMAScript .function any .A(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API11/syntax_feature/class_private_field_unsupported_compile_version-expected.txt b/es2panda/test/version_control/API11/syntax_feature/class_private_field_unsupported_compile_version-expected.txt index 9ebbe0fbe7673aa4767c89a542dfdeea59e23244..55353e1e07b6b90d300363d439cecc2b8247843e 100644 --- a/es2panda/test/version_control/API11/syntax_feature/class_private_field_unsupported_compile_version-expected.txt +++ b/es2panda/test/version_control/API11/syntax_feature/class_private_field_unsupported_compile_version-expected.txt @@ -1 +1,2 @@ -SyntaxError: Unexpected token in class property [class_private_field.js:17:5] \ No newline at end of file +SyntaxError: Unexpected token in class property [class_private_field.js:17:5] +The size of programs is expected to be 1, but is 0 diff --git a/es2panda/test/version_control/API11/syntax_feature/class_private_method_unsupported_compile_version-expected.txt b/es2panda/test/version_control/API11/syntax_feature/class_private_method_unsupported_compile_version-expected.txt index 3303a190e5551ffebaf8c1f70044d891ffed8b83..7ac858525c0f11da695d238142bdbe6f0e421725 100644 --- a/es2panda/test/version_control/API11/syntax_feature/class_private_method_unsupported_compile_version-expected.txt +++ b/es2panda/test/version_control/API11/syntax_feature/class_private_method_unsupported_compile_version-expected.txt @@ -1 +1,2 @@ -SyntaxError: Unexpected token in class property [class_private_method.js:17:5] \ No newline at end of file +SyntaxError: Unexpected token in class property [class_private_method.js:17:5] +The size of programs is expected to be 1, but is 0 diff --git a/es2panda/test/version_control/API11/syntax_feature/in_check_private_property_unsupported_compile_version-expected.txt b/es2panda/test/version_control/API11/syntax_feature/in_check_private_property_unsupported_compile_version-expected.txt index 5d5a117bc1f312c0fabed54858d0a50a2fc5239b..d1e3d87e4347f8e0dca9b155a0a3ef12aafbed39 100644 --- a/es2panda/test/version_control/API11/syntax_feature/in_check_private_property_unsupported_compile_version-expected.txt +++ b/es2panda/test/version_control/API11/syntax_feature/in_check_private_property_unsupported_compile_version-expected.txt @@ -1 +1,2 @@ -SyntaxError: Unexpected token in class property [in_check_private_property.js:17:5] \ No newline at end of file +SyntaxError: Unexpected token in class property [in_check_private_property.js:17:5] +The size of programs is expected to be 1, but is 0 diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 97% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 03c820216f70c914be786fab25909038d65ceacc..c79b8851104d495de84a5b6d3305979d220a82c0 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x4 -expectedProperty = 0x2 .language ECMAScript .function any .SendableLazyLoading(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index 048d8311b39588239503c1bdccf78518836e0c27..37095061777d94e7ff7da8abf4fd4ea91c39669f 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x4 -expectedProperty = 0x2 .language ECMAScript .function any .#~@0=#SendableLazyLoading(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..048d8311b39588239503c1bdccf78518836e0c27 --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,45 @@ +slotNum = 0x4 +expectedProperty = 0x2 +.language ECMAScript +.function any .#~@0=#SendableLazyLoading(any a0, any a1, any a2) { +label_1: +label_0: + callruntime.ldsendableexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname a1 + lda v0 + stobjbyname 0x0, name, a2 + callruntime.wideldsendableexternalmodulevar 0xad + sta v0 + throw.undefinedifholewithname a255 + lda v0 + stobjbyname 0x2, name1, a2 + lda a2 + return +label_2: +} + +slotNum = 0x8 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldhole + sta v0 + callruntime.definesendableclass 0x0, .#~@0=#SendableLazyLoading, _3, 0x0, v0 + sta v0 + mov v2, v0 + newobjrange 0x1, 0x1, v2 + sta v0 + tryldglobalbyname 0x3, print + sta v1 + lda v0 + ldobjbyname 0x4, name + sta v0 + lda v1 + callarg1 0x6, v0 + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_below_API11_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_asm_version-expected.txt similarity index 97% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_below_API11_asm_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_asm_version-expected.txt index c856ace10eeee1748a21c2a78b8964fb2d31aed2..dd9c93627ba79c5c22161a560f87f0634730700d 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_below_API11_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x4 -expectedProperty = 0x2 .language ECMAScript .function any .SendableLazyLoading(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 96% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 0d29c31ce79b818f12e196979de27cd718248290..6e71af8b31718335b7315424577f2895453596c8 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x4 -expectedProperty = 0x2 .language ECMAScript .function any .SendableLazyLoading(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..6e71af8b31718335b7315424577f2895453596c8 --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -0,0 +1,44 @@ +slotNum = 0x4 +.language ECMAScript +.function any .SendableLazyLoading(any a0, any a1, any a2) { +label_1: +label_0: + ldexternalmodulevar 0x0 + sta v0 + throw.undefinedifholewithname a1 + lda v0 + stobjbyname 0x0, name, a2 + wide.ldexternalmodulevar 0xad + sta v0 + throw.undefinedifholewithname a255 + lda v0 + stobjbyname 0x2, name1, a2 + lda a2 + return +label_2: +} + +slotNum = 0x8 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldhole + sta v0 + callruntime.definesendableclass 0x0, .SendableLazyLoading, _2, 0x0, v0 + sta v0 + mov v2, v0 + newobjrange 0x1, 0x1, v2 + sta v0 + tryldglobalbyname 0x3, print + sta v1 + lda v0 + ldobjbyname 0x4, name + sta v0 + lda v1 + callarg1 0x6, v0 + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_for_below_API11_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_for_below_API11_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_for_below_API12beta3_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_for_below_API12beta3_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..da0f8ed91a8f2f0f067b3bdf26265d5ca48cf82c --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/lazy_loading_mudule_variables_in_sendable_class_unsupported_runtime_version-expected.txt @@ -0,0 +1 @@ +a1 diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 95% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index c5f203f625fe2cf1c908f4fcb303b354fbe029ed..ab6c662e2d9e5ce394e315d531ed1e6e67eba895 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0xa -expectedProperty = 0x2 .language ECMAScript .function any .SendableTestClass1(any a0, any a1, any a2) { label_1: @@ -20,7 +19,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass1(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index eb032750110552b4b42abde4fea04b03d2e206e7..d85ed5764e9862238e443405563a5636df871cc8 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@0=#TopLevelSendableClass1(any a0, any a1, any a2) { label_1: @@ -12,7 +11,6 @@ label_2: } slotNum = 0xa -expectedProperty = 0x2 .language ECMAScript .function any .#~@1=#SendableTestClass1(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..eb032750110552b4b42abde4fea04b03d2e206e7 --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,55 @@ +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@0=#TopLevelSendableClass1(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0xa +expectedProperty = 0x2 +.language ECMAScript +.function any .#~@1=#SendableTestClass1(any a0, any a1, any a2) { +label_1: +label_0: + callruntime.ldsendablevar 0x0, 0x0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass1 + mov v1, v0 + newobjrange 0x0, 0x1, v1 + stobjbyname 0x2, a1, a2 + lda a2 + ldobjbyname 0x4, a1 + ldobjbyname 0x6, o + stobjbyname 0x8, u, a2 + lda a2 + return +label_2: +} + +slotNum = 0x4 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + callruntime.newsendableenv 0x1 + ldhole + sta v0 + callruntime.definesendableclass 0x0, .#~@0=#TopLevelSendableClass1, _3, 0x0, v0 + callruntime.stsendablevar 0x0, 0x0 + ldhole + sta v0 + callruntime.definesendableclass 0x1, .#~@1=#SendableTestClass1, _5, 0x0, v0 + sta v0 + mov v1, v0 + newobjrange 0x2, 0x1, v1 + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_asm_version-expected.txt index cde3ccc64189ca9ddef9c65bb595dd1ba85c7db9..fdad4e6d3a652e370b6ec44e1e7d6ec18ad7bb95 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_asm_version-expected.txt @@ -1,5 +1,5 @@ +slotNum = 0xa .language ECMAScript - .function any .SendableTestClass1(any a0, any a1, any a2) { label_1: label_0: @@ -8,9 +8,9 @@ label_0: throw.undefinedifholewithname TopLevelSendableClass1 mov v1, v0 newobjrange 0x0, 0x1, v1 - stobjbyname 0x2, I1, a2 + stobjbyname 0x2, a1, a2 lda a2 - ldobjbyname 0x4, I1 + ldobjbyname 0x4, a1 ldobjbyname 0x6, o stobjbyname 0x8, u, a2 lda a2 @@ -18,6 +18,8 @@ label_0: label_2: } +slotNum = 0x2 +.language ECMAScript .function any .TopLevelSendableClass1(any a0, any a1, any a2) { label_1: label_0: @@ -28,21 +30,26 @@ label_0: label_2: } +slotNum = 0x8 +.language ECMAScript .function any .func_main_0(any a0, any a1, any a2) { label_1: label_0: newlexenv 0x1 ldhole sta v0 - callruntime.definesendableclass 0x0, .TopLevelSendableClass1, _2, 0x0, v0 + defineclasswithbuffer 0x0, .TopLevelSendableClass1, _1, 0x0, v0 + sta v0 + ldobjbyname 0x1, prototype + lda v0 stlexvar 0x0, 0x0 ldhole sta v0 - callruntime.definesendableclass 0x1, .SendableTestClass1, _4, 0x0, v0 + defineclasswithbuffer 0x3, .SendableTestClass1, _2, 0x0, v0 sta v0 + ldobjbyname 0x4, prototype mov v1, v0 - newobjrange 0x2, 0x1, v1 - ldundefined + newobjrange 0x6, 0x1, v1 returnundefined label_2: } diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 95% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 0f14e168d48b3eb32216ad318cf2a3259bab512d..9648548b638686eee08bccbddb4601b37b8817ec 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0xa -expectedProperty = 0x2 .language ECMAScript .function any .SendableTestClass1(any a0, any a1, any a2) { label_1: @@ -20,7 +19,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass1(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_below_API11_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt similarity index 72% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_below_API11_asm_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index d42096de0cb644cf4d6ab10902b64fefe1130ecb..9648548b638686eee08bccbddb4601b37b8817ec 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_below_API11_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0xa -expectedProperty = 0x2 .language ECMAScript .function any .SendableTestClass1(any a0, any a1, any a2) { label_1: @@ -20,7 +19,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass1(any a0, any a1, any a2) { label_1: @@ -32,7 +30,7 @@ label_0: label_2: } -slotNum = 0x8 +slotNum = 0x4 .language ECMAScript .function any .func_main_0(any a0, any a1, any a2) { label_1: @@ -40,18 +38,14 @@ label_0: newlexenv 0x1 ldhole sta v0 - defineclasswithbuffer 0x0, .TopLevelSendableClass1, _1, 0x0, v0 - sta v0 - ldobjbyname 0x1, prototype - lda v0 + callruntime.definesendableclass 0x0, .TopLevelSendableClass1, _2, 0x0, v0 stlexvar 0x0, 0x0 ldhole sta v0 - defineclasswithbuffer 0x3, .SendableTestClass1, _2, 0x0, v0 + callruntime.definesendableclass 0x1, .SendableTestClass1, _4, 0x0, v0 sta v0 - ldobjbyname 0x4, prototype mov v1, v0 - newobjrange 0x6, 0x1, v1 + newobjrange 0x2, 0x1, v1 returnundefined label_2: } diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_for_below_API12beta3_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_for_below_API12beta3_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_for_below_API12beta3_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_for_below_API12beta3_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_unsupported_runtime_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_unsupported_runtime_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/sendable_lexical_env_unsupported_runtime_version-expected.txt diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 95% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 6407e1d84bc14ce42abeec01422b74291505a244..1517375c8a7909a1c7d8320e7c039ac374d15e8e 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x406 -expectedProperty = 0x101 .language ECMAScript .function any .SendableTestClass1(any a0, any a1, any a2) { label_1: @@ -1546,7 +1545,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass1(any a0, any a1, any a2) { label_1: @@ -1559,7 +1557,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass10(any a0, any a1, any a2) { label_1: @@ -1572,7 +1569,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass100(any a0, any a1, any a2) { label_1: @@ -1585,7 +1581,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass101(any a0, any a1, any a2) { label_1: @@ -1598,7 +1593,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass102(any a0, any a1, any a2) { label_1: @@ -1611,7 +1605,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass103(any a0, any a1, any a2) { label_1: @@ -1624,7 +1617,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass104(any a0, any a1, any a2) { label_1: @@ -1637,7 +1629,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass105(any a0, any a1, any a2) { label_1: @@ -1650,7 +1641,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass106(any a0, any a1, any a2) { label_1: @@ -1663,7 +1653,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass107(any a0, any a1, any a2) { label_1: @@ -1676,7 +1665,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass108(any a0, any a1, any a2) { label_1: @@ -1689,7 +1677,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass109(any a0, any a1, any a2) { label_1: @@ -1702,7 +1689,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass11(any a0, any a1, any a2) { label_1: @@ -1715,7 +1701,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass110(any a0, any a1, any a2) { label_1: @@ -1728,7 +1713,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass111(any a0, any a1, any a2) { label_1: @@ -1741,7 +1725,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass112(any a0, any a1, any a2) { label_1: @@ -1754,7 +1737,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass113(any a0, any a1, any a2) { label_1: @@ -1767,7 +1749,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass114(any a0, any a1, any a2) { label_1: @@ -1780,7 +1761,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass115(any a0, any a1, any a2) { label_1: @@ -1793,7 +1773,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass116(any a0, any a1, any a2) { label_1: @@ -1806,7 +1785,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass117(any a0, any a1, any a2) { label_1: @@ -1819,7 +1797,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass118(any a0, any a1, any a2) { label_1: @@ -1832,7 +1809,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass119(any a0, any a1, any a2) { label_1: @@ -1845,7 +1821,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass12(any a0, any a1, any a2) { label_1: @@ -1858,7 +1833,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass120(any a0, any a1, any a2) { label_1: @@ -1871,7 +1845,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass121(any a0, any a1, any a2) { label_1: @@ -1884,7 +1857,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass122(any a0, any a1, any a2) { label_1: @@ -1897,7 +1869,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass123(any a0, any a1, any a2) { label_1: @@ -1910,7 +1881,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass124(any a0, any a1, any a2) { label_1: @@ -1923,7 +1893,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass125(any a0, any a1, any a2) { label_1: @@ -1936,7 +1905,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass126(any a0, any a1, any a2) { label_1: @@ -1949,7 +1917,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass127(any a0, any a1, any a2) { label_1: @@ -1962,7 +1929,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass128(any a0, any a1, any a2) { label_1: @@ -1975,7 +1941,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass129(any a0, any a1, any a2) { label_1: @@ -1988,7 +1953,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass13(any a0, any a1, any a2) { label_1: @@ -2001,7 +1965,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass130(any a0, any a1, any a2) { label_1: @@ -2014,7 +1977,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass131(any a0, any a1, any a2) { label_1: @@ -2027,7 +1989,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass132(any a0, any a1, any a2) { label_1: @@ -2040,7 +2001,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass133(any a0, any a1, any a2) { label_1: @@ -2053,7 +2013,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass134(any a0, any a1, any a2) { label_1: @@ -2066,7 +2025,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass135(any a0, any a1, any a2) { label_1: @@ -2079,7 +2037,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass136(any a0, any a1, any a2) { label_1: @@ -2092,7 +2049,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass137(any a0, any a1, any a2) { label_1: @@ -2105,7 +2061,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass138(any a0, any a1, any a2) { label_1: @@ -2118,7 +2073,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass139(any a0, any a1, any a2) { label_1: @@ -2131,7 +2085,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass14(any a0, any a1, any a2) { label_1: @@ -2144,7 +2097,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass140(any a0, any a1, any a2) { label_1: @@ -2157,7 +2109,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass141(any a0, any a1, any a2) { label_1: @@ -2170,7 +2121,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass142(any a0, any a1, any a2) { label_1: @@ -2183,7 +2133,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass143(any a0, any a1, any a2) { label_1: @@ -2196,7 +2145,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass144(any a0, any a1, any a2) { label_1: @@ -2209,7 +2157,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass145(any a0, any a1, any a2) { label_1: @@ -2222,7 +2169,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass146(any a0, any a1, any a2) { label_1: @@ -2235,7 +2181,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass147(any a0, any a1, any a2) { label_1: @@ -2248,7 +2193,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass148(any a0, any a1, any a2) { label_1: @@ -2261,7 +2205,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass149(any a0, any a1, any a2) { label_1: @@ -2274,7 +2217,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass15(any a0, any a1, any a2) { label_1: @@ -2287,7 +2229,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass150(any a0, any a1, any a2) { label_1: @@ -2300,7 +2241,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass151(any a0, any a1, any a2) { label_1: @@ -2313,7 +2253,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass152(any a0, any a1, any a2) { label_1: @@ -2326,7 +2265,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass153(any a0, any a1, any a2) { label_1: @@ -2339,7 +2277,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass154(any a0, any a1, any a2) { label_1: @@ -2352,7 +2289,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass155(any a0, any a1, any a2) { label_1: @@ -2365,7 +2301,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass156(any a0, any a1, any a2) { label_1: @@ -2378,7 +2313,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass157(any a0, any a1, any a2) { label_1: @@ -2391,7 +2325,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass158(any a0, any a1, any a2) { label_1: @@ -2404,7 +2337,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass159(any a0, any a1, any a2) { label_1: @@ -2417,7 +2349,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass16(any a0, any a1, any a2) { label_1: @@ -2430,7 +2361,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass160(any a0, any a1, any a2) { label_1: @@ -2443,7 +2373,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass161(any a0, any a1, any a2) { label_1: @@ -2456,7 +2385,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass162(any a0, any a1, any a2) { label_1: @@ -2469,7 +2397,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass163(any a0, any a1, any a2) { label_1: @@ -2482,7 +2409,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass164(any a0, any a1, any a2) { label_1: @@ -2495,7 +2421,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass165(any a0, any a1, any a2) { label_1: @@ -2508,7 +2433,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass166(any a0, any a1, any a2) { label_1: @@ -2521,7 +2445,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass167(any a0, any a1, any a2) { label_1: @@ -2534,7 +2457,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass168(any a0, any a1, any a2) { label_1: @@ -2547,7 +2469,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass169(any a0, any a1, any a2) { label_1: @@ -2560,7 +2481,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass17(any a0, any a1, any a2) { label_1: @@ -2573,7 +2493,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass170(any a0, any a1, any a2) { label_1: @@ -2586,7 +2505,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass171(any a0, any a1, any a2) { label_1: @@ -2599,7 +2517,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass172(any a0, any a1, any a2) { label_1: @@ -2612,7 +2529,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass173(any a0, any a1, any a2) { label_1: @@ -2625,7 +2541,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass174(any a0, any a1, any a2) { label_1: @@ -2638,7 +2553,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass175(any a0, any a1, any a2) { label_1: @@ -2651,7 +2565,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass176(any a0, any a1, any a2) { label_1: @@ -2664,7 +2577,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass177(any a0, any a1, any a2) { label_1: @@ -2677,7 +2589,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass178(any a0, any a1, any a2) { label_1: @@ -2690,7 +2601,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass179(any a0, any a1, any a2) { label_1: @@ -2703,7 +2613,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass18(any a0, any a1, any a2) { label_1: @@ -2716,7 +2625,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass180(any a0, any a1, any a2) { label_1: @@ -2729,7 +2637,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass181(any a0, any a1, any a2) { label_1: @@ -2742,7 +2649,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass182(any a0, any a1, any a2) { label_1: @@ -2755,7 +2661,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass183(any a0, any a1, any a2) { label_1: @@ -2768,7 +2673,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass184(any a0, any a1, any a2) { label_1: @@ -2781,7 +2685,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass185(any a0, any a1, any a2) { label_1: @@ -2794,7 +2697,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass186(any a0, any a1, any a2) { label_1: @@ -2807,7 +2709,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass187(any a0, any a1, any a2) { label_1: @@ -2820,7 +2721,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass188(any a0, any a1, any a2) { label_1: @@ -2833,7 +2733,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass189(any a0, any a1, any a2) { label_1: @@ -2846,7 +2745,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass19(any a0, any a1, any a2) { label_1: @@ -2859,7 +2757,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass190(any a0, any a1, any a2) { label_1: @@ -2872,7 +2769,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass191(any a0, any a1, any a2) { label_1: @@ -2885,7 +2781,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass192(any a0, any a1, any a2) { label_1: @@ -2898,7 +2793,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass193(any a0, any a1, any a2) { label_1: @@ -2911,7 +2805,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass194(any a0, any a1, any a2) { label_1: @@ -2924,7 +2817,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass195(any a0, any a1, any a2) { label_1: @@ -2937,7 +2829,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass196(any a0, any a1, any a2) { label_1: @@ -2950,7 +2841,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass197(any a0, any a1, any a2) { label_1: @@ -2963,7 +2853,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass198(any a0, any a1, any a2) { label_1: @@ -2976,7 +2865,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass199(any a0, any a1, any a2) { label_1: @@ -2989,7 +2877,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass2(any a0, any a1, any a2) { label_1: @@ -3002,7 +2889,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass20(any a0, any a1, any a2) { label_1: @@ -3015,7 +2901,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass200(any a0, any a1, any a2) { label_1: @@ -3028,7 +2913,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass201(any a0, any a1, any a2) { label_1: @@ -3041,7 +2925,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass202(any a0, any a1, any a2) { label_1: @@ -3054,7 +2937,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass203(any a0, any a1, any a2) { label_1: @@ -3067,7 +2949,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass204(any a0, any a1, any a2) { label_1: @@ -3080,7 +2961,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass205(any a0, any a1, any a2) { label_1: @@ -3093,7 +2973,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass206(any a0, any a1, any a2) { label_1: @@ -3106,7 +2985,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass207(any a0, any a1, any a2) { label_1: @@ -3119,7 +2997,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass208(any a0, any a1, any a2) { label_1: @@ -3132,7 +3009,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass209(any a0, any a1, any a2) { label_1: @@ -3145,7 +3021,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass21(any a0, any a1, any a2) { label_1: @@ -3158,7 +3033,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass210(any a0, any a1, any a2) { label_1: @@ -3171,7 +3045,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass211(any a0, any a1, any a2) { label_1: @@ -3184,7 +3057,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass212(any a0, any a1, any a2) { label_1: @@ -3197,7 +3069,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass213(any a0, any a1, any a2) { label_1: @@ -3210,7 +3081,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass214(any a0, any a1, any a2) { label_1: @@ -3223,7 +3093,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass215(any a0, any a1, any a2) { label_1: @@ -3236,7 +3105,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass216(any a0, any a1, any a2) { label_1: @@ -3249,7 +3117,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass217(any a0, any a1, any a2) { label_1: @@ -3262,7 +3129,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass218(any a0, any a1, any a2) { label_1: @@ -3275,7 +3141,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass219(any a0, any a1, any a2) { label_1: @@ -3288,7 +3153,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass22(any a0, any a1, any a2) { label_1: @@ -3301,7 +3165,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass220(any a0, any a1, any a2) { label_1: @@ -3314,7 +3177,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass221(any a0, any a1, any a2) { label_1: @@ -3327,7 +3189,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass222(any a0, any a1, any a2) { label_1: @@ -3340,7 +3201,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass223(any a0, any a1, any a2) { label_1: @@ -3353,7 +3213,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass224(any a0, any a1, any a2) { label_1: @@ -3366,7 +3225,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass225(any a0, any a1, any a2) { label_1: @@ -3379,7 +3237,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass226(any a0, any a1, any a2) { label_1: @@ -3392,7 +3249,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass227(any a0, any a1, any a2) { label_1: @@ -3405,7 +3261,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass228(any a0, any a1, any a2) { label_1: @@ -3418,7 +3273,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass229(any a0, any a1, any a2) { label_1: @@ -3431,7 +3285,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass23(any a0, any a1, any a2) { label_1: @@ -3444,7 +3297,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass230(any a0, any a1, any a2) { label_1: @@ -3457,7 +3309,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass231(any a0, any a1, any a2) { label_1: @@ -3470,7 +3321,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass232(any a0, any a1, any a2) { label_1: @@ -3483,7 +3333,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass233(any a0, any a1, any a2) { label_1: @@ -3496,7 +3345,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass234(any a0, any a1, any a2) { label_1: @@ -3509,7 +3357,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass235(any a0, any a1, any a2) { label_1: @@ -3522,7 +3369,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass236(any a0, any a1, any a2) { label_1: @@ -3535,7 +3381,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass237(any a0, any a1, any a2) { label_1: @@ -3548,7 +3393,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass238(any a0, any a1, any a2) { label_1: @@ -3561,7 +3405,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass239(any a0, any a1, any a2) { label_1: @@ -3574,7 +3417,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass24(any a0, any a1, any a2) { label_1: @@ -3587,7 +3429,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass240(any a0, any a1, any a2) { label_1: @@ -3600,7 +3441,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass241(any a0, any a1, any a2) { label_1: @@ -3613,7 +3453,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass242(any a0, any a1, any a2) { label_1: @@ -3626,7 +3465,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass243(any a0, any a1, any a2) { label_1: @@ -3639,7 +3477,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass244(any a0, any a1, any a2) { label_1: @@ -3652,7 +3489,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass245(any a0, any a1, any a2) { label_1: @@ -3665,7 +3501,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass246(any a0, any a1, any a2) { label_1: @@ -3678,7 +3513,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass247(any a0, any a1, any a2) { label_1: @@ -3691,7 +3525,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass248(any a0, any a1, any a2) { label_1: @@ -3704,7 +3537,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass249(any a0, any a1, any a2) { label_1: @@ -3717,7 +3549,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass25(any a0, any a1, any a2) { label_1: @@ -3730,7 +3561,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass250(any a0, any a1, any a2) { label_1: @@ -3743,7 +3573,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass251(any a0, any a1, any a2) { label_1: @@ -3756,7 +3585,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass252(any a0, any a1, any a2) { label_1: @@ -3769,7 +3597,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass253(any a0, any a1, any a2) { label_1: @@ -3782,7 +3609,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass254(any a0, any a1, any a2) { label_1: @@ -3795,7 +3621,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass255(any a0, any a1, any a2) { label_1: @@ -3808,7 +3633,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass26(any a0, any a1, any a2) { label_1: @@ -3821,7 +3645,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass27(any a0, any a1, any a2) { label_1: @@ -3834,7 +3657,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass28(any a0, any a1, any a2) { label_1: @@ -3847,7 +3669,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass29(any a0, any a1, any a2) { label_1: @@ -3860,7 +3681,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass3(any a0, any a1, any a2) { label_1: @@ -3873,7 +3693,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass30(any a0, any a1, any a2) { label_1: @@ -3886,7 +3705,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass31(any a0, any a1, any a2) { label_1: @@ -3899,7 +3717,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass32(any a0, any a1, any a2) { label_1: @@ -3912,7 +3729,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass33(any a0, any a1, any a2) { label_1: @@ -3925,7 +3741,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass34(any a0, any a1, any a2) { label_1: @@ -3938,7 +3753,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass35(any a0, any a1, any a2) { label_1: @@ -3951,7 +3765,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass36(any a0, any a1, any a2) { label_1: @@ -3964,7 +3777,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass37(any a0, any a1, any a2) { label_1: @@ -3977,7 +3789,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass38(any a0, any a1, any a2) { label_1: @@ -3990,7 +3801,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass39(any a0, any a1, any a2) { label_1: @@ -4003,7 +3813,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass4(any a0, any a1, any a2) { label_1: @@ -4016,7 +3825,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass40(any a0, any a1, any a2) { label_1: @@ -4029,7 +3837,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass41(any a0, any a1, any a2) { label_1: @@ -4042,7 +3849,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass42(any a0, any a1, any a2) { label_1: @@ -4055,7 +3861,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass43(any a0, any a1, any a2) { label_1: @@ -4068,7 +3873,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass44(any a0, any a1, any a2) { label_1: @@ -4081,7 +3885,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass45(any a0, any a1, any a2) { label_1: @@ -4094,7 +3897,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass46(any a0, any a1, any a2) { label_1: @@ -4107,7 +3909,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass47(any a0, any a1, any a2) { label_1: @@ -4120,7 +3921,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass48(any a0, any a1, any a2) { label_1: @@ -4133,7 +3933,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass49(any a0, any a1, any a2) { label_1: @@ -4146,7 +3945,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass5(any a0, any a1, any a2) { label_1: @@ -4159,7 +3957,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass50(any a0, any a1, any a2) { label_1: @@ -4172,7 +3969,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass51(any a0, any a1, any a2) { label_1: @@ -4185,7 +3981,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass52(any a0, any a1, any a2) { label_1: @@ -4198,7 +3993,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass53(any a0, any a1, any a2) { label_1: @@ -4211,7 +4005,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass54(any a0, any a1, any a2) { label_1: @@ -4224,7 +4017,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass55(any a0, any a1, any a2) { label_1: @@ -4237,7 +4029,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass56(any a0, any a1, any a2) { label_1: @@ -4250,7 +4041,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass57(any a0, any a1, any a2) { label_1: @@ -4263,7 +4053,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass58(any a0, any a1, any a2) { label_1: @@ -4276,7 +4065,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass59(any a0, any a1, any a2) { label_1: @@ -4289,7 +4077,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass6(any a0, any a1, any a2) { label_1: @@ -4302,7 +4089,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass60(any a0, any a1, any a2) { label_1: @@ -4315,7 +4101,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass61(any a0, any a1, any a2) { label_1: @@ -4328,7 +4113,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass62(any a0, any a1, any a2) { label_1: @@ -4341,7 +4125,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass63(any a0, any a1, any a2) { label_1: @@ -4354,7 +4137,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass64(any a0, any a1, any a2) { label_1: @@ -4367,7 +4149,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass65(any a0, any a1, any a2) { label_1: @@ -4380,7 +4161,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass66(any a0, any a1, any a2) { label_1: @@ -4393,7 +4173,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass67(any a0, any a1, any a2) { label_1: @@ -4406,7 +4185,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass68(any a0, any a1, any a2) { label_1: @@ -4419,7 +4197,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass69(any a0, any a1, any a2) { label_1: @@ -4432,7 +4209,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass7(any a0, any a1, any a2) { label_1: @@ -4445,7 +4221,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass70(any a0, any a1, any a2) { label_1: @@ -4458,7 +4233,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass71(any a0, any a1, any a2) { label_1: @@ -4471,7 +4245,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass72(any a0, any a1, any a2) { label_1: @@ -4484,7 +4257,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass73(any a0, any a1, any a2) { label_1: @@ -4497,7 +4269,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass74(any a0, any a1, any a2) { label_1: @@ -4510,7 +4281,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass75(any a0, any a1, any a2) { label_1: @@ -4523,7 +4293,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass76(any a0, any a1, any a2) { label_1: @@ -4536,7 +4305,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass77(any a0, any a1, any a2) { label_1: @@ -4549,7 +4317,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass78(any a0, any a1, any a2) { label_1: @@ -4562,7 +4329,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass79(any a0, any a1, any a2) { label_1: @@ -4575,7 +4341,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass8(any a0, any a1, any a2) { label_1: @@ -4588,7 +4353,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass80(any a0, any a1, any a2) { label_1: @@ -4601,7 +4365,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass81(any a0, any a1, any a2) { label_1: @@ -4614,7 +4377,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass82(any a0, any a1, any a2) { label_1: @@ -4627,7 +4389,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass83(any a0, any a1, any a2) { label_1: @@ -4640,7 +4401,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass84(any a0, any a1, any a2) { label_1: @@ -4653,7 +4413,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass85(any a0, any a1, any a2) { label_1: @@ -4666,7 +4425,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass86(any a0, any a1, any a2) { label_1: @@ -4679,7 +4437,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass87(any a0, any a1, any a2) { label_1: @@ -4692,7 +4449,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass88(any a0, any a1, any a2) { label_1: @@ -4705,7 +4461,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass89(any a0, any a1, any a2) { label_1: @@ -4718,7 +4473,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass9(any a0, any a1, any a2) { label_1: @@ -4731,7 +4485,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass90(any a0, any a1, any a2) { label_1: @@ -4744,7 +4497,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass91(any a0, any a1, any a2) { label_1: @@ -4757,7 +4509,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass92(any a0, any a1, any a2) { label_1: @@ -4770,7 +4521,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass93(any a0, any a1, any a2) { label_1: @@ -4783,7 +4533,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass94(any a0, any a1, any a2) { label_1: @@ -4796,7 +4545,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass95(any a0, any a1, any a2) { label_1: @@ -4809,7 +4557,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass96(any a0, any a1, any a2) { label_1: @@ -4822,7 +4569,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass97(any a0, any a1, any a2) { label_1: @@ -4835,7 +4581,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass98(any a0, any a1, any a2) { label_1: @@ -4848,7 +4593,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass99(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index 4eb345368c176d8b5040719e8de9e473f4083ea9..a21d8fc54382d39b1e5412f370182fd5e05e6bb2 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@0=#TopLevelSendableClass1(any a0, any a1, any a2) { label_1: @@ -12,7 +11,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@10=#TopLevelSendableClass17(any a0, any a1, any a2) { label_1: @@ -25,7 +23,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@11=#TopLevelSendableClass18(any a0, any a1, any a2) { label_1: @@ -38,7 +35,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@12=#TopLevelSendableClass19(any a0, any a1, any a2) { label_1: @@ -51,7 +47,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@13=#TopLevelSendableClass20(any a0, any a1, any a2) { label_1: @@ -64,7 +59,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@14=#TopLevelSendableClass21(any a0, any a1, any a2) { label_1: @@ -77,7 +71,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@15=#TopLevelSendableClass22(any a0, any a1, any a2) { label_1: @@ -90,7 +83,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@16=#TopLevelSendableClass23(any a0, any a1, any a2) { label_1: @@ -103,7 +95,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@17=#TopLevelSendableClass24(any a0, any a1, any a2) { label_1: @@ -116,7 +107,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@18=#TopLevelSendableClass25(any a0, any a1, any a2) { label_1: @@ -129,7 +119,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@19=#TopLevelSendableClass26(any a0, any a1, any a2) { label_1: @@ -142,7 +131,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@1=#TopLevelSendableClass2(any a0, any a1, any a2) { label_1: @@ -155,7 +143,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@1a=#TopLevelSendableClass27(any a0, any a1, any a2) { label_1: @@ -168,7 +155,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@1b=#TopLevelSendableClass28(any a0, any a1, any a2) { label_1: @@ -181,7 +167,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@1c=#TopLevelSendableClass29(any a0, any a1, any a2) { label_1: @@ -194,7 +179,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@1d=#TopLevelSendableClass30(any a0, any a1, any a2) { label_1: @@ -207,7 +191,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@1e=#TopLevelSendableClass31(any a0, any a1, any a2) { label_1: @@ -220,7 +203,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@1f=#TopLevelSendableClass32(any a0, any a1, any a2) { label_1: @@ -233,7 +215,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@20=#TopLevelSendableClass33(any a0, any a1, any a2) { label_1: @@ -246,7 +227,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@21=#TopLevelSendableClass34(any a0, any a1, any a2) { label_1: @@ -259,7 +239,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@22=#TopLevelSendableClass35(any a0, any a1, any a2) { label_1: @@ -272,7 +251,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@23=#TopLevelSendableClass36(any a0, any a1, any a2) { label_1: @@ -285,7 +263,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@24=#TopLevelSendableClass37(any a0, any a1, any a2) { label_1: @@ -298,7 +275,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@25=#TopLevelSendableClass38(any a0, any a1, any a2) { label_1: @@ -311,7 +287,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@26=#TopLevelSendableClass39(any a0, any a1, any a2) { label_1: @@ -324,7 +299,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@27=#TopLevelSendableClass40(any a0, any a1, any a2) { label_1: @@ -337,7 +311,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@28=#TopLevelSendableClass41(any a0, any a1, any a2) { label_1: @@ -350,7 +323,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@29=#TopLevelSendableClass42(any a0, any a1, any a2) { label_1: @@ -363,7 +335,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@2=#TopLevelSendableClass3(any a0, any a1, any a2) { label_1: @@ -376,7 +347,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@2a=#TopLevelSendableClass43(any a0, any a1, any a2) { label_1: @@ -389,7 +359,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@2b=#TopLevelSendableClass44(any a0, any a1, any a2) { label_1: @@ -402,7 +371,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@2c=#TopLevelSendableClass45(any a0, any a1, any a2) { label_1: @@ -415,7 +383,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@2d=#TopLevelSendableClass46(any a0, any a1, any a2) { label_1: @@ -428,7 +395,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@2e=#TopLevelSendableClass47(any a0, any a1, any a2) { label_1: @@ -441,7 +407,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@2f=#TopLevelSendableClass48(any a0, any a1, any a2) { label_1: @@ -454,7 +419,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@30=#TopLevelSendableClass49(any a0, any a1, any a2) { label_1: @@ -467,7 +431,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@31=#TopLevelSendableClass50(any a0, any a1, any a2) { label_1: @@ -480,7 +443,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@32=#TopLevelSendableClass51(any a0, any a1, any a2) { label_1: @@ -493,7 +455,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@33=#TopLevelSendableClass52(any a0, any a1, any a2) { label_1: @@ -506,7 +467,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@34=#TopLevelSendableClass53(any a0, any a1, any a2) { label_1: @@ -519,7 +479,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@35=#TopLevelSendableClass54(any a0, any a1, any a2) { label_1: @@ -532,7 +491,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@36=#TopLevelSendableClass55(any a0, any a1, any a2) { label_1: @@ -545,7 +503,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@37=#TopLevelSendableClass56(any a0, any a1, any a2) { label_1: @@ -558,7 +515,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@38=#TopLevelSendableClass57(any a0, any a1, any a2) { label_1: @@ -571,7 +527,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@39=#TopLevelSendableClass58(any a0, any a1, any a2) { label_1: @@ -584,7 +539,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@3=#TopLevelSendableClass4(any a0, any a1, any a2) { label_1: @@ -597,7 +551,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@3a=#TopLevelSendableClass59(any a0, any a1, any a2) { label_1: @@ -610,7 +563,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@3b=#TopLevelSendableClass60(any a0, any a1, any a2) { label_1: @@ -623,7 +575,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@3c=#TopLevelSendableClass61(any a0, any a1, any a2) { label_1: @@ -636,7 +587,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@3d=#TopLevelSendableClass62(any a0, any a1, any a2) { label_1: @@ -649,7 +599,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@3e=#TopLevelSendableClass63(any a0, any a1, any a2) { label_1: @@ -662,7 +611,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@3f=#TopLevelSendableClass64(any a0, any a1, any a2) { label_1: @@ -675,7 +623,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@40=#TopLevelSendableClass65(any a0, any a1, any a2) { label_1: @@ -688,7 +635,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@41=#TopLevelSendableClass66(any a0, any a1, any a2) { label_1: @@ -701,7 +647,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@42=#TopLevelSendableClass67(any a0, any a1, any a2) { label_1: @@ -714,7 +659,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@43=#TopLevelSendableClass68(any a0, any a1, any a2) { label_1: @@ -727,7 +671,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@44=#TopLevelSendableClass69(any a0, any a1, any a2) { label_1: @@ -740,7 +683,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@45=#TopLevelSendableClass70(any a0, any a1, any a2) { label_1: @@ -753,7 +695,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@46=#TopLevelSendableClass71(any a0, any a1, any a2) { label_1: @@ -766,7 +707,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@47=#TopLevelSendableClass72(any a0, any a1, any a2) { label_1: @@ -779,7 +719,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@48=#TopLevelSendableClass73(any a0, any a1, any a2) { label_1: @@ -792,7 +731,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@49=#TopLevelSendableClass74(any a0, any a1, any a2) { label_1: @@ -805,7 +743,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@4=#TopLevelSendableClass5(any a0, any a1, any a2) { label_1: @@ -818,7 +755,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@4a=#TopLevelSendableClass75(any a0, any a1, any a2) { label_1: @@ -831,7 +767,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@4b=#TopLevelSendableClass76(any a0, any a1, any a2) { label_1: @@ -844,7 +779,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@4c=#TopLevelSendableClass77(any a0, any a1, any a2) { label_1: @@ -857,7 +791,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@4d=#TopLevelSendableClass78(any a0, any a1, any a2) { label_1: @@ -870,7 +803,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@4e=#TopLevelSendableClass79(any a0, any a1, any a2) { label_1: @@ -883,7 +815,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@4f=#TopLevelSendableClass80(any a0, any a1, any a2) { label_1: @@ -896,7 +827,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@50=#TopLevelSendableClass81(any a0, any a1, any a2) { label_1: @@ -909,7 +839,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@51=#TopLevelSendableClass82(any a0, any a1, any a2) { label_1: @@ -922,7 +851,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@52=#TopLevelSendableClass83(any a0, any a1, any a2) { label_1: @@ -935,7 +863,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@53=#TopLevelSendableClass84(any a0, any a1, any a2) { label_1: @@ -948,7 +875,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@54=#TopLevelSendableClass85(any a0, any a1, any a2) { label_1: @@ -961,7 +887,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@55=#TopLevelSendableClass86(any a0, any a1, any a2) { label_1: @@ -974,7 +899,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@56=#TopLevelSendableClass87(any a0, any a1, any a2) { label_1: @@ -987,7 +911,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@57=#TopLevelSendableClass88(any a0, any a1, any a2) { label_1: @@ -1000,7 +923,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@58=#TopLevelSendableClass89(any a0, any a1, any a2) { label_1: @@ -1013,7 +935,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@59=#TopLevelSendableClass90(any a0, any a1, any a2) { label_1: @@ -1026,7 +947,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@5=#TopLevelSendableClass6(any a0, any a1, any a2) { label_1: @@ -1039,7 +959,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@5a=#TopLevelSendableClass91(any a0, any a1, any a2) { label_1: @@ -1052,7 +971,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@5b=#TopLevelSendableClass92(any a0, any a1, any a2) { label_1: @@ -1065,7 +983,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@5c=#TopLevelSendableClass93(any a0, any a1, any a2) { label_1: @@ -1078,7 +995,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@5d=#TopLevelSendableClass94(any a0, any a1, any a2) { label_1: @@ -1091,7 +1007,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@5e=#TopLevelSendableClass95(any a0, any a1, any a2) { label_1: @@ -1104,7 +1019,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@5f=#TopLevelSendableClass96(any a0, any a1, any a2) { label_1: @@ -1117,7 +1031,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@60=#TopLevelSendableClass97(any a0, any a1, any a2) { label_1: @@ -1130,7 +1043,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@61=#TopLevelSendableClass98(any a0, any a1, any a2) { label_1: @@ -1143,7 +1055,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@62=#TopLevelSendableClass99(any a0, any a1, any a2) { label_1: @@ -1156,7 +1067,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@63=#TopLevelSendableClass100(any a0, any a1, any a2) { label_1: @@ -1169,7 +1079,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@64=#TopLevelSendableClass101(any a0, any a1, any a2) { label_1: @@ -1182,7 +1091,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@65=#TopLevelSendableClass102(any a0, any a1, any a2) { label_1: @@ -1195,7 +1103,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@66=#TopLevelSendableClass103(any a0, any a1, any a2) { label_1: @@ -1208,7 +1115,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@67=#TopLevelSendableClass104(any a0, any a1, any a2) { label_1: @@ -1221,7 +1127,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@68=#TopLevelSendableClass105(any a0, any a1, any a2) { label_1: @@ -1234,7 +1139,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@69=#TopLevelSendableClass106(any a0, any a1, any a2) { label_1: @@ -1247,7 +1151,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@6=#TopLevelSendableClass7(any a0, any a1, any a2) { label_1: @@ -1260,7 +1163,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@6a=#TopLevelSendableClass107(any a0, any a1, any a2) { label_1: @@ -1273,7 +1175,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@6b=#TopLevelSendableClass108(any a0, any a1, any a2) { label_1: @@ -1286,7 +1187,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@6c=#TopLevelSendableClass109(any a0, any a1, any a2) { label_1: @@ -1299,7 +1199,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@6d=#TopLevelSendableClass110(any a0, any a1, any a2) { label_1: @@ -1312,7 +1211,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@6e=#TopLevelSendableClass111(any a0, any a1, any a2) { label_1: @@ -1325,7 +1223,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@6f=#TopLevelSendableClass112(any a0, any a1, any a2) { label_1: @@ -1338,7 +1235,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@70=#TopLevelSendableClass113(any a0, any a1, any a2) { label_1: @@ -1351,7 +1247,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@71=#TopLevelSendableClass114(any a0, any a1, any a2) { label_1: @@ -1364,7 +1259,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@72=#TopLevelSendableClass115(any a0, any a1, any a2) { label_1: @@ -1377,7 +1271,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@73=#TopLevelSendableClass116(any a0, any a1, any a2) { label_1: @@ -1390,7 +1283,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@74=#TopLevelSendableClass117(any a0, any a1, any a2) { label_1: @@ -1403,7 +1295,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@75=#TopLevelSendableClass118(any a0, any a1, any a2) { label_1: @@ -1416,7 +1307,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@76=#TopLevelSendableClass119(any a0, any a1, any a2) { label_1: @@ -1429,7 +1319,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@77=#TopLevelSendableClass120(any a0, any a1, any a2) { label_1: @@ -1442,7 +1331,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@78=#TopLevelSendableClass121(any a0, any a1, any a2) { label_1: @@ -1455,7 +1343,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@79=#TopLevelSendableClass122(any a0, any a1, any a2) { label_1: @@ -1468,7 +1355,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@7=#TopLevelSendableClass8(any a0, any a1, any a2) { label_1: @@ -1481,7 +1367,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@7a=#TopLevelSendableClass123(any a0, any a1, any a2) { label_1: @@ -1494,7 +1379,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@7b=#TopLevelSendableClass124(any a0, any a1, any a2) { label_1: @@ -1507,7 +1391,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@7c=#TopLevelSendableClass125(any a0, any a1, any a2) { label_1: @@ -1520,7 +1403,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@7d=#TopLevelSendableClass126(any a0, any a1, any a2) { label_1: @@ -1533,7 +1415,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@7e=#TopLevelSendableClass127(any a0, any a1, any a2) { label_1: @@ -1546,7 +1427,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@7f=#TopLevelSendableClass128(any a0, any a1, any a2) { label_1: @@ -1559,7 +1439,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@80=#TopLevelSendableClass129(any a0, any a1, any a2) { label_1: @@ -1572,7 +1451,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@81=#TopLevelSendableClass130(any a0, any a1, any a2) { label_1: @@ -1585,7 +1463,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@82=#TopLevelSendableClass131(any a0, any a1, any a2) { label_1: @@ -1598,7 +1475,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@83=#TopLevelSendableClass132(any a0, any a1, any a2) { label_1: @@ -1611,7 +1487,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@84=#TopLevelSendableClass133(any a0, any a1, any a2) { label_1: @@ -1624,7 +1499,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@85=#TopLevelSendableClass134(any a0, any a1, any a2) { label_1: @@ -1637,7 +1511,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@86=#TopLevelSendableClass135(any a0, any a1, any a2) { label_1: @@ -1650,7 +1523,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@87=#TopLevelSendableClass136(any a0, any a1, any a2) { label_1: @@ -1663,7 +1535,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@88=#TopLevelSendableClass137(any a0, any a1, any a2) { label_1: @@ -1676,7 +1547,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@89=#TopLevelSendableClass138(any a0, any a1, any a2) { label_1: @@ -1689,7 +1559,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@8=#TopLevelSendableClass9(any a0, any a1, any a2) { label_1: @@ -1702,7 +1571,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@8a=#TopLevelSendableClass139(any a0, any a1, any a2) { label_1: @@ -1715,7 +1583,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@8b=#TopLevelSendableClass140(any a0, any a1, any a2) { label_1: @@ -1728,7 +1595,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@8c=#TopLevelSendableClass141(any a0, any a1, any a2) { label_1: @@ -1741,7 +1607,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@8d=#TopLevelSendableClass142(any a0, any a1, any a2) { label_1: @@ -1754,7 +1619,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@8e=#TopLevelSendableClass143(any a0, any a1, any a2) { label_1: @@ -1767,7 +1631,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@8f=#TopLevelSendableClass144(any a0, any a1, any a2) { label_1: @@ -1780,7 +1643,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@90=#TopLevelSendableClass145(any a0, any a1, any a2) { label_1: @@ -1793,7 +1655,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@91=#TopLevelSendableClass146(any a0, any a1, any a2) { label_1: @@ -1806,7 +1667,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@92=#TopLevelSendableClass147(any a0, any a1, any a2) { label_1: @@ -1819,7 +1679,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@93=#TopLevelSendableClass148(any a0, any a1, any a2) { label_1: @@ -1832,7 +1691,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@94=#TopLevelSendableClass149(any a0, any a1, any a2) { label_1: @@ -1845,7 +1703,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@95=#TopLevelSendableClass150(any a0, any a1, any a2) { label_1: @@ -1858,7 +1715,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@96=#TopLevelSendableClass151(any a0, any a1, any a2) { label_1: @@ -1871,7 +1727,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@97=#TopLevelSendableClass152(any a0, any a1, any a2) { label_1: @@ -1884,7 +1739,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@98=#TopLevelSendableClass153(any a0, any a1, any a2) { label_1: @@ -1897,7 +1751,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@99=#TopLevelSendableClass154(any a0, any a1, any a2) { label_1: @@ -1910,7 +1763,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@9=#TopLevelSendableClass10(any a0, any a1, any a2) { label_1: @@ -1923,7 +1775,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@9a=#TopLevelSendableClass155(any a0, any a1, any a2) { label_1: @@ -1936,7 +1787,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@9b=#TopLevelSendableClass156(any a0, any a1, any a2) { label_1: @@ -1949,7 +1799,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@9c=#TopLevelSendableClass157(any a0, any a1, any a2) { label_1: @@ -1962,7 +1811,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@9d=#TopLevelSendableClass158(any a0, any a1, any a2) { label_1: @@ -1975,7 +1823,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@9e=#TopLevelSendableClass159(any a0, any a1, any a2) { label_1: @@ -1988,7 +1835,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@9f=#TopLevelSendableClass160(any a0, any a1, any a2) { label_1: @@ -2001,7 +1847,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a0=#TopLevelSendableClass161(any a0, any a1, any a2) { label_1: @@ -2014,7 +1859,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a1=#TopLevelSendableClass162(any a0, any a1, any a2) { label_1: @@ -2027,7 +1871,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a2=#TopLevelSendableClass163(any a0, any a1, any a2) { label_1: @@ -2040,7 +1883,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a3=#TopLevelSendableClass164(any a0, any a1, any a2) { label_1: @@ -2053,7 +1895,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a4=#TopLevelSendableClass165(any a0, any a1, any a2) { label_1: @@ -2066,7 +1907,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a5=#TopLevelSendableClass166(any a0, any a1, any a2) { label_1: @@ -2079,7 +1919,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a6=#TopLevelSendableClass167(any a0, any a1, any a2) { label_1: @@ -2092,7 +1931,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a7=#TopLevelSendableClass168(any a0, any a1, any a2) { label_1: @@ -2105,7 +1943,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a8=#TopLevelSendableClass169(any a0, any a1, any a2) { label_1: @@ -2118,7 +1955,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a9=#TopLevelSendableClass170(any a0, any a1, any a2) { label_1: @@ -2131,7 +1967,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@a=#TopLevelSendableClass11(any a0, any a1, any a2) { label_1: @@ -2144,7 +1979,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@aa=#TopLevelSendableClass171(any a0, any a1, any a2) { label_1: @@ -2157,7 +1991,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ab=#TopLevelSendableClass172(any a0, any a1, any a2) { label_1: @@ -2170,7 +2003,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ac=#TopLevelSendableClass173(any a0, any a1, any a2) { label_1: @@ -2183,7 +2015,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ad=#TopLevelSendableClass174(any a0, any a1, any a2) { label_1: @@ -2196,7 +2027,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ae=#TopLevelSendableClass175(any a0, any a1, any a2) { label_1: @@ -2209,7 +2039,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@af=#TopLevelSendableClass176(any a0, any a1, any a2) { label_1: @@ -2222,7 +2051,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b0=#TopLevelSendableClass177(any a0, any a1, any a2) { label_1: @@ -2235,7 +2063,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b1=#TopLevelSendableClass178(any a0, any a1, any a2) { label_1: @@ -2248,7 +2075,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b2=#TopLevelSendableClass179(any a0, any a1, any a2) { label_1: @@ -2261,7 +2087,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b3=#TopLevelSendableClass180(any a0, any a1, any a2) { label_1: @@ -2274,7 +2099,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b4=#TopLevelSendableClass181(any a0, any a1, any a2) { label_1: @@ -2287,7 +2111,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b5=#TopLevelSendableClass182(any a0, any a1, any a2) { label_1: @@ -2300,7 +2123,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b6=#TopLevelSendableClass183(any a0, any a1, any a2) { label_1: @@ -2313,7 +2135,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b7=#TopLevelSendableClass184(any a0, any a1, any a2) { label_1: @@ -2326,7 +2147,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b8=#TopLevelSendableClass185(any a0, any a1, any a2) { label_1: @@ -2339,7 +2159,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b9=#TopLevelSendableClass186(any a0, any a1, any a2) { label_1: @@ -2352,7 +2171,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@b=#TopLevelSendableClass12(any a0, any a1, any a2) { label_1: @@ -2365,7 +2183,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ba=#TopLevelSendableClass187(any a0, any a1, any a2) { label_1: @@ -2378,7 +2195,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@bb=#TopLevelSendableClass188(any a0, any a1, any a2) { label_1: @@ -2391,7 +2207,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@bc=#TopLevelSendableClass189(any a0, any a1, any a2) { label_1: @@ -2404,7 +2219,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@bd=#TopLevelSendableClass190(any a0, any a1, any a2) { label_1: @@ -2417,7 +2231,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@be=#TopLevelSendableClass191(any a0, any a1, any a2) { label_1: @@ -2430,7 +2243,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@bf=#TopLevelSendableClass192(any a0, any a1, any a2) { label_1: @@ -2443,7 +2255,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c0=#TopLevelSendableClass193(any a0, any a1, any a2) { label_1: @@ -2456,7 +2267,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c1=#TopLevelSendableClass194(any a0, any a1, any a2) { label_1: @@ -2469,7 +2279,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c2=#TopLevelSendableClass195(any a0, any a1, any a2) { label_1: @@ -2482,7 +2291,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c3=#TopLevelSendableClass196(any a0, any a1, any a2) { label_1: @@ -2495,7 +2303,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c4=#TopLevelSendableClass197(any a0, any a1, any a2) { label_1: @@ -2508,7 +2315,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c5=#TopLevelSendableClass198(any a0, any a1, any a2) { label_1: @@ -2521,7 +2327,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c6=#TopLevelSendableClass199(any a0, any a1, any a2) { label_1: @@ -2534,7 +2339,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c7=#TopLevelSendableClass200(any a0, any a1, any a2) { label_1: @@ -2547,7 +2351,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c8=#TopLevelSendableClass201(any a0, any a1, any a2) { label_1: @@ -2560,7 +2363,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c9=#TopLevelSendableClass202(any a0, any a1, any a2) { label_1: @@ -2573,7 +2375,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@c=#TopLevelSendableClass13(any a0, any a1, any a2) { label_1: @@ -2586,7 +2387,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ca=#TopLevelSendableClass203(any a0, any a1, any a2) { label_1: @@ -2599,7 +2399,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@cb=#TopLevelSendableClass204(any a0, any a1, any a2) { label_1: @@ -2612,7 +2411,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@cc=#TopLevelSendableClass205(any a0, any a1, any a2) { label_1: @@ -2625,7 +2423,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@cd=#TopLevelSendableClass206(any a0, any a1, any a2) { label_1: @@ -2638,7 +2435,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ce=#TopLevelSendableClass207(any a0, any a1, any a2) { label_1: @@ -2651,7 +2447,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@cf=#TopLevelSendableClass208(any a0, any a1, any a2) { label_1: @@ -2664,7 +2459,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d0=#TopLevelSendableClass209(any a0, any a1, any a2) { label_1: @@ -2677,7 +2471,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d1=#TopLevelSendableClass210(any a0, any a1, any a2) { label_1: @@ -2690,7 +2483,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d2=#TopLevelSendableClass211(any a0, any a1, any a2) { label_1: @@ -2703,7 +2495,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d3=#TopLevelSendableClass212(any a0, any a1, any a2) { label_1: @@ -2716,7 +2507,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d4=#TopLevelSendableClass213(any a0, any a1, any a2) { label_1: @@ -2729,7 +2519,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d5=#TopLevelSendableClass214(any a0, any a1, any a2) { label_1: @@ -2742,7 +2531,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d6=#TopLevelSendableClass215(any a0, any a1, any a2) { label_1: @@ -2755,7 +2543,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d7=#TopLevelSendableClass216(any a0, any a1, any a2) { label_1: @@ -2768,7 +2555,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d8=#TopLevelSendableClass217(any a0, any a1, any a2) { label_1: @@ -2781,7 +2567,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d9=#TopLevelSendableClass218(any a0, any a1, any a2) { label_1: @@ -2794,7 +2579,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@d=#TopLevelSendableClass14(any a0, any a1, any a2) { label_1: @@ -2807,7 +2591,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@da=#TopLevelSendableClass219(any a0, any a1, any a2) { label_1: @@ -2820,7 +2603,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@db=#TopLevelSendableClass220(any a0, any a1, any a2) { label_1: @@ -2833,7 +2615,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@dc=#TopLevelSendableClass221(any a0, any a1, any a2) { label_1: @@ -2846,7 +2627,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@dd=#TopLevelSendableClass222(any a0, any a1, any a2) { label_1: @@ -2859,7 +2639,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@de=#TopLevelSendableClass223(any a0, any a1, any a2) { label_1: @@ -2872,7 +2651,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@df=#TopLevelSendableClass224(any a0, any a1, any a2) { label_1: @@ -2885,7 +2663,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e0=#TopLevelSendableClass225(any a0, any a1, any a2) { label_1: @@ -2898,7 +2675,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e1=#TopLevelSendableClass226(any a0, any a1, any a2) { label_1: @@ -2911,7 +2687,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e2=#TopLevelSendableClass227(any a0, any a1, any a2) { label_1: @@ -2924,7 +2699,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e3=#TopLevelSendableClass228(any a0, any a1, any a2) { label_1: @@ -2937,7 +2711,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e4=#TopLevelSendableClass229(any a0, any a1, any a2) { label_1: @@ -2950,7 +2723,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e5=#TopLevelSendableClass230(any a0, any a1, any a2) { label_1: @@ -2963,7 +2735,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e6=#TopLevelSendableClass231(any a0, any a1, any a2) { label_1: @@ -2976,7 +2747,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e7=#TopLevelSendableClass232(any a0, any a1, any a2) { label_1: @@ -2989,7 +2759,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e8=#TopLevelSendableClass233(any a0, any a1, any a2) { label_1: @@ -3002,7 +2771,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e9=#TopLevelSendableClass234(any a0, any a1, any a2) { label_1: @@ -3015,7 +2783,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@e=#TopLevelSendableClass15(any a0, any a1, any a2) { label_1: @@ -3028,7 +2795,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ea=#TopLevelSendableClass235(any a0, any a1, any a2) { label_1: @@ -3041,7 +2807,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@eb=#TopLevelSendableClass236(any a0, any a1, any a2) { label_1: @@ -3054,7 +2819,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ec=#TopLevelSendableClass237(any a0, any a1, any a2) { label_1: @@ -3067,7 +2831,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ed=#TopLevelSendableClass238(any a0, any a1, any a2) { label_1: @@ -3080,7 +2843,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ee=#TopLevelSendableClass239(any a0, any a1, any a2) { label_1: @@ -3093,7 +2855,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@ef=#TopLevelSendableClass240(any a0, any a1, any a2) { label_1: @@ -3106,7 +2867,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f0=#TopLevelSendableClass241(any a0, any a1, any a2) { label_1: @@ -3119,7 +2879,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f1=#TopLevelSendableClass242(any a0, any a1, any a2) { label_1: @@ -3132,7 +2891,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f2=#TopLevelSendableClass243(any a0, any a1, any a2) { label_1: @@ -3145,7 +2903,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f3=#TopLevelSendableClass244(any a0, any a1, any a2) { label_1: @@ -3158,7 +2915,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f4=#TopLevelSendableClass245(any a0, any a1, any a2) { label_1: @@ -3171,7 +2927,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f5=#TopLevelSendableClass246(any a0, any a1, any a2) { label_1: @@ -3184,7 +2939,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f6=#TopLevelSendableClass247(any a0, any a1, any a2) { label_1: @@ -3197,7 +2951,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f7=#TopLevelSendableClass248(any a0, any a1, any a2) { label_1: @@ -3210,7 +2963,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f8=#TopLevelSendableClass249(any a0, any a1, any a2) { label_1: @@ -3223,7 +2975,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f9=#TopLevelSendableClass250(any a0, any a1, any a2) { label_1: @@ -3236,7 +2987,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@f=#TopLevelSendableClass16(any a0, any a1, any a2) { label_1: @@ -3249,7 +2999,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@fa=#TopLevelSendableClass251(any a0, any a1, any a2) { label_1: @@ -3262,7 +3011,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@fb=#TopLevelSendableClass252(any a0, any a1, any a2) { label_1: @@ -3275,7 +3023,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@fc=#TopLevelSendableClass253(any a0, any a1, any a2) { label_1: @@ -3288,7 +3035,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@fd=#TopLevelSendableClass254(any a0, any a1, any a2) { label_1: @@ -3301,7 +3047,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@fe=#TopLevelSendableClass255(any a0, any a1, any a2) { label_1: @@ -3314,7 +3059,6 @@ label_2: } slotNum = 0x406 -expectedProperty = 0x101 .language ECMAScript .function any .#~@ff=#SendableTestClass1(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..4eb345368c176d8b5040719e8de9e473f4083ea9 --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,5907 @@ +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@0=#TopLevelSendableClass1(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@10=#TopLevelSendableClass17(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@11=#TopLevelSendableClass18(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@12=#TopLevelSendableClass19(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@13=#TopLevelSendableClass20(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@14=#TopLevelSendableClass21(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@15=#TopLevelSendableClass22(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@16=#TopLevelSendableClass23(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@17=#TopLevelSendableClass24(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@18=#TopLevelSendableClass25(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@19=#TopLevelSendableClass26(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@1=#TopLevelSendableClass2(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@1a=#TopLevelSendableClass27(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@1b=#TopLevelSendableClass28(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@1c=#TopLevelSendableClass29(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@1d=#TopLevelSendableClass30(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@1e=#TopLevelSendableClass31(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@1f=#TopLevelSendableClass32(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@20=#TopLevelSendableClass33(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@21=#TopLevelSendableClass34(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@22=#TopLevelSendableClass35(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@23=#TopLevelSendableClass36(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@24=#TopLevelSendableClass37(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@25=#TopLevelSendableClass38(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@26=#TopLevelSendableClass39(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@27=#TopLevelSendableClass40(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@28=#TopLevelSendableClass41(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@29=#TopLevelSendableClass42(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@2=#TopLevelSendableClass3(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@2a=#TopLevelSendableClass43(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@2b=#TopLevelSendableClass44(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@2c=#TopLevelSendableClass45(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@2d=#TopLevelSendableClass46(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@2e=#TopLevelSendableClass47(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@2f=#TopLevelSendableClass48(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@30=#TopLevelSendableClass49(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@31=#TopLevelSendableClass50(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@32=#TopLevelSendableClass51(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@33=#TopLevelSendableClass52(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@34=#TopLevelSendableClass53(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@35=#TopLevelSendableClass54(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@36=#TopLevelSendableClass55(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@37=#TopLevelSendableClass56(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@38=#TopLevelSendableClass57(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@39=#TopLevelSendableClass58(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@3=#TopLevelSendableClass4(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@3a=#TopLevelSendableClass59(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@3b=#TopLevelSendableClass60(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@3c=#TopLevelSendableClass61(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@3d=#TopLevelSendableClass62(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@3e=#TopLevelSendableClass63(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@3f=#TopLevelSendableClass64(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@40=#TopLevelSendableClass65(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@41=#TopLevelSendableClass66(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@42=#TopLevelSendableClass67(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@43=#TopLevelSendableClass68(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@44=#TopLevelSendableClass69(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@45=#TopLevelSendableClass70(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@46=#TopLevelSendableClass71(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@47=#TopLevelSendableClass72(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@48=#TopLevelSendableClass73(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@49=#TopLevelSendableClass74(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@4=#TopLevelSendableClass5(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@4a=#TopLevelSendableClass75(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@4b=#TopLevelSendableClass76(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@4c=#TopLevelSendableClass77(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@4d=#TopLevelSendableClass78(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@4e=#TopLevelSendableClass79(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@4f=#TopLevelSendableClass80(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@50=#TopLevelSendableClass81(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@51=#TopLevelSendableClass82(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@52=#TopLevelSendableClass83(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@53=#TopLevelSendableClass84(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@54=#TopLevelSendableClass85(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@55=#TopLevelSendableClass86(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@56=#TopLevelSendableClass87(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@57=#TopLevelSendableClass88(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@58=#TopLevelSendableClass89(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@59=#TopLevelSendableClass90(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@5=#TopLevelSendableClass6(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@5a=#TopLevelSendableClass91(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@5b=#TopLevelSendableClass92(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@5c=#TopLevelSendableClass93(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@5d=#TopLevelSendableClass94(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@5e=#TopLevelSendableClass95(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@5f=#TopLevelSendableClass96(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@60=#TopLevelSendableClass97(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@61=#TopLevelSendableClass98(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@62=#TopLevelSendableClass99(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@63=#TopLevelSendableClass100(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@64=#TopLevelSendableClass101(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@65=#TopLevelSendableClass102(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@66=#TopLevelSendableClass103(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@67=#TopLevelSendableClass104(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@68=#TopLevelSendableClass105(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@69=#TopLevelSendableClass106(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@6=#TopLevelSendableClass7(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@6a=#TopLevelSendableClass107(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@6b=#TopLevelSendableClass108(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@6c=#TopLevelSendableClass109(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@6d=#TopLevelSendableClass110(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@6e=#TopLevelSendableClass111(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@6f=#TopLevelSendableClass112(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@70=#TopLevelSendableClass113(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@71=#TopLevelSendableClass114(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@72=#TopLevelSendableClass115(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@73=#TopLevelSendableClass116(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@74=#TopLevelSendableClass117(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@75=#TopLevelSendableClass118(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@76=#TopLevelSendableClass119(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@77=#TopLevelSendableClass120(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@78=#TopLevelSendableClass121(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@79=#TopLevelSendableClass122(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@7=#TopLevelSendableClass8(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@7a=#TopLevelSendableClass123(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@7b=#TopLevelSendableClass124(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@7c=#TopLevelSendableClass125(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@7d=#TopLevelSendableClass126(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@7e=#TopLevelSendableClass127(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@7f=#TopLevelSendableClass128(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@80=#TopLevelSendableClass129(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@81=#TopLevelSendableClass130(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@82=#TopLevelSendableClass131(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@83=#TopLevelSendableClass132(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@84=#TopLevelSendableClass133(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@85=#TopLevelSendableClass134(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@86=#TopLevelSendableClass135(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@87=#TopLevelSendableClass136(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@88=#TopLevelSendableClass137(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@89=#TopLevelSendableClass138(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@8=#TopLevelSendableClass9(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@8a=#TopLevelSendableClass139(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@8b=#TopLevelSendableClass140(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@8c=#TopLevelSendableClass141(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@8d=#TopLevelSendableClass142(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@8e=#TopLevelSendableClass143(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@8f=#TopLevelSendableClass144(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@90=#TopLevelSendableClass145(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@91=#TopLevelSendableClass146(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@92=#TopLevelSendableClass147(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@93=#TopLevelSendableClass148(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@94=#TopLevelSendableClass149(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@95=#TopLevelSendableClass150(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@96=#TopLevelSendableClass151(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@97=#TopLevelSendableClass152(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@98=#TopLevelSendableClass153(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@99=#TopLevelSendableClass154(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@9=#TopLevelSendableClass10(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@9a=#TopLevelSendableClass155(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@9b=#TopLevelSendableClass156(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@9c=#TopLevelSendableClass157(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@9d=#TopLevelSendableClass158(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@9e=#TopLevelSendableClass159(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@9f=#TopLevelSendableClass160(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a0=#TopLevelSendableClass161(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a1=#TopLevelSendableClass162(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a2=#TopLevelSendableClass163(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a3=#TopLevelSendableClass164(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a4=#TopLevelSendableClass165(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a5=#TopLevelSendableClass166(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a6=#TopLevelSendableClass167(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a7=#TopLevelSendableClass168(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a8=#TopLevelSendableClass169(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a9=#TopLevelSendableClass170(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@a=#TopLevelSendableClass11(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@aa=#TopLevelSendableClass171(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ab=#TopLevelSendableClass172(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ac=#TopLevelSendableClass173(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ad=#TopLevelSendableClass174(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ae=#TopLevelSendableClass175(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@af=#TopLevelSendableClass176(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b0=#TopLevelSendableClass177(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b1=#TopLevelSendableClass178(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b2=#TopLevelSendableClass179(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b3=#TopLevelSendableClass180(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b4=#TopLevelSendableClass181(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b5=#TopLevelSendableClass182(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b6=#TopLevelSendableClass183(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b7=#TopLevelSendableClass184(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b8=#TopLevelSendableClass185(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b9=#TopLevelSendableClass186(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@b=#TopLevelSendableClass12(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ba=#TopLevelSendableClass187(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@bb=#TopLevelSendableClass188(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@bc=#TopLevelSendableClass189(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@bd=#TopLevelSendableClass190(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@be=#TopLevelSendableClass191(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@bf=#TopLevelSendableClass192(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c0=#TopLevelSendableClass193(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c1=#TopLevelSendableClass194(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c2=#TopLevelSendableClass195(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c3=#TopLevelSendableClass196(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c4=#TopLevelSendableClass197(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c5=#TopLevelSendableClass198(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c6=#TopLevelSendableClass199(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c7=#TopLevelSendableClass200(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c8=#TopLevelSendableClass201(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c9=#TopLevelSendableClass202(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@c=#TopLevelSendableClass13(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ca=#TopLevelSendableClass203(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@cb=#TopLevelSendableClass204(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@cc=#TopLevelSendableClass205(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@cd=#TopLevelSendableClass206(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ce=#TopLevelSendableClass207(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@cf=#TopLevelSendableClass208(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d0=#TopLevelSendableClass209(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d1=#TopLevelSendableClass210(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d2=#TopLevelSendableClass211(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d3=#TopLevelSendableClass212(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d4=#TopLevelSendableClass213(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d5=#TopLevelSendableClass214(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d6=#TopLevelSendableClass215(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d7=#TopLevelSendableClass216(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d8=#TopLevelSendableClass217(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d9=#TopLevelSendableClass218(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@d=#TopLevelSendableClass14(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@da=#TopLevelSendableClass219(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@db=#TopLevelSendableClass220(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@dc=#TopLevelSendableClass221(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@dd=#TopLevelSendableClass222(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@de=#TopLevelSendableClass223(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@df=#TopLevelSendableClass224(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e0=#TopLevelSendableClass225(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e1=#TopLevelSendableClass226(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e2=#TopLevelSendableClass227(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e3=#TopLevelSendableClass228(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e4=#TopLevelSendableClass229(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e5=#TopLevelSendableClass230(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e6=#TopLevelSendableClass231(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e7=#TopLevelSendableClass232(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e8=#TopLevelSendableClass233(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e9=#TopLevelSendableClass234(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@e=#TopLevelSendableClass15(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ea=#TopLevelSendableClass235(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@eb=#TopLevelSendableClass236(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ec=#TopLevelSendableClass237(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ed=#TopLevelSendableClass238(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ee=#TopLevelSendableClass239(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@ef=#TopLevelSendableClass240(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f0=#TopLevelSendableClass241(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f1=#TopLevelSendableClass242(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f2=#TopLevelSendableClass243(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f3=#TopLevelSendableClass244(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f4=#TopLevelSendableClass245(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f5=#TopLevelSendableClass246(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f6=#TopLevelSendableClass247(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f7=#TopLevelSendableClass248(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f8=#TopLevelSendableClass249(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f9=#TopLevelSendableClass250(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@f=#TopLevelSendableClass16(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@fa=#TopLevelSendableClass251(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@fb=#TopLevelSendableClass252(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@fc=#TopLevelSendableClass253(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@fd=#TopLevelSendableClass254(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@fe=#TopLevelSendableClass255(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x406 +expectedProperty = 0x101 +.language ECMAScript +.function any .#~@ff=#SendableTestClass1(any a0, any a1, any a2) { +label_1: +label_0: + callruntime.ldsendablevar 0x0, 0x0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass1 + mov v1, v0 + newobjrange 0x0, 0x1, v1 + stobjbyname 0x2, a1, a2 + callruntime.ldsendablevar 0x0, 0x1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass2 + mov v1, v0 + newobjrange 0x4, 0x1, v1 + stobjbyname 0x6, a2, a2 + callruntime.ldsendablevar 0x0, 0x2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass3 + mov v1, v0 + newobjrange 0x8, 0x1, v1 + stobjbyname 0xa, a3, a2 + callruntime.ldsendablevar 0x0, 0x3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass4 + mov v1, v0 + newobjrange 0xc, 0x1, v1 + stobjbyname 0xe, a4, a2 + callruntime.ldsendablevar 0x0, 0x4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass5 + mov v1, v0 + newobjrange 0x10, 0x1, v1 + stobjbyname 0x12, a5, a2 + callruntime.ldsendablevar 0x0, 0x5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass6 + mov v1, v0 + newobjrange 0x14, 0x1, v1 + stobjbyname 0x16, a6, a2 + callruntime.ldsendablevar 0x0, 0x6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass7 + mov v1, v0 + newobjrange 0x18, 0x1, v1 + stobjbyname 0x1a, a7, a2 + callruntime.ldsendablevar 0x0, 0x7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass8 + mov v1, v0 + newobjrange 0x1c, 0x1, v1 + stobjbyname 0x1e, a8, a2 + callruntime.ldsendablevar 0x0, 0x8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass9 + mov v1, v0 + newobjrange 0x20, 0x1, v1 + stobjbyname 0x22, a9, a2 + callruntime.ldsendablevar 0x0, 0x9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass10 + mov v1, v0 + newobjrange 0x24, 0x1, v1 + stobjbyname 0x26, a10, a2 + callruntime.ldsendablevar 0x0, 0xa + sta v0 + throw.undefinedifholewithname TopLevelSendableClass11 + mov v1, v0 + newobjrange 0x28, 0x1, v1 + stobjbyname 0x2a, a11, a2 + callruntime.ldsendablevar 0x0, 0xb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass12 + mov v1, v0 + newobjrange 0x2c, 0x1, v1 + stobjbyname 0x2e, a12, a2 + callruntime.ldsendablevar 0x0, 0xc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass13 + mov v1, v0 + newobjrange 0x30, 0x1, v1 + stobjbyname 0x32, a13, a2 + callruntime.ldsendablevar 0x0, 0xd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass14 + mov v1, v0 + newobjrange 0x34, 0x1, v1 + stobjbyname 0x36, a14, a2 + callruntime.ldsendablevar 0x0, 0xe + sta v0 + throw.undefinedifholewithname TopLevelSendableClass15 + mov v1, v0 + newobjrange 0x38, 0x1, v1 + stobjbyname 0x3a, a15, a2 + callruntime.ldsendablevar 0x0, 0xf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass16 + mov v1, v0 + newobjrange 0x3c, 0x1, v1 + stobjbyname 0x3e, a16, a2 + callruntime.ldsendablevar 0x0, 0x10 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass17 + mov v1, v0 + newobjrange 0x40, 0x1, v1 + stobjbyname 0x42, a17, a2 + callruntime.ldsendablevar 0x0, 0x11 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass18 + mov v1, v0 + newobjrange 0x44, 0x1, v1 + stobjbyname 0x46, a18, a2 + callruntime.ldsendablevar 0x0, 0x12 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass19 + mov v1, v0 + newobjrange 0x48, 0x1, v1 + stobjbyname 0x4a, a19, a2 + callruntime.ldsendablevar 0x0, 0x13 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass20 + mov v1, v0 + newobjrange 0x4c, 0x1, v1 + stobjbyname 0x4e, a20, a2 + callruntime.ldsendablevar 0x0, 0x14 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass21 + mov v1, v0 + newobjrange 0x50, 0x1, v1 + stobjbyname 0x52, a21, a2 + callruntime.ldsendablevar 0x0, 0x15 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass22 + mov v1, v0 + newobjrange 0x54, 0x1, v1 + stobjbyname 0x56, a22, a2 + callruntime.ldsendablevar 0x0, 0x16 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass23 + mov v1, v0 + newobjrange 0x58, 0x1, v1 + stobjbyname 0x5a, a23, a2 + callruntime.ldsendablevar 0x0, 0x17 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass24 + mov v1, v0 + newobjrange 0x5c, 0x1, v1 + stobjbyname 0x5e, a24, a2 + callruntime.ldsendablevar 0x0, 0x18 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass25 + mov v1, v0 + newobjrange 0x60, 0x1, v1 + stobjbyname 0x62, a25, a2 + callruntime.ldsendablevar 0x0, 0x19 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass26 + mov v1, v0 + newobjrange 0x64, 0x1, v1 + stobjbyname 0x66, a26, a2 + callruntime.ldsendablevar 0x0, 0x1a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass27 + mov v1, v0 + newobjrange 0x68, 0x1, v1 + stobjbyname 0x6a, a27, a2 + callruntime.ldsendablevar 0x0, 0x1b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass28 + mov v1, v0 + newobjrange 0x6c, 0x1, v1 + stobjbyname 0x6e, a28, a2 + callruntime.ldsendablevar 0x0, 0x1c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass29 + mov v1, v0 + newobjrange 0x70, 0x1, v1 + stobjbyname 0x72, a29, a2 + callruntime.ldsendablevar 0x0, 0x1d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass30 + mov v1, v0 + newobjrange 0x74, 0x1, v1 + stobjbyname 0x76, a30, a2 + callruntime.ldsendablevar 0x0, 0x1e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass31 + mov v1, v0 + newobjrange 0x78, 0x1, v1 + stobjbyname 0x7a, a31, a2 + callruntime.ldsendablevar 0x0, 0x1f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass32 + mov v1, v0 + newobjrange 0x7c, 0x1, v1 + stobjbyname 0x7e, a32, a2 + callruntime.ldsendablevar 0x0, 0x20 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass33 + mov v1, v0 + newobjrange 0x80, 0x1, v1 + stobjbyname 0x82, a33, a2 + callruntime.ldsendablevar 0x0, 0x21 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass34 + mov v1, v0 + newobjrange 0x84, 0x1, v1 + stobjbyname 0x86, a34, a2 + callruntime.ldsendablevar 0x0, 0x22 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass35 + mov v1, v0 + newobjrange 0x88, 0x1, v1 + stobjbyname 0x8a, a35, a2 + callruntime.ldsendablevar 0x0, 0x23 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass36 + mov v1, v0 + newobjrange 0x8c, 0x1, v1 + stobjbyname 0x8e, a36, a2 + callruntime.ldsendablevar 0x0, 0x24 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass37 + mov v1, v0 + newobjrange 0x90, 0x1, v1 + stobjbyname 0x92, a37, a2 + callruntime.ldsendablevar 0x0, 0x25 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass38 + mov v1, v0 + newobjrange 0x94, 0x1, v1 + stobjbyname 0x96, a38, a2 + callruntime.ldsendablevar 0x0, 0x26 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass39 + mov v1, v0 + newobjrange 0x98, 0x1, v1 + stobjbyname 0x9a, a39, a2 + callruntime.ldsendablevar 0x0, 0x27 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass40 + mov v1, v0 + newobjrange 0x9c, 0x1, v1 + stobjbyname 0x9e, a40, a2 + callruntime.ldsendablevar 0x0, 0x28 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass41 + mov v1, v0 + newobjrange 0xa0, 0x1, v1 + stobjbyname 0xa2, a41, a2 + callruntime.ldsendablevar 0x0, 0x29 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass42 + mov v1, v0 + newobjrange 0xa4, 0x1, v1 + stobjbyname 0xa6, a42, a2 + callruntime.ldsendablevar 0x0, 0x2a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass43 + mov v1, v0 + newobjrange 0xa8, 0x1, v1 + stobjbyname 0xaa, a43, a2 + callruntime.ldsendablevar 0x0, 0x2b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass44 + mov v1, v0 + newobjrange 0xac, 0x1, v1 + stobjbyname 0xae, a44, a2 + callruntime.ldsendablevar 0x0, 0x2c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass45 + mov v1, v0 + newobjrange 0xb0, 0x1, v1 + stobjbyname 0xb2, a45, a2 + callruntime.ldsendablevar 0x0, 0x2d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass46 + mov v1, v0 + newobjrange 0xb4, 0x1, v1 + stobjbyname 0xb6, a46, a2 + callruntime.ldsendablevar 0x0, 0x2e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass47 + mov v1, v0 + newobjrange 0xb8, 0x1, v1 + stobjbyname 0xba, a47, a2 + callruntime.ldsendablevar 0x0, 0x2f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass48 + mov v1, v0 + newobjrange 0xbc, 0x1, v1 + stobjbyname 0xbe, a48, a2 + callruntime.ldsendablevar 0x0, 0x30 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass49 + mov v1, v0 + newobjrange 0xc0, 0x1, v1 + stobjbyname 0xc2, a49, a2 + callruntime.ldsendablevar 0x0, 0x31 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass50 + mov v1, v0 + newobjrange 0xc4, 0x1, v1 + stobjbyname 0xc6, a50, a2 + callruntime.ldsendablevar 0x0, 0x32 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass51 + mov v1, v0 + newobjrange 0xc8, 0x1, v1 + stobjbyname 0xca, a51, a2 + callruntime.ldsendablevar 0x0, 0x33 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass52 + mov v1, v0 + newobjrange 0xcc, 0x1, v1 + stobjbyname 0xce, a52, a2 + callruntime.ldsendablevar 0x0, 0x34 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass53 + mov v1, v0 + newobjrange 0xd0, 0x1, v1 + stobjbyname 0xd2, a53, a2 + callruntime.ldsendablevar 0x0, 0x35 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass54 + mov v1, v0 + newobjrange 0xd4, 0x1, v1 + stobjbyname 0xd6, a54, a2 + callruntime.ldsendablevar 0x0, 0x36 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass55 + mov v1, v0 + newobjrange 0xd8, 0x1, v1 + stobjbyname 0xda, a55, a2 + callruntime.ldsendablevar 0x0, 0x37 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass56 + mov v1, v0 + newobjrange 0xdc, 0x1, v1 + stobjbyname 0xde, a56, a2 + callruntime.ldsendablevar 0x0, 0x38 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass57 + mov v1, v0 + newobjrange 0xe0, 0x1, v1 + stobjbyname 0xe2, a57, a2 + callruntime.ldsendablevar 0x0, 0x39 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass58 + mov v1, v0 + newobjrange 0xe4, 0x1, v1 + stobjbyname 0xe6, a58, a2 + callruntime.ldsendablevar 0x0, 0x3a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass59 + mov v1, v0 + newobjrange 0xe8, 0x1, v1 + stobjbyname 0xea, a59, a2 + callruntime.ldsendablevar 0x0, 0x3b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass60 + mov v1, v0 + newobjrange 0xec, 0x1, v1 + stobjbyname 0xee, a60, a2 + callruntime.ldsendablevar 0x0, 0x3c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass61 + mov v1, v0 + newobjrange 0xf0, 0x1, v1 + stobjbyname 0xf2, a61, a2 + callruntime.ldsendablevar 0x0, 0x3d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass62 + mov v1, v0 + newobjrange 0xf4, 0x1, v1 + stobjbyname 0xf6, a62, a2 + callruntime.ldsendablevar 0x0, 0x3e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass63 + mov v1, v0 + newobjrange 0xf8, 0x1, v1 + stobjbyname 0xfa, a63, a2 + callruntime.ldsendablevar 0x0, 0x3f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass64 + mov v1, v0 + newobjrange 0xfc, 0x1, v1 + stobjbyname 0x100, a64, a2 + callruntime.ldsendablevar 0x0, 0x40 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass65 + mov v1, v0 + newobjrange 0x102, 0x1, v1 + stobjbyname 0x104, a65, a2 + callruntime.ldsendablevar 0x0, 0x41 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass66 + mov v1, v0 + newobjrange 0x106, 0x1, v1 + stobjbyname 0x108, a66, a2 + callruntime.ldsendablevar 0x0, 0x42 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass67 + mov v1, v0 + newobjrange 0x10a, 0x1, v1 + stobjbyname 0x10c, a67, a2 + callruntime.ldsendablevar 0x0, 0x43 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass68 + mov v1, v0 + newobjrange 0x10e, 0x1, v1 + stobjbyname 0x110, a68, a2 + callruntime.ldsendablevar 0x0, 0x44 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass69 + mov v1, v0 + newobjrange 0x112, 0x1, v1 + stobjbyname 0x114, a69, a2 + callruntime.ldsendablevar 0x0, 0x45 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass70 + mov v1, v0 + newobjrange 0x116, 0x1, v1 + stobjbyname 0x118, a70, a2 + callruntime.ldsendablevar 0x0, 0x46 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass71 + mov v1, v0 + newobjrange 0x11a, 0x1, v1 + stobjbyname 0x11c, a71, a2 + callruntime.ldsendablevar 0x0, 0x47 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass72 + mov v1, v0 + newobjrange 0x11e, 0x1, v1 + stobjbyname 0x120, a72, a2 + callruntime.ldsendablevar 0x0, 0x48 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass73 + mov v1, v0 + newobjrange 0x122, 0x1, v1 + stobjbyname 0x124, a73, a2 + callruntime.ldsendablevar 0x0, 0x49 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass74 + mov v1, v0 + newobjrange 0x126, 0x1, v1 + stobjbyname 0x128, a74, a2 + callruntime.ldsendablevar 0x0, 0x4a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass75 + mov v1, v0 + newobjrange 0x12a, 0x1, v1 + stobjbyname 0x12c, a75, a2 + callruntime.ldsendablevar 0x0, 0x4b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass76 + mov v1, v0 + newobjrange 0x12e, 0x1, v1 + stobjbyname 0x130, a76, a2 + callruntime.ldsendablevar 0x0, 0x4c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass77 + mov v1, v0 + newobjrange 0x132, 0x1, v1 + stobjbyname 0x134, a77, a2 + callruntime.ldsendablevar 0x0, 0x4d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass78 + mov v1, v0 + newobjrange 0x136, 0x1, v1 + stobjbyname 0x138, a78, a2 + callruntime.ldsendablevar 0x0, 0x4e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass79 + mov v1, v0 + newobjrange 0x13a, 0x1, v1 + stobjbyname 0x13c, a79, a2 + callruntime.ldsendablevar 0x0, 0x4f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass80 + mov v1, v0 + newobjrange 0x13e, 0x1, v1 + stobjbyname 0x140, a80, a2 + callruntime.ldsendablevar 0x0, 0x50 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass81 + mov v1, v0 + newobjrange 0x142, 0x1, v1 + stobjbyname 0x144, a81, a2 + callruntime.ldsendablevar 0x0, 0x51 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass82 + mov v1, v0 + newobjrange 0x146, 0x1, v1 + stobjbyname 0x148, a82, a2 + callruntime.ldsendablevar 0x0, 0x52 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass83 + mov v1, v0 + newobjrange 0x14a, 0x1, v1 + stobjbyname 0x14c, a83, a2 + callruntime.ldsendablevar 0x0, 0x53 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass84 + mov v1, v0 + newobjrange 0x14e, 0x1, v1 + stobjbyname 0x150, a84, a2 + callruntime.ldsendablevar 0x0, 0x54 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass85 + mov v1, v0 + newobjrange 0x152, 0x1, v1 + stobjbyname 0x154, a85, a2 + callruntime.ldsendablevar 0x0, 0x55 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass86 + mov v1, v0 + newobjrange 0x156, 0x1, v1 + stobjbyname 0x158, a86, a2 + callruntime.ldsendablevar 0x0, 0x56 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass87 + mov v1, v0 + newobjrange 0x15a, 0x1, v1 + stobjbyname 0x15c, a87, a2 + callruntime.ldsendablevar 0x0, 0x57 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass88 + mov v1, v0 + newobjrange 0x15e, 0x1, v1 + stobjbyname 0x160, a88, a2 + callruntime.ldsendablevar 0x0, 0x58 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass89 + mov v1, v0 + newobjrange 0x162, 0x1, v1 + stobjbyname 0x164, a89, a2 + callruntime.ldsendablevar 0x0, 0x59 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass90 + mov v1, v0 + newobjrange 0x166, 0x1, v1 + stobjbyname 0x168, a90, a2 + callruntime.ldsendablevar 0x0, 0x5a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass91 + mov v1, v0 + newobjrange 0x16a, 0x1, v1 + stobjbyname 0x16c, a91, a2 + callruntime.ldsendablevar 0x0, 0x5b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass92 + mov v1, v0 + newobjrange 0x16e, 0x1, v1 + stobjbyname 0x170, a92, a2 + callruntime.ldsendablevar 0x0, 0x5c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass93 + mov v1, v0 + newobjrange 0x172, 0x1, v1 + stobjbyname 0x174, a93, a2 + callruntime.ldsendablevar 0x0, 0x5d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass94 + mov v1, v0 + newobjrange 0x176, 0x1, v1 + stobjbyname 0x178, a94, a2 + callruntime.ldsendablevar 0x0, 0x5e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass95 + mov v1, v0 + newobjrange 0x17a, 0x1, v1 + stobjbyname 0x17c, a95, a2 + callruntime.ldsendablevar 0x0, 0x5f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass96 + mov v1, v0 + newobjrange 0x17e, 0x1, v1 + stobjbyname 0x180, a96, a2 + callruntime.ldsendablevar 0x0, 0x60 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass97 + mov v1, v0 + newobjrange 0x182, 0x1, v1 + stobjbyname 0x184, a97, a2 + callruntime.ldsendablevar 0x0, 0x61 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass98 + mov v1, v0 + newobjrange 0x186, 0x1, v1 + stobjbyname 0x188, a98, a2 + callruntime.ldsendablevar 0x0, 0x62 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass99 + mov v1, v0 + newobjrange 0x18a, 0x1, v1 + stobjbyname 0x18c, a99, a2 + callruntime.ldsendablevar 0x0, 0x63 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass100 + mov v1, v0 + newobjrange 0x18e, 0x1, v1 + stobjbyname 0x190, a100, a2 + callruntime.ldsendablevar 0x0, 0x64 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass101 + mov v1, v0 + newobjrange 0x192, 0x1, v1 + stobjbyname 0x194, a101, a2 + callruntime.ldsendablevar 0x0, 0x65 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass102 + mov v1, v0 + newobjrange 0x196, 0x1, v1 + stobjbyname 0x198, a102, a2 + callruntime.ldsendablevar 0x0, 0x66 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass103 + mov v1, v0 + newobjrange 0x19a, 0x1, v1 + stobjbyname 0x19c, a103, a2 + callruntime.ldsendablevar 0x0, 0x67 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass104 + mov v1, v0 + newobjrange 0x19e, 0x1, v1 + stobjbyname 0x1a0, a104, a2 + callruntime.ldsendablevar 0x0, 0x68 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass105 + mov v1, v0 + newobjrange 0x1a2, 0x1, v1 + stobjbyname 0x1a4, a105, a2 + callruntime.ldsendablevar 0x0, 0x69 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass106 + mov v1, v0 + newobjrange 0x1a6, 0x1, v1 + stobjbyname 0x1a8, a106, a2 + callruntime.ldsendablevar 0x0, 0x6a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass107 + mov v1, v0 + newobjrange 0x1aa, 0x1, v1 + stobjbyname 0x1ac, a107, a2 + callruntime.ldsendablevar 0x0, 0x6b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass108 + mov v1, v0 + newobjrange 0x1ae, 0x1, v1 + stobjbyname 0x1b0, a108, a2 + callruntime.ldsendablevar 0x0, 0x6c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass109 + mov v1, v0 + newobjrange 0x1b2, 0x1, v1 + stobjbyname 0x1b4, a109, a2 + callruntime.ldsendablevar 0x0, 0x6d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass110 + mov v1, v0 + newobjrange 0x1b6, 0x1, v1 + stobjbyname 0x1b8, a110, a2 + callruntime.ldsendablevar 0x0, 0x6e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass111 + mov v1, v0 + newobjrange 0x1ba, 0x1, v1 + stobjbyname 0x1bc, a111, a2 + callruntime.ldsendablevar 0x0, 0x6f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass112 + mov v1, v0 + newobjrange 0x1be, 0x1, v1 + stobjbyname 0x1c0, a112, a2 + callruntime.ldsendablevar 0x0, 0x70 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass113 + mov v1, v0 + newobjrange 0x1c2, 0x1, v1 + stobjbyname 0x1c4, a113, a2 + callruntime.ldsendablevar 0x0, 0x71 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass114 + mov v1, v0 + newobjrange 0x1c6, 0x1, v1 + stobjbyname 0x1c8, a114, a2 + callruntime.ldsendablevar 0x0, 0x72 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass115 + mov v1, v0 + newobjrange 0x1ca, 0x1, v1 + stobjbyname 0x1cc, a115, a2 + callruntime.ldsendablevar 0x0, 0x73 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass116 + mov v1, v0 + newobjrange 0x1ce, 0x1, v1 + stobjbyname 0x1d0, a116, a2 + callruntime.ldsendablevar 0x0, 0x74 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass117 + mov v1, v0 + newobjrange 0x1d2, 0x1, v1 + stobjbyname 0x1d4, a117, a2 + callruntime.ldsendablevar 0x0, 0x75 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass118 + mov v1, v0 + newobjrange 0x1d6, 0x1, v1 + stobjbyname 0x1d8, a118, a2 + callruntime.ldsendablevar 0x0, 0x76 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass119 + mov v1, v0 + newobjrange 0x1da, 0x1, v1 + stobjbyname 0x1dc, a119, a2 + callruntime.ldsendablevar 0x0, 0x77 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass120 + mov v1, v0 + newobjrange 0x1de, 0x1, v1 + stobjbyname 0x1e0, a120, a2 + callruntime.ldsendablevar 0x0, 0x78 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass121 + mov v1, v0 + newobjrange 0x1e2, 0x1, v1 + stobjbyname 0x1e4, a121, a2 + callruntime.ldsendablevar 0x0, 0x79 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass122 + mov v1, v0 + newobjrange 0x1e6, 0x1, v1 + stobjbyname 0x1e8, a122, a2 + callruntime.ldsendablevar 0x0, 0x7a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass123 + mov v1, v0 + newobjrange 0x1ea, 0x1, v1 + stobjbyname 0x1ec, a123, a2 + callruntime.ldsendablevar 0x0, 0x7b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass124 + mov v1, v0 + newobjrange 0x1ee, 0x1, v1 + stobjbyname 0x1f0, a124, a2 + callruntime.ldsendablevar 0x0, 0x7c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass125 + mov v1, v0 + newobjrange 0x1f2, 0x1, v1 + stobjbyname 0x1f4, a125, a2 + callruntime.ldsendablevar 0x0, 0x7d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass126 + mov v1, v0 + newobjrange 0x1f6, 0x1, v1 + stobjbyname 0x1f8, a126, a2 + callruntime.ldsendablevar 0x0, 0x7e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass127 + mov v1, v0 + newobjrange 0x1fa, 0x1, v1 + stobjbyname 0x1fc, a127, a2 + callruntime.ldsendablevar 0x0, 0x7f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass128 + mov v1, v0 + newobjrange 0x1fe, 0x1, v1 + stobjbyname 0x200, a128, a2 + callruntime.wideldsendablevar 0x0, 0x80 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass129 + mov v1, v0 + newobjrange 0x202, 0x1, v1 + stobjbyname 0x204, a129, a2 + callruntime.wideldsendablevar 0x0, 0x81 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass130 + mov v1, v0 + newobjrange 0x206, 0x1, v1 + stobjbyname 0x208, a130, a2 + callruntime.wideldsendablevar 0x0, 0x82 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass131 + mov v1, v0 + newobjrange 0x20a, 0x1, v1 + stobjbyname 0x20c, a131, a2 + callruntime.wideldsendablevar 0x0, 0x83 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass132 + mov v1, v0 + newobjrange 0x20e, 0x1, v1 + stobjbyname 0x210, a132, a2 + callruntime.wideldsendablevar 0x0, 0x84 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass133 + mov v1, v0 + newobjrange 0x212, 0x1, v1 + stobjbyname 0x214, a133, a2 + callruntime.wideldsendablevar 0x0, 0x85 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass134 + mov v1, v0 + newobjrange 0x216, 0x1, v1 + stobjbyname 0x218, a134, a2 + callruntime.wideldsendablevar 0x0, 0x86 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass135 + mov v1, v0 + newobjrange 0x21a, 0x1, v1 + stobjbyname 0x21c, a135, a2 + callruntime.wideldsendablevar 0x0, 0x87 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass136 + mov v1, v0 + newobjrange 0x21e, 0x1, v1 + stobjbyname 0x220, a136, a2 + callruntime.wideldsendablevar 0x0, 0x88 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass137 + mov v1, v0 + newobjrange 0x222, 0x1, v1 + stobjbyname 0x224, a137, a2 + callruntime.wideldsendablevar 0x0, 0x89 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass138 + mov v1, v0 + newobjrange 0x226, 0x1, v1 + stobjbyname 0x228, a138, a2 + callruntime.wideldsendablevar 0x0, 0x8a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass139 + mov v1, v0 + newobjrange 0x22a, 0x1, v1 + stobjbyname 0x22c, a139, a2 + callruntime.wideldsendablevar 0x0, 0x8b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass140 + mov v1, v0 + newobjrange 0x22e, 0x1, v1 + stobjbyname 0x230, a140, a2 + callruntime.wideldsendablevar 0x0, 0x8c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass141 + mov v1, v0 + newobjrange 0x232, 0x1, v1 + stobjbyname 0x234, a141, a2 + callruntime.wideldsendablevar 0x0, 0x8d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass142 + mov v1, v0 + newobjrange 0x236, 0x1, v1 + stobjbyname 0x238, a142, a2 + callruntime.wideldsendablevar 0x0, 0x8e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass143 + mov v1, v0 + newobjrange 0x23a, 0x1, v1 + stobjbyname 0x23c, a143, a2 + callruntime.wideldsendablevar 0x0, 0x8f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass144 + mov v1, v0 + newobjrange 0x23e, 0x1, v1 + stobjbyname 0x240, a144, a2 + callruntime.wideldsendablevar 0x0, 0x90 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass145 + mov v1, v0 + newobjrange 0x242, 0x1, v1 + stobjbyname 0x244, a145, a2 + callruntime.wideldsendablevar 0x0, 0x91 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass146 + mov v1, v0 + newobjrange 0x246, 0x1, v1 + stobjbyname 0x248, a146, a2 + callruntime.wideldsendablevar 0x0, 0x92 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass147 + mov v1, v0 + newobjrange 0x24a, 0x1, v1 + stobjbyname 0x24c, a147, a2 + callruntime.wideldsendablevar 0x0, 0x93 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass148 + mov v1, v0 + newobjrange 0x24e, 0x1, v1 + stobjbyname 0x250, a148, a2 + callruntime.wideldsendablevar 0x0, 0x94 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass149 + mov v1, v0 + newobjrange 0x252, 0x1, v1 + stobjbyname 0x254, a149, a2 + callruntime.wideldsendablevar 0x0, 0x95 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass150 + mov v1, v0 + newobjrange 0x256, 0x1, v1 + stobjbyname 0x258, a150, a2 + callruntime.wideldsendablevar 0x0, 0x96 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass151 + mov v1, v0 + newobjrange 0x25a, 0x1, v1 + stobjbyname 0x25c, a151, a2 + callruntime.wideldsendablevar 0x0, 0x97 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass152 + mov v1, v0 + newobjrange 0x25e, 0x1, v1 + stobjbyname 0x260, a152, a2 + callruntime.wideldsendablevar 0x0, 0x98 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass153 + mov v1, v0 + newobjrange 0x262, 0x1, v1 + stobjbyname 0x264, a153, a2 + callruntime.wideldsendablevar 0x0, 0x99 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass154 + mov v1, v0 + newobjrange 0x266, 0x1, v1 + stobjbyname 0x268, a154, a2 + callruntime.wideldsendablevar 0x0, 0x9a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass155 + mov v1, v0 + newobjrange 0x26a, 0x1, v1 + stobjbyname 0x26c, a155, a2 + callruntime.wideldsendablevar 0x0, 0x9b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass156 + mov v1, v0 + newobjrange 0x26e, 0x1, v1 + stobjbyname 0x270, a156, a2 + callruntime.wideldsendablevar 0x0, 0x9c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass157 + mov v1, v0 + newobjrange 0x272, 0x1, v1 + stobjbyname 0x274, a157, a2 + callruntime.wideldsendablevar 0x0, 0x9d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass158 + mov v1, v0 + newobjrange 0x276, 0x1, v1 + stobjbyname 0x278, a158, a2 + callruntime.wideldsendablevar 0x0, 0x9e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass159 + mov v1, v0 + newobjrange 0x27a, 0x1, v1 + stobjbyname 0x27c, a159, a2 + callruntime.wideldsendablevar 0x0, 0x9f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass160 + mov v1, v0 + newobjrange 0x27e, 0x1, v1 + stobjbyname 0x280, a160, a2 + callruntime.wideldsendablevar 0x0, 0xa0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass161 + mov v1, v0 + newobjrange 0x282, 0x1, v1 + stobjbyname 0x284, a161, a2 + callruntime.wideldsendablevar 0x0, 0xa1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass162 + mov v1, v0 + newobjrange 0x286, 0x1, v1 + stobjbyname 0x288, a162, a2 + callruntime.wideldsendablevar 0x0, 0xa2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass163 + mov v1, v0 + newobjrange 0x28a, 0x1, v1 + stobjbyname 0x28c, a163, a2 + callruntime.wideldsendablevar 0x0, 0xa3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass164 + mov v1, v0 + newobjrange 0x28e, 0x1, v1 + stobjbyname 0x290, a164, a2 + callruntime.wideldsendablevar 0x0, 0xa4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass165 + mov v1, v0 + newobjrange 0x292, 0x1, v1 + stobjbyname 0x294, a165, a2 + callruntime.wideldsendablevar 0x0, 0xa5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass166 + mov v1, v0 + newobjrange 0x296, 0x1, v1 + stobjbyname 0x298, a166, a2 + callruntime.wideldsendablevar 0x0, 0xa6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass167 + mov v1, v0 + newobjrange 0x29a, 0x1, v1 + stobjbyname 0x29c, a167, a2 + callruntime.wideldsendablevar 0x0, 0xa7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass168 + mov v1, v0 + newobjrange 0x29e, 0x1, v1 + stobjbyname 0x2a0, a168, a2 + callruntime.wideldsendablevar 0x0, 0xa8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass169 + mov v1, v0 + newobjrange 0x2a2, 0x1, v1 + stobjbyname 0x2a4, a169, a2 + callruntime.wideldsendablevar 0x0, 0xa9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass170 + mov v1, v0 + newobjrange 0x2a6, 0x1, v1 + stobjbyname 0x2a8, a170, a2 + callruntime.wideldsendablevar 0x0, 0xaa + sta v0 + throw.undefinedifholewithname TopLevelSendableClass171 + mov v1, v0 + newobjrange 0x2aa, 0x1, v1 + stobjbyname 0x2ac, a171, a2 + callruntime.wideldsendablevar 0x0, 0xab + sta v0 + throw.undefinedifholewithname TopLevelSendableClass172 + mov v1, v0 + newobjrange 0x2ae, 0x1, v1 + stobjbyname 0x2b0, a172, a2 + callruntime.wideldsendablevar 0x0, 0xac + sta v0 + throw.undefinedifholewithname TopLevelSendableClass173 + mov v1, v0 + newobjrange 0x2b2, 0x1, v1 + stobjbyname 0x2b4, a173, a2 + callruntime.wideldsendablevar 0x0, 0xad + sta v0 + throw.undefinedifholewithname TopLevelSendableClass174 + mov v1, v0 + newobjrange 0x2b6, 0x1, v1 + stobjbyname 0x2b8, a174, a2 + callruntime.wideldsendablevar 0x0, 0xae + sta v0 + throw.undefinedifholewithname TopLevelSendableClass175 + mov v1, v0 + newobjrange 0x2ba, 0x1, v1 + stobjbyname 0x2bc, a175, a2 + callruntime.wideldsendablevar 0x0, 0xaf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass176 + mov v1, v0 + newobjrange 0x2be, 0x1, v1 + stobjbyname 0x2c0, a176, a2 + callruntime.wideldsendablevar 0x0, 0xb0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass177 + mov v1, v0 + newobjrange 0x2c2, 0x1, v1 + stobjbyname 0x2c4, a177, a2 + callruntime.wideldsendablevar 0x0, 0xb1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass178 + mov v1, v0 + newobjrange 0x2c6, 0x1, v1 + stobjbyname 0x2c8, a178, a2 + callruntime.wideldsendablevar 0x0, 0xb2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass179 + mov v1, v0 + newobjrange 0x2ca, 0x1, v1 + stobjbyname 0x2cc, a179, a2 + callruntime.wideldsendablevar 0x0, 0xb3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass180 + mov v1, v0 + newobjrange 0x2ce, 0x1, v1 + stobjbyname 0x2d0, a180, a2 + callruntime.wideldsendablevar 0x0, 0xb4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass181 + mov v1, v0 + newobjrange 0x2d2, 0x1, v1 + stobjbyname 0x2d4, a181, a2 + callruntime.wideldsendablevar 0x0, 0xb5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass182 + mov v1, v0 + newobjrange 0x2d6, 0x1, v1 + stobjbyname 0x2d8, a182, a2 + callruntime.wideldsendablevar 0x0, 0xb6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass183 + mov v1, v0 + newobjrange 0x2da, 0x1, v1 + stobjbyname 0x2dc, a183, a2 + callruntime.wideldsendablevar 0x0, 0xb7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass184 + mov v1, v0 + newobjrange 0x2de, 0x1, v1 + stobjbyname 0x2e0, a184, a2 + callruntime.wideldsendablevar 0x0, 0xb8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass185 + mov v1, v0 + newobjrange 0x2e2, 0x1, v1 + stobjbyname 0x2e4, a185, a2 + callruntime.wideldsendablevar 0x0, 0xb9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass186 + mov v1, v0 + newobjrange 0x2e6, 0x1, v1 + stobjbyname 0x2e8, a186, a2 + callruntime.wideldsendablevar 0x0, 0xba + sta v0 + throw.undefinedifholewithname TopLevelSendableClass187 + mov v1, v0 + newobjrange 0x2ea, 0x1, v1 + stobjbyname 0x2ec, a187, a2 + callruntime.wideldsendablevar 0x0, 0xbb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass188 + mov v1, v0 + newobjrange 0x2ee, 0x1, v1 + stobjbyname 0x2f0, a188, a2 + callruntime.wideldsendablevar 0x0, 0xbc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass189 + mov v1, v0 + newobjrange 0x2f2, 0x1, v1 + stobjbyname 0x2f4, a189, a2 + callruntime.wideldsendablevar 0x0, 0xbd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass190 + mov v1, v0 + newobjrange 0x2f6, 0x1, v1 + stobjbyname 0x2f8, a190, a2 + callruntime.wideldsendablevar 0x0, 0xbe + sta v0 + throw.undefinedifholewithname TopLevelSendableClass191 + mov v1, v0 + newobjrange 0x2fa, 0x1, v1 + stobjbyname 0x2fc, a191, a2 + callruntime.wideldsendablevar 0x0, 0xbf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass192 + mov v1, v0 + newobjrange 0x2fe, 0x1, v1 + stobjbyname 0x300, a192, a2 + callruntime.wideldsendablevar 0x0, 0xc0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass193 + mov v1, v0 + newobjrange 0x302, 0x1, v1 + stobjbyname 0x304, a193, a2 + callruntime.wideldsendablevar 0x0, 0xc1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass194 + mov v1, v0 + newobjrange 0x306, 0x1, v1 + stobjbyname 0x308, a194, a2 + callruntime.wideldsendablevar 0x0, 0xc2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass195 + mov v1, v0 + newobjrange 0x30a, 0x1, v1 + stobjbyname 0x30c, a195, a2 + callruntime.wideldsendablevar 0x0, 0xc3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass196 + mov v1, v0 + newobjrange 0x30e, 0x1, v1 + stobjbyname 0x310, a196, a2 + callruntime.wideldsendablevar 0x0, 0xc4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass197 + mov v1, v0 + newobjrange 0x312, 0x1, v1 + stobjbyname 0x314, a197, a2 + callruntime.wideldsendablevar 0x0, 0xc5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass198 + mov v1, v0 + newobjrange 0x316, 0x1, v1 + stobjbyname 0x318, a198, a2 + callruntime.wideldsendablevar 0x0, 0xc6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass199 + mov v1, v0 + newobjrange 0x31a, 0x1, v1 + stobjbyname 0x31c, a199, a2 + callruntime.wideldsendablevar 0x0, 0xc7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass200 + mov v1, v0 + newobjrange 0x31e, 0x1, v1 + stobjbyname 0x320, a200, a2 + callruntime.wideldsendablevar 0x0, 0xc8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass201 + mov v1, v0 + newobjrange 0x322, 0x1, v1 + stobjbyname 0x324, a201, a2 + callruntime.wideldsendablevar 0x0, 0xc9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass202 + mov v1, v0 + newobjrange 0x326, 0x1, v1 + stobjbyname 0x328, a202, a2 + callruntime.wideldsendablevar 0x0, 0xca + sta v0 + throw.undefinedifholewithname TopLevelSendableClass203 + mov v1, v0 + newobjrange 0x32a, 0x1, v1 + stobjbyname 0x32c, a203, a2 + callruntime.wideldsendablevar 0x0, 0xcb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass204 + mov v1, v0 + newobjrange 0x32e, 0x1, v1 + stobjbyname 0x330, a204, a2 + callruntime.wideldsendablevar 0x0, 0xcc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass205 + mov v1, v0 + newobjrange 0x332, 0x1, v1 + stobjbyname 0x334, a205, a2 + callruntime.wideldsendablevar 0x0, 0xcd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass206 + mov v1, v0 + newobjrange 0x336, 0x1, v1 + stobjbyname 0x338, a206, a2 + callruntime.wideldsendablevar 0x0, 0xce + sta v0 + throw.undefinedifholewithname TopLevelSendableClass207 + mov v1, v0 + newobjrange 0x33a, 0x1, v1 + stobjbyname 0x33c, a207, a2 + callruntime.wideldsendablevar 0x0, 0xcf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass208 + mov v1, v0 + newobjrange 0x33e, 0x1, v1 + stobjbyname 0x340, a208, a2 + callruntime.wideldsendablevar 0x0, 0xd0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass209 + mov v1, v0 + newobjrange 0x342, 0x1, v1 + stobjbyname 0x344, a209, a2 + callruntime.wideldsendablevar 0x0, 0xd1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass210 + mov v1, v0 + newobjrange 0x346, 0x1, v1 + stobjbyname 0x348, a210, a2 + callruntime.wideldsendablevar 0x0, 0xd2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass211 + mov v1, v0 + newobjrange 0x34a, 0x1, v1 + stobjbyname 0x34c, a211, a2 + callruntime.wideldsendablevar 0x0, 0xd3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass212 + mov v1, v0 + newobjrange 0x34e, 0x1, v1 + stobjbyname 0x350, a212, a2 + callruntime.wideldsendablevar 0x0, 0xd4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass213 + mov v1, v0 + newobjrange 0x352, 0x1, v1 + stobjbyname 0x354, a213, a2 + callruntime.wideldsendablevar 0x0, 0xd5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass214 + mov v1, v0 + newobjrange 0x356, 0x1, v1 + stobjbyname 0x358, a214, a2 + callruntime.wideldsendablevar 0x0, 0xd6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass215 + mov v1, v0 + newobjrange 0x35a, 0x1, v1 + stobjbyname 0x35c, a215, a2 + callruntime.wideldsendablevar 0x0, 0xd7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass216 + mov v1, v0 + newobjrange 0x35e, 0x1, v1 + stobjbyname 0x360, a216, a2 + callruntime.wideldsendablevar 0x0, 0xd8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass217 + mov v1, v0 + newobjrange 0x362, 0x1, v1 + stobjbyname 0x364, a217, a2 + callruntime.wideldsendablevar 0x0, 0xd9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass218 + mov v1, v0 + newobjrange 0x366, 0x1, v1 + stobjbyname 0x368, a218, a2 + callruntime.wideldsendablevar 0x0, 0xda + sta v0 + throw.undefinedifholewithname TopLevelSendableClass219 + mov v1, v0 + newobjrange 0x36a, 0x1, v1 + stobjbyname 0x36c, a219, a2 + callruntime.wideldsendablevar 0x0, 0xdb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass220 + mov v1, v0 + newobjrange 0x36e, 0x1, v1 + stobjbyname 0x370, a220, a2 + callruntime.wideldsendablevar 0x0, 0xdc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass221 + mov v1, v0 + newobjrange 0x372, 0x1, v1 + stobjbyname 0x374, a221, a2 + callruntime.wideldsendablevar 0x0, 0xdd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass222 + mov v1, v0 + newobjrange 0x376, 0x1, v1 + stobjbyname 0x378, a222, a2 + callruntime.wideldsendablevar 0x0, 0xde + sta v0 + throw.undefinedifholewithname TopLevelSendableClass223 + mov v1, v0 + newobjrange 0x37a, 0x1, v1 + stobjbyname 0x37c, a223, a2 + callruntime.wideldsendablevar 0x0, 0xdf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass224 + mov v1, v0 + newobjrange 0x37e, 0x1, v1 + stobjbyname 0x380, a224, a2 + callruntime.wideldsendablevar 0x0, 0xe0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass225 + mov v1, v0 + newobjrange 0x382, 0x1, v1 + stobjbyname 0x384, a225, a2 + callruntime.wideldsendablevar 0x0, 0xe1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass226 + mov v1, v0 + newobjrange 0x386, 0x1, v1 + stobjbyname 0x388, a226, a2 + callruntime.wideldsendablevar 0x0, 0xe2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass227 + mov v1, v0 + newobjrange 0x38a, 0x1, v1 + stobjbyname 0x38c, a227, a2 + callruntime.wideldsendablevar 0x0, 0xe3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass228 + mov v1, v0 + newobjrange 0x38e, 0x1, v1 + stobjbyname 0x390, a228, a2 + callruntime.wideldsendablevar 0x0, 0xe4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass229 + mov v1, v0 + newobjrange 0x392, 0x1, v1 + stobjbyname 0x394, a229, a2 + callruntime.wideldsendablevar 0x0, 0xe5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass230 + mov v1, v0 + newobjrange 0x396, 0x1, v1 + stobjbyname 0x398, a230, a2 + callruntime.wideldsendablevar 0x0, 0xe6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass231 + mov v1, v0 + newobjrange 0x39a, 0x1, v1 + stobjbyname 0x39c, a231, a2 + callruntime.wideldsendablevar 0x0, 0xe7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass232 + mov v1, v0 + newobjrange 0x39e, 0x1, v1 + stobjbyname 0x3a0, a232, a2 + callruntime.wideldsendablevar 0x0, 0xe8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass233 + mov v1, v0 + newobjrange 0x3a2, 0x1, v1 + stobjbyname 0x3a4, a233, a2 + callruntime.wideldsendablevar 0x0, 0xe9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass234 + mov v1, v0 + newobjrange 0x3a6, 0x1, v1 + stobjbyname 0x3a8, a234, a2 + callruntime.wideldsendablevar 0x0, 0xea + sta v0 + throw.undefinedifholewithname TopLevelSendableClass235 + mov v1, v0 + newobjrange 0x3aa, 0x1, v1 + stobjbyname 0x3ac, a235, a2 + callruntime.wideldsendablevar 0x0, 0xeb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass236 + mov v1, v0 + newobjrange 0x3ae, 0x1, v1 + stobjbyname 0x3b0, a236, a2 + callruntime.wideldsendablevar 0x0, 0xec + sta v0 + throw.undefinedifholewithname TopLevelSendableClass237 + mov v1, v0 + newobjrange 0x3b2, 0x1, v1 + stobjbyname 0x3b4, a237, a2 + callruntime.wideldsendablevar 0x0, 0xed + sta v0 + throw.undefinedifholewithname TopLevelSendableClass238 + mov v1, v0 + newobjrange 0x3b6, 0x1, v1 + stobjbyname 0x3b8, a238, a2 + callruntime.wideldsendablevar 0x0, 0xee + sta v0 + throw.undefinedifholewithname TopLevelSendableClass239 + mov v1, v0 + newobjrange 0x3ba, 0x1, v1 + stobjbyname 0x3bc, a239, a2 + callruntime.wideldsendablevar 0x0, 0xef + sta v0 + throw.undefinedifholewithname TopLevelSendableClass240 + mov v1, v0 + newobjrange 0x3be, 0x1, v1 + stobjbyname 0x3c0, a240, a2 + callruntime.wideldsendablevar 0x0, 0xf0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass241 + mov v1, v0 + newobjrange 0x3c2, 0x1, v1 + stobjbyname 0x3c4, a241, a2 + callruntime.wideldsendablevar 0x0, 0xf1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass242 + mov v1, v0 + newobjrange 0x3c6, 0x1, v1 + stobjbyname 0x3c8, a242, a2 + callruntime.wideldsendablevar 0x0, 0xf2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass243 + mov v1, v0 + newobjrange 0x3ca, 0x1, v1 + stobjbyname 0x3cc, a243, a2 + callruntime.wideldsendablevar 0x0, 0xf3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass244 + mov v1, v0 + newobjrange 0x3ce, 0x1, v1 + stobjbyname 0x3d0, a244, a2 + callruntime.wideldsendablevar 0x0, 0xf4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass245 + mov v1, v0 + newobjrange 0x3d2, 0x1, v1 + stobjbyname 0x3d4, a245, a2 + callruntime.wideldsendablevar 0x0, 0xf5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass246 + mov v1, v0 + newobjrange 0x3d6, 0x1, v1 + stobjbyname 0x3d8, a246, a2 + callruntime.wideldsendablevar 0x0, 0xf6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass247 + mov v1, v0 + newobjrange 0x3da, 0x1, v1 + stobjbyname 0x3dc, a247, a2 + callruntime.wideldsendablevar 0x0, 0xf7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass248 + mov v1, v0 + newobjrange 0x3de, 0x1, v1 + stobjbyname 0x3e0, a248, a2 + callruntime.wideldsendablevar 0x0, 0xf8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass249 + mov v1, v0 + newobjrange 0x3e2, 0x1, v1 + stobjbyname 0x3e4, a249, a2 + callruntime.wideldsendablevar 0x0, 0xf9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass250 + mov v1, v0 + newobjrange 0x3e6, 0x1, v1 + stobjbyname 0x3e8, a250, a2 + callruntime.wideldsendablevar 0x0, 0xfa + sta v0 + throw.undefinedifholewithname TopLevelSendableClass251 + mov v1, v0 + newobjrange 0x3ea, 0x1, v1 + stobjbyname 0x3ec, a251, a2 + callruntime.wideldsendablevar 0x0, 0xfb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass252 + mov v1, v0 + newobjrange 0x3ee, 0x1, v1 + stobjbyname 0x3f0, a252, a2 + callruntime.wideldsendablevar 0x0, 0xfc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass253 + mov v1, v0 + newobjrange 0x3f2, 0x1, v1 + stobjbyname 0x3f4, a253, a2 + callruntime.wideldsendablevar 0x0, 0xfd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass254 + mov v1, v0 + newobjrange 0x3f6, 0x1, v1 + stobjbyname 0x3f8, a254, a2 + callruntime.wideldsendablevar 0x0, 0xfe + sta v0 + throw.undefinedifholewithname TopLevelSendableClass255 + mov v1, v0 + newobjrange 0x3fa, 0x1, v1 + stobjbyname 0x3fc, a255, a2 + lda a2 + ldobjbyname 0x3fe, a1 + ldobjbyname 0x400, o + stobjbyname 0x402, u, a2 + lda.str wide_sendable_test + stobjbyname 0x404, v, a2 + lda a2 + return +label_2: +} + +slotNum = 0x108 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + callruntime.widenewsendableenv 0xff + ldhole + sta v0 + callruntime.definesendableclass 0x2, .#~@0=#TopLevelSendableClass1, _3, 0x0, v0 + callruntime.stsendablevar 0x0, 0x0 + ldhole + sta v0 + callruntime.definesendableclass 0x3, .#~@1=#TopLevelSendableClass2, _5, 0x0, v0 + callruntime.stsendablevar 0x0, 0x1 + ldhole + sta v0 + callruntime.definesendableclass 0x4, .#~@2=#TopLevelSendableClass3, _7, 0x0, v0 + callruntime.stsendablevar 0x0, 0x2 + ldhole + sta v0 + callruntime.definesendableclass 0x5, .#~@3=#TopLevelSendableClass4, _9, 0x0, v0 + callruntime.stsendablevar 0x0, 0x3 + ldhole + sta v0 + callruntime.definesendableclass 0x6, .#~@4=#TopLevelSendableClass5, _11, 0x0, v0 + callruntime.stsendablevar 0x0, 0x4 + ldhole + sta v0 + callruntime.definesendableclass 0x7, .#~@5=#TopLevelSendableClass6, _13, 0x0, v0 + callruntime.stsendablevar 0x0, 0x5 + ldhole + sta v0 + callruntime.definesendableclass 0x8, .#~@6=#TopLevelSendableClass7, _15, 0x0, v0 + callruntime.stsendablevar 0x0, 0x6 + ldhole + sta v0 + callruntime.definesendableclass 0x9, .#~@7=#TopLevelSendableClass8, _17, 0x0, v0 + callruntime.stsendablevar 0x0, 0x7 + ldhole + sta v0 + callruntime.definesendableclass 0xa, .#~@8=#TopLevelSendableClass9, _19, 0x0, v0 + callruntime.stsendablevar 0x0, 0x8 + ldhole + sta v0 + callruntime.definesendableclass 0xb, .#~@9=#TopLevelSendableClass10, _21, 0x0, v0 + callruntime.stsendablevar 0x0, 0x9 + ldhole + sta v0 + callruntime.definesendableclass 0xc, .#~@a=#TopLevelSendableClass11, _23, 0x0, v0 + callruntime.stsendablevar 0x0, 0xa + ldhole + sta v0 + callruntime.definesendableclass 0xd, .#~@b=#TopLevelSendableClass12, _25, 0x0, v0 + callruntime.stsendablevar 0x0, 0xb + ldhole + sta v0 + callruntime.definesendableclass 0xe, .#~@c=#TopLevelSendableClass13, _27, 0x0, v0 + callruntime.stsendablevar 0x0, 0xc + ldhole + sta v0 + callruntime.definesendableclass 0xf, .#~@d=#TopLevelSendableClass14, _29, 0x0, v0 + callruntime.stsendablevar 0x0, 0xd + ldhole + sta v0 + callruntime.definesendableclass 0x10, .#~@e=#TopLevelSendableClass15, _31, 0x0, v0 + callruntime.stsendablevar 0x0, 0xe + ldhole + sta v0 + callruntime.definesendableclass 0x11, .#~@f=#TopLevelSendableClass16, _33, 0x0, v0 + callruntime.stsendablevar 0x0, 0xf + ldhole + sta v0 + callruntime.definesendableclass 0x12, .#~@10=#TopLevelSendableClass17, _35, 0x0, v0 + callruntime.stsendablevar 0x0, 0x10 + ldhole + sta v0 + callruntime.definesendableclass 0x13, .#~@11=#TopLevelSendableClass18, _37, 0x0, v0 + callruntime.stsendablevar 0x0, 0x11 + ldhole + sta v0 + callruntime.definesendableclass 0x14, .#~@12=#TopLevelSendableClass19, _39, 0x0, v0 + callruntime.stsendablevar 0x0, 0x12 + ldhole + sta v0 + callruntime.definesendableclass 0x15, .#~@13=#TopLevelSendableClass20, _41, 0x0, v0 + callruntime.stsendablevar 0x0, 0x13 + ldhole + sta v0 + callruntime.definesendableclass 0x16, .#~@14=#TopLevelSendableClass21, _43, 0x0, v0 + callruntime.stsendablevar 0x0, 0x14 + ldhole + sta v0 + callruntime.definesendableclass 0x17, .#~@15=#TopLevelSendableClass22, _45, 0x0, v0 + callruntime.stsendablevar 0x0, 0x15 + ldhole + sta v0 + callruntime.definesendableclass 0x18, .#~@16=#TopLevelSendableClass23, _47, 0x0, v0 + callruntime.stsendablevar 0x0, 0x16 + ldhole + sta v0 + callruntime.definesendableclass 0x19, .#~@17=#TopLevelSendableClass24, _49, 0x0, v0 + callruntime.stsendablevar 0x0, 0x17 + ldhole + sta v0 + callruntime.definesendableclass 0x1a, .#~@18=#TopLevelSendableClass25, _51, 0x0, v0 + callruntime.stsendablevar 0x0, 0x18 + ldhole + sta v0 + callruntime.definesendableclass 0x1b, .#~@19=#TopLevelSendableClass26, _53, 0x0, v0 + callruntime.stsendablevar 0x0, 0x19 + ldhole + sta v0 + callruntime.definesendableclass 0x1c, .#~@1a=#TopLevelSendableClass27, _55, 0x0, v0 + callruntime.stsendablevar 0x0, 0x1a + ldhole + sta v0 + callruntime.definesendableclass 0x1d, .#~@1b=#TopLevelSendableClass28, _57, 0x0, v0 + callruntime.stsendablevar 0x0, 0x1b + ldhole + sta v0 + callruntime.definesendableclass 0x1e, .#~@1c=#TopLevelSendableClass29, _59, 0x0, v0 + callruntime.stsendablevar 0x0, 0x1c + ldhole + sta v0 + callruntime.definesendableclass 0x1f, .#~@1d=#TopLevelSendableClass30, _61, 0x0, v0 + callruntime.stsendablevar 0x0, 0x1d + ldhole + sta v0 + callruntime.definesendableclass 0x20, .#~@1e=#TopLevelSendableClass31, _63, 0x0, v0 + callruntime.stsendablevar 0x0, 0x1e + ldhole + sta v0 + callruntime.definesendableclass 0x21, .#~@1f=#TopLevelSendableClass32, _65, 0x0, v0 + callruntime.stsendablevar 0x0, 0x1f + ldhole + sta v0 + callruntime.definesendableclass 0x22, .#~@20=#TopLevelSendableClass33, _67, 0x0, v0 + callruntime.stsendablevar 0x0, 0x20 + ldhole + sta v0 + callruntime.definesendableclass 0x23, .#~@21=#TopLevelSendableClass34, _69, 0x0, v0 + callruntime.stsendablevar 0x0, 0x21 + ldhole + sta v0 + callruntime.definesendableclass 0x24, .#~@22=#TopLevelSendableClass35, _71, 0x0, v0 + callruntime.stsendablevar 0x0, 0x22 + ldhole + sta v0 + callruntime.definesendableclass 0x25, .#~@23=#TopLevelSendableClass36, _73, 0x0, v0 + callruntime.stsendablevar 0x0, 0x23 + ldhole + sta v0 + callruntime.definesendableclass 0x26, .#~@24=#TopLevelSendableClass37, _75, 0x0, v0 + callruntime.stsendablevar 0x0, 0x24 + ldhole + sta v0 + callruntime.definesendableclass 0x27, .#~@25=#TopLevelSendableClass38, _77, 0x0, v0 + callruntime.stsendablevar 0x0, 0x25 + ldhole + sta v0 + callruntime.definesendableclass 0x28, .#~@26=#TopLevelSendableClass39, _79, 0x0, v0 + callruntime.stsendablevar 0x0, 0x26 + ldhole + sta v0 + callruntime.definesendableclass 0x29, .#~@27=#TopLevelSendableClass40, _81, 0x0, v0 + callruntime.stsendablevar 0x0, 0x27 + ldhole + sta v0 + callruntime.definesendableclass 0x2a, .#~@28=#TopLevelSendableClass41, _83, 0x0, v0 + callruntime.stsendablevar 0x0, 0x28 + ldhole + sta v0 + callruntime.definesendableclass 0x2b, .#~@29=#TopLevelSendableClass42, _85, 0x0, v0 + callruntime.stsendablevar 0x0, 0x29 + ldhole + sta v0 + callruntime.definesendableclass 0x2c, .#~@2a=#TopLevelSendableClass43, _87, 0x0, v0 + callruntime.stsendablevar 0x0, 0x2a + ldhole + sta v0 + callruntime.definesendableclass 0x2d, .#~@2b=#TopLevelSendableClass44, _89, 0x0, v0 + callruntime.stsendablevar 0x0, 0x2b + ldhole + sta v0 + callruntime.definesendableclass 0x2e, .#~@2c=#TopLevelSendableClass45, _91, 0x0, v0 + callruntime.stsendablevar 0x0, 0x2c + ldhole + sta v0 + callruntime.definesendableclass 0x2f, .#~@2d=#TopLevelSendableClass46, _93, 0x0, v0 + callruntime.stsendablevar 0x0, 0x2d + ldhole + sta v0 + callruntime.definesendableclass 0x30, .#~@2e=#TopLevelSendableClass47, _95, 0x0, v0 + callruntime.stsendablevar 0x0, 0x2e + ldhole + sta v0 + callruntime.definesendableclass 0x31, .#~@2f=#TopLevelSendableClass48, _97, 0x0, v0 + callruntime.stsendablevar 0x0, 0x2f + ldhole + sta v0 + callruntime.definesendableclass 0x32, .#~@30=#TopLevelSendableClass49, _99, 0x0, v0 + callruntime.stsendablevar 0x0, 0x30 + ldhole + sta v0 + callruntime.definesendableclass 0x33, .#~@31=#TopLevelSendableClass50, _101, 0x0, v0 + callruntime.stsendablevar 0x0, 0x31 + ldhole + sta v0 + callruntime.definesendableclass 0x34, .#~@32=#TopLevelSendableClass51, _103, 0x0, v0 + callruntime.stsendablevar 0x0, 0x32 + ldhole + sta v0 + callruntime.definesendableclass 0x35, .#~@33=#TopLevelSendableClass52, _105, 0x0, v0 + callruntime.stsendablevar 0x0, 0x33 + ldhole + sta v0 + callruntime.definesendableclass 0x36, .#~@34=#TopLevelSendableClass53, _107, 0x0, v0 + callruntime.stsendablevar 0x0, 0x34 + ldhole + sta v0 + callruntime.definesendableclass 0x37, .#~@35=#TopLevelSendableClass54, _109, 0x0, v0 + callruntime.stsendablevar 0x0, 0x35 + ldhole + sta v0 + callruntime.definesendableclass 0x38, .#~@36=#TopLevelSendableClass55, _111, 0x0, v0 + callruntime.stsendablevar 0x0, 0x36 + ldhole + sta v0 + callruntime.definesendableclass 0x39, .#~@37=#TopLevelSendableClass56, _113, 0x0, v0 + callruntime.stsendablevar 0x0, 0x37 + ldhole + sta v0 + callruntime.definesendableclass 0x3a, .#~@38=#TopLevelSendableClass57, _115, 0x0, v0 + callruntime.stsendablevar 0x0, 0x38 + ldhole + sta v0 + callruntime.definesendableclass 0x3b, .#~@39=#TopLevelSendableClass58, _117, 0x0, v0 + callruntime.stsendablevar 0x0, 0x39 + ldhole + sta v0 + callruntime.definesendableclass 0x3c, .#~@3a=#TopLevelSendableClass59, _119, 0x0, v0 + callruntime.stsendablevar 0x0, 0x3a + ldhole + sta v0 + callruntime.definesendableclass 0x3d, .#~@3b=#TopLevelSendableClass60, _121, 0x0, v0 + callruntime.stsendablevar 0x0, 0x3b + ldhole + sta v0 + callruntime.definesendableclass 0x3e, .#~@3c=#TopLevelSendableClass61, _123, 0x0, v0 + callruntime.stsendablevar 0x0, 0x3c + ldhole + sta v0 + callruntime.definesendableclass 0x3f, .#~@3d=#TopLevelSendableClass62, _125, 0x0, v0 + callruntime.stsendablevar 0x0, 0x3d + ldhole + sta v0 + callruntime.definesendableclass 0x40, .#~@3e=#TopLevelSendableClass63, _127, 0x0, v0 + callruntime.stsendablevar 0x0, 0x3e + ldhole + sta v0 + callruntime.definesendableclass 0x41, .#~@3f=#TopLevelSendableClass64, _129, 0x0, v0 + callruntime.stsendablevar 0x0, 0x3f + ldhole + sta v0 + callruntime.definesendableclass 0x42, .#~@40=#TopLevelSendableClass65, _131, 0x0, v0 + callruntime.stsendablevar 0x0, 0x40 + ldhole + sta v0 + callruntime.definesendableclass 0x43, .#~@41=#TopLevelSendableClass66, _133, 0x0, v0 + callruntime.stsendablevar 0x0, 0x41 + ldhole + sta v0 + callruntime.definesendableclass 0x44, .#~@42=#TopLevelSendableClass67, _135, 0x0, v0 + callruntime.stsendablevar 0x0, 0x42 + ldhole + sta v0 + callruntime.definesendableclass 0x45, .#~@43=#TopLevelSendableClass68, _137, 0x0, v0 + callruntime.stsendablevar 0x0, 0x43 + ldhole + sta v0 + callruntime.definesendableclass 0x46, .#~@44=#TopLevelSendableClass69, _139, 0x0, v0 + callruntime.stsendablevar 0x0, 0x44 + ldhole + sta v0 + callruntime.definesendableclass 0x47, .#~@45=#TopLevelSendableClass70, _141, 0x0, v0 + callruntime.stsendablevar 0x0, 0x45 + ldhole + sta v0 + callruntime.definesendableclass 0x48, .#~@46=#TopLevelSendableClass71, _143, 0x0, v0 + callruntime.stsendablevar 0x0, 0x46 + ldhole + sta v0 + callruntime.definesendableclass 0x49, .#~@47=#TopLevelSendableClass72, _145, 0x0, v0 + callruntime.stsendablevar 0x0, 0x47 + ldhole + sta v0 + callruntime.definesendableclass 0x4a, .#~@48=#TopLevelSendableClass73, _147, 0x0, v0 + callruntime.stsendablevar 0x0, 0x48 + ldhole + sta v0 + callruntime.definesendableclass 0x4b, .#~@49=#TopLevelSendableClass74, _149, 0x0, v0 + callruntime.stsendablevar 0x0, 0x49 + ldhole + sta v0 + callruntime.definesendableclass 0x4c, .#~@4a=#TopLevelSendableClass75, _151, 0x0, v0 + callruntime.stsendablevar 0x0, 0x4a + ldhole + sta v0 + callruntime.definesendableclass 0x4d, .#~@4b=#TopLevelSendableClass76, _153, 0x0, v0 + callruntime.stsendablevar 0x0, 0x4b + ldhole + sta v0 + callruntime.definesendableclass 0x4e, .#~@4c=#TopLevelSendableClass77, _155, 0x0, v0 + callruntime.stsendablevar 0x0, 0x4c + ldhole + sta v0 + callruntime.definesendableclass 0x4f, .#~@4d=#TopLevelSendableClass78, _157, 0x0, v0 + callruntime.stsendablevar 0x0, 0x4d + ldhole + sta v0 + callruntime.definesendableclass 0x50, .#~@4e=#TopLevelSendableClass79, _159, 0x0, v0 + callruntime.stsendablevar 0x0, 0x4e + ldhole + sta v0 + callruntime.definesendableclass 0x51, .#~@4f=#TopLevelSendableClass80, _161, 0x0, v0 + callruntime.stsendablevar 0x0, 0x4f + ldhole + sta v0 + callruntime.definesendableclass 0x52, .#~@50=#TopLevelSendableClass81, _163, 0x0, v0 + callruntime.stsendablevar 0x0, 0x50 + ldhole + sta v0 + callruntime.definesendableclass 0x53, .#~@51=#TopLevelSendableClass82, _165, 0x0, v0 + callruntime.stsendablevar 0x0, 0x51 + ldhole + sta v0 + callruntime.definesendableclass 0x54, .#~@52=#TopLevelSendableClass83, _167, 0x0, v0 + callruntime.stsendablevar 0x0, 0x52 + ldhole + sta v0 + callruntime.definesendableclass 0x55, .#~@53=#TopLevelSendableClass84, _169, 0x0, v0 + callruntime.stsendablevar 0x0, 0x53 + ldhole + sta v0 + callruntime.definesendableclass 0x56, .#~@54=#TopLevelSendableClass85, _171, 0x0, v0 + callruntime.stsendablevar 0x0, 0x54 + ldhole + sta v0 + callruntime.definesendableclass 0x57, .#~@55=#TopLevelSendableClass86, _173, 0x0, v0 + callruntime.stsendablevar 0x0, 0x55 + ldhole + sta v0 + callruntime.definesendableclass 0x58, .#~@56=#TopLevelSendableClass87, _175, 0x0, v0 + callruntime.stsendablevar 0x0, 0x56 + ldhole + sta v0 + callruntime.definesendableclass 0x59, .#~@57=#TopLevelSendableClass88, _177, 0x0, v0 + callruntime.stsendablevar 0x0, 0x57 + ldhole + sta v0 + callruntime.definesendableclass 0x5a, .#~@58=#TopLevelSendableClass89, _179, 0x0, v0 + callruntime.stsendablevar 0x0, 0x58 + ldhole + sta v0 + callruntime.definesendableclass 0x5b, .#~@59=#TopLevelSendableClass90, _181, 0x0, v0 + callruntime.stsendablevar 0x0, 0x59 + ldhole + sta v0 + callruntime.definesendableclass 0x5c, .#~@5a=#TopLevelSendableClass91, _183, 0x0, v0 + callruntime.stsendablevar 0x0, 0x5a + ldhole + sta v0 + callruntime.definesendableclass 0x5d, .#~@5b=#TopLevelSendableClass92, _185, 0x0, v0 + callruntime.stsendablevar 0x0, 0x5b + ldhole + sta v0 + callruntime.definesendableclass 0x5e, .#~@5c=#TopLevelSendableClass93, _187, 0x0, v0 + callruntime.stsendablevar 0x0, 0x5c + ldhole + sta v0 + callruntime.definesendableclass 0x5f, .#~@5d=#TopLevelSendableClass94, _189, 0x0, v0 + callruntime.stsendablevar 0x0, 0x5d + ldhole + sta v0 + callruntime.definesendableclass 0x60, .#~@5e=#TopLevelSendableClass95, _191, 0x0, v0 + callruntime.stsendablevar 0x0, 0x5e + ldhole + sta v0 + callruntime.definesendableclass 0x61, .#~@5f=#TopLevelSendableClass96, _193, 0x0, v0 + callruntime.stsendablevar 0x0, 0x5f + ldhole + sta v0 + callruntime.definesendableclass 0x62, .#~@60=#TopLevelSendableClass97, _195, 0x0, v0 + callruntime.stsendablevar 0x0, 0x60 + ldhole + sta v0 + callruntime.definesendableclass 0x63, .#~@61=#TopLevelSendableClass98, _197, 0x0, v0 + callruntime.stsendablevar 0x0, 0x61 + ldhole + sta v0 + callruntime.definesendableclass 0x64, .#~@62=#TopLevelSendableClass99, _199, 0x0, v0 + callruntime.stsendablevar 0x0, 0x62 + ldhole + sta v0 + callruntime.definesendableclass 0x65, .#~@63=#TopLevelSendableClass100, _201, 0x0, v0 + callruntime.stsendablevar 0x0, 0x63 + ldhole + sta v0 + callruntime.definesendableclass 0x66, .#~@64=#TopLevelSendableClass101, _203, 0x0, v0 + callruntime.stsendablevar 0x0, 0x64 + ldhole + sta v0 + callruntime.definesendableclass 0x67, .#~@65=#TopLevelSendableClass102, _205, 0x0, v0 + callruntime.stsendablevar 0x0, 0x65 + ldhole + sta v0 + callruntime.definesendableclass 0x68, .#~@66=#TopLevelSendableClass103, _207, 0x0, v0 + callruntime.stsendablevar 0x0, 0x66 + ldhole + sta v0 + callruntime.definesendableclass 0x69, .#~@67=#TopLevelSendableClass104, _209, 0x0, v0 + callruntime.stsendablevar 0x0, 0x67 + ldhole + sta v0 + callruntime.definesendableclass 0x6a, .#~@68=#TopLevelSendableClass105, _211, 0x0, v0 + callruntime.stsendablevar 0x0, 0x68 + ldhole + sta v0 + callruntime.definesendableclass 0x6b, .#~@69=#TopLevelSendableClass106, _213, 0x0, v0 + callruntime.stsendablevar 0x0, 0x69 + ldhole + sta v0 + callruntime.definesendableclass 0x6c, .#~@6a=#TopLevelSendableClass107, _215, 0x0, v0 + callruntime.stsendablevar 0x0, 0x6a + ldhole + sta v0 + callruntime.definesendableclass 0x6d, .#~@6b=#TopLevelSendableClass108, _217, 0x0, v0 + callruntime.stsendablevar 0x0, 0x6b + ldhole + sta v0 + callruntime.definesendableclass 0x6e, .#~@6c=#TopLevelSendableClass109, _219, 0x0, v0 + callruntime.stsendablevar 0x0, 0x6c + ldhole + sta v0 + callruntime.definesendableclass 0x6f, .#~@6d=#TopLevelSendableClass110, _221, 0x0, v0 + callruntime.stsendablevar 0x0, 0x6d + ldhole + sta v0 + callruntime.definesendableclass 0x70, .#~@6e=#TopLevelSendableClass111, _223, 0x0, v0 + callruntime.stsendablevar 0x0, 0x6e + ldhole + sta v0 + callruntime.definesendableclass 0x71, .#~@6f=#TopLevelSendableClass112, _225, 0x0, v0 + callruntime.stsendablevar 0x0, 0x6f + ldhole + sta v0 + callruntime.definesendableclass 0x72, .#~@70=#TopLevelSendableClass113, _227, 0x0, v0 + callruntime.stsendablevar 0x0, 0x70 + ldhole + sta v0 + callruntime.definesendableclass 0x73, .#~@71=#TopLevelSendableClass114, _229, 0x0, v0 + callruntime.stsendablevar 0x0, 0x71 + ldhole + sta v0 + callruntime.definesendableclass 0x74, .#~@72=#TopLevelSendableClass115, _231, 0x0, v0 + callruntime.stsendablevar 0x0, 0x72 + ldhole + sta v0 + callruntime.definesendableclass 0x75, .#~@73=#TopLevelSendableClass116, _233, 0x0, v0 + callruntime.stsendablevar 0x0, 0x73 + ldhole + sta v0 + callruntime.definesendableclass 0x76, .#~@74=#TopLevelSendableClass117, _235, 0x0, v0 + callruntime.stsendablevar 0x0, 0x74 + ldhole + sta v0 + callruntime.definesendableclass 0x77, .#~@75=#TopLevelSendableClass118, _237, 0x0, v0 + callruntime.stsendablevar 0x0, 0x75 + ldhole + sta v0 + callruntime.definesendableclass 0x78, .#~@76=#TopLevelSendableClass119, _239, 0x0, v0 + callruntime.stsendablevar 0x0, 0x76 + ldhole + sta v0 + callruntime.definesendableclass 0x79, .#~@77=#TopLevelSendableClass120, _241, 0x0, v0 + callruntime.stsendablevar 0x0, 0x77 + ldhole + sta v0 + callruntime.definesendableclass 0x7a, .#~@78=#TopLevelSendableClass121, _243, 0x0, v0 + callruntime.stsendablevar 0x0, 0x78 + ldhole + sta v0 + callruntime.definesendableclass 0x7b, .#~@79=#TopLevelSendableClass122, _245, 0x0, v0 + callruntime.stsendablevar 0x0, 0x79 + ldhole + sta v0 + callruntime.definesendableclass 0x7c, .#~@7a=#TopLevelSendableClass123, _247, 0x0, v0 + callruntime.stsendablevar 0x0, 0x7a + ldhole + sta v0 + callruntime.definesendableclass 0x7d, .#~@7b=#TopLevelSendableClass124, _249, 0x0, v0 + callruntime.stsendablevar 0x0, 0x7b + ldhole + sta v0 + callruntime.definesendableclass 0x7e, .#~@7c=#TopLevelSendableClass125, _251, 0x0, v0 + callruntime.stsendablevar 0x0, 0x7c + ldhole + sta v0 + callruntime.definesendableclass 0x7f, .#~@7d=#TopLevelSendableClass126, _253, 0x0, v0 + callruntime.stsendablevar 0x0, 0x7d + ldhole + sta v0 + callruntime.definesendableclass 0x80, .#~@7e=#TopLevelSendableClass127, _255, 0x0, v0 + callruntime.stsendablevar 0x0, 0x7e + ldhole + sta v0 + callruntime.definesendableclass 0x81, .#~@7f=#TopLevelSendableClass128, _257, 0x0, v0 + callruntime.stsendablevar 0x0, 0x7f + ldhole + sta v0 + callruntime.definesendableclass 0x82, .#~@80=#TopLevelSendableClass129, _259, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x80 + ldhole + sta v0 + callruntime.definesendableclass 0x83, .#~@81=#TopLevelSendableClass130, _261, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x81 + ldhole + sta v0 + callruntime.definesendableclass 0x84, .#~@82=#TopLevelSendableClass131, _263, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x82 + ldhole + sta v0 + callruntime.definesendableclass 0x85, .#~@83=#TopLevelSendableClass132, _265, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x83 + ldhole + sta v0 + callruntime.definesendableclass 0x86, .#~@84=#TopLevelSendableClass133, _267, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x84 + ldhole + sta v0 + callruntime.definesendableclass 0x87, .#~@85=#TopLevelSendableClass134, _269, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x85 + ldhole + sta v0 + callruntime.definesendableclass 0x88, .#~@86=#TopLevelSendableClass135, _271, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x86 + ldhole + sta v0 + callruntime.definesendableclass 0x89, .#~@87=#TopLevelSendableClass136, _273, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x87 + ldhole + sta v0 + callruntime.definesendableclass 0x8a, .#~@88=#TopLevelSendableClass137, _275, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x88 + ldhole + sta v0 + callruntime.definesendableclass 0x8b, .#~@89=#TopLevelSendableClass138, _277, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x89 + ldhole + sta v0 + callruntime.definesendableclass 0x8c, .#~@8a=#TopLevelSendableClass139, _279, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x8a + ldhole + sta v0 + callruntime.definesendableclass 0x8d, .#~@8b=#TopLevelSendableClass140, _281, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x8b + ldhole + sta v0 + callruntime.definesendableclass 0x8e, .#~@8c=#TopLevelSendableClass141, _283, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x8c + ldhole + sta v0 + callruntime.definesendableclass 0x8f, .#~@8d=#TopLevelSendableClass142, _285, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x8d + ldhole + sta v0 + callruntime.definesendableclass 0x90, .#~@8e=#TopLevelSendableClass143, _287, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x8e + ldhole + sta v0 + callruntime.definesendableclass 0x91, .#~@8f=#TopLevelSendableClass144, _289, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x8f + ldhole + sta v0 + callruntime.definesendableclass 0x92, .#~@90=#TopLevelSendableClass145, _291, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x90 + ldhole + sta v0 + callruntime.definesendableclass 0x93, .#~@91=#TopLevelSendableClass146, _293, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x91 + ldhole + sta v0 + callruntime.definesendableclass 0x94, .#~@92=#TopLevelSendableClass147, _295, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x92 + ldhole + sta v0 + callruntime.definesendableclass 0x95, .#~@93=#TopLevelSendableClass148, _297, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x93 + ldhole + sta v0 + callruntime.definesendableclass 0x96, .#~@94=#TopLevelSendableClass149, _299, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x94 + ldhole + sta v0 + callruntime.definesendableclass 0x97, .#~@95=#TopLevelSendableClass150, _301, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x95 + ldhole + sta v0 + callruntime.definesendableclass 0x98, .#~@96=#TopLevelSendableClass151, _303, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x96 + ldhole + sta v0 + callruntime.definesendableclass 0x99, .#~@97=#TopLevelSendableClass152, _305, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x97 + ldhole + sta v0 + callruntime.definesendableclass 0x9a, .#~@98=#TopLevelSendableClass153, _307, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x98 + ldhole + sta v0 + callruntime.definesendableclass 0x9b, .#~@99=#TopLevelSendableClass154, _309, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x99 + ldhole + sta v0 + callruntime.definesendableclass 0x9c, .#~@9a=#TopLevelSendableClass155, _311, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x9a + ldhole + sta v0 + callruntime.definesendableclass 0x9d, .#~@9b=#TopLevelSendableClass156, _313, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x9b + ldhole + sta v0 + callruntime.definesendableclass 0x9e, .#~@9c=#TopLevelSendableClass157, _315, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x9c + ldhole + sta v0 + callruntime.definesendableclass 0x9f, .#~@9d=#TopLevelSendableClass158, _317, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x9d + ldhole + sta v0 + callruntime.definesendableclass 0xa0, .#~@9e=#TopLevelSendableClass159, _319, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x9e + ldhole + sta v0 + callruntime.definesendableclass 0xa1, .#~@9f=#TopLevelSendableClass160, _321, 0x0, v0 + callruntime.widestsendablevar 0x0, 0x9f + ldhole + sta v0 + callruntime.definesendableclass 0xa2, .#~@a0=#TopLevelSendableClass161, _323, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa0 + ldhole + sta v0 + callruntime.definesendableclass 0xa3, .#~@a1=#TopLevelSendableClass162, _325, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa1 + ldhole + sta v0 + callruntime.definesendableclass 0xa4, .#~@a2=#TopLevelSendableClass163, _327, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa2 + ldhole + sta v0 + callruntime.definesendableclass 0xa5, .#~@a3=#TopLevelSendableClass164, _329, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa3 + ldhole + sta v0 + callruntime.definesendableclass 0xa6, .#~@a4=#TopLevelSendableClass165, _331, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa4 + ldhole + sta v0 + callruntime.definesendableclass 0xa7, .#~@a5=#TopLevelSendableClass166, _333, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa5 + ldhole + sta v0 + callruntime.definesendableclass 0xa8, .#~@a6=#TopLevelSendableClass167, _335, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa6 + ldhole + sta v0 + callruntime.definesendableclass 0xa9, .#~@a7=#TopLevelSendableClass168, _337, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa7 + ldhole + sta v0 + callruntime.definesendableclass 0xaa, .#~@a8=#TopLevelSendableClass169, _339, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa8 + ldhole + sta v0 + callruntime.definesendableclass 0xab, .#~@a9=#TopLevelSendableClass170, _341, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xa9 + ldhole + sta v0 + callruntime.definesendableclass 0xac, .#~@aa=#TopLevelSendableClass171, _343, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xaa + ldhole + sta v0 + callruntime.definesendableclass 0xad, .#~@ab=#TopLevelSendableClass172, _345, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xab + ldhole + sta v0 + callruntime.definesendableclass 0xae, .#~@ac=#TopLevelSendableClass173, _347, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xac + ldhole + sta v0 + callruntime.definesendableclass 0xaf, .#~@ad=#TopLevelSendableClass174, _349, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xad + ldhole + sta v0 + callruntime.definesendableclass 0xb0, .#~@ae=#TopLevelSendableClass175, _351, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xae + ldhole + sta v0 + callruntime.definesendableclass 0xb1, .#~@af=#TopLevelSendableClass176, _353, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xaf + ldhole + sta v0 + callruntime.definesendableclass 0xb2, .#~@b0=#TopLevelSendableClass177, _355, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb0 + ldhole + sta v0 + callruntime.definesendableclass 0xb3, .#~@b1=#TopLevelSendableClass178, _357, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb1 + ldhole + sta v0 + callruntime.definesendableclass 0xb4, .#~@b2=#TopLevelSendableClass179, _359, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb2 + ldhole + sta v0 + callruntime.definesendableclass 0xb5, .#~@b3=#TopLevelSendableClass180, _361, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb3 + ldhole + sta v0 + callruntime.definesendableclass 0xb6, .#~@b4=#TopLevelSendableClass181, _363, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb4 + ldhole + sta v0 + callruntime.definesendableclass 0xb7, .#~@b5=#TopLevelSendableClass182, _365, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb5 + ldhole + sta v0 + callruntime.definesendableclass 0xb8, .#~@b6=#TopLevelSendableClass183, _367, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb6 + ldhole + sta v0 + callruntime.definesendableclass 0xb9, .#~@b7=#TopLevelSendableClass184, _369, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb7 + ldhole + sta v0 + callruntime.definesendableclass 0xba, .#~@b8=#TopLevelSendableClass185, _371, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb8 + ldhole + sta v0 + callruntime.definesendableclass 0xbb, .#~@b9=#TopLevelSendableClass186, _373, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xb9 + ldhole + sta v0 + callruntime.definesendableclass 0xbc, .#~@ba=#TopLevelSendableClass187, _375, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xba + ldhole + sta v0 + callruntime.definesendableclass 0xbd, .#~@bb=#TopLevelSendableClass188, _377, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xbb + ldhole + sta v0 + callruntime.definesendableclass 0xbe, .#~@bc=#TopLevelSendableClass189, _379, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xbc + ldhole + sta v0 + callruntime.definesendableclass 0xbf, .#~@bd=#TopLevelSendableClass190, _381, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xbd + ldhole + sta v0 + callruntime.definesendableclass 0xc0, .#~@be=#TopLevelSendableClass191, _383, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xbe + ldhole + sta v0 + callruntime.definesendableclass 0xc1, .#~@bf=#TopLevelSendableClass192, _385, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xbf + ldhole + sta v0 + callruntime.definesendableclass 0xc2, .#~@c0=#TopLevelSendableClass193, _387, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc0 + ldhole + sta v0 + callruntime.definesendableclass 0xc3, .#~@c1=#TopLevelSendableClass194, _389, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc1 + ldhole + sta v0 + callruntime.definesendableclass 0xc4, .#~@c2=#TopLevelSendableClass195, _391, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc2 + ldhole + sta v0 + callruntime.definesendableclass 0xc5, .#~@c3=#TopLevelSendableClass196, _393, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc3 + ldhole + sta v0 + callruntime.definesendableclass 0xc6, .#~@c4=#TopLevelSendableClass197, _395, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc4 + ldhole + sta v0 + callruntime.definesendableclass 0xc7, .#~@c5=#TopLevelSendableClass198, _397, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc5 + ldhole + sta v0 + callruntime.definesendableclass 0xc8, .#~@c6=#TopLevelSendableClass199, _399, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc6 + ldhole + sta v0 + callruntime.definesendableclass 0xc9, .#~@c7=#TopLevelSendableClass200, _401, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc7 + ldhole + sta v0 + callruntime.definesendableclass 0xca, .#~@c8=#TopLevelSendableClass201, _403, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc8 + ldhole + sta v0 + callruntime.definesendableclass 0xcb, .#~@c9=#TopLevelSendableClass202, _405, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xc9 + ldhole + sta v0 + callruntime.definesendableclass 0xcc, .#~@ca=#TopLevelSendableClass203, _407, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xca + ldhole + sta v0 + callruntime.definesendableclass 0xcd, .#~@cb=#TopLevelSendableClass204, _409, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xcb + ldhole + sta v0 + callruntime.definesendableclass 0xce, .#~@cc=#TopLevelSendableClass205, _411, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xcc + ldhole + sta v0 + callruntime.definesendableclass 0xcf, .#~@cd=#TopLevelSendableClass206, _413, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xcd + ldhole + sta v0 + callruntime.definesendableclass 0xd0, .#~@ce=#TopLevelSendableClass207, _415, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xce + ldhole + sta v0 + callruntime.definesendableclass 0xd1, .#~@cf=#TopLevelSendableClass208, _417, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xcf + ldhole + sta v0 + callruntime.definesendableclass 0xd2, .#~@d0=#TopLevelSendableClass209, _419, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd0 + ldhole + sta v0 + callruntime.definesendableclass 0xd3, .#~@d1=#TopLevelSendableClass210, _421, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd1 + ldhole + sta v0 + callruntime.definesendableclass 0xd4, .#~@d2=#TopLevelSendableClass211, _423, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd2 + ldhole + sta v0 + callruntime.definesendableclass 0xd5, .#~@d3=#TopLevelSendableClass212, _425, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd3 + ldhole + sta v0 + callruntime.definesendableclass 0xd6, .#~@d4=#TopLevelSendableClass213, _427, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd4 + ldhole + sta v0 + callruntime.definesendableclass 0xd7, .#~@d5=#TopLevelSendableClass214, _429, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd5 + ldhole + sta v0 + callruntime.definesendableclass 0xd8, .#~@d6=#TopLevelSendableClass215, _431, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd6 + ldhole + sta v0 + callruntime.definesendableclass 0xd9, .#~@d7=#TopLevelSendableClass216, _433, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd7 + ldhole + sta v0 + callruntime.definesendableclass 0xda, .#~@d8=#TopLevelSendableClass217, _435, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd8 + ldhole + sta v0 + callruntime.definesendableclass 0xdb, .#~@d9=#TopLevelSendableClass218, _437, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xd9 + ldhole + sta v0 + callruntime.definesendableclass 0xdc, .#~@da=#TopLevelSendableClass219, _439, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xda + ldhole + sta v0 + callruntime.definesendableclass 0xdd, .#~@db=#TopLevelSendableClass220, _441, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xdb + ldhole + sta v0 + callruntime.definesendableclass 0xde, .#~@dc=#TopLevelSendableClass221, _443, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xdc + ldhole + sta v0 + callruntime.definesendableclass 0xdf, .#~@dd=#TopLevelSendableClass222, _445, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xdd + ldhole + sta v0 + callruntime.definesendableclass 0xe0, .#~@de=#TopLevelSendableClass223, _447, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xde + ldhole + sta v0 + callruntime.definesendableclass 0xe1, .#~@df=#TopLevelSendableClass224, _449, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xdf + ldhole + sta v0 + callruntime.definesendableclass 0xe2, .#~@e0=#TopLevelSendableClass225, _451, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe0 + ldhole + sta v0 + callruntime.definesendableclass 0xe3, .#~@e1=#TopLevelSendableClass226, _453, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe1 + ldhole + sta v0 + callruntime.definesendableclass 0xe4, .#~@e2=#TopLevelSendableClass227, _455, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe2 + ldhole + sta v0 + callruntime.definesendableclass 0xe5, .#~@e3=#TopLevelSendableClass228, _457, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe3 + ldhole + sta v0 + callruntime.definesendableclass 0xe6, .#~@e4=#TopLevelSendableClass229, _459, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe4 + ldhole + sta v0 + callruntime.definesendableclass 0xe7, .#~@e5=#TopLevelSendableClass230, _461, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe5 + ldhole + sta v0 + callruntime.definesendableclass 0xe8, .#~@e6=#TopLevelSendableClass231, _463, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe6 + ldhole + sta v0 + callruntime.definesendableclass 0xe9, .#~@e7=#TopLevelSendableClass232, _465, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe7 + ldhole + sta v0 + callruntime.definesendableclass 0xea, .#~@e8=#TopLevelSendableClass233, _467, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe8 + ldhole + sta v0 + callruntime.definesendableclass 0xeb, .#~@e9=#TopLevelSendableClass234, _469, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xe9 + ldhole + sta v0 + callruntime.definesendableclass 0xec, .#~@ea=#TopLevelSendableClass235, _471, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xea + ldhole + sta v0 + callruntime.definesendableclass 0xed, .#~@eb=#TopLevelSendableClass236, _473, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xeb + ldhole + sta v0 + callruntime.definesendableclass 0xee, .#~@ec=#TopLevelSendableClass237, _475, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xec + ldhole + sta v0 + callruntime.definesendableclass 0xef, .#~@ed=#TopLevelSendableClass238, _477, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xed + ldhole + sta v0 + callruntime.definesendableclass 0xf0, .#~@ee=#TopLevelSendableClass239, _479, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xee + ldhole + sta v0 + callruntime.definesendableclass 0xf1, .#~@ef=#TopLevelSendableClass240, _481, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xef + ldhole + sta v0 + callruntime.definesendableclass 0xf2, .#~@f0=#TopLevelSendableClass241, _483, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf0 + ldhole + sta v0 + callruntime.definesendableclass 0xf3, .#~@f1=#TopLevelSendableClass242, _485, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf1 + ldhole + sta v0 + callruntime.definesendableclass 0xf4, .#~@f2=#TopLevelSendableClass243, _487, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf2 + ldhole + sta v0 + callruntime.definesendableclass 0xf5, .#~@f3=#TopLevelSendableClass244, _489, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf3 + ldhole + sta v0 + callruntime.definesendableclass 0xf6, .#~@f4=#TopLevelSendableClass245, _491, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf4 + ldhole + sta v0 + callruntime.definesendableclass 0xf7, .#~@f5=#TopLevelSendableClass246, _493, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf5 + ldhole + sta v0 + callruntime.definesendableclass 0xf8, .#~@f6=#TopLevelSendableClass247, _495, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf6 + ldhole + sta v0 + callruntime.definesendableclass 0xf9, .#~@f7=#TopLevelSendableClass248, _497, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf7 + ldhole + sta v0 + callruntime.definesendableclass 0xfa, .#~@f8=#TopLevelSendableClass249, _499, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf8 + ldhole + sta v0 + callruntime.definesendableclass 0xfb, .#~@f9=#TopLevelSendableClass250, _501, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xf9 + ldhole + sta v0 + callruntime.definesendableclass 0xfc, .#~@fa=#TopLevelSendableClass251, _503, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xfa + ldhole + sta v0 + callruntime.definesendableclass 0xfd, .#~@fb=#TopLevelSendableClass252, _505, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xfb + ldhole + sta v0 + callruntime.definesendableclass 0xfe, .#~@fc=#TopLevelSendableClass253, _507, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xfc + ldhole + sta v0 + callruntime.definesendableclass 0x100, .#~@fd=#TopLevelSendableClass254, _509, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xfd + ldhole + sta v0 + callruntime.definesendableclass 0x101, .#~@fe=#TopLevelSendableClass255, _511, 0x0, v0 + callruntime.widestsendablevar 0x0, 0xfe + ldhole + sta v0 + callruntime.definesendableclass 0x102, .#~@ff=#SendableTestClass1, _513, 0x0, v0 + sta v0 + mov v2, v0 + newobjrange 0x103, 0x1, v2 + sta v0 + tryldglobalbyname 0x105, print + sta v1 + lda v0 + ldobjbyname 0x106, v + sta v0 + lda v1 + callarg1 0x0, v0 + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_below_API11_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_asm_version-expected.txt similarity index 95% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_below_API11_asm_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_asm_version-expected.txt index 6cb40f7fb76e67872aeb9a7de77c205dbd96c971..6abb6478b6ef3dd027a05faf1bc024db17fc498c 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_below_API11_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x406 -expectedProperty = 0x101 .language ECMAScript .function any .SendableTestClass1(any a0, any a1, any a2) { label_1: @@ -1546,7 +1545,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass1(any a0, any a1, any a2) { label_1: @@ -1559,7 +1557,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass10(any a0, any a1, any a2) { label_1: @@ -1572,7 +1569,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass100(any a0, any a1, any a2) { label_1: @@ -1585,7 +1581,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass101(any a0, any a1, any a2) { label_1: @@ -1598,7 +1593,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass102(any a0, any a1, any a2) { label_1: @@ -1611,7 +1605,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass103(any a0, any a1, any a2) { label_1: @@ -1624,7 +1617,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass104(any a0, any a1, any a2) { label_1: @@ -1637,7 +1629,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass105(any a0, any a1, any a2) { label_1: @@ -1650,7 +1641,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass106(any a0, any a1, any a2) { label_1: @@ -1663,7 +1653,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass107(any a0, any a1, any a2) { label_1: @@ -1676,7 +1665,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass108(any a0, any a1, any a2) { label_1: @@ -1689,7 +1677,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass109(any a0, any a1, any a2) { label_1: @@ -1702,7 +1689,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass11(any a0, any a1, any a2) { label_1: @@ -1715,7 +1701,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass110(any a0, any a1, any a2) { label_1: @@ -1728,7 +1713,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass111(any a0, any a1, any a2) { label_1: @@ -1741,7 +1725,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass112(any a0, any a1, any a2) { label_1: @@ -1754,7 +1737,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass113(any a0, any a1, any a2) { label_1: @@ -1767,7 +1749,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass114(any a0, any a1, any a2) { label_1: @@ -1780,7 +1761,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass115(any a0, any a1, any a2) { label_1: @@ -1793,7 +1773,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass116(any a0, any a1, any a2) { label_1: @@ -1806,7 +1785,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass117(any a0, any a1, any a2) { label_1: @@ -1819,7 +1797,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass118(any a0, any a1, any a2) { label_1: @@ -1832,7 +1809,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass119(any a0, any a1, any a2) { label_1: @@ -1845,7 +1821,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass12(any a0, any a1, any a2) { label_1: @@ -1858,7 +1833,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass120(any a0, any a1, any a2) { label_1: @@ -1871,7 +1845,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass121(any a0, any a1, any a2) { label_1: @@ -1884,7 +1857,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass122(any a0, any a1, any a2) { label_1: @@ -1897,7 +1869,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass123(any a0, any a1, any a2) { label_1: @@ -1910,7 +1881,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass124(any a0, any a1, any a2) { label_1: @@ -1923,7 +1893,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass125(any a0, any a1, any a2) { label_1: @@ -1936,7 +1905,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass126(any a0, any a1, any a2) { label_1: @@ -1949,7 +1917,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass127(any a0, any a1, any a2) { label_1: @@ -1962,7 +1929,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass128(any a0, any a1, any a2) { label_1: @@ -1975,7 +1941,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass129(any a0, any a1, any a2) { label_1: @@ -1988,7 +1953,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass13(any a0, any a1, any a2) { label_1: @@ -2001,7 +1965,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass130(any a0, any a1, any a2) { label_1: @@ -2014,7 +1977,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass131(any a0, any a1, any a2) { label_1: @@ -2027,7 +1989,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass132(any a0, any a1, any a2) { label_1: @@ -2040,7 +2001,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass133(any a0, any a1, any a2) { label_1: @@ -2053,7 +2013,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass134(any a0, any a1, any a2) { label_1: @@ -2066,7 +2025,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass135(any a0, any a1, any a2) { label_1: @@ -2079,7 +2037,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass136(any a0, any a1, any a2) { label_1: @@ -2092,7 +2049,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass137(any a0, any a1, any a2) { label_1: @@ -2105,7 +2061,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass138(any a0, any a1, any a2) { label_1: @@ -2118,7 +2073,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass139(any a0, any a1, any a2) { label_1: @@ -2131,7 +2085,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass14(any a0, any a1, any a2) { label_1: @@ -2144,7 +2097,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass140(any a0, any a1, any a2) { label_1: @@ -2157,7 +2109,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass141(any a0, any a1, any a2) { label_1: @@ -2170,7 +2121,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass142(any a0, any a1, any a2) { label_1: @@ -2183,7 +2133,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass143(any a0, any a1, any a2) { label_1: @@ -2196,7 +2145,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass144(any a0, any a1, any a2) { label_1: @@ -2209,7 +2157,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass145(any a0, any a1, any a2) { label_1: @@ -2222,7 +2169,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass146(any a0, any a1, any a2) { label_1: @@ -2235,7 +2181,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass147(any a0, any a1, any a2) { label_1: @@ -2248,7 +2193,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass148(any a0, any a1, any a2) { label_1: @@ -2261,7 +2205,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass149(any a0, any a1, any a2) { label_1: @@ -2274,7 +2217,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass15(any a0, any a1, any a2) { label_1: @@ -2287,7 +2229,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass150(any a0, any a1, any a2) { label_1: @@ -2300,7 +2241,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass151(any a0, any a1, any a2) { label_1: @@ -2313,7 +2253,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass152(any a0, any a1, any a2) { label_1: @@ -2326,7 +2265,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass153(any a0, any a1, any a2) { label_1: @@ -2339,7 +2277,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass154(any a0, any a1, any a2) { label_1: @@ -2352,7 +2289,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass155(any a0, any a1, any a2) { label_1: @@ -2365,7 +2301,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass156(any a0, any a1, any a2) { label_1: @@ -2378,7 +2313,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass157(any a0, any a1, any a2) { label_1: @@ -2391,7 +2325,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass158(any a0, any a1, any a2) { label_1: @@ -2404,7 +2337,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass159(any a0, any a1, any a2) { label_1: @@ -2417,7 +2349,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass16(any a0, any a1, any a2) { label_1: @@ -2430,7 +2361,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass160(any a0, any a1, any a2) { label_1: @@ -2443,7 +2373,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass161(any a0, any a1, any a2) { label_1: @@ -2456,7 +2385,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass162(any a0, any a1, any a2) { label_1: @@ -2469,7 +2397,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass163(any a0, any a1, any a2) { label_1: @@ -2482,7 +2409,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass164(any a0, any a1, any a2) { label_1: @@ -2495,7 +2421,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass165(any a0, any a1, any a2) { label_1: @@ -2508,7 +2433,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass166(any a0, any a1, any a2) { label_1: @@ -2521,7 +2445,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass167(any a0, any a1, any a2) { label_1: @@ -2534,7 +2457,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass168(any a0, any a1, any a2) { label_1: @@ -2547,7 +2469,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass169(any a0, any a1, any a2) { label_1: @@ -2560,7 +2481,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass17(any a0, any a1, any a2) { label_1: @@ -2573,7 +2493,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass170(any a0, any a1, any a2) { label_1: @@ -2586,7 +2505,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass171(any a0, any a1, any a2) { label_1: @@ -2599,7 +2517,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass172(any a0, any a1, any a2) { label_1: @@ -2612,7 +2529,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass173(any a0, any a1, any a2) { label_1: @@ -2625,7 +2541,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass174(any a0, any a1, any a2) { label_1: @@ -2638,7 +2553,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass175(any a0, any a1, any a2) { label_1: @@ -2651,7 +2565,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass176(any a0, any a1, any a2) { label_1: @@ -2664,7 +2577,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass177(any a0, any a1, any a2) { label_1: @@ -2677,7 +2589,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass178(any a0, any a1, any a2) { label_1: @@ -2690,7 +2601,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass179(any a0, any a1, any a2) { label_1: @@ -2703,7 +2613,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass18(any a0, any a1, any a2) { label_1: @@ -2716,7 +2625,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass180(any a0, any a1, any a2) { label_1: @@ -2729,7 +2637,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass181(any a0, any a1, any a2) { label_1: @@ -2742,7 +2649,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass182(any a0, any a1, any a2) { label_1: @@ -2755,7 +2661,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass183(any a0, any a1, any a2) { label_1: @@ -2768,7 +2673,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass184(any a0, any a1, any a2) { label_1: @@ -2781,7 +2685,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass185(any a0, any a1, any a2) { label_1: @@ -2794,7 +2697,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass186(any a0, any a1, any a2) { label_1: @@ -2807,7 +2709,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass187(any a0, any a1, any a2) { label_1: @@ -2820,7 +2721,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass188(any a0, any a1, any a2) { label_1: @@ -2833,7 +2733,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass189(any a0, any a1, any a2) { label_1: @@ -2846,7 +2745,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass19(any a0, any a1, any a2) { label_1: @@ -2859,7 +2757,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass190(any a0, any a1, any a2) { label_1: @@ -2872,7 +2769,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass191(any a0, any a1, any a2) { label_1: @@ -2885,7 +2781,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass192(any a0, any a1, any a2) { label_1: @@ -2898,7 +2793,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass193(any a0, any a1, any a2) { label_1: @@ -2911,7 +2805,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass194(any a0, any a1, any a2) { label_1: @@ -2924,7 +2817,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass195(any a0, any a1, any a2) { label_1: @@ -2937,7 +2829,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass196(any a0, any a1, any a2) { label_1: @@ -2950,7 +2841,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass197(any a0, any a1, any a2) { label_1: @@ -2963,7 +2853,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass198(any a0, any a1, any a2) { label_1: @@ -2976,7 +2865,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass199(any a0, any a1, any a2) { label_1: @@ -2989,7 +2877,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass2(any a0, any a1, any a2) { label_1: @@ -3002,7 +2889,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass20(any a0, any a1, any a2) { label_1: @@ -3015,7 +2901,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass200(any a0, any a1, any a2) { label_1: @@ -3028,7 +2913,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass201(any a0, any a1, any a2) { label_1: @@ -3041,7 +2925,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass202(any a0, any a1, any a2) { label_1: @@ -3054,7 +2937,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass203(any a0, any a1, any a2) { label_1: @@ -3067,7 +2949,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass204(any a0, any a1, any a2) { label_1: @@ -3080,7 +2961,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass205(any a0, any a1, any a2) { label_1: @@ -3093,7 +2973,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass206(any a0, any a1, any a2) { label_1: @@ -3106,7 +2985,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass207(any a0, any a1, any a2) { label_1: @@ -3119,7 +2997,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass208(any a0, any a1, any a2) { label_1: @@ -3132,7 +3009,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass209(any a0, any a1, any a2) { label_1: @@ -3145,7 +3021,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass21(any a0, any a1, any a2) { label_1: @@ -3158,7 +3033,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass210(any a0, any a1, any a2) { label_1: @@ -3171,7 +3045,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass211(any a0, any a1, any a2) { label_1: @@ -3184,7 +3057,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass212(any a0, any a1, any a2) { label_1: @@ -3197,7 +3069,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass213(any a0, any a1, any a2) { label_1: @@ -3210,7 +3081,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass214(any a0, any a1, any a2) { label_1: @@ -3223,7 +3093,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass215(any a0, any a1, any a2) { label_1: @@ -3236,7 +3105,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass216(any a0, any a1, any a2) { label_1: @@ -3249,7 +3117,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass217(any a0, any a1, any a2) { label_1: @@ -3262,7 +3129,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass218(any a0, any a1, any a2) { label_1: @@ -3275,7 +3141,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass219(any a0, any a1, any a2) { label_1: @@ -3288,7 +3153,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass22(any a0, any a1, any a2) { label_1: @@ -3301,7 +3165,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass220(any a0, any a1, any a2) { label_1: @@ -3314,7 +3177,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass221(any a0, any a1, any a2) { label_1: @@ -3327,7 +3189,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass222(any a0, any a1, any a2) { label_1: @@ -3340,7 +3201,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass223(any a0, any a1, any a2) { label_1: @@ -3353,7 +3213,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass224(any a0, any a1, any a2) { label_1: @@ -3366,7 +3225,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass225(any a0, any a1, any a2) { label_1: @@ -3379,7 +3237,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass226(any a0, any a1, any a2) { label_1: @@ -3392,7 +3249,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass227(any a0, any a1, any a2) { label_1: @@ -3405,7 +3261,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass228(any a0, any a1, any a2) { label_1: @@ -3418,7 +3273,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass229(any a0, any a1, any a2) { label_1: @@ -3431,7 +3285,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass23(any a0, any a1, any a2) { label_1: @@ -3444,7 +3297,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass230(any a0, any a1, any a2) { label_1: @@ -3457,7 +3309,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass231(any a0, any a1, any a2) { label_1: @@ -3470,7 +3321,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass232(any a0, any a1, any a2) { label_1: @@ -3483,7 +3333,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass233(any a0, any a1, any a2) { label_1: @@ -3496,7 +3345,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass234(any a0, any a1, any a2) { label_1: @@ -3509,7 +3357,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass235(any a0, any a1, any a2) { label_1: @@ -3522,7 +3369,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass236(any a0, any a1, any a2) { label_1: @@ -3535,7 +3381,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass237(any a0, any a1, any a2) { label_1: @@ -3548,7 +3393,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass238(any a0, any a1, any a2) { label_1: @@ -3561,7 +3405,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass239(any a0, any a1, any a2) { label_1: @@ -3574,7 +3417,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass24(any a0, any a1, any a2) { label_1: @@ -3587,7 +3429,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass240(any a0, any a1, any a2) { label_1: @@ -3600,7 +3441,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass241(any a0, any a1, any a2) { label_1: @@ -3613,7 +3453,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass242(any a0, any a1, any a2) { label_1: @@ -3626,7 +3465,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass243(any a0, any a1, any a2) { label_1: @@ -3639,7 +3477,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass244(any a0, any a1, any a2) { label_1: @@ -3652,7 +3489,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass245(any a0, any a1, any a2) { label_1: @@ -3665,7 +3501,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass246(any a0, any a1, any a2) { label_1: @@ -3678,7 +3513,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass247(any a0, any a1, any a2) { label_1: @@ -3691,7 +3525,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass248(any a0, any a1, any a2) { label_1: @@ -3704,7 +3537,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass249(any a0, any a1, any a2) { label_1: @@ -3717,7 +3549,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass25(any a0, any a1, any a2) { label_1: @@ -3730,7 +3561,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass250(any a0, any a1, any a2) { label_1: @@ -3743,7 +3573,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass251(any a0, any a1, any a2) { label_1: @@ -3756,7 +3585,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass252(any a0, any a1, any a2) { label_1: @@ -3769,7 +3597,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass253(any a0, any a1, any a2) { label_1: @@ -3782,7 +3609,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass254(any a0, any a1, any a2) { label_1: @@ -3795,7 +3621,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass255(any a0, any a1, any a2) { label_1: @@ -3808,7 +3633,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass26(any a0, any a1, any a2) { label_1: @@ -3821,7 +3645,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass27(any a0, any a1, any a2) { label_1: @@ -3834,7 +3657,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass28(any a0, any a1, any a2) { label_1: @@ -3847,7 +3669,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass29(any a0, any a1, any a2) { label_1: @@ -3860,7 +3681,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass3(any a0, any a1, any a2) { label_1: @@ -3873,7 +3693,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass30(any a0, any a1, any a2) { label_1: @@ -3886,7 +3705,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass31(any a0, any a1, any a2) { label_1: @@ -3899,7 +3717,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass32(any a0, any a1, any a2) { label_1: @@ -3912,7 +3729,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass33(any a0, any a1, any a2) { label_1: @@ -3925,7 +3741,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass34(any a0, any a1, any a2) { label_1: @@ -3938,7 +3753,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass35(any a0, any a1, any a2) { label_1: @@ -3951,7 +3765,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass36(any a0, any a1, any a2) { label_1: @@ -3964,7 +3777,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass37(any a0, any a1, any a2) { label_1: @@ -3977,7 +3789,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass38(any a0, any a1, any a2) { label_1: @@ -3990,7 +3801,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass39(any a0, any a1, any a2) { label_1: @@ -4003,7 +3813,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass4(any a0, any a1, any a2) { label_1: @@ -4016,7 +3825,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass40(any a0, any a1, any a2) { label_1: @@ -4029,7 +3837,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass41(any a0, any a1, any a2) { label_1: @@ -4042,7 +3849,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass42(any a0, any a1, any a2) { label_1: @@ -4055,7 +3861,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass43(any a0, any a1, any a2) { label_1: @@ -4068,7 +3873,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass44(any a0, any a1, any a2) { label_1: @@ -4081,7 +3885,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass45(any a0, any a1, any a2) { label_1: @@ -4094,7 +3897,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass46(any a0, any a1, any a2) { label_1: @@ -4107,7 +3909,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass47(any a0, any a1, any a2) { label_1: @@ -4120,7 +3921,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass48(any a0, any a1, any a2) { label_1: @@ -4133,7 +3933,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass49(any a0, any a1, any a2) { label_1: @@ -4146,7 +3945,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass5(any a0, any a1, any a2) { label_1: @@ -4159,7 +3957,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass50(any a0, any a1, any a2) { label_1: @@ -4172,7 +3969,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass51(any a0, any a1, any a2) { label_1: @@ -4185,7 +3981,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass52(any a0, any a1, any a2) { label_1: @@ -4198,7 +3993,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass53(any a0, any a1, any a2) { label_1: @@ -4211,7 +4005,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass54(any a0, any a1, any a2) { label_1: @@ -4224,7 +4017,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass55(any a0, any a1, any a2) { label_1: @@ -4237,7 +4029,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass56(any a0, any a1, any a2) { label_1: @@ -4250,7 +4041,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass57(any a0, any a1, any a2) { label_1: @@ -4263,7 +4053,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass58(any a0, any a1, any a2) { label_1: @@ -4276,7 +4065,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass59(any a0, any a1, any a2) { label_1: @@ -4289,7 +4077,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass6(any a0, any a1, any a2) { label_1: @@ -4302,7 +4089,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass60(any a0, any a1, any a2) { label_1: @@ -4315,7 +4101,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass61(any a0, any a1, any a2) { label_1: @@ -4328,7 +4113,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass62(any a0, any a1, any a2) { label_1: @@ -4341,7 +4125,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass63(any a0, any a1, any a2) { label_1: @@ -4354,7 +4137,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass64(any a0, any a1, any a2) { label_1: @@ -4367,7 +4149,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass65(any a0, any a1, any a2) { label_1: @@ -4380,7 +4161,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass66(any a0, any a1, any a2) { label_1: @@ -4393,7 +4173,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass67(any a0, any a1, any a2) { label_1: @@ -4406,7 +4185,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass68(any a0, any a1, any a2) { label_1: @@ -4419,7 +4197,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass69(any a0, any a1, any a2) { label_1: @@ -4432,7 +4209,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass7(any a0, any a1, any a2) { label_1: @@ -4445,7 +4221,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass70(any a0, any a1, any a2) { label_1: @@ -4458,7 +4233,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass71(any a0, any a1, any a2) { label_1: @@ -4471,7 +4245,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass72(any a0, any a1, any a2) { label_1: @@ -4484,7 +4257,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass73(any a0, any a1, any a2) { label_1: @@ -4497,7 +4269,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass74(any a0, any a1, any a2) { label_1: @@ -4510,7 +4281,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass75(any a0, any a1, any a2) { label_1: @@ -4523,7 +4293,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass76(any a0, any a1, any a2) { label_1: @@ -4536,7 +4305,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass77(any a0, any a1, any a2) { label_1: @@ -4549,7 +4317,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass78(any a0, any a1, any a2) { label_1: @@ -4562,7 +4329,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass79(any a0, any a1, any a2) { label_1: @@ -4575,7 +4341,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass8(any a0, any a1, any a2) { label_1: @@ -4588,7 +4353,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass80(any a0, any a1, any a2) { label_1: @@ -4601,7 +4365,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass81(any a0, any a1, any a2) { label_1: @@ -4614,7 +4377,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass82(any a0, any a1, any a2) { label_1: @@ -4627,7 +4389,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass83(any a0, any a1, any a2) { label_1: @@ -4640,7 +4401,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass84(any a0, any a1, any a2) { label_1: @@ -4653,7 +4413,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass85(any a0, any a1, any a2) { label_1: @@ -4666,7 +4425,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass86(any a0, any a1, any a2) { label_1: @@ -4679,7 +4437,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass87(any a0, any a1, any a2) { label_1: @@ -4692,7 +4449,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass88(any a0, any a1, any a2) { label_1: @@ -4705,7 +4461,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass89(any a0, any a1, any a2) { label_1: @@ -4718,7 +4473,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass9(any a0, any a1, any a2) { label_1: @@ -4731,7 +4485,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass90(any a0, any a1, any a2) { label_1: @@ -4744,7 +4497,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass91(any a0, any a1, any a2) { label_1: @@ -4757,7 +4509,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass92(any a0, any a1, any a2) { label_1: @@ -4770,7 +4521,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass93(any a0, any a1, any a2) { label_1: @@ -4783,7 +4533,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass94(any a0, any a1, any a2) { label_1: @@ -4796,7 +4545,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass95(any a0, any a1, any a2) { label_1: @@ -4809,7 +4557,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass96(any a0, any a1, any a2) { label_1: @@ -4822,7 +4569,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass97(any a0, any a1, any a2) { label_1: @@ -4835,7 +4581,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass98(any a0, any a1, any a2) { label_1: @@ -4848,7 +4593,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass99(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 95% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt index 50cd83163e1619f04dccf5fb1330d1e4e68be958..33c3a51f3e1e56de69ef1b5e5c28fb7435018554 100644 --- a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_below_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x406 -expectedProperty = 0x101 .language ECMAScript .function any .SendableTestClass1(any a0, any a1, any a2) { label_1: @@ -1546,7 +1545,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass1(any a0, any a1, any a2) { label_1: @@ -1559,7 +1557,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass10(any a0, any a1, any a2) { label_1: @@ -1572,7 +1569,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass100(any a0, any a1, any a2) { label_1: @@ -1585,7 +1581,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass101(any a0, any a1, any a2) { label_1: @@ -1598,7 +1593,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass102(any a0, any a1, any a2) { label_1: @@ -1611,7 +1605,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass103(any a0, any a1, any a2) { label_1: @@ -1624,7 +1617,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass104(any a0, any a1, any a2) { label_1: @@ -1637,7 +1629,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass105(any a0, any a1, any a2) { label_1: @@ -1650,7 +1641,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass106(any a0, any a1, any a2) { label_1: @@ -1663,7 +1653,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass107(any a0, any a1, any a2) { label_1: @@ -1676,7 +1665,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass108(any a0, any a1, any a2) { label_1: @@ -1689,7 +1677,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass109(any a0, any a1, any a2) { label_1: @@ -1702,7 +1689,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass11(any a0, any a1, any a2) { label_1: @@ -1715,7 +1701,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass110(any a0, any a1, any a2) { label_1: @@ -1728,7 +1713,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass111(any a0, any a1, any a2) { label_1: @@ -1741,7 +1725,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass112(any a0, any a1, any a2) { label_1: @@ -1754,7 +1737,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass113(any a0, any a1, any a2) { label_1: @@ -1767,7 +1749,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass114(any a0, any a1, any a2) { label_1: @@ -1780,7 +1761,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass115(any a0, any a1, any a2) { label_1: @@ -1793,7 +1773,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass116(any a0, any a1, any a2) { label_1: @@ -1806,7 +1785,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass117(any a0, any a1, any a2) { label_1: @@ -1819,7 +1797,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass118(any a0, any a1, any a2) { label_1: @@ -1832,7 +1809,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass119(any a0, any a1, any a2) { label_1: @@ -1845,7 +1821,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass12(any a0, any a1, any a2) { label_1: @@ -1858,7 +1833,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass120(any a0, any a1, any a2) { label_1: @@ -1871,7 +1845,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass121(any a0, any a1, any a2) { label_1: @@ -1884,7 +1857,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass122(any a0, any a1, any a2) { label_1: @@ -1897,7 +1869,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass123(any a0, any a1, any a2) { label_1: @@ -1910,7 +1881,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass124(any a0, any a1, any a2) { label_1: @@ -1923,7 +1893,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass125(any a0, any a1, any a2) { label_1: @@ -1936,7 +1905,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass126(any a0, any a1, any a2) { label_1: @@ -1949,7 +1917,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass127(any a0, any a1, any a2) { label_1: @@ -1962,7 +1929,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass128(any a0, any a1, any a2) { label_1: @@ -1975,7 +1941,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass129(any a0, any a1, any a2) { label_1: @@ -1988,7 +1953,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass13(any a0, any a1, any a2) { label_1: @@ -2001,7 +1965,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass130(any a0, any a1, any a2) { label_1: @@ -2014,7 +1977,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass131(any a0, any a1, any a2) { label_1: @@ -2027,7 +1989,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass132(any a0, any a1, any a2) { label_1: @@ -2040,7 +2001,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass133(any a0, any a1, any a2) { label_1: @@ -2053,7 +2013,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass134(any a0, any a1, any a2) { label_1: @@ -2066,7 +2025,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass135(any a0, any a1, any a2) { label_1: @@ -2079,7 +2037,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass136(any a0, any a1, any a2) { label_1: @@ -2092,7 +2049,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass137(any a0, any a1, any a2) { label_1: @@ -2105,7 +2061,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass138(any a0, any a1, any a2) { label_1: @@ -2118,7 +2073,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass139(any a0, any a1, any a2) { label_1: @@ -2131,7 +2085,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass14(any a0, any a1, any a2) { label_1: @@ -2144,7 +2097,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass140(any a0, any a1, any a2) { label_1: @@ -2157,7 +2109,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass141(any a0, any a1, any a2) { label_1: @@ -2170,7 +2121,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass142(any a0, any a1, any a2) { label_1: @@ -2183,7 +2133,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass143(any a0, any a1, any a2) { label_1: @@ -2196,7 +2145,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass144(any a0, any a1, any a2) { label_1: @@ -2209,7 +2157,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass145(any a0, any a1, any a2) { label_1: @@ -2222,7 +2169,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass146(any a0, any a1, any a2) { label_1: @@ -2235,7 +2181,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass147(any a0, any a1, any a2) { label_1: @@ -2248,7 +2193,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass148(any a0, any a1, any a2) { label_1: @@ -2261,7 +2205,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass149(any a0, any a1, any a2) { label_1: @@ -2274,7 +2217,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass15(any a0, any a1, any a2) { label_1: @@ -2287,7 +2229,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass150(any a0, any a1, any a2) { label_1: @@ -2300,7 +2241,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass151(any a0, any a1, any a2) { label_1: @@ -2313,7 +2253,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass152(any a0, any a1, any a2) { label_1: @@ -2326,7 +2265,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass153(any a0, any a1, any a2) { label_1: @@ -2339,7 +2277,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass154(any a0, any a1, any a2) { label_1: @@ -2352,7 +2289,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass155(any a0, any a1, any a2) { label_1: @@ -2365,7 +2301,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass156(any a0, any a1, any a2) { label_1: @@ -2378,7 +2313,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass157(any a0, any a1, any a2) { label_1: @@ -2391,7 +2325,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass158(any a0, any a1, any a2) { label_1: @@ -2404,7 +2337,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass159(any a0, any a1, any a2) { label_1: @@ -2417,7 +2349,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass16(any a0, any a1, any a2) { label_1: @@ -2430,7 +2361,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass160(any a0, any a1, any a2) { label_1: @@ -2443,7 +2373,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass161(any a0, any a1, any a2) { label_1: @@ -2456,7 +2385,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass162(any a0, any a1, any a2) { label_1: @@ -2469,7 +2397,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass163(any a0, any a1, any a2) { label_1: @@ -2482,7 +2409,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass164(any a0, any a1, any a2) { label_1: @@ -2495,7 +2421,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass165(any a0, any a1, any a2) { label_1: @@ -2508,7 +2433,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass166(any a0, any a1, any a2) { label_1: @@ -2521,7 +2445,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass167(any a0, any a1, any a2) { label_1: @@ -2534,7 +2457,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass168(any a0, any a1, any a2) { label_1: @@ -2547,7 +2469,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass169(any a0, any a1, any a2) { label_1: @@ -2560,7 +2481,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass17(any a0, any a1, any a2) { label_1: @@ -2573,7 +2493,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass170(any a0, any a1, any a2) { label_1: @@ -2586,7 +2505,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass171(any a0, any a1, any a2) { label_1: @@ -2599,7 +2517,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass172(any a0, any a1, any a2) { label_1: @@ -2612,7 +2529,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass173(any a0, any a1, any a2) { label_1: @@ -2625,7 +2541,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass174(any a0, any a1, any a2) { label_1: @@ -2638,7 +2553,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass175(any a0, any a1, any a2) { label_1: @@ -2651,7 +2565,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass176(any a0, any a1, any a2) { label_1: @@ -2664,7 +2577,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass177(any a0, any a1, any a2) { label_1: @@ -2677,7 +2589,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass178(any a0, any a1, any a2) { label_1: @@ -2690,7 +2601,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass179(any a0, any a1, any a2) { label_1: @@ -2703,7 +2613,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass18(any a0, any a1, any a2) { label_1: @@ -2716,7 +2625,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass180(any a0, any a1, any a2) { label_1: @@ -2729,7 +2637,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass181(any a0, any a1, any a2) { label_1: @@ -2742,7 +2649,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass182(any a0, any a1, any a2) { label_1: @@ -2755,7 +2661,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass183(any a0, any a1, any a2) { label_1: @@ -2768,7 +2673,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass184(any a0, any a1, any a2) { label_1: @@ -2781,7 +2685,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass185(any a0, any a1, any a2) { label_1: @@ -2794,7 +2697,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass186(any a0, any a1, any a2) { label_1: @@ -2807,7 +2709,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass187(any a0, any a1, any a2) { label_1: @@ -2820,7 +2721,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass188(any a0, any a1, any a2) { label_1: @@ -2833,7 +2733,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass189(any a0, any a1, any a2) { label_1: @@ -2846,7 +2745,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass19(any a0, any a1, any a2) { label_1: @@ -2859,7 +2757,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass190(any a0, any a1, any a2) { label_1: @@ -2872,7 +2769,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass191(any a0, any a1, any a2) { label_1: @@ -2885,7 +2781,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass192(any a0, any a1, any a2) { label_1: @@ -2898,7 +2793,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass193(any a0, any a1, any a2) { label_1: @@ -2911,7 +2805,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass194(any a0, any a1, any a2) { label_1: @@ -2924,7 +2817,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass195(any a0, any a1, any a2) { label_1: @@ -2937,7 +2829,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass196(any a0, any a1, any a2) { label_1: @@ -2950,7 +2841,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass197(any a0, any a1, any a2) { label_1: @@ -2963,7 +2853,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass198(any a0, any a1, any a2) { label_1: @@ -2976,7 +2865,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass199(any a0, any a1, any a2) { label_1: @@ -2989,7 +2877,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass2(any a0, any a1, any a2) { label_1: @@ -3002,7 +2889,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass20(any a0, any a1, any a2) { label_1: @@ -3015,7 +2901,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass200(any a0, any a1, any a2) { label_1: @@ -3028,7 +2913,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass201(any a0, any a1, any a2) { label_1: @@ -3041,7 +2925,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass202(any a0, any a1, any a2) { label_1: @@ -3054,7 +2937,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass203(any a0, any a1, any a2) { label_1: @@ -3067,7 +2949,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass204(any a0, any a1, any a2) { label_1: @@ -3080,7 +2961,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass205(any a0, any a1, any a2) { label_1: @@ -3093,7 +2973,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass206(any a0, any a1, any a2) { label_1: @@ -3106,7 +2985,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass207(any a0, any a1, any a2) { label_1: @@ -3119,7 +2997,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass208(any a0, any a1, any a2) { label_1: @@ -3132,7 +3009,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass209(any a0, any a1, any a2) { label_1: @@ -3145,7 +3021,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass21(any a0, any a1, any a2) { label_1: @@ -3158,7 +3033,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass210(any a0, any a1, any a2) { label_1: @@ -3171,7 +3045,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass211(any a0, any a1, any a2) { label_1: @@ -3184,7 +3057,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass212(any a0, any a1, any a2) { label_1: @@ -3197,7 +3069,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass213(any a0, any a1, any a2) { label_1: @@ -3210,7 +3081,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass214(any a0, any a1, any a2) { label_1: @@ -3223,7 +3093,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass215(any a0, any a1, any a2) { label_1: @@ -3236,7 +3105,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass216(any a0, any a1, any a2) { label_1: @@ -3249,7 +3117,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass217(any a0, any a1, any a2) { label_1: @@ -3262,7 +3129,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass218(any a0, any a1, any a2) { label_1: @@ -3275,7 +3141,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass219(any a0, any a1, any a2) { label_1: @@ -3288,7 +3153,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass22(any a0, any a1, any a2) { label_1: @@ -3301,7 +3165,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass220(any a0, any a1, any a2) { label_1: @@ -3314,7 +3177,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass221(any a0, any a1, any a2) { label_1: @@ -3327,7 +3189,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass222(any a0, any a1, any a2) { label_1: @@ -3340,7 +3201,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass223(any a0, any a1, any a2) { label_1: @@ -3353,7 +3213,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass224(any a0, any a1, any a2) { label_1: @@ -3366,7 +3225,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass225(any a0, any a1, any a2) { label_1: @@ -3379,7 +3237,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass226(any a0, any a1, any a2) { label_1: @@ -3392,7 +3249,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass227(any a0, any a1, any a2) { label_1: @@ -3405,7 +3261,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass228(any a0, any a1, any a2) { label_1: @@ -3418,7 +3273,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass229(any a0, any a1, any a2) { label_1: @@ -3431,7 +3285,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass23(any a0, any a1, any a2) { label_1: @@ -3444,7 +3297,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass230(any a0, any a1, any a2) { label_1: @@ -3457,7 +3309,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass231(any a0, any a1, any a2) { label_1: @@ -3470,7 +3321,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass232(any a0, any a1, any a2) { label_1: @@ -3483,7 +3333,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass233(any a0, any a1, any a2) { label_1: @@ -3496,7 +3345,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass234(any a0, any a1, any a2) { label_1: @@ -3509,7 +3357,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass235(any a0, any a1, any a2) { label_1: @@ -3522,7 +3369,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass236(any a0, any a1, any a2) { label_1: @@ -3535,7 +3381,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass237(any a0, any a1, any a2) { label_1: @@ -3548,7 +3393,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass238(any a0, any a1, any a2) { label_1: @@ -3561,7 +3405,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass239(any a0, any a1, any a2) { label_1: @@ -3574,7 +3417,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass24(any a0, any a1, any a2) { label_1: @@ -3587,7 +3429,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass240(any a0, any a1, any a2) { label_1: @@ -3600,7 +3441,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass241(any a0, any a1, any a2) { label_1: @@ -3613,7 +3453,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass242(any a0, any a1, any a2) { label_1: @@ -3626,7 +3465,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass243(any a0, any a1, any a2) { label_1: @@ -3639,7 +3477,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass244(any a0, any a1, any a2) { label_1: @@ -3652,7 +3489,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass245(any a0, any a1, any a2) { label_1: @@ -3665,7 +3501,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass246(any a0, any a1, any a2) { label_1: @@ -3678,7 +3513,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass247(any a0, any a1, any a2) { label_1: @@ -3691,7 +3525,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass248(any a0, any a1, any a2) { label_1: @@ -3704,7 +3537,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass249(any a0, any a1, any a2) { label_1: @@ -3717,7 +3549,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass25(any a0, any a1, any a2) { label_1: @@ -3730,7 +3561,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass250(any a0, any a1, any a2) { label_1: @@ -3743,7 +3573,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass251(any a0, any a1, any a2) { label_1: @@ -3756,7 +3585,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass252(any a0, any a1, any a2) { label_1: @@ -3769,7 +3597,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass253(any a0, any a1, any a2) { label_1: @@ -3782,7 +3609,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass254(any a0, any a1, any a2) { label_1: @@ -3795,7 +3621,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass255(any a0, any a1, any a2) { label_1: @@ -3808,7 +3633,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass26(any a0, any a1, any a2) { label_1: @@ -3821,7 +3645,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass27(any a0, any a1, any a2) { label_1: @@ -3834,7 +3657,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass28(any a0, any a1, any a2) { label_1: @@ -3847,7 +3669,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass29(any a0, any a1, any a2) { label_1: @@ -3860,7 +3681,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass3(any a0, any a1, any a2) { label_1: @@ -3873,7 +3693,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass30(any a0, any a1, any a2) { label_1: @@ -3886,7 +3705,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass31(any a0, any a1, any a2) { label_1: @@ -3899,7 +3717,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass32(any a0, any a1, any a2) { label_1: @@ -3912,7 +3729,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass33(any a0, any a1, any a2) { label_1: @@ -3925,7 +3741,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass34(any a0, any a1, any a2) { label_1: @@ -3938,7 +3753,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass35(any a0, any a1, any a2) { label_1: @@ -3951,7 +3765,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass36(any a0, any a1, any a2) { label_1: @@ -3964,7 +3777,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass37(any a0, any a1, any a2) { label_1: @@ -3977,7 +3789,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass38(any a0, any a1, any a2) { label_1: @@ -3990,7 +3801,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass39(any a0, any a1, any a2) { label_1: @@ -4003,7 +3813,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass4(any a0, any a1, any a2) { label_1: @@ -4016,7 +3825,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass40(any a0, any a1, any a2) { label_1: @@ -4029,7 +3837,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass41(any a0, any a1, any a2) { label_1: @@ -4042,7 +3849,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass42(any a0, any a1, any a2) { label_1: @@ -4055,7 +3861,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass43(any a0, any a1, any a2) { label_1: @@ -4068,7 +3873,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass44(any a0, any a1, any a2) { label_1: @@ -4081,7 +3885,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass45(any a0, any a1, any a2) { label_1: @@ -4094,7 +3897,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass46(any a0, any a1, any a2) { label_1: @@ -4107,7 +3909,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass47(any a0, any a1, any a2) { label_1: @@ -4120,7 +3921,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass48(any a0, any a1, any a2) { label_1: @@ -4133,7 +3933,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass49(any a0, any a1, any a2) { label_1: @@ -4146,7 +3945,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass5(any a0, any a1, any a2) { label_1: @@ -4159,7 +3957,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass50(any a0, any a1, any a2) { label_1: @@ -4172,7 +3969,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass51(any a0, any a1, any a2) { label_1: @@ -4185,7 +3981,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass52(any a0, any a1, any a2) { label_1: @@ -4198,7 +3993,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass53(any a0, any a1, any a2) { label_1: @@ -4211,7 +4005,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass54(any a0, any a1, any a2) { label_1: @@ -4224,7 +4017,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass55(any a0, any a1, any a2) { label_1: @@ -4237,7 +4029,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass56(any a0, any a1, any a2) { label_1: @@ -4250,7 +4041,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass57(any a0, any a1, any a2) { label_1: @@ -4263,7 +4053,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass58(any a0, any a1, any a2) { label_1: @@ -4276,7 +4065,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass59(any a0, any a1, any a2) { label_1: @@ -4289,7 +4077,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass6(any a0, any a1, any a2) { label_1: @@ -4302,7 +4089,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass60(any a0, any a1, any a2) { label_1: @@ -4315,7 +4101,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass61(any a0, any a1, any a2) { label_1: @@ -4328,7 +4113,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass62(any a0, any a1, any a2) { label_1: @@ -4341,7 +4125,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass63(any a0, any a1, any a2) { label_1: @@ -4354,7 +4137,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass64(any a0, any a1, any a2) { label_1: @@ -4367,7 +4149,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass65(any a0, any a1, any a2) { label_1: @@ -4380,7 +4161,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass66(any a0, any a1, any a2) { label_1: @@ -4393,7 +4173,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass67(any a0, any a1, any a2) { label_1: @@ -4406,7 +4185,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass68(any a0, any a1, any a2) { label_1: @@ -4419,7 +4197,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass69(any a0, any a1, any a2) { label_1: @@ -4432,7 +4209,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass7(any a0, any a1, any a2) { label_1: @@ -4445,7 +4221,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass70(any a0, any a1, any a2) { label_1: @@ -4458,7 +4233,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass71(any a0, any a1, any a2) { label_1: @@ -4471,7 +4245,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass72(any a0, any a1, any a2) { label_1: @@ -4484,7 +4257,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass73(any a0, any a1, any a2) { label_1: @@ -4497,7 +4269,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass74(any a0, any a1, any a2) { label_1: @@ -4510,7 +4281,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass75(any a0, any a1, any a2) { label_1: @@ -4523,7 +4293,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass76(any a0, any a1, any a2) { label_1: @@ -4536,7 +4305,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass77(any a0, any a1, any a2) { label_1: @@ -4549,7 +4317,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass78(any a0, any a1, any a2) { label_1: @@ -4562,7 +4329,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass79(any a0, any a1, any a2) { label_1: @@ -4575,7 +4341,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass8(any a0, any a1, any a2) { label_1: @@ -4588,7 +4353,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass80(any a0, any a1, any a2) { label_1: @@ -4601,7 +4365,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass81(any a0, any a1, any a2) { label_1: @@ -4614,7 +4377,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass82(any a0, any a1, any a2) { label_1: @@ -4627,7 +4389,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass83(any a0, any a1, any a2) { label_1: @@ -4640,7 +4401,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass84(any a0, any a1, any a2) { label_1: @@ -4653,7 +4413,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass85(any a0, any a1, any a2) { label_1: @@ -4666,7 +4425,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass86(any a0, any a1, any a2) { label_1: @@ -4679,7 +4437,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass87(any a0, any a1, any a2) { label_1: @@ -4692,7 +4449,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass88(any a0, any a1, any a2) { label_1: @@ -4705,7 +4461,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass89(any a0, any a1, any a2) { label_1: @@ -4718,7 +4473,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass9(any a0, any a1, any a2) { label_1: @@ -4731,7 +4485,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass90(any a0, any a1, any a2) { label_1: @@ -4744,7 +4497,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass91(any a0, any a1, any a2) { label_1: @@ -4757,7 +4509,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass92(any a0, any a1, any a2) { label_1: @@ -4770,7 +4521,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass93(any a0, any a1, any a2) { label_1: @@ -4783,7 +4533,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass94(any a0, any a1, any a2) { label_1: @@ -4796,7 +4545,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass95(any a0, any a1, any a2) { label_1: @@ -4809,7 +4557,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass96(any a0, any a1, any a2) { label_1: @@ -4822,7 +4569,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass97(any a0, any a1, any a2) { label_1: @@ -4835,7 +4581,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass98(any a0, any a1, any a2) { label_1: @@ -4848,7 +4593,6 @@ label_2: } slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .TopLevelSendableClass99(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..33c3a51f3e1e56de69ef1b5e5c28fb7435018554 --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -0,0 +1,5651 @@ +slotNum = 0x406 +.language ECMAScript +.function any .SendableTestClass1(any a0, any a1, any a2) { +label_1: +label_0: + ldlexvar 0x0, 0x0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass1 + mov v1, v0 + newobjrange 0x0, 0x1, v1 + stobjbyname 0x2, a1, a2 + ldlexvar 0x0, 0x1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass2 + mov v1, v0 + newobjrange 0x4, 0x1, v1 + stobjbyname 0x6, a2, a2 + ldlexvar 0x0, 0x2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass3 + mov v1, v0 + newobjrange 0x8, 0x1, v1 + stobjbyname 0xa, a3, a2 + ldlexvar 0x0, 0x3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass4 + mov v1, v0 + newobjrange 0xc, 0x1, v1 + stobjbyname 0xe, a4, a2 + ldlexvar 0x0, 0x4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass5 + mov v1, v0 + newobjrange 0x10, 0x1, v1 + stobjbyname 0x12, a5, a2 + ldlexvar 0x0, 0x5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass6 + mov v1, v0 + newobjrange 0x14, 0x1, v1 + stobjbyname 0x16, a6, a2 + ldlexvar 0x0, 0x6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass7 + mov v1, v0 + newobjrange 0x18, 0x1, v1 + stobjbyname 0x1a, a7, a2 + ldlexvar 0x0, 0x7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass8 + mov v1, v0 + newobjrange 0x1c, 0x1, v1 + stobjbyname 0x1e, a8, a2 + ldlexvar 0x0, 0x8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass9 + mov v1, v0 + newobjrange 0x20, 0x1, v1 + stobjbyname 0x22, a9, a2 + ldlexvar 0x0, 0x9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass10 + mov v1, v0 + newobjrange 0x24, 0x1, v1 + stobjbyname 0x26, a10, a2 + ldlexvar 0x0, 0xa + sta v0 + throw.undefinedifholewithname TopLevelSendableClass11 + mov v1, v0 + newobjrange 0x28, 0x1, v1 + stobjbyname 0x2a, a11, a2 + ldlexvar 0x0, 0xb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass12 + mov v1, v0 + newobjrange 0x2c, 0x1, v1 + stobjbyname 0x2e, a12, a2 + ldlexvar 0x0, 0xc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass13 + mov v1, v0 + newobjrange 0x30, 0x1, v1 + stobjbyname 0x32, a13, a2 + ldlexvar 0x0, 0xd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass14 + mov v1, v0 + newobjrange 0x34, 0x1, v1 + stobjbyname 0x36, a14, a2 + ldlexvar 0x0, 0xe + sta v0 + throw.undefinedifholewithname TopLevelSendableClass15 + mov v1, v0 + newobjrange 0x38, 0x1, v1 + stobjbyname 0x3a, a15, a2 + ldlexvar 0x0, 0xf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass16 + mov v1, v0 + newobjrange 0x3c, 0x1, v1 + stobjbyname 0x3e, a16, a2 + ldlexvar 0x0, 0x10 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass17 + mov v1, v0 + newobjrange 0x40, 0x1, v1 + stobjbyname 0x42, a17, a2 + ldlexvar 0x0, 0x11 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass18 + mov v1, v0 + newobjrange 0x44, 0x1, v1 + stobjbyname 0x46, a18, a2 + ldlexvar 0x0, 0x12 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass19 + mov v1, v0 + newobjrange 0x48, 0x1, v1 + stobjbyname 0x4a, a19, a2 + ldlexvar 0x0, 0x13 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass20 + mov v1, v0 + newobjrange 0x4c, 0x1, v1 + stobjbyname 0x4e, a20, a2 + ldlexvar 0x0, 0x14 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass21 + mov v1, v0 + newobjrange 0x50, 0x1, v1 + stobjbyname 0x52, a21, a2 + ldlexvar 0x0, 0x15 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass22 + mov v1, v0 + newobjrange 0x54, 0x1, v1 + stobjbyname 0x56, a22, a2 + ldlexvar 0x0, 0x16 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass23 + mov v1, v0 + newobjrange 0x58, 0x1, v1 + stobjbyname 0x5a, a23, a2 + ldlexvar 0x0, 0x17 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass24 + mov v1, v0 + newobjrange 0x5c, 0x1, v1 + stobjbyname 0x5e, a24, a2 + ldlexvar 0x0, 0x18 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass25 + mov v1, v0 + newobjrange 0x60, 0x1, v1 + stobjbyname 0x62, a25, a2 + ldlexvar 0x0, 0x19 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass26 + mov v1, v0 + newobjrange 0x64, 0x1, v1 + stobjbyname 0x66, a26, a2 + ldlexvar 0x0, 0x1a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass27 + mov v1, v0 + newobjrange 0x68, 0x1, v1 + stobjbyname 0x6a, a27, a2 + ldlexvar 0x0, 0x1b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass28 + mov v1, v0 + newobjrange 0x6c, 0x1, v1 + stobjbyname 0x6e, a28, a2 + ldlexvar 0x0, 0x1c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass29 + mov v1, v0 + newobjrange 0x70, 0x1, v1 + stobjbyname 0x72, a29, a2 + ldlexvar 0x0, 0x1d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass30 + mov v1, v0 + newobjrange 0x74, 0x1, v1 + stobjbyname 0x76, a30, a2 + ldlexvar 0x0, 0x1e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass31 + mov v1, v0 + newobjrange 0x78, 0x1, v1 + stobjbyname 0x7a, a31, a2 + ldlexvar 0x0, 0x1f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass32 + mov v1, v0 + newobjrange 0x7c, 0x1, v1 + stobjbyname 0x7e, a32, a2 + ldlexvar 0x0, 0x20 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass33 + mov v1, v0 + newobjrange 0x80, 0x1, v1 + stobjbyname 0x82, a33, a2 + ldlexvar 0x0, 0x21 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass34 + mov v1, v0 + newobjrange 0x84, 0x1, v1 + stobjbyname 0x86, a34, a2 + ldlexvar 0x0, 0x22 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass35 + mov v1, v0 + newobjrange 0x88, 0x1, v1 + stobjbyname 0x8a, a35, a2 + ldlexvar 0x0, 0x23 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass36 + mov v1, v0 + newobjrange 0x8c, 0x1, v1 + stobjbyname 0x8e, a36, a2 + ldlexvar 0x0, 0x24 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass37 + mov v1, v0 + newobjrange 0x90, 0x1, v1 + stobjbyname 0x92, a37, a2 + ldlexvar 0x0, 0x25 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass38 + mov v1, v0 + newobjrange 0x94, 0x1, v1 + stobjbyname 0x96, a38, a2 + ldlexvar 0x0, 0x26 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass39 + mov v1, v0 + newobjrange 0x98, 0x1, v1 + stobjbyname 0x9a, a39, a2 + ldlexvar 0x0, 0x27 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass40 + mov v1, v0 + newobjrange 0x9c, 0x1, v1 + stobjbyname 0x9e, a40, a2 + ldlexvar 0x0, 0x28 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass41 + mov v1, v0 + newobjrange 0xa0, 0x1, v1 + stobjbyname 0xa2, a41, a2 + ldlexvar 0x0, 0x29 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass42 + mov v1, v0 + newobjrange 0xa4, 0x1, v1 + stobjbyname 0xa6, a42, a2 + ldlexvar 0x0, 0x2a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass43 + mov v1, v0 + newobjrange 0xa8, 0x1, v1 + stobjbyname 0xaa, a43, a2 + ldlexvar 0x0, 0x2b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass44 + mov v1, v0 + newobjrange 0xac, 0x1, v1 + stobjbyname 0xae, a44, a2 + ldlexvar 0x0, 0x2c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass45 + mov v1, v0 + newobjrange 0xb0, 0x1, v1 + stobjbyname 0xb2, a45, a2 + ldlexvar 0x0, 0x2d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass46 + mov v1, v0 + newobjrange 0xb4, 0x1, v1 + stobjbyname 0xb6, a46, a2 + ldlexvar 0x0, 0x2e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass47 + mov v1, v0 + newobjrange 0xb8, 0x1, v1 + stobjbyname 0xba, a47, a2 + ldlexvar 0x0, 0x2f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass48 + mov v1, v0 + newobjrange 0xbc, 0x1, v1 + stobjbyname 0xbe, a48, a2 + ldlexvar 0x0, 0x30 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass49 + mov v1, v0 + newobjrange 0xc0, 0x1, v1 + stobjbyname 0xc2, a49, a2 + ldlexvar 0x0, 0x31 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass50 + mov v1, v0 + newobjrange 0xc4, 0x1, v1 + stobjbyname 0xc6, a50, a2 + ldlexvar 0x0, 0x32 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass51 + mov v1, v0 + newobjrange 0xc8, 0x1, v1 + stobjbyname 0xca, a51, a2 + ldlexvar 0x0, 0x33 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass52 + mov v1, v0 + newobjrange 0xcc, 0x1, v1 + stobjbyname 0xce, a52, a2 + ldlexvar 0x0, 0x34 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass53 + mov v1, v0 + newobjrange 0xd0, 0x1, v1 + stobjbyname 0xd2, a53, a2 + ldlexvar 0x0, 0x35 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass54 + mov v1, v0 + newobjrange 0xd4, 0x1, v1 + stobjbyname 0xd6, a54, a2 + ldlexvar 0x0, 0x36 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass55 + mov v1, v0 + newobjrange 0xd8, 0x1, v1 + stobjbyname 0xda, a55, a2 + ldlexvar 0x0, 0x37 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass56 + mov v1, v0 + newobjrange 0xdc, 0x1, v1 + stobjbyname 0xde, a56, a2 + ldlexvar 0x0, 0x38 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass57 + mov v1, v0 + newobjrange 0xe0, 0x1, v1 + stobjbyname 0xe2, a57, a2 + ldlexvar 0x0, 0x39 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass58 + mov v1, v0 + newobjrange 0xe4, 0x1, v1 + stobjbyname 0xe6, a58, a2 + ldlexvar 0x0, 0x3a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass59 + mov v1, v0 + newobjrange 0xe8, 0x1, v1 + stobjbyname 0xea, a59, a2 + ldlexvar 0x0, 0x3b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass60 + mov v1, v0 + newobjrange 0xec, 0x1, v1 + stobjbyname 0xee, a60, a2 + ldlexvar 0x0, 0x3c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass61 + mov v1, v0 + newobjrange 0xf0, 0x1, v1 + stobjbyname 0xf2, a61, a2 + ldlexvar 0x0, 0x3d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass62 + mov v1, v0 + newobjrange 0xf4, 0x1, v1 + stobjbyname 0xf6, a62, a2 + ldlexvar 0x0, 0x3e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass63 + mov v1, v0 + newobjrange 0xf8, 0x1, v1 + stobjbyname 0xfa, a63, a2 + ldlexvar 0x0, 0x3f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass64 + mov v1, v0 + newobjrange 0xfc, 0x1, v1 + stobjbyname 0x100, a64, a2 + ldlexvar 0x0, 0x40 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass65 + mov v1, v0 + newobjrange 0x102, 0x1, v1 + stobjbyname 0x104, a65, a2 + ldlexvar 0x0, 0x41 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass66 + mov v1, v0 + newobjrange 0x106, 0x1, v1 + stobjbyname 0x108, a66, a2 + ldlexvar 0x0, 0x42 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass67 + mov v1, v0 + newobjrange 0x10a, 0x1, v1 + stobjbyname 0x10c, a67, a2 + ldlexvar 0x0, 0x43 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass68 + mov v1, v0 + newobjrange 0x10e, 0x1, v1 + stobjbyname 0x110, a68, a2 + ldlexvar 0x0, 0x44 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass69 + mov v1, v0 + newobjrange 0x112, 0x1, v1 + stobjbyname 0x114, a69, a2 + ldlexvar 0x0, 0x45 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass70 + mov v1, v0 + newobjrange 0x116, 0x1, v1 + stobjbyname 0x118, a70, a2 + ldlexvar 0x0, 0x46 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass71 + mov v1, v0 + newobjrange 0x11a, 0x1, v1 + stobjbyname 0x11c, a71, a2 + ldlexvar 0x0, 0x47 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass72 + mov v1, v0 + newobjrange 0x11e, 0x1, v1 + stobjbyname 0x120, a72, a2 + ldlexvar 0x0, 0x48 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass73 + mov v1, v0 + newobjrange 0x122, 0x1, v1 + stobjbyname 0x124, a73, a2 + ldlexvar 0x0, 0x49 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass74 + mov v1, v0 + newobjrange 0x126, 0x1, v1 + stobjbyname 0x128, a74, a2 + ldlexvar 0x0, 0x4a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass75 + mov v1, v0 + newobjrange 0x12a, 0x1, v1 + stobjbyname 0x12c, a75, a2 + ldlexvar 0x0, 0x4b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass76 + mov v1, v0 + newobjrange 0x12e, 0x1, v1 + stobjbyname 0x130, a76, a2 + ldlexvar 0x0, 0x4c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass77 + mov v1, v0 + newobjrange 0x132, 0x1, v1 + stobjbyname 0x134, a77, a2 + ldlexvar 0x0, 0x4d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass78 + mov v1, v0 + newobjrange 0x136, 0x1, v1 + stobjbyname 0x138, a78, a2 + ldlexvar 0x0, 0x4e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass79 + mov v1, v0 + newobjrange 0x13a, 0x1, v1 + stobjbyname 0x13c, a79, a2 + ldlexvar 0x0, 0x4f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass80 + mov v1, v0 + newobjrange 0x13e, 0x1, v1 + stobjbyname 0x140, a80, a2 + ldlexvar 0x0, 0x50 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass81 + mov v1, v0 + newobjrange 0x142, 0x1, v1 + stobjbyname 0x144, a81, a2 + ldlexvar 0x0, 0x51 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass82 + mov v1, v0 + newobjrange 0x146, 0x1, v1 + stobjbyname 0x148, a82, a2 + ldlexvar 0x0, 0x52 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass83 + mov v1, v0 + newobjrange 0x14a, 0x1, v1 + stobjbyname 0x14c, a83, a2 + ldlexvar 0x0, 0x53 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass84 + mov v1, v0 + newobjrange 0x14e, 0x1, v1 + stobjbyname 0x150, a84, a2 + ldlexvar 0x0, 0x54 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass85 + mov v1, v0 + newobjrange 0x152, 0x1, v1 + stobjbyname 0x154, a85, a2 + ldlexvar 0x0, 0x55 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass86 + mov v1, v0 + newobjrange 0x156, 0x1, v1 + stobjbyname 0x158, a86, a2 + ldlexvar 0x0, 0x56 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass87 + mov v1, v0 + newobjrange 0x15a, 0x1, v1 + stobjbyname 0x15c, a87, a2 + ldlexvar 0x0, 0x57 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass88 + mov v1, v0 + newobjrange 0x15e, 0x1, v1 + stobjbyname 0x160, a88, a2 + ldlexvar 0x0, 0x58 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass89 + mov v1, v0 + newobjrange 0x162, 0x1, v1 + stobjbyname 0x164, a89, a2 + ldlexvar 0x0, 0x59 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass90 + mov v1, v0 + newobjrange 0x166, 0x1, v1 + stobjbyname 0x168, a90, a2 + ldlexvar 0x0, 0x5a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass91 + mov v1, v0 + newobjrange 0x16a, 0x1, v1 + stobjbyname 0x16c, a91, a2 + ldlexvar 0x0, 0x5b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass92 + mov v1, v0 + newobjrange 0x16e, 0x1, v1 + stobjbyname 0x170, a92, a2 + ldlexvar 0x0, 0x5c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass93 + mov v1, v0 + newobjrange 0x172, 0x1, v1 + stobjbyname 0x174, a93, a2 + ldlexvar 0x0, 0x5d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass94 + mov v1, v0 + newobjrange 0x176, 0x1, v1 + stobjbyname 0x178, a94, a2 + ldlexvar 0x0, 0x5e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass95 + mov v1, v0 + newobjrange 0x17a, 0x1, v1 + stobjbyname 0x17c, a95, a2 + ldlexvar 0x0, 0x5f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass96 + mov v1, v0 + newobjrange 0x17e, 0x1, v1 + stobjbyname 0x180, a96, a2 + ldlexvar 0x0, 0x60 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass97 + mov v1, v0 + newobjrange 0x182, 0x1, v1 + stobjbyname 0x184, a97, a2 + ldlexvar 0x0, 0x61 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass98 + mov v1, v0 + newobjrange 0x186, 0x1, v1 + stobjbyname 0x188, a98, a2 + ldlexvar 0x0, 0x62 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass99 + mov v1, v0 + newobjrange 0x18a, 0x1, v1 + stobjbyname 0x18c, a99, a2 + ldlexvar 0x0, 0x63 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass100 + mov v1, v0 + newobjrange 0x18e, 0x1, v1 + stobjbyname 0x190, a100, a2 + ldlexvar 0x0, 0x64 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass101 + mov v1, v0 + newobjrange 0x192, 0x1, v1 + stobjbyname 0x194, a101, a2 + ldlexvar 0x0, 0x65 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass102 + mov v1, v0 + newobjrange 0x196, 0x1, v1 + stobjbyname 0x198, a102, a2 + ldlexvar 0x0, 0x66 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass103 + mov v1, v0 + newobjrange 0x19a, 0x1, v1 + stobjbyname 0x19c, a103, a2 + ldlexvar 0x0, 0x67 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass104 + mov v1, v0 + newobjrange 0x19e, 0x1, v1 + stobjbyname 0x1a0, a104, a2 + ldlexvar 0x0, 0x68 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass105 + mov v1, v0 + newobjrange 0x1a2, 0x1, v1 + stobjbyname 0x1a4, a105, a2 + ldlexvar 0x0, 0x69 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass106 + mov v1, v0 + newobjrange 0x1a6, 0x1, v1 + stobjbyname 0x1a8, a106, a2 + ldlexvar 0x0, 0x6a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass107 + mov v1, v0 + newobjrange 0x1aa, 0x1, v1 + stobjbyname 0x1ac, a107, a2 + ldlexvar 0x0, 0x6b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass108 + mov v1, v0 + newobjrange 0x1ae, 0x1, v1 + stobjbyname 0x1b0, a108, a2 + ldlexvar 0x0, 0x6c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass109 + mov v1, v0 + newobjrange 0x1b2, 0x1, v1 + stobjbyname 0x1b4, a109, a2 + ldlexvar 0x0, 0x6d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass110 + mov v1, v0 + newobjrange 0x1b6, 0x1, v1 + stobjbyname 0x1b8, a110, a2 + ldlexvar 0x0, 0x6e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass111 + mov v1, v0 + newobjrange 0x1ba, 0x1, v1 + stobjbyname 0x1bc, a111, a2 + ldlexvar 0x0, 0x6f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass112 + mov v1, v0 + newobjrange 0x1be, 0x1, v1 + stobjbyname 0x1c0, a112, a2 + ldlexvar 0x0, 0x70 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass113 + mov v1, v0 + newobjrange 0x1c2, 0x1, v1 + stobjbyname 0x1c4, a113, a2 + ldlexvar 0x0, 0x71 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass114 + mov v1, v0 + newobjrange 0x1c6, 0x1, v1 + stobjbyname 0x1c8, a114, a2 + ldlexvar 0x0, 0x72 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass115 + mov v1, v0 + newobjrange 0x1ca, 0x1, v1 + stobjbyname 0x1cc, a115, a2 + ldlexvar 0x0, 0x73 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass116 + mov v1, v0 + newobjrange 0x1ce, 0x1, v1 + stobjbyname 0x1d0, a116, a2 + ldlexvar 0x0, 0x74 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass117 + mov v1, v0 + newobjrange 0x1d2, 0x1, v1 + stobjbyname 0x1d4, a117, a2 + ldlexvar 0x0, 0x75 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass118 + mov v1, v0 + newobjrange 0x1d6, 0x1, v1 + stobjbyname 0x1d8, a118, a2 + ldlexvar 0x0, 0x76 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass119 + mov v1, v0 + newobjrange 0x1da, 0x1, v1 + stobjbyname 0x1dc, a119, a2 + ldlexvar 0x0, 0x77 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass120 + mov v1, v0 + newobjrange 0x1de, 0x1, v1 + stobjbyname 0x1e0, a120, a2 + ldlexvar 0x0, 0x78 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass121 + mov v1, v0 + newobjrange 0x1e2, 0x1, v1 + stobjbyname 0x1e4, a121, a2 + ldlexvar 0x0, 0x79 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass122 + mov v1, v0 + newobjrange 0x1e6, 0x1, v1 + stobjbyname 0x1e8, a122, a2 + ldlexvar 0x0, 0x7a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass123 + mov v1, v0 + newobjrange 0x1ea, 0x1, v1 + stobjbyname 0x1ec, a123, a2 + ldlexvar 0x0, 0x7b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass124 + mov v1, v0 + newobjrange 0x1ee, 0x1, v1 + stobjbyname 0x1f0, a124, a2 + ldlexvar 0x0, 0x7c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass125 + mov v1, v0 + newobjrange 0x1f2, 0x1, v1 + stobjbyname 0x1f4, a125, a2 + ldlexvar 0x0, 0x7d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass126 + mov v1, v0 + newobjrange 0x1f6, 0x1, v1 + stobjbyname 0x1f8, a126, a2 + ldlexvar 0x0, 0x7e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass127 + mov v1, v0 + newobjrange 0x1fa, 0x1, v1 + stobjbyname 0x1fc, a127, a2 + ldlexvar 0x0, 0x7f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass128 + mov v1, v0 + newobjrange 0x1fe, 0x1, v1 + stobjbyname 0x200, a128, a2 + wide.ldlexvar 0x0, 0x80 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass129 + mov v1, v0 + newobjrange 0x202, 0x1, v1 + stobjbyname 0x204, a129, a2 + wide.ldlexvar 0x0, 0x81 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass130 + mov v1, v0 + newobjrange 0x206, 0x1, v1 + stobjbyname 0x208, a130, a2 + wide.ldlexvar 0x0, 0x82 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass131 + mov v1, v0 + newobjrange 0x20a, 0x1, v1 + stobjbyname 0x20c, a131, a2 + wide.ldlexvar 0x0, 0x83 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass132 + mov v1, v0 + newobjrange 0x20e, 0x1, v1 + stobjbyname 0x210, a132, a2 + wide.ldlexvar 0x0, 0x84 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass133 + mov v1, v0 + newobjrange 0x212, 0x1, v1 + stobjbyname 0x214, a133, a2 + wide.ldlexvar 0x0, 0x85 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass134 + mov v1, v0 + newobjrange 0x216, 0x1, v1 + stobjbyname 0x218, a134, a2 + wide.ldlexvar 0x0, 0x86 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass135 + mov v1, v0 + newobjrange 0x21a, 0x1, v1 + stobjbyname 0x21c, a135, a2 + wide.ldlexvar 0x0, 0x87 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass136 + mov v1, v0 + newobjrange 0x21e, 0x1, v1 + stobjbyname 0x220, a136, a2 + wide.ldlexvar 0x0, 0x88 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass137 + mov v1, v0 + newobjrange 0x222, 0x1, v1 + stobjbyname 0x224, a137, a2 + wide.ldlexvar 0x0, 0x89 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass138 + mov v1, v0 + newobjrange 0x226, 0x1, v1 + stobjbyname 0x228, a138, a2 + wide.ldlexvar 0x0, 0x8a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass139 + mov v1, v0 + newobjrange 0x22a, 0x1, v1 + stobjbyname 0x22c, a139, a2 + wide.ldlexvar 0x0, 0x8b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass140 + mov v1, v0 + newobjrange 0x22e, 0x1, v1 + stobjbyname 0x230, a140, a2 + wide.ldlexvar 0x0, 0x8c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass141 + mov v1, v0 + newobjrange 0x232, 0x1, v1 + stobjbyname 0x234, a141, a2 + wide.ldlexvar 0x0, 0x8d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass142 + mov v1, v0 + newobjrange 0x236, 0x1, v1 + stobjbyname 0x238, a142, a2 + wide.ldlexvar 0x0, 0x8e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass143 + mov v1, v0 + newobjrange 0x23a, 0x1, v1 + stobjbyname 0x23c, a143, a2 + wide.ldlexvar 0x0, 0x8f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass144 + mov v1, v0 + newobjrange 0x23e, 0x1, v1 + stobjbyname 0x240, a144, a2 + wide.ldlexvar 0x0, 0x90 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass145 + mov v1, v0 + newobjrange 0x242, 0x1, v1 + stobjbyname 0x244, a145, a2 + wide.ldlexvar 0x0, 0x91 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass146 + mov v1, v0 + newobjrange 0x246, 0x1, v1 + stobjbyname 0x248, a146, a2 + wide.ldlexvar 0x0, 0x92 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass147 + mov v1, v0 + newobjrange 0x24a, 0x1, v1 + stobjbyname 0x24c, a147, a2 + wide.ldlexvar 0x0, 0x93 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass148 + mov v1, v0 + newobjrange 0x24e, 0x1, v1 + stobjbyname 0x250, a148, a2 + wide.ldlexvar 0x0, 0x94 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass149 + mov v1, v0 + newobjrange 0x252, 0x1, v1 + stobjbyname 0x254, a149, a2 + wide.ldlexvar 0x0, 0x95 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass150 + mov v1, v0 + newobjrange 0x256, 0x1, v1 + stobjbyname 0x258, a150, a2 + wide.ldlexvar 0x0, 0x96 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass151 + mov v1, v0 + newobjrange 0x25a, 0x1, v1 + stobjbyname 0x25c, a151, a2 + wide.ldlexvar 0x0, 0x97 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass152 + mov v1, v0 + newobjrange 0x25e, 0x1, v1 + stobjbyname 0x260, a152, a2 + wide.ldlexvar 0x0, 0x98 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass153 + mov v1, v0 + newobjrange 0x262, 0x1, v1 + stobjbyname 0x264, a153, a2 + wide.ldlexvar 0x0, 0x99 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass154 + mov v1, v0 + newobjrange 0x266, 0x1, v1 + stobjbyname 0x268, a154, a2 + wide.ldlexvar 0x0, 0x9a + sta v0 + throw.undefinedifholewithname TopLevelSendableClass155 + mov v1, v0 + newobjrange 0x26a, 0x1, v1 + stobjbyname 0x26c, a155, a2 + wide.ldlexvar 0x0, 0x9b + sta v0 + throw.undefinedifholewithname TopLevelSendableClass156 + mov v1, v0 + newobjrange 0x26e, 0x1, v1 + stobjbyname 0x270, a156, a2 + wide.ldlexvar 0x0, 0x9c + sta v0 + throw.undefinedifholewithname TopLevelSendableClass157 + mov v1, v0 + newobjrange 0x272, 0x1, v1 + stobjbyname 0x274, a157, a2 + wide.ldlexvar 0x0, 0x9d + sta v0 + throw.undefinedifholewithname TopLevelSendableClass158 + mov v1, v0 + newobjrange 0x276, 0x1, v1 + stobjbyname 0x278, a158, a2 + wide.ldlexvar 0x0, 0x9e + sta v0 + throw.undefinedifholewithname TopLevelSendableClass159 + mov v1, v0 + newobjrange 0x27a, 0x1, v1 + stobjbyname 0x27c, a159, a2 + wide.ldlexvar 0x0, 0x9f + sta v0 + throw.undefinedifholewithname TopLevelSendableClass160 + mov v1, v0 + newobjrange 0x27e, 0x1, v1 + stobjbyname 0x280, a160, a2 + wide.ldlexvar 0x0, 0xa0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass161 + mov v1, v0 + newobjrange 0x282, 0x1, v1 + stobjbyname 0x284, a161, a2 + wide.ldlexvar 0x0, 0xa1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass162 + mov v1, v0 + newobjrange 0x286, 0x1, v1 + stobjbyname 0x288, a162, a2 + wide.ldlexvar 0x0, 0xa2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass163 + mov v1, v0 + newobjrange 0x28a, 0x1, v1 + stobjbyname 0x28c, a163, a2 + wide.ldlexvar 0x0, 0xa3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass164 + mov v1, v0 + newobjrange 0x28e, 0x1, v1 + stobjbyname 0x290, a164, a2 + wide.ldlexvar 0x0, 0xa4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass165 + mov v1, v0 + newobjrange 0x292, 0x1, v1 + stobjbyname 0x294, a165, a2 + wide.ldlexvar 0x0, 0xa5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass166 + mov v1, v0 + newobjrange 0x296, 0x1, v1 + stobjbyname 0x298, a166, a2 + wide.ldlexvar 0x0, 0xa6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass167 + mov v1, v0 + newobjrange 0x29a, 0x1, v1 + stobjbyname 0x29c, a167, a2 + wide.ldlexvar 0x0, 0xa7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass168 + mov v1, v0 + newobjrange 0x29e, 0x1, v1 + stobjbyname 0x2a0, a168, a2 + wide.ldlexvar 0x0, 0xa8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass169 + mov v1, v0 + newobjrange 0x2a2, 0x1, v1 + stobjbyname 0x2a4, a169, a2 + wide.ldlexvar 0x0, 0xa9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass170 + mov v1, v0 + newobjrange 0x2a6, 0x1, v1 + stobjbyname 0x2a8, a170, a2 + wide.ldlexvar 0x0, 0xaa + sta v0 + throw.undefinedifholewithname TopLevelSendableClass171 + mov v1, v0 + newobjrange 0x2aa, 0x1, v1 + stobjbyname 0x2ac, a171, a2 + wide.ldlexvar 0x0, 0xab + sta v0 + throw.undefinedifholewithname TopLevelSendableClass172 + mov v1, v0 + newobjrange 0x2ae, 0x1, v1 + stobjbyname 0x2b0, a172, a2 + wide.ldlexvar 0x0, 0xac + sta v0 + throw.undefinedifholewithname TopLevelSendableClass173 + mov v1, v0 + newobjrange 0x2b2, 0x1, v1 + stobjbyname 0x2b4, a173, a2 + wide.ldlexvar 0x0, 0xad + sta v0 + throw.undefinedifholewithname TopLevelSendableClass174 + mov v1, v0 + newobjrange 0x2b6, 0x1, v1 + stobjbyname 0x2b8, a174, a2 + wide.ldlexvar 0x0, 0xae + sta v0 + throw.undefinedifholewithname TopLevelSendableClass175 + mov v1, v0 + newobjrange 0x2ba, 0x1, v1 + stobjbyname 0x2bc, a175, a2 + wide.ldlexvar 0x0, 0xaf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass176 + mov v1, v0 + newobjrange 0x2be, 0x1, v1 + stobjbyname 0x2c0, a176, a2 + wide.ldlexvar 0x0, 0xb0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass177 + mov v1, v0 + newobjrange 0x2c2, 0x1, v1 + stobjbyname 0x2c4, a177, a2 + wide.ldlexvar 0x0, 0xb1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass178 + mov v1, v0 + newobjrange 0x2c6, 0x1, v1 + stobjbyname 0x2c8, a178, a2 + wide.ldlexvar 0x0, 0xb2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass179 + mov v1, v0 + newobjrange 0x2ca, 0x1, v1 + stobjbyname 0x2cc, a179, a2 + wide.ldlexvar 0x0, 0xb3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass180 + mov v1, v0 + newobjrange 0x2ce, 0x1, v1 + stobjbyname 0x2d0, a180, a2 + wide.ldlexvar 0x0, 0xb4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass181 + mov v1, v0 + newobjrange 0x2d2, 0x1, v1 + stobjbyname 0x2d4, a181, a2 + wide.ldlexvar 0x0, 0xb5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass182 + mov v1, v0 + newobjrange 0x2d6, 0x1, v1 + stobjbyname 0x2d8, a182, a2 + wide.ldlexvar 0x0, 0xb6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass183 + mov v1, v0 + newobjrange 0x2da, 0x1, v1 + stobjbyname 0x2dc, a183, a2 + wide.ldlexvar 0x0, 0xb7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass184 + mov v1, v0 + newobjrange 0x2de, 0x1, v1 + stobjbyname 0x2e0, a184, a2 + wide.ldlexvar 0x0, 0xb8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass185 + mov v1, v0 + newobjrange 0x2e2, 0x1, v1 + stobjbyname 0x2e4, a185, a2 + wide.ldlexvar 0x0, 0xb9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass186 + mov v1, v0 + newobjrange 0x2e6, 0x1, v1 + stobjbyname 0x2e8, a186, a2 + wide.ldlexvar 0x0, 0xba + sta v0 + throw.undefinedifholewithname TopLevelSendableClass187 + mov v1, v0 + newobjrange 0x2ea, 0x1, v1 + stobjbyname 0x2ec, a187, a2 + wide.ldlexvar 0x0, 0xbb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass188 + mov v1, v0 + newobjrange 0x2ee, 0x1, v1 + stobjbyname 0x2f0, a188, a2 + wide.ldlexvar 0x0, 0xbc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass189 + mov v1, v0 + newobjrange 0x2f2, 0x1, v1 + stobjbyname 0x2f4, a189, a2 + wide.ldlexvar 0x0, 0xbd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass190 + mov v1, v0 + newobjrange 0x2f6, 0x1, v1 + stobjbyname 0x2f8, a190, a2 + wide.ldlexvar 0x0, 0xbe + sta v0 + throw.undefinedifholewithname TopLevelSendableClass191 + mov v1, v0 + newobjrange 0x2fa, 0x1, v1 + stobjbyname 0x2fc, a191, a2 + wide.ldlexvar 0x0, 0xbf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass192 + mov v1, v0 + newobjrange 0x2fe, 0x1, v1 + stobjbyname 0x300, a192, a2 + wide.ldlexvar 0x0, 0xc0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass193 + mov v1, v0 + newobjrange 0x302, 0x1, v1 + stobjbyname 0x304, a193, a2 + wide.ldlexvar 0x0, 0xc1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass194 + mov v1, v0 + newobjrange 0x306, 0x1, v1 + stobjbyname 0x308, a194, a2 + wide.ldlexvar 0x0, 0xc2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass195 + mov v1, v0 + newobjrange 0x30a, 0x1, v1 + stobjbyname 0x30c, a195, a2 + wide.ldlexvar 0x0, 0xc3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass196 + mov v1, v0 + newobjrange 0x30e, 0x1, v1 + stobjbyname 0x310, a196, a2 + wide.ldlexvar 0x0, 0xc4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass197 + mov v1, v0 + newobjrange 0x312, 0x1, v1 + stobjbyname 0x314, a197, a2 + wide.ldlexvar 0x0, 0xc5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass198 + mov v1, v0 + newobjrange 0x316, 0x1, v1 + stobjbyname 0x318, a198, a2 + wide.ldlexvar 0x0, 0xc6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass199 + mov v1, v0 + newobjrange 0x31a, 0x1, v1 + stobjbyname 0x31c, a199, a2 + wide.ldlexvar 0x0, 0xc7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass200 + mov v1, v0 + newobjrange 0x31e, 0x1, v1 + stobjbyname 0x320, a200, a2 + wide.ldlexvar 0x0, 0xc8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass201 + mov v1, v0 + newobjrange 0x322, 0x1, v1 + stobjbyname 0x324, a201, a2 + wide.ldlexvar 0x0, 0xc9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass202 + mov v1, v0 + newobjrange 0x326, 0x1, v1 + stobjbyname 0x328, a202, a2 + wide.ldlexvar 0x0, 0xca + sta v0 + throw.undefinedifholewithname TopLevelSendableClass203 + mov v1, v0 + newobjrange 0x32a, 0x1, v1 + stobjbyname 0x32c, a203, a2 + wide.ldlexvar 0x0, 0xcb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass204 + mov v1, v0 + newobjrange 0x32e, 0x1, v1 + stobjbyname 0x330, a204, a2 + wide.ldlexvar 0x0, 0xcc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass205 + mov v1, v0 + newobjrange 0x332, 0x1, v1 + stobjbyname 0x334, a205, a2 + wide.ldlexvar 0x0, 0xcd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass206 + mov v1, v0 + newobjrange 0x336, 0x1, v1 + stobjbyname 0x338, a206, a2 + wide.ldlexvar 0x0, 0xce + sta v0 + throw.undefinedifholewithname TopLevelSendableClass207 + mov v1, v0 + newobjrange 0x33a, 0x1, v1 + stobjbyname 0x33c, a207, a2 + wide.ldlexvar 0x0, 0xcf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass208 + mov v1, v0 + newobjrange 0x33e, 0x1, v1 + stobjbyname 0x340, a208, a2 + wide.ldlexvar 0x0, 0xd0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass209 + mov v1, v0 + newobjrange 0x342, 0x1, v1 + stobjbyname 0x344, a209, a2 + wide.ldlexvar 0x0, 0xd1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass210 + mov v1, v0 + newobjrange 0x346, 0x1, v1 + stobjbyname 0x348, a210, a2 + wide.ldlexvar 0x0, 0xd2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass211 + mov v1, v0 + newobjrange 0x34a, 0x1, v1 + stobjbyname 0x34c, a211, a2 + wide.ldlexvar 0x0, 0xd3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass212 + mov v1, v0 + newobjrange 0x34e, 0x1, v1 + stobjbyname 0x350, a212, a2 + wide.ldlexvar 0x0, 0xd4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass213 + mov v1, v0 + newobjrange 0x352, 0x1, v1 + stobjbyname 0x354, a213, a2 + wide.ldlexvar 0x0, 0xd5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass214 + mov v1, v0 + newobjrange 0x356, 0x1, v1 + stobjbyname 0x358, a214, a2 + wide.ldlexvar 0x0, 0xd6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass215 + mov v1, v0 + newobjrange 0x35a, 0x1, v1 + stobjbyname 0x35c, a215, a2 + wide.ldlexvar 0x0, 0xd7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass216 + mov v1, v0 + newobjrange 0x35e, 0x1, v1 + stobjbyname 0x360, a216, a2 + wide.ldlexvar 0x0, 0xd8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass217 + mov v1, v0 + newobjrange 0x362, 0x1, v1 + stobjbyname 0x364, a217, a2 + wide.ldlexvar 0x0, 0xd9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass218 + mov v1, v0 + newobjrange 0x366, 0x1, v1 + stobjbyname 0x368, a218, a2 + wide.ldlexvar 0x0, 0xda + sta v0 + throw.undefinedifholewithname TopLevelSendableClass219 + mov v1, v0 + newobjrange 0x36a, 0x1, v1 + stobjbyname 0x36c, a219, a2 + wide.ldlexvar 0x0, 0xdb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass220 + mov v1, v0 + newobjrange 0x36e, 0x1, v1 + stobjbyname 0x370, a220, a2 + wide.ldlexvar 0x0, 0xdc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass221 + mov v1, v0 + newobjrange 0x372, 0x1, v1 + stobjbyname 0x374, a221, a2 + wide.ldlexvar 0x0, 0xdd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass222 + mov v1, v0 + newobjrange 0x376, 0x1, v1 + stobjbyname 0x378, a222, a2 + wide.ldlexvar 0x0, 0xde + sta v0 + throw.undefinedifholewithname TopLevelSendableClass223 + mov v1, v0 + newobjrange 0x37a, 0x1, v1 + stobjbyname 0x37c, a223, a2 + wide.ldlexvar 0x0, 0xdf + sta v0 + throw.undefinedifholewithname TopLevelSendableClass224 + mov v1, v0 + newobjrange 0x37e, 0x1, v1 + stobjbyname 0x380, a224, a2 + wide.ldlexvar 0x0, 0xe0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass225 + mov v1, v0 + newobjrange 0x382, 0x1, v1 + stobjbyname 0x384, a225, a2 + wide.ldlexvar 0x0, 0xe1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass226 + mov v1, v0 + newobjrange 0x386, 0x1, v1 + stobjbyname 0x388, a226, a2 + wide.ldlexvar 0x0, 0xe2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass227 + mov v1, v0 + newobjrange 0x38a, 0x1, v1 + stobjbyname 0x38c, a227, a2 + wide.ldlexvar 0x0, 0xe3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass228 + mov v1, v0 + newobjrange 0x38e, 0x1, v1 + stobjbyname 0x390, a228, a2 + wide.ldlexvar 0x0, 0xe4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass229 + mov v1, v0 + newobjrange 0x392, 0x1, v1 + stobjbyname 0x394, a229, a2 + wide.ldlexvar 0x0, 0xe5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass230 + mov v1, v0 + newobjrange 0x396, 0x1, v1 + stobjbyname 0x398, a230, a2 + wide.ldlexvar 0x0, 0xe6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass231 + mov v1, v0 + newobjrange 0x39a, 0x1, v1 + stobjbyname 0x39c, a231, a2 + wide.ldlexvar 0x0, 0xe7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass232 + mov v1, v0 + newobjrange 0x39e, 0x1, v1 + stobjbyname 0x3a0, a232, a2 + wide.ldlexvar 0x0, 0xe8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass233 + mov v1, v0 + newobjrange 0x3a2, 0x1, v1 + stobjbyname 0x3a4, a233, a2 + wide.ldlexvar 0x0, 0xe9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass234 + mov v1, v0 + newobjrange 0x3a6, 0x1, v1 + stobjbyname 0x3a8, a234, a2 + wide.ldlexvar 0x0, 0xea + sta v0 + throw.undefinedifholewithname TopLevelSendableClass235 + mov v1, v0 + newobjrange 0x3aa, 0x1, v1 + stobjbyname 0x3ac, a235, a2 + wide.ldlexvar 0x0, 0xeb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass236 + mov v1, v0 + newobjrange 0x3ae, 0x1, v1 + stobjbyname 0x3b0, a236, a2 + wide.ldlexvar 0x0, 0xec + sta v0 + throw.undefinedifholewithname TopLevelSendableClass237 + mov v1, v0 + newobjrange 0x3b2, 0x1, v1 + stobjbyname 0x3b4, a237, a2 + wide.ldlexvar 0x0, 0xed + sta v0 + throw.undefinedifholewithname TopLevelSendableClass238 + mov v1, v0 + newobjrange 0x3b6, 0x1, v1 + stobjbyname 0x3b8, a238, a2 + wide.ldlexvar 0x0, 0xee + sta v0 + throw.undefinedifholewithname TopLevelSendableClass239 + mov v1, v0 + newobjrange 0x3ba, 0x1, v1 + stobjbyname 0x3bc, a239, a2 + wide.ldlexvar 0x0, 0xef + sta v0 + throw.undefinedifholewithname TopLevelSendableClass240 + mov v1, v0 + newobjrange 0x3be, 0x1, v1 + stobjbyname 0x3c0, a240, a2 + wide.ldlexvar 0x0, 0xf0 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass241 + mov v1, v0 + newobjrange 0x3c2, 0x1, v1 + stobjbyname 0x3c4, a241, a2 + wide.ldlexvar 0x0, 0xf1 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass242 + mov v1, v0 + newobjrange 0x3c6, 0x1, v1 + stobjbyname 0x3c8, a242, a2 + wide.ldlexvar 0x0, 0xf2 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass243 + mov v1, v0 + newobjrange 0x3ca, 0x1, v1 + stobjbyname 0x3cc, a243, a2 + wide.ldlexvar 0x0, 0xf3 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass244 + mov v1, v0 + newobjrange 0x3ce, 0x1, v1 + stobjbyname 0x3d0, a244, a2 + wide.ldlexvar 0x0, 0xf4 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass245 + mov v1, v0 + newobjrange 0x3d2, 0x1, v1 + stobjbyname 0x3d4, a245, a2 + wide.ldlexvar 0x0, 0xf5 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass246 + mov v1, v0 + newobjrange 0x3d6, 0x1, v1 + stobjbyname 0x3d8, a246, a2 + wide.ldlexvar 0x0, 0xf6 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass247 + mov v1, v0 + newobjrange 0x3da, 0x1, v1 + stobjbyname 0x3dc, a247, a2 + wide.ldlexvar 0x0, 0xf7 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass248 + mov v1, v0 + newobjrange 0x3de, 0x1, v1 + stobjbyname 0x3e0, a248, a2 + wide.ldlexvar 0x0, 0xf8 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass249 + mov v1, v0 + newobjrange 0x3e2, 0x1, v1 + stobjbyname 0x3e4, a249, a2 + wide.ldlexvar 0x0, 0xf9 + sta v0 + throw.undefinedifholewithname TopLevelSendableClass250 + mov v1, v0 + newobjrange 0x3e6, 0x1, v1 + stobjbyname 0x3e8, a250, a2 + wide.ldlexvar 0x0, 0xfa + sta v0 + throw.undefinedifholewithname TopLevelSendableClass251 + mov v1, v0 + newobjrange 0x3ea, 0x1, v1 + stobjbyname 0x3ec, a251, a2 + wide.ldlexvar 0x0, 0xfb + sta v0 + throw.undefinedifholewithname TopLevelSendableClass252 + mov v1, v0 + newobjrange 0x3ee, 0x1, v1 + stobjbyname 0x3f0, a252, a2 + wide.ldlexvar 0x0, 0xfc + sta v0 + throw.undefinedifholewithname TopLevelSendableClass253 + mov v1, v0 + newobjrange 0x3f2, 0x1, v1 + stobjbyname 0x3f4, a253, a2 + wide.ldlexvar 0x0, 0xfd + sta v0 + throw.undefinedifholewithname TopLevelSendableClass254 + mov v1, v0 + newobjrange 0x3f6, 0x1, v1 + stobjbyname 0x3f8, a254, a2 + wide.ldlexvar 0x0, 0xfe + sta v0 + throw.undefinedifholewithname TopLevelSendableClass255 + mov v1, v0 + newobjrange 0x3fa, 0x1, v1 + stobjbyname 0x3fc, a255, a2 + lda a2 + ldobjbyname 0x3fe, a1 + ldobjbyname 0x400, o + stobjbyname 0x402, u, a2 + lda.str wide_sendable_test + stobjbyname 0x404, v, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass1(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass10(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass100(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass101(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass102(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass103(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass104(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass105(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass106(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass107(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass108(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass109(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass11(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass110(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass111(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass112(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass113(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass114(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass115(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass116(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass117(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass118(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass119(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass12(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass120(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass121(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass122(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass123(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass124(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass125(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass126(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass127(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass128(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass129(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass13(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass130(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass131(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass132(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass133(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass134(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass135(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass136(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass137(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass138(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass139(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass14(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass140(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass141(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass142(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass143(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass144(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass145(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass146(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass147(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass148(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass149(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass15(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass150(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass151(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass152(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass153(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass154(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass155(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass156(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass157(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass158(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass159(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass16(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass160(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass161(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass162(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass163(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass164(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass165(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass166(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass167(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass168(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass169(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass17(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass170(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass171(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass172(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass173(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass174(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass175(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass176(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass177(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass178(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass179(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass18(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass180(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass181(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass182(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass183(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass184(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass185(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass186(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass187(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass188(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass189(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass19(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass190(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass191(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass192(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass193(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass194(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass195(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass196(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass197(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass198(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass199(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass2(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass20(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass200(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass201(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass202(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass203(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass204(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass205(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass206(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass207(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass208(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass209(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass21(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass210(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass211(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass212(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass213(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass214(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass215(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass216(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass217(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass218(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass219(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass22(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass220(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass221(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass222(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass223(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass224(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass225(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass226(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass227(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass228(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass229(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass23(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass230(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass231(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass232(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass233(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass234(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass235(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass236(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass237(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass238(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass239(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass24(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass240(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass241(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass242(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass243(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass244(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass245(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass246(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass247(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass248(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass249(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass25(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass250(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass251(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass252(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass253(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass254(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass255(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass26(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass27(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass28(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass29(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass3(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass30(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass31(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass32(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass33(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass34(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass35(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass36(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass37(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass38(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass39(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass4(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass40(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass41(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass42(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass43(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass44(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass45(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass46(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass47(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass48(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass49(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass5(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass50(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass51(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass52(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass53(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass54(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass55(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass56(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass57(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass58(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass59(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass6(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass60(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass61(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass62(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass63(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass64(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass65(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass66(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass67(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass68(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass69(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass7(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass70(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass71(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass72(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass73(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass74(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass75(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass76(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass77(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass78(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass79(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass8(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass80(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass81(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass82(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass83(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass84(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass85(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass86(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass87(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass88(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass89(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass9(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass90(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass91(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass92(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass93(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass94(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass95(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass96(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass97(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass98(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x2 +.language ECMAScript +.function any .TopLevelSendableClass99(any a0, any a1, any a2) { +label_1: +label_0: + ldai 0x1 + stobjbyname 0x0, o, a2 + lda a2 + return +label_2: +} + +slotNum = 0x108 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + wide.newlexenv 0xff + ldhole + sta v0 + callruntime.definesendableclass 0x2, .TopLevelSendableClass1, _2, 0x0, v0 + stlexvar 0x0, 0x0 + ldhole + sta v0 + callruntime.definesendableclass 0x3, .TopLevelSendableClass2, _4, 0x0, v0 + stlexvar 0x0, 0x1 + ldhole + sta v0 + callruntime.definesendableclass 0x4, .TopLevelSendableClass3, _6, 0x0, v0 + stlexvar 0x0, 0x2 + ldhole + sta v0 + callruntime.definesendableclass 0x5, .TopLevelSendableClass4, _8, 0x0, v0 + stlexvar 0x0, 0x3 + ldhole + sta v0 + callruntime.definesendableclass 0x6, .TopLevelSendableClass5, _10, 0x0, v0 + stlexvar 0x0, 0x4 + ldhole + sta v0 + callruntime.definesendableclass 0x7, .TopLevelSendableClass6, _12, 0x0, v0 + stlexvar 0x0, 0x5 + ldhole + sta v0 + callruntime.definesendableclass 0x8, .TopLevelSendableClass7, _14, 0x0, v0 + stlexvar 0x0, 0x6 + ldhole + sta v0 + callruntime.definesendableclass 0x9, .TopLevelSendableClass8, _16, 0x0, v0 + stlexvar 0x0, 0x7 + ldhole + sta v0 + callruntime.definesendableclass 0xa, .TopLevelSendableClass9, _18, 0x0, v0 + stlexvar 0x0, 0x8 + ldhole + sta v0 + callruntime.definesendableclass 0xb, .TopLevelSendableClass10, _20, 0x0, v0 + stlexvar 0x0, 0x9 + ldhole + sta v0 + callruntime.definesendableclass 0xc, .TopLevelSendableClass11, _22, 0x0, v0 + stlexvar 0x0, 0xa + ldhole + sta v0 + callruntime.definesendableclass 0xd, .TopLevelSendableClass12, _24, 0x0, v0 + stlexvar 0x0, 0xb + ldhole + sta v0 + callruntime.definesendableclass 0xe, .TopLevelSendableClass13, _26, 0x0, v0 + stlexvar 0x0, 0xc + ldhole + sta v0 + callruntime.definesendableclass 0xf, .TopLevelSendableClass14, _28, 0x0, v0 + stlexvar 0x0, 0xd + ldhole + sta v0 + callruntime.definesendableclass 0x10, .TopLevelSendableClass15, _30, 0x0, v0 + stlexvar 0x0, 0xe + ldhole + sta v0 + callruntime.definesendableclass 0x11, .TopLevelSendableClass16, _32, 0x0, v0 + stlexvar 0x0, 0xf + ldhole + sta v0 + callruntime.definesendableclass 0x12, .TopLevelSendableClass17, _34, 0x0, v0 + stlexvar 0x0, 0x10 + ldhole + sta v0 + callruntime.definesendableclass 0x13, .TopLevelSendableClass18, _36, 0x0, v0 + stlexvar 0x0, 0x11 + ldhole + sta v0 + callruntime.definesendableclass 0x14, .TopLevelSendableClass19, _38, 0x0, v0 + stlexvar 0x0, 0x12 + ldhole + sta v0 + callruntime.definesendableclass 0x15, .TopLevelSendableClass20, _40, 0x0, v0 + stlexvar 0x0, 0x13 + ldhole + sta v0 + callruntime.definesendableclass 0x16, .TopLevelSendableClass21, _42, 0x0, v0 + stlexvar 0x0, 0x14 + ldhole + sta v0 + callruntime.definesendableclass 0x17, .TopLevelSendableClass22, _44, 0x0, v0 + stlexvar 0x0, 0x15 + ldhole + sta v0 + callruntime.definesendableclass 0x18, .TopLevelSendableClass23, _46, 0x0, v0 + stlexvar 0x0, 0x16 + ldhole + sta v0 + callruntime.definesendableclass 0x19, .TopLevelSendableClass24, _48, 0x0, v0 + stlexvar 0x0, 0x17 + ldhole + sta v0 + callruntime.definesendableclass 0x1a, .TopLevelSendableClass25, _50, 0x0, v0 + stlexvar 0x0, 0x18 + ldhole + sta v0 + callruntime.definesendableclass 0x1b, .TopLevelSendableClass26, _52, 0x0, v0 + stlexvar 0x0, 0x19 + ldhole + sta v0 + callruntime.definesendableclass 0x1c, .TopLevelSendableClass27, _54, 0x0, v0 + stlexvar 0x0, 0x1a + ldhole + sta v0 + callruntime.definesendableclass 0x1d, .TopLevelSendableClass28, _56, 0x0, v0 + stlexvar 0x0, 0x1b + ldhole + sta v0 + callruntime.definesendableclass 0x1e, .TopLevelSendableClass29, _58, 0x0, v0 + stlexvar 0x0, 0x1c + ldhole + sta v0 + callruntime.definesendableclass 0x1f, .TopLevelSendableClass30, _60, 0x0, v0 + stlexvar 0x0, 0x1d + ldhole + sta v0 + callruntime.definesendableclass 0x20, .TopLevelSendableClass31, _62, 0x0, v0 + stlexvar 0x0, 0x1e + ldhole + sta v0 + callruntime.definesendableclass 0x21, .TopLevelSendableClass32, _64, 0x0, v0 + stlexvar 0x0, 0x1f + ldhole + sta v0 + callruntime.definesendableclass 0x22, .TopLevelSendableClass33, _66, 0x0, v0 + stlexvar 0x0, 0x20 + ldhole + sta v0 + callruntime.definesendableclass 0x23, .TopLevelSendableClass34, _68, 0x0, v0 + stlexvar 0x0, 0x21 + ldhole + sta v0 + callruntime.definesendableclass 0x24, .TopLevelSendableClass35, _70, 0x0, v0 + stlexvar 0x0, 0x22 + ldhole + sta v0 + callruntime.definesendableclass 0x25, .TopLevelSendableClass36, _72, 0x0, v0 + stlexvar 0x0, 0x23 + ldhole + sta v0 + callruntime.definesendableclass 0x26, .TopLevelSendableClass37, _74, 0x0, v0 + stlexvar 0x0, 0x24 + ldhole + sta v0 + callruntime.definesendableclass 0x27, .TopLevelSendableClass38, _76, 0x0, v0 + stlexvar 0x0, 0x25 + ldhole + sta v0 + callruntime.definesendableclass 0x28, .TopLevelSendableClass39, _78, 0x0, v0 + stlexvar 0x0, 0x26 + ldhole + sta v0 + callruntime.definesendableclass 0x29, .TopLevelSendableClass40, _80, 0x0, v0 + stlexvar 0x0, 0x27 + ldhole + sta v0 + callruntime.definesendableclass 0x2a, .TopLevelSendableClass41, _82, 0x0, v0 + stlexvar 0x0, 0x28 + ldhole + sta v0 + callruntime.definesendableclass 0x2b, .TopLevelSendableClass42, _84, 0x0, v0 + stlexvar 0x0, 0x29 + ldhole + sta v0 + callruntime.definesendableclass 0x2c, .TopLevelSendableClass43, _86, 0x0, v0 + stlexvar 0x0, 0x2a + ldhole + sta v0 + callruntime.definesendableclass 0x2d, .TopLevelSendableClass44, _88, 0x0, v0 + stlexvar 0x0, 0x2b + ldhole + sta v0 + callruntime.definesendableclass 0x2e, .TopLevelSendableClass45, _90, 0x0, v0 + stlexvar 0x0, 0x2c + ldhole + sta v0 + callruntime.definesendableclass 0x2f, .TopLevelSendableClass46, _92, 0x0, v0 + stlexvar 0x0, 0x2d + ldhole + sta v0 + callruntime.definesendableclass 0x30, .TopLevelSendableClass47, _94, 0x0, v0 + stlexvar 0x0, 0x2e + ldhole + sta v0 + callruntime.definesendableclass 0x31, .TopLevelSendableClass48, _96, 0x0, v0 + stlexvar 0x0, 0x2f + ldhole + sta v0 + callruntime.definesendableclass 0x32, .TopLevelSendableClass49, _98, 0x0, v0 + stlexvar 0x0, 0x30 + ldhole + sta v0 + callruntime.definesendableclass 0x33, .TopLevelSendableClass50, _100, 0x0, v0 + stlexvar 0x0, 0x31 + ldhole + sta v0 + callruntime.definesendableclass 0x34, .TopLevelSendableClass51, _102, 0x0, v0 + stlexvar 0x0, 0x32 + ldhole + sta v0 + callruntime.definesendableclass 0x35, .TopLevelSendableClass52, _104, 0x0, v0 + stlexvar 0x0, 0x33 + ldhole + sta v0 + callruntime.definesendableclass 0x36, .TopLevelSendableClass53, _106, 0x0, v0 + stlexvar 0x0, 0x34 + ldhole + sta v0 + callruntime.definesendableclass 0x37, .TopLevelSendableClass54, _108, 0x0, v0 + stlexvar 0x0, 0x35 + ldhole + sta v0 + callruntime.definesendableclass 0x38, .TopLevelSendableClass55, _110, 0x0, v0 + stlexvar 0x0, 0x36 + ldhole + sta v0 + callruntime.definesendableclass 0x39, .TopLevelSendableClass56, _112, 0x0, v0 + stlexvar 0x0, 0x37 + ldhole + sta v0 + callruntime.definesendableclass 0x3a, .TopLevelSendableClass57, _114, 0x0, v0 + stlexvar 0x0, 0x38 + ldhole + sta v0 + callruntime.definesendableclass 0x3b, .TopLevelSendableClass58, _116, 0x0, v0 + stlexvar 0x0, 0x39 + ldhole + sta v0 + callruntime.definesendableclass 0x3c, .TopLevelSendableClass59, _118, 0x0, v0 + stlexvar 0x0, 0x3a + ldhole + sta v0 + callruntime.definesendableclass 0x3d, .TopLevelSendableClass60, _120, 0x0, v0 + stlexvar 0x0, 0x3b + ldhole + sta v0 + callruntime.definesendableclass 0x3e, .TopLevelSendableClass61, _122, 0x0, v0 + stlexvar 0x0, 0x3c + ldhole + sta v0 + callruntime.definesendableclass 0x3f, .TopLevelSendableClass62, _124, 0x0, v0 + stlexvar 0x0, 0x3d + ldhole + sta v0 + callruntime.definesendableclass 0x40, .TopLevelSendableClass63, _126, 0x0, v0 + stlexvar 0x0, 0x3e + ldhole + sta v0 + callruntime.definesendableclass 0x41, .TopLevelSendableClass64, _128, 0x0, v0 + stlexvar 0x0, 0x3f + ldhole + sta v0 + callruntime.definesendableclass 0x42, .TopLevelSendableClass65, _130, 0x0, v0 + stlexvar 0x0, 0x40 + ldhole + sta v0 + callruntime.definesendableclass 0x43, .TopLevelSendableClass66, _132, 0x0, v0 + stlexvar 0x0, 0x41 + ldhole + sta v0 + callruntime.definesendableclass 0x44, .TopLevelSendableClass67, _134, 0x0, v0 + stlexvar 0x0, 0x42 + ldhole + sta v0 + callruntime.definesendableclass 0x45, .TopLevelSendableClass68, _136, 0x0, v0 + stlexvar 0x0, 0x43 + ldhole + sta v0 + callruntime.definesendableclass 0x46, .TopLevelSendableClass69, _138, 0x0, v0 + stlexvar 0x0, 0x44 + ldhole + sta v0 + callruntime.definesendableclass 0x47, .TopLevelSendableClass70, _140, 0x0, v0 + stlexvar 0x0, 0x45 + ldhole + sta v0 + callruntime.definesendableclass 0x48, .TopLevelSendableClass71, _142, 0x0, v0 + stlexvar 0x0, 0x46 + ldhole + sta v0 + callruntime.definesendableclass 0x49, .TopLevelSendableClass72, _144, 0x0, v0 + stlexvar 0x0, 0x47 + ldhole + sta v0 + callruntime.definesendableclass 0x4a, .TopLevelSendableClass73, _146, 0x0, v0 + stlexvar 0x0, 0x48 + ldhole + sta v0 + callruntime.definesendableclass 0x4b, .TopLevelSendableClass74, _148, 0x0, v0 + stlexvar 0x0, 0x49 + ldhole + sta v0 + callruntime.definesendableclass 0x4c, .TopLevelSendableClass75, _150, 0x0, v0 + stlexvar 0x0, 0x4a + ldhole + sta v0 + callruntime.definesendableclass 0x4d, .TopLevelSendableClass76, _152, 0x0, v0 + stlexvar 0x0, 0x4b + ldhole + sta v0 + callruntime.definesendableclass 0x4e, .TopLevelSendableClass77, _154, 0x0, v0 + stlexvar 0x0, 0x4c + ldhole + sta v0 + callruntime.definesendableclass 0x4f, .TopLevelSendableClass78, _156, 0x0, v0 + stlexvar 0x0, 0x4d + ldhole + sta v0 + callruntime.definesendableclass 0x50, .TopLevelSendableClass79, _158, 0x0, v0 + stlexvar 0x0, 0x4e + ldhole + sta v0 + callruntime.definesendableclass 0x51, .TopLevelSendableClass80, _160, 0x0, v0 + stlexvar 0x0, 0x4f + ldhole + sta v0 + callruntime.definesendableclass 0x52, .TopLevelSendableClass81, _162, 0x0, v0 + stlexvar 0x0, 0x50 + ldhole + sta v0 + callruntime.definesendableclass 0x53, .TopLevelSendableClass82, _164, 0x0, v0 + stlexvar 0x0, 0x51 + ldhole + sta v0 + callruntime.definesendableclass 0x54, .TopLevelSendableClass83, _166, 0x0, v0 + stlexvar 0x0, 0x52 + ldhole + sta v0 + callruntime.definesendableclass 0x55, .TopLevelSendableClass84, _168, 0x0, v0 + stlexvar 0x0, 0x53 + ldhole + sta v0 + callruntime.definesendableclass 0x56, .TopLevelSendableClass85, _170, 0x0, v0 + stlexvar 0x0, 0x54 + ldhole + sta v0 + callruntime.definesendableclass 0x57, .TopLevelSendableClass86, _172, 0x0, v0 + stlexvar 0x0, 0x55 + ldhole + sta v0 + callruntime.definesendableclass 0x58, .TopLevelSendableClass87, _174, 0x0, v0 + stlexvar 0x0, 0x56 + ldhole + sta v0 + callruntime.definesendableclass 0x59, .TopLevelSendableClass88, _176, 0x0, v0 + stlexvar 0x0, 0x57 + ldhole + sta v0 + callruntime.definesendableclass 0x5a, .TopLevelSendableClass89, _178, 0x0, v0 + stlexvar 0x0, 0x58 + ldhole + sta v0 + callruntime.definesendableclass 0x5b, .TopLevelSendableClass90, _180, 0x0, v0 + stlexvar 0x0, 0x59 + ldhole + sta v0 + callruntime.definesendableclass 0x5c, .TopLevelSendableClass91, _182, 0x0, v0 + stlexvar 0x0, 0x5a + ldhole + sta v0 + callruntime.definesendableclass 0x5d, .TopLevelSendableClass92, _184, 0x0, v0 + stlexvar 0x0, 0x5b + ldhole + sta v0 + callruntime.definesendableclass 0x5e, .TopLevelSendableClass93, _186, 0x0, v0 + stlexvar 0x0, 0x5c + ldhole + sta v0 + callruntime.definesendableclass 0x5f, .TopLevelSendableClass94, _188, 0x0, v0 + stlexvar 0x0, 0x5d + ldhole + sta v0 + callruntime.definesendableclass 0x60, .TopLevelSendableClass95, _190, 0x0, v0 + stlexvar 0x0, 0x5e + ldhole + sta v0 + callruntime.definesendableclass 0x61, .TopLevelSendableClass96, _192, 0x0, v0 + stlexvar 0x0, 0x5f + ldhole + sta v0 + callruntime.definesendableclass 0x62, .TopLevelSendableClass97, _194, 0x0, v0 + stlexvar 0x0, 0x60 + ldhole + sta v0 + callruntime.definesendableclass 0x63, .TopLevelSendableClass98, _196, 0x0, v0 + stlexvar 0x0, 0x61 + ldhole + sta v0 + callruntime.definesendableclass 0x64, .TopLevelSendableClass99, _198, 0x0, v0 + stlexvar 0x0, 0x62 + ldhole + sta v0 + callruntime.definesendableclass 0x65, .TopLevelSendableClass100, _200, 0x0, v0 + stlexvar 0x0, 0x63 + ldhole + sta v0 + callruntime.definesendableclass 0x66, .TopLevelSendableClass101, _202, 0x0, v0 + stlexvar 0x0, 0x64 + ldhole + sta v0 + callruntime.definesendableclass 0x67, .TopLevelSendableClass102, _204, 0x0, v0 + stlexvar 0x0, 0x65 + ldhole + sta v0 + callruntime.definesendableclass 0x68, .TopLevelSendableClass103, _206, 0x0, v0 + stlexvar 0x0, 0x66 + ldhole + sta v0 + callruntime.definesendableclass 0x69, .TopLevelSendableClass104, _208, 0x0, v0 + stlexvar 0x0, 0x67 + ldhole + sta v0 + callruntime.definesendableclass 0x6a, .TopLevelSendableClass105, _210, 0x0, v0 + stlexvar 0x0, 0x68 + ldhole + sta v0 + callruntime.definesendableclass 0x6b, .TopLevelSendableClass106, _212, 0x0, v0 + stlexvar 0x0, 0x69 + ldhole + sta v0 + callruntime.definesendableclass 0x6c, .TopLevelSendableClass107, _214, 0x0, v0 + stlexvar 0x0, 0x6a + ldhole + sta v0 + callruntime.definesendableclass 0x6d, .TopLevelSendableClass108, _216, 0x0, v0 + stlexvar 0x0, 0x6b + ldhole + sta v0 + callruntime.definesendableclass 0x6e, .TopLevelSendableClass109, _218, 0x0, v0 + stlexvar 0x0, 0x6c + ldhole + sta v0 + callruntime.definesendableclass 0x6f, .TopLevelSendableClass110, _220, 0x0, v0 + stlexvar 0x0, 0x6d + ldhole + sta v0 + callruntime.definesendableclass 0x70, .TopLevelSendableClass111, _222, 0x0, v0 + stlexvar 0x0, 0x6e + ldhole + sta v0 + callruntime.definesendableclass 0x71, .TopLevelSendableClass112, _224, 0x0, v0 + stlexvar 0x0, 0x6f + ldhole + sta v0 + callruntime.definesendableclass 0x72, .TopLevelSendableClass113, _226, 0x0, v0 + stlexvar 0x0, 0x70 + ldhole + sta v0 + callruntime.definesendableclass 0x73, .TopLevelSendableClass114, _228, 0x0, v0 + stlexvar 0x0, 0x71 + ldhole + sta v0 + callruntime.definesendableclass 0x74, .TopLevelSendableClass115, _230, 0x0, v0 + stlexvar 0x0, 0x72 + ldhole + sta v0 + callruntime.definesendableclass 0x75, .TopLevelSendableClass116, _232, 0x0, v0 + stlexvar 0x0, 0x73 + ldhole + sta v0 + callruntime.definesendableclass 0x76, .TopLevelSendableClass117, _234, 0x0, v0 + stlexvar 0x0, 0x74 + ldhole + sta v0 + callruntime.definesendableclass 0x77, .TopLevelSendableClass118, _236, 0x0, v0 + stlexvar 0x0, 0x75 + ldhole + sta v0 + callruntime.definesendableclass 0x78, .TopLevelSendableClass119, _238, 0x0, v0 + stlexvar 0x0, 0x76 + ldhole + sta v0 + callruntime.definesendableclass 0x79, .TopLevelSendableClass120, _240, 0x0, v0 + stlexvar 0x0, 0x77 + ldhole + sta v0 + callruntime.definesendableclass 0x7a, .TopLevelSendableClass121, _242, 0x0, v0 + stlexvar 0x0, 0x78 + ldhole + sta v0 + callruntime.definesendableclass 0x7b, .TopLevelSendableClass122, _244, 0x0, v0 + stlexvar 0x0, 0x79 + ldhole + sta v0 + callruntime.definesendableclass 0x7c, .TopLevelSendableClass123, _246, 0x0, v0 + stlexvar 0x0, 0x7a + ldhole + sta v0 + callruntime.definesendableclass 0x7d, .TopLevelSendableClass124, _248, 0x0, v0 + stlexvar 0x0, 0x7b + ldhole + sta v0 + callruntime.definesendableclass 0x7e, .TopLevelSendableClass125, _250, 0x0, v0 + stlexvar 0x0, 0x7c + ldhole + sta v0 + callruntime.definesendableclass 0x7f, .TopLevelSendableClass126, _252, 0x0, v0 + stlexvar 0x0, 0x7d + ldhole + sta v0 + callruntime.definesendableclass 0x80, .TopLevelSendableClass127, _254, 0x0, v0 + stlexvar 0x0, 0x7e + ldhole + sta v0 + callruntime.definesendableclass 0x81, .TopLevelSendableClass128, _256, 0x0, v0 + stlexvar 0x0, 0x7f + ldhole + sta v0 + callruntime.definesendableclass 0x82, .TopLevelSendableClass129, _258, 0x0, v0 + wide.stlexvar 0x0, 0x80 + ldhole + sta v0 + callruntime.definesendableclass 0x83, .TopLevelSendableClass130, _260, 0x0, v0 + wide.stlexvar 0x0, 0x81 + ldhole + sta v0 + callruntime.definesendableclass 0x84, .TopLevelSendableClass131, _262, 0x0, v0 + wide.stlexvar 0x0, 0x82 + ldhole + sta v0 + callruntime.definesendableclass 0x85, .TopLevelSendableClass132, _264, 0x0, v0 + wide.stlexvar 0x0, 0x83 + ldhole + sta v0 + callruntime.definesendableclass 0x86, .TopLevelSendableClass133, _266, 0x0, v0 + wide.stlexvar 0x0, 0x84 + ldhole + sta v0 + callruntime.definesendableclass 0x87, .TopLevelSendableClass134, _268, 0x0, v0 + wide.stlexvar 0x0, 0x85 + ldhole + sta v0 + callruntime.definesendableclass 0x88, .TopLevelSendableClass135, _270, 0x0, v0 + wide.stlexvar 0x0, 0x86 + ldhole + sta v0 + callruntime.definesendableclass 0x89, .TopLevelSendableClass136, _272, 0x0, v0 + wide.stlexvar 0x0, 0x87 + ldhole + sta v0 + callruntime.definesendableclass 0x8a, .TopLevelSendableClass137, _274, 0x0, v0 + wide.stlexvar 0x0, 0x88 + ldhole + sta v0 + callruntime.definesendableclass 0x8b, .TopLevelSendableClass138, _276, 0x0, v0 + wide.stlexvar 0x0, 0x89 + ldhole + sta v0 + callruntime.definesendableclass 0x8c, .TopLevelSendableClass139, _278, 0x0, v0 + wide.stlexvar 0x0, 0x8a + ldhole + sta v0 + callruntime.definesendableclass 0x8d, .TopLevelSendableClass140, _280, 0x0, v0 + wide.stlexvar 0x0, 0x8b + ldhole + sta v0 + callruntime.definesendableclass 0x8e, .TopLevelSendableClass141, _282, 0x0, v0 + wide.stlexvar 0x0, 0x8c + ldhole + sta v0 + callruntime.definesendableclass 0x8f, .TopLevelSendableClass142, _284, 0x0, v0 + wide.stlexvar 0x0, 0x8d + ldhole + sta v0 + callruntime.definesendableclass 0x90, .TopLevelSendableClass143, _286, 0x0, v0 + wide.stlexvar 0x0, 0x8e + ldhole + sta v0 + callruntime.definesendableclass 0x91, .TopLevelSendableClass144, _288, 0x0, v0 + wide.stlexvar 0x0, 0x8f + ldhole + sta v0 + callruntime.definesendableclass 0x92, .TopLevelSendableClass145, _290, 0x0, v0 + wide.stlexvar 0x0, 0x90 + ldhole + sta v0 + callruntime.definesendableclass 0x93, .TopLevelSendableClass146, _292, 0x0, v0 + wide.stlexvar 0x0, 0x91 + ldhole + sta v0 + callruntime.definesendableclass 0x94, .TopLevelSendableClass147, _294, 0x0, v0 + wide.stlexvar 0x0, 0x92 + ldhole + sta v0 + callruntime.definesendableclass 0x95, .TopLevelSendableClass148, _296, 0x0, v0 + wide.stlexvar 0x0, 0x93 + ldhole + sta v0 + callruntime.definesendableclass 0x96, .TopLevelSendableClass149, _298, 0x0, v0 + wide.stlexvar 0x0, 0x94 + ldhole + sta v0 + callruntime.definesendableclass 0x97, .TopLevelSendableClass150, _300, 0x0, v0 + wide.stlexvar 0x0, 0x95 + ldhole + sta v0 + callruntime.definesendableclass 0x98, .TopLevelSendableClass151, _302, 0x0, v0 + wide.stlexvar 0x0, 0x96 + ldhole + sta v0 + callruntime.definesendableclass 0x99, .TopLevelSendableClass152, _304, 0x0, v0 + wide.stlexvar 0x0, 0x97 + ldhole + sta v0 + callruntime.definesendableclass 0x9a, .TopLevelSendableClass153, _306, 0x0, v0 + wide.stlexvar 0x0, 0x98 + ldhole + sta v0 + callruntime.definesendableclass 0x9b, .TopLevelSendableClass154, _308, 0x0, v0 + wide.stlexvar 0x0, 0x99 + ldhole + sta v0 + callruntime.definesendableclass 0x9c, .TopLevelSendableClass155, _310, 0x0, v0 + wide.stlexvar 0x0, 0x9a + ldhole + sta v0 + callruntime.definesendableclass 0x9d, .TopLevelSendableClass156, _312, 0x0, v0 + wide.stlexvar 0x0, 0x9b + ldhole + sta v0 + callruntime.definesendableclass 0x9e, .TopLevelSendableClass157, _314, 0x0, v0 + wide.stlexvar 0x0, 0x9c + ldhole + sta v0 + callruntime.definesendableclass 0x9f, .TopLevelSendableClass158, _316, 0x0, v0 + wide.stlexvar 0x0, 0x9d + ldhole + sta v0 + callruntime.definesendableclass 0xa0, .TopLevelSendableClass159, _318, 0x0, v0 + wide.stlexvar 0x0, 0x9e + ldhole + sta v0 + callruntime.definesendableclass 0xa1, .TopLevelSendableClass160, _320, 0x0, v0 + wide.stlexvar 0x0, 0x9f + ldhole + sta v0 + callruntime.definesendableclass 0xa2, .TopLevelSendableClass161, _322, 0x0, v0 + wide.stlexvar 0x0, 0xa0 + ldhole + sta v0 + callruntime.definesendableclass 0xa3, .TopLevelSendableClass162, _324, 0x0, v0 + wide.stlexvar 0x0, 0xa1 + ldhole + sta v0 + callruntime.definesendableclass 0xa4, .TopLevelSendableClass163, _326, 0x0, v0 + wide.stlexvar 0x0, 0xa2 + ldhole + sta v0 + callruntime.definesendableclass 0xa5, .TopLevelSendableClass164, _328, 0x0, v0 + wide.stlexvar 0x0, 0xa3 + ldhole + sta v0 + callruntime.definesendableclass 0xa6, .TopLevelSendableClass165, _330, 0x0, v0 + wide.stlexvar 0x0, 0xa4 + ldhole + sta v0 + callruntime.definesendableclass 0xa7, .TopLevelSendableClass166, _332, 0x0, v0 + wide.stlexvar 0x0, 0xa5 + ldhole + sta v0 + callruntime.definesendableclass 0xa8, .TopLevelSendableClass167, _334, 0x0, v0 + wide.stlexvar 0x0, 0xa6 + ldhole + sta v0 + callruntime.definesendableclass 0xa9, .TopLevelSendableClass168, _336, 0x0, v0 + wide.stlexvar 0x0, 0xa7 + ldhole + sta v0 + callruntime.definesendableclass 0xaa, .TopLevelSendableClass169, _338, 0x0, v0 + wide.stlexvar 0x0, 0xa8 + ldhole + sta v0 + callruntime.definesendableclass 0xab, .TopLevelSendableClass170, _340, 0x0, v0 + wide.stlexvar 0x0, 0xa9 + ldhole + sta v0 + callruntime.definesendableclass 0xac, .TopLevelSendableClass171, _342, 0x0, v0 + wide.stlexvar 0x0, 0xaa + ldhole + sta v0 + callruntime.definesendableclass 0xad, .TopLevelSendableClass172, _344, 0x0, v0 + wide.stlexvar 0x0, 0xab + ldhole + sta v0 + callruntime.definesendableclass 0xae, .TopLevelSendableClass173, _346, 0x0, v0 + wide.stlexvar 0x0, 0xac + ldhole + sta v0 + callruntime.definesendableclass 0xaf, .TopLevelSendableClass174, _348, 0x0, v0 + wide.stlexvar 0x0, 0xad + ldhole + sta v0 + callruntime.definesendableclass 0xb0, .TopLevelSendableClass175, _350, 0x0, v0 + wide.stlexvar 0x0, 0xae + ldhole + sta v0 + callruntime.definesendableclass 0xb1, .TopLevelSendableClass176, _352, 0x0, v0 + wide.stlexvar 0x0, 0xaf + ldhole + sta v0 + callruntime.definesendableclass 0xb2, .TopLevelSendableClass177, _354, 0x0, v0 + wide.stlexvar 0x0, 0xb0 + ldhole + sta v0 + callruntime.definesendableclass 0xb3, .TopLevelSendableClass178, _356, 0x0, v0 + wide.stlexvar 0x0, 0xb1 + ldhole + sta v0 + callruntime.definesendableclass 0xb4, .TopLevelSendableClass179, _358, 0x0, v0 + wide.stlexvar 0x0, 0xb2 + ldhole + sta v0 + callruntime.definesendableclass 0xb5, .TopLevelSendableClass180, _360, 0x0, v0 + wide.stlexvar 0x0, 0xb3 + ldhole + sta v0 + callruntime.definesendableclass 0xb6, .TopLevelSendableClass181, _362, 0x0, v0 + wide.stlexvar 0x0, 0xb4 + ldhole + sta v0 + callruntime.definesendableclass 0xb7, .TopLevelSendableClass182, _364, 0x0, v0 + wide.stlexvar 0x0, 0xb5 + ldhole + sta v0 + callruntime.definesendableclass 0xb8, .TopLevelSendableClass183, _366, 0x0, v0 + wide.stlexvar 0x0, 0xb6 + ldhole + sta v0 + callruntime.definesendableclass 0xb9, .TopLevelSendableClass184, _368, 0x0, v0 + wide.stlexvar 0x0, 0xb7 + ldhole + sta v0 + callruntime.definesendableclass 0xba, .TopLevelSendableClass185, _370, 0x0, v0 + wide.stlexvar 0x0, 0xb8 + ldhole + sta v0 + callruntime.definesendableclass 0xbb, .TopLevelSendableClass186, _372, 0x0, v0 + wide.stlexvar 0x0, 0xb9 + ldhole + sta v0 + callruntime.definesendableclass 0xbc, .TopLevelSendableClass187, _374, 0x0, v0 + wide.stlexvar 0x0, 0xba + ldhole + sta v0 + callruntime.definesendableclass 0xbd, .TopLevelSendableClass188, _376, 0x0, v0 + wide.stlexvar 0x0, 0xbb + ldhole + sta v0 + callruntime.definesendableclass 0xbe, .TopLevelSendableClass189, _378, 0x0, v0 + wide.stlexvar 0x0, 0xbc + ldhole + sta v0 + callruntime.definesendableclass 0xbf, .TopLevelSendableClass190, _380, 0x0, v0 + wide.stlexvar 0x0, 0xbd + ldhole + sta v0 + callruntime.definesendableclass 0xc0, .TopLevelSendableClass191, _382, 0x0, v0 + wide.stlexvar 0x0, 0xbe + ldhole + sta v0 + callruntime.definesendableclass 0xc1, .TopLevelSendableClass192, _384, 0x0, v0 + wide.stlexvar 0x0, 0xbf + ldhole + sta v0 + callruntime.definesendableclass 0xc2, .TopLevelSendableClass193, _386, 0x0, v0 + wide.stlexvar 0x0, 0xc0 + ldhole + sta v0 + callruntime.definesendableclass 0xc3, .TopLevelSendableClass194, _388, 0x0, v0 + wide.stlexvar 0x0, 0xc1 + ldhole + sta v0 + callruntime.definesendableclass 0xc4, .TopLevelSendableClass195, _390, 0x0, v0 + wide.stlexvar 0x0, 0xc2 + ldhole + sta v0 + callruntime.definesendableclass 0xc5, .TopLevelSendableClass196, _392, 0x0, v0 + wide.stlexvar 0x0, 0xc3 + ldhole + sta v0 + callruntime.definesendableclass 0xc6, .TopLevelSendableClass197, _394, 0x0, v0 + wide.stlexvar 0x0, 0xc4 + ldhole + sta v0 + callruntime.definesendableclass 0xc7, .TopLevelSendableClass198, _396, 0x0, v0 + wide.stlexvar 0x0, 0xc5 + ldhole + sta v0 + callruntime.definesendableclass 0xc8, .TopLevelSendableClass199, _398, 0x0, v0 + wide.stlexvar 0x0, 0xc6 + ldhole + sta v0 + callruntime.definesendableclass 0xc9, .TopLevelSendableClass200, _400, 0x0, v0 + wide.stlexvar 0x0, 0xc7 + ldhole + sta v0 + callruntime.definesendableclass 0xca, .TopLevelSendableClass201, _402, 0x0, v0 + wide.stlexvar 0x0, 0xc8 + ldhole + sta v0 + callruntime.definesendableclass 0xcb, .TopLevelSendableClass202, _404, 0x0, v0 + wide.stlexvar 0x0, 0xc9 + ldhole + sta v0 + callruntime.definesendableclass 0xcc, .TopLevelSendableClass203, _406, 0x0, v0 + wide.stlexvar 0x0, 0xca + ldhole + sta v0 + callruntime.definesendableclass 0xcd, .TopLevelSendableClass204, _408, 0x0, v0 + wide.stlexvar 0x0, 0xcb + ldhole + sta v0 + callruntime.definesendableclass 0xce, .TopLevelSendableClass205, _410, 0x0, v0 + wide.stlexvar 0x0, 0xcc + ldhole + sta v0 + callruntime.definesendableclass 0xcf, .TopLevelSendableClass206, _412, 0x0, v0 + wide.stlexvar 0x0, 0xcd + ldhole + sta v0 + callruntime.definesendableclass 0xd0, .TopLevelSendableClass207, _414, 0x0, v0 + wide.stlexvar 0x0, 0xce + ldhole + sta v0 + callruntime.definesendableclass 0xd1, .TopLevelSendableClass208, _416, 0x0, v0 + wide.stlexvar 0x0, 0xcf + ldhole + sta v0 + callruntime.definesendableclass 0xd2, .TopLevelSendableClass209, _418, 0x0, v0 + wide.stlexvar 0x0, 0xd0 + ldhole + sta v0 + callruntime.definesendableclass 0xd3, .TopLevelSendableClass210, _420, 0x0, v0 + wide.stlexvar 0x0, 0xd1 + ldhole + sta v0 + callruntime.definesendableclass 0xd4, .TopLevelSendableClass211, _422, 0x0, v0 + wide.stlexvar 0x0, 0xd2 + ldhole + sta v0 + callruntime.definesendableclass 0xd5, .TopLevelSendableClass212, _424, 0x0, v0 + wide.stlexvar 0x0, 0xd3 + ldhole + sta v0 + callruntime.definesendableclass 0xd6, .TopLevelSendableClass213, _426, 0x0, v0 + wide.stlexvar 0x0, 0xd4 + ldhole + sta v0 + callruntime.definesendableclass 0xd7, .TopLevelSendableClass214, _428, 0x0, v0 + wide.stlexvar 0x0, 0xd5 + ldhole + sta v0 + callruntime.definesendableclass 0xd8, .TopLevelSendableClass215, _430, 0x0, v0 + wide.stlexvar 0x0, 0xd6 + ldhole + sta v0 + callruntime.definesendableclass 0xd9, .TopLevelSendableClass216, _432, 0x0, v0 + wide.stlexvar 0x0, 0xd7 + ldhole + sta v0 + callruntime.definesendableclass 0xda, .TopLevelSendableClass217, _434, 0x0, v0 + wide.stlexvar 0x0, 0xd8 + ldhole + sta v0 + callruntime.definesendableclass 0xdb, .TopLevelSendableClass218, _436, 0x0, v0 + wide.stlexvar 0x0, 0xd9 + ldhole + sta v0 + callruntime.definesendableclass 0xdc, .TopLevelSendableClass219, _438, 0x0, v0 + wide.stlexvar 0x0, 0xda + ldhole + sta v0 + callruntime.definesendableclass 0xdd, .TopLevelSendableClass220, _440, 0x0, v0 + wide.stlexvar 0x0, 0xdb + ldhole + sta v0 + callruntime.definesendableclass 0xde, .TopLevelSendableClass221, _442, 0x0, v0 + wide.stlexvar 0x0, 0xdc + ldhole + sta v0 + callruntime.definesendableclass 0xdf, .TopLevelSendableClass222, _444, 0x0, v0 + wide.stlexvar 0x0, 0xdd + ldhole + sta v0 + callruntime.definesendableclass 0xe0, .TopLevelSendableClass223, _446, 0x0, v0 + wide.stlexvar 0x0, 0xde + ldhole + sta v0 + callruntime.definesendableclass 0xe1, .TopLevelSendableClass224, _448, 0x0, v0 + wide.stlexvar 0x0, 0xdf + ldhole + sta v0 + callruntime.definesendableclass 0xe2, .TopLevelSendableClass225, _450, 0x0, v0 + wide.stlexvar 0x0, 0xe0 + ldhole + sta v0 + callruntime.definesendableclass 0xe3, .TopLevelSendableClass226, _452, 0x0, v0 + wide.stlexvar 0x0, 0xe1 + ldhole + sta v0 + callruntime.definesendableclass 0xe4, .TopLevelSendableClass227, _454, 0x0, v0 + wide.stlexvar 0x0, 0xe2 + ldhole + sta v0 + callruntime.definesendableclass 0xe5, .TopLevelSendableClass228, _456, 0x0, v0 + wide.stlexvar 0x0, 0xe3 + ldhole + sta v0 + callruntime.definesendableclass 0xe6, .TopLevelSendableClass229, _458, 0x0, v0 + wide.stlexvar 0x0, 0xe4 + ldhole + sta v0 + callruntime.definesendableclass 0xe7, .TopLevelSendableClass230, _460, 0x0, v0 + wide.stlexvar 0x0, 0xe5 + ldhole + sta v0 + callruntime.definesendableclass 0xe8, .TopLevelSendableClass231, _462, 0x0, v0 + wide.stlexvar 0x0, 0xe6 + ldhole + sta v0 + callruntime.definesendableclass 0xe9, .TopLevelSendableClass232, _464, 0x0, v0 + wide.stlexvar 0x0, 0xe7 + ldhole + sta v0 + callruntime.definesendableclass 0xea, .TopLevelSendableClass233, _466, 0x0, v0 + wide.stlexvar 0x0, 0xe8 + ldhole + sta v0 + callruntime.definesendableclass 0xeb, .TopLevelSendableClass234, _468, 0x0, v0 + wide.stlexvar 0x0, 0xe9 + ldhole + sta v0 + callruntime.definesendableclass 0xec, .TopLevelSendableClass235, _470, 0x0, v0 + wide.stlexvar 0x0, 0xea + ldhole + sta v0 + callruntime.definesendableclass 0xed, .TopLevelSendableClass236, _472, 0x0, v0 + wide.stlexvar 0x0, 0xeb + ldhole + sta v0 + callruntime.definesendableclass 0xee, .TopLevelSendableClass237, _474, 0x0, v0 + wide.stlexvar 0x0, 0xec + ldhole + sta v0 + callruntime.definesendableclass 0xef, .TopLevelSendableClass238, _476, 0x0, v0 + wide.stlexvar 0x0, 0xed + ldhole + sta v0 + callruntime.definesendableclass 0xf0, .TopLevelSendableClass239, _478, 0x0, v0 + wide.stlexvar 0x0, 0xee + ldhole + sta v0 + callruntime.definesendableclass 0xf1, .TopLevelSendableClass240, _480, 0x0, v0 + wide.stlexvar 0x0, 0xef + ldhole + sta v0 + callruntime.definesendableclass 0xf2, .TopLevelSendableClass241, _482, 0x0, v0 + wide.stlexvar 0x0, 0xf0 + ldhole + sta v0 + callruntime.definesendableclass 0xf3, .TopLevelSendableClass242, _484, 0x0, v0 + wide.stlexvar 0x0, 0xf1 + ldhole + sta v0 + callruntime.definesendableclass 0xf4, .TopLevelSendableClass243, _486, 0x0, v0 + wide.stlexvar 0x0, 0xf2 + ldhole + sta v0 + callruntime.definesendableclass 0xf5, .TopLevelSendableClass244, _488, 0x0, v0 + wide.stlexvar 0x0, 0xf3 + ldhole + sta v0 + callruntime.definesendableclass 0xf6, .TopLevelSendableClass245, _490, 0x0, v0 + wide.stlexvar 0x0, 0xf4 + ldhole + sta v0 + callruntime.definesendableclass 0xf7, .TopLevelSendableClass246, _492, 0x0, v0 + wide.stlexvar 0x0, 0xf5 + ldhole + sta v0 + callruntime.definesendableclass 0xf8, .TopLevelSendableClass247, _494, 0x0, v0 + wide.stlexvar 0x0, 0xf6 + ldhole + sta v0 + callruntime.definesendableclass 0xf9, .TopLevelSendableClass248, _496, 0x0, v0 + wide.stlexvar 0x0, 0xf7 + ldhole + sta v0 + callruntime.definesendableclass 0xfa, .TopLevelSendableClass249, _498, 0x0, v0 + wide.stlexvar 0x0, 0xf8 + ldhole + sta v0 + callruntime.definesendableclass 0xfb, .TopLevelSendableClass250, _500, 0x0, v0 + wide.stlexvar 0x0, 0xf9 + ldhole + sta v0 + callruntime.definesendableclass 0xfc, .TopLevelSendableClass251, _502, 0x0, v0 + wide.stlexvar 0x0, 0xfa + ldhole + sta v0 + callruntime.definesendableclass 0xfd, .TopLevelSendableClass252, _504, 0x0, v0 + wide.stlexvar 0x0, 0xfb + ldhole + sta v0 + callruntime.definesendableclass 0xfe, .TopLevelSendableClass253, _506, 0x0, v0 + wide.stlexvar 0x0, 0xfc + ldhole + sta v0 + callruntime.definesendableclass 0x100, .TopLevelSendableClass254, _508, 0x0, v0 + wide.stlexvar 0x0, 0xfd + ldhole + sta v0 + callruntime.definesendableclass 0x101, .TopLevelSendableClass255, _510, 0x0, v0 + wide.stlexvar 0x0, 0xfe + ldhole + sta v0 + callruntime.definesendableclass 0x102, .SendableTestClass1, _512, 0x0, v0 + sta v0 + mov v2, v0 + newobjrange 0x103, 0x1, v2 + sta v0 + tryldglobalbyname 0x105, print + sta v1 + lda v0 + ldobjbyname 0x106, v + sta v0 + lda v1 + callarg1 0x0, v0 + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_for_below_API12beta3_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_for_below_API12beta3_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..8e9b9b9398e71ab25449388cb75f674b5ef96e19 --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt @@ -0,0 +1 @@ +TypeError: Constructor is false \ No newline at end of file diff --git a/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_for_below_API11_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_for_below_API11_version-expected.txt rename to es2panda/test/version_control/API12beta1_and_beta2/bytecode_feature/wide_sendable_lexical_env_unsupported_runtime_version-expected.txt diff --git a/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..8e9b9b9398e71ab25449388cb75f674b5ef96e19 --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt @@ -0,0 +1 @@ +TypeError: Constructor is false \ No newline at end of file diff --git a/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..8e9b9b9398e71ab25449388cb75f674b5ef96e19 --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_for_higher_or_equal_to_API12beta3_version-expected.txt @@ -0,0 +1 @@ +TypeError: Constructor is false \ No newline at end of file diff --git a/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_version-expected.txt b/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..8e9b9b9398e71ab25449388cb75f674b5ef96e19 --- /dev/null +++ b/es2panda/test/version_control/API12beta1_and_beta2/syntax_feature/top_level_sendable_class_as_closure_unsupported_runtime_version-expected.txt @@ -0,0 +1 @@ +TypeError: Constructor is false \ No newline at end of file diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..85b14f1a81252a13aef8763a543c9a5fea4bd020 --- /dev/null +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,50 @@ +slotNum = 0x4 +.language ECMAScript +.function any .#~@0=#PropertyByName(any a0, any a1, any a2, any a3, any a4) { +label_1: +label_0: + lda a3 + stobjbyname 0x0, name, a2 + lda a4 + stobjbyname 0x2, age, a2 + lda a2 + return +label_2: +} + +slotNum = 0xa +.language ECMAScript +.function any .#~@0>#init(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, Object + sta v0 + ldobjbyname 0x1, defineProperty + sta v1 + lda.str name + sta v2 + createobjectwithbuffer 0x3, _2 + sta v3 + lda a2 + ldobjbyname 0x4, name + definepropertybyname 0x6, value, v3 + lda v1 + callthis3 0x8, v0, a2, v2, v3 + returnundefined +label_2: +} + +slotNum = 0x3 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldhole + sta v0 + defineclasswithbuffer 0x0, .#~@0=#PropertyByName, _3, 0x2, v0 + ldobjbyname 0x1, prototype + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_for_below_API11_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_asm_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_for_below_API11_asm_version-expected.txt rename to es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_asm_version-expected.txt diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..601217c7f803b481980dfa92b43bbc592ea37673 --- /dev/null +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/define_property_by_name_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -0,0 +1,50 @@ +slotNum = 0x4 +.language ECMAScript +.function any .PropertyByName(any a0, any a1, any a2, any a3, any a4) { +label_1: +label_0: + lda a3 + stobjbyname 0x0, name, a2 + lda a4 + stobjbyname 0x2, age, a2 + lda a2 + return +label_2: +} + +slotNum = 0x3 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldhole + sta v0 + defineclasswithbuffer 0x0, .PropertyByName, _2, 0x2, v0 + ldobjbyname 0x1, prototype + returnundefined +label_2: +} + +slotNum = 0xa +.language ECMAScript +.function any .init(any a0, any a1, any a2) { +label_1: +label_0: + tryldglobalbyname 0x0, Object + sta v0 + ldobjbyname 0x1, defineProperty + sta v1 + lda.str name + sta v2 + createobjectwithbuffer 0x3, _1 + sta v3 + lda a2 + ldobjbyname 0x4, name + definefieldbyname 0x6, value, v3 + lda v1 + callthis3 0x8, v0, a2, v2, v3 + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/import_target/import_target.ts b/es2panda/test/version_control/API12beta3/bytecode_feature/import_target/import_target.ts index 28f0f7ccd60b1c00cf6384d36d67b262bcadf414..7621af1e5d9b3862daa9db2cfd7f44f7e1fd3162 100644 --- a/es2panda/test/version_control/API12beta3/bytecode_feature/import_target/import_target.ts +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/import_target/import_target.ts @@ -14,6 +14,8 @@ * limitations under the License. */ +const defaultImportValue = 'a0'; +export default defaultImportValue; export const a1 = 'a1'; export const a2 = 'a2'; export const a3 = 'a3'; diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/istrue_isfalse_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/istrue_isfalse_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..674e91d58380a2a0a9c4e4ddc2a293b056139088 --- /dev/null +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/istrue_isfalse_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,42 @@ +slotNum = 0x9 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_8: +label_0: + ldtrue + sta v0 + callruntime.isfalse 0x0 + jnez label_1 +label_2: + tryldglobalbyname 0x1, print + sta v0 + lda.str true + sta v1 + lda v0 + callarg1 0x2, v1 + jmp label_3 +label_1: + lda v0 + callruntime.istrue 0x4 + jnez label_4 +label_5: + ldtrue + jmp label_6 +label_4: + ldfalse +label_6: + callruntime.isfalse 0x5 + jnez label_3 +label_7: + tryldglobalbyname 0x6, print + sta v0 + lda.str false + sta v1 + lda v0 + callarg1 0x7, v1 +label_3: + returnundefined +label_9: +} + + diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode.ts b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode.ts index c6d38d659cc2f08b4ecbf4c2f85fd5aba971105b..af97b159ccf940eba25d768165c7c433c3030665 100644 --- a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode.ts +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode.ts @@ -13,7 +13,7 @@ * limitations under the License. */ -import lazy { a1, a2 } from 'import_target/import_target' +import lazy defaultImportValue, { a1, a2 } from 'import_target/import_target'; class SendableLazyLoading { name: string = a1; @@ -23,4 +23,5 @@ class SendableLazyLoading { } let a: SendableLazyLoading = new SendableLazyLoading(); let b: string = a2; -print(a.name); \ No newline at end of file +print(a.name); +print(defaultImportValue); \ No newline at end of file diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index c16a17b509eec682c34ca20b640b22acbe916705..fffe779103603c565c59ed4291b3e8f845472983 100644 --- a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@0=#SendableLazyLoading(any a0, any a1, any a2) { label_1: @@ -14,7 +13,7 @@ label_0: label_2: } -slotNum = 0x8 +slotNum = 0xb .language ECMAScript .function any .func_main_0(any a0, any a1, any a2) { label_1: @@ -35,6 +34,13 @@ label_0: sta v0 lda v1 callarg1 0x6, v0 + tryldglobalbyname 0x8, print + sta v0 + callruntime.ldlazymodulevar 0x2 + sta v1 + throw.undefinedifholewithname defaultImportValue + lda v0 + callarg1 0x9, v1 returnundefined label_2: } diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt index c92d705a82f60af9eb8e273ccbe4ff80b91f30a2..4eb3781c08365867a1d3f2c902f364bb6d80f7a6 100644 --- a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt @@ -1,7 +1,6 @@ .language ECMAScript slotNum = 0x2 -expectedProperty = 0x1 .function any .#~@0=#SendableLazyLoading(any a0, any a1, any a2) { label_1: label_0: diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..3e0604bf53bd57fc0fb37f1192e47543d62d32e6 --- /dev/null +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,49 @@ +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@0=#SendableLazyLoading(any a0, any a1, any a2) { +label_1: +label_0: + callruntime.ldlazysendablemodulevar 0x0 + sta v0 + throw.undefinedifholewithname a1 + lda v0 + stobjbyname 0x0, name, a2 + lda a2 + return +label_2: +} + +slotNum = 0xb +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldhole + sta v0 + callruntime.definesendableclass 0x0, .#~@0=#SendableLazyLoading, _4, 0x0, v0 + sta v0 + mov v2, v0 + newobjrange 0x1, 0x1, v2 + sta v0 + callruntime.ldlazymodulevar 0x1 + throw.undefinedifholewithname a2 + tryldglobalbyname 0x3, print + sta v1 + lda v0 + ldobjbyname 0x4, name + sta v0 + lda v1 + callarg1 0x6, v0 + tryldglobalbyname 0x8, print + sta v0 + callruntime.ldlazymodulevar 0x2 + sta v1 + throw.undefinedifholewithname defaultImportValue + lda v0 + callarg1 0x9, v1 + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_runtime_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_runtime_version-expected.txt index da0f8ed91a8f2f0f067b3bdf26265d5ca48cf82c..6e9673b4dea09d930a094450f02c1da3fd633950 100644 --- a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_runtime_version-expected.txt +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_supported_runtime_version-expected.txt @@ -1 +1,2 @@ a1 +a0 diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_unsupported_compile_asm_version-expected.txt index ae2da4fe1eac68cf9cbea7fc61ae98dea21247b5..7511f0e00ccb5dcc6989df72d90e24f0f5c69ad0 100644 --- a/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_unsupported_compile_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/lazy_import_bytecode_unsupported_compile_asm_version-expected.txt @@ -1 +1,3 @@ -SyntaxError: Current configuration does not support using lazy import. Lazy import can be used in the beta3 version of API 12 or higher versions. \ No newline at end of file +SyntaxError: Current configuration does not support using lazy import. Lazy import can be used in the beta3 version of API 12 or higher versions. +Solutions: > Check the compatibleSdkVersion and compatibleSdkVersionStage in build-profile.json5.> If compatibleSdkVersion is set to API 12, then compatibleSdkVersionStage needs to be configured as beta3.> If you're running es2abc in commandline without IDE, please check whether target-api-version and target-api-sub-version options are correctly configured. [lazy_import_bytecode.ts:16:13] +The size of programs is expected to be 1, but is 0 diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt index 3222f27c481265e6493a5d9c8a663a84d4cf2e67..851a53ce7363f5ce7229777de047982dffe9ffa1 100644 --- a/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt @@ -1,5 +1,4 @@ slotNum = 0x2 -expectedProperty = 0x1 .language ECMAScript .function any .#~@0=#WideSendableLazyLoading(any a0, any a1, any a2) { label_1: diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt index 3b520c914cdad34fd6e22aa8273715778451727a..568f9fd81ef5d8aecb3c1e95d412ecb4c4a301e3 100644 --- a/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API16beta3_asm_version-expected.txt @@ -1,7 +1,6 @@ .language ECMAScript slotNum = 0x2 -expectedProperty = 0x1 .function any .#~@0=#WideSendableLazyLoading(any a0, any a1, any a2) { label_1: label_0: diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..3222f27c481265e6493a5d9c8a663a84d4cf2e67 --- /dev/null +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_supported_compile_for_higher_or_equal_to_API18_asm_version-expected.txt @@ -0,0 +1,40 @@ +slotNum = 0x2 +expectedProperty = 0x1 +.language ECMAScript +.function any .#~@0=#WideSendableLazyLoading(any a0, any a1, any a2) { +label_1: +label_0: + callruntime.wideldlazysendablemodulevar 0xad + sta v0 + throw.undefinedifholewithname a255 + lda v0 + stobjbyname 0x0, name1, a2 + lda a2 + return +label_2: +} + +slotNum = 0x9 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldhole + sta v0 + callruntime.definesendableclass 0x0, .#~@0=#WideSendableLazyLoading, _4, 0x0, v0 + sta v0 + mov v2, v0 + newobjrange 0x1, 0x1, v2 + sta v0 + callruntime.wideldlazymodulevar 0xae + sta v1 + throw.undefinedifholewithname a256 + tryldglobalbyname 0x3, print + callarg1 0x4, v0 + tryldglobalbyname 0x6, print + callarg1 0x7, v1 + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_unsupported_compile_asm_version-expected.txt index ae2da4fe1eac68cf9cbea7fc61ae98dea21247b5..ab88cd29d06de314c32b532b9e460ea3ccadb4a7 100644 --- a/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_unsupported_compile_asm_version-expected.txt +++ b/es2panda/test/version_control/API12beta3/bytecode_feature/wide_lazy_import_bytecode_unsupported_compile_asm_version-expected.txt @@ -1 +1,3 @@ -SyntaxError: Current configuration does not support using lazy import. Lazy import can be used in the beta3 version of API 12 or higher versions. \ No newline at end of file +SyntaxError: Current configuration does not support using lazy import. Lazy import can be used in the beta3 version of API 12 or higher versions. +Solutions: > Check the compatibleSdkVersion and compatibleSdkVersionStage in build-profile.json5.> If compatibleSdkVersion is set to API 12, then compatibleSdkVersionStage needs to be configured as beta3.> If you're running es2abc in commandline without IDE, please check whether target-api-version and target-api-sub-version options are correctly configured. [wide_lazy_import_bytecode.ts:16:13] +The size of programs is expected to be 1, but is 0 diff --git a/es2panda/test/version_control/API12beta3/syntax_feature/import_target/import_target.ts b/es2panda/test/version_control/API12beta3/syntax_feature/import_target/import_target.ts index 4e0ec5ce3ab1c2dbfbc76e0dcf6f3974f995bf1c..6b52c1d49d3212a5ab1716ca26a88c2a636ae681 100644 --- a/es2panda/test/version_control/API12beta3/syntax_feature/import_target/import_target.ts +++ b/es2panda/test/version_control/API12beta3/syntax_feature/import_target/import_target.ts @@ -17,4 +17,9 @@ export function lazyImportFunc(resolve) { print("lazy ImportFunc called"); resolve(1); +} + +export default function defaultImportFunc(resolve) { + print("lazy ImportFunc called"); + resolve(1); } \ No newline at end of file diff --git a/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import.ts b/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import.ts index 985261dcad35bd3a0ee8f8f2eec6acc94905daa8..d3081c17aadfef6b27544ed7204bd47e478c0229 100644 --- a/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import.ts +++ b/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import.ts @@ -13,5 +13,5 @@ * limitations under the License. */ -import lazy { lazyImportFunc } from 'import_target/import_target' +import lazy defaultImportFunc, { lazyImportFunc } from 'import_target/import_target' print("lazy import"); \ No newline at end of file diff --git a/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import_supported_compile_version-expected.txt b/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import_supported_compile_version-expected.txt index bacfd1f3f009771155f2b5d30da1fb280e2bcc99..cdf751cc03236b839a427060c322ff6d998b627f 100644 --- a/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import_supported_compile_version-expected.txt +++ b/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import_supported_compile_version-expected.txt @@ -9,15 +9,42 @@ "loc": { "start": { "line": 16, - "column": 37 + "column": 56 }, "end": { "line": 16, - "column": 66 + "column": 85 } } }, "specifiers": [ + { + "type": "ImportDefaultSpecifier", + "local": { + "type": "Identifier", + "name": "defaultImportFunc", + "loc": { + "start": { + "line": 16, + "column": 13 + }, + "end": { + "line": 16, + "column": 30 + } + } + }, + "loc": { + "start": { + "line": 16, + "column": 13 + }, + "end": { + "line": 16, + "column": 30 + } + } + }, { "type": "ImportSpecifier", "local": { @@ -26,11 +53,11 @@ "loc": { "start": { "line": 16, - "column": 15 + "column": 34 }, "end": { "line": 16, - "column": 29 + "column": 48 } } }, @@ -40,11 +67,11 @@ "loc": { "start": { "line": 16, - "column": 15 + "column": 34 }, "end": { "line": 16, - "column": 29 + "column": 48 } } }, @@ -52,11 +79,11 @@ "loc": { "start": { "line": 16, - "column": 15 + "column": 34 }, "end": { "line": 16, - "column": 29 + "column": 48 } } } @@ -69,7 +96,7 @@ }, "end": { "line": 16, - "column": 66 + "column": 85 } } }, diff --git a/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import_unsupported_compile_version-expected.txt b/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import_unsupported_compile_version-expected.txt index ae2da4fe1eac68cf9cbea7fc61ae98dea21247b5..6792ee776f64a7c5434c432c6e78250ea6cdb999 100644 --- a/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import_unsupported_compile_version-expected.txt +++ b/es2panda/test/version_control/API12beta3/syntax_feature/lazy_import_unsupported_compile_version-expected.txt @@ -1 +1,3 @@ -SyntaxError: Current configuration does not support using lazy import. Lazy import can be used in the beta3 version of API 12 or higher versions. \ No newline at end of file +SyntaxError: Current configuration does not support using lazy import. Lazy import can be used in the beta3 version of API 12 or higher versions. +Solutions: > Check the compatibleSdkVersion and compatibleSdkVersionStage in build-profile.json5.> If compatibleSdkVersion is set to API 12, then compatibleSdkVersionStage needs to be configured as beta3.> If you're running es2abc in commandline without IDE, please check whether target-api-version and target-api-sub-version options are correctly configured. [lazy_import.ts:16:13] +The size of programs is expected to be 1, but is 0 diff --git a/es2panda/test/version_control/API12beta3/syntax_feature/sendable_function_unsupported_runtime_for_below_API12beta3_version-expected.txt b/es2panda/test/version_control/API12beta3/syntax_feature/sendable_function_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API12beta3/syntax_feature/sendable_function_unsupported_runtime_for_below_API12beta3_version-expected.txt rename to es2panda/test/version_control/API12beta3/syntax_feature/sendable_function_unsupported_runtime_for_higher_or_equal_to_API11_version-expected.txt diff --git a/es2panda/test/version_control/API12beta3/syntax_feature/sendable_function_unsupported_runtime_version-expected.txt b/es2panda/test/version_control/API12beta3/syntax_feature/sendable_function_unsupported_runtime_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..71d2c9ab90d726207311beb677d5ff4e2f418031 --- /dev/null +++ b/es2panda/test/version_control/API12beta3/syntax_feature/sendable_function_unsupported_runtime_version-expected.txt @@ -0,0 +1 @@ +TypeError: is not callable \ No newline at end of file diff --git a/es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt.js b/es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt.js similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt.js rename to es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt.js diff --git a/es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_runtime_below_abc_api_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_runtime_below_abc_api_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_runtime_below_abc_api_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_runtime_below_abc_api_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_supported_compile_asm_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_supported_compile_asm_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_supported_compile_asm_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_supported_compile_asm_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_supported_runtime_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_supported_runtime_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_supported_runtime_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_supported_runtime_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_unsupported_compile_for_below_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_unsupported_compile_asm_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_unsupported_compile_for_below_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_unsupported_compile_asm_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/derived-class-default-constructor-opt_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_unsupported_runtime_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_unsupported_runtime_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_unsupported_runtime_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/derived-class-default-constructor-opt_unsupported_runtime_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/sendable-class-export.ts b/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export.ts similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/sendable-class-export.ts rename to es2panda/test/version_control/API18/bytecode_feature/sendable-class-export.ts diff --git a/es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_runtime_below_abc_api_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_runtime_below_abc_api_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_runtime_below_abc_api_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_runtime_below_abc_api_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_supported_compile_asm_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_supported_compile_asm_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_supported_compile_asm_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_supported_compile_asm_version-expected.txt diff --git a/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_supported_runtime_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_supported_runtime_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_unsupported_compile_for_below_API11_asm_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_unsupported_compile_asm_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_unsupported_compile_for_below_API11_asm_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_unsupported_compile_asm_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_unsupported_compile_asm_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_unsupported_compile_for_higher_or_equal_to_API11_asm_version-expected.txt diff --git a/es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt similarity index 100% rename from es2panda/test/version_control/API16/bytecode_feature/sendable-class-export_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt rename to es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_unsupported_compile_for_higher_or_equal_to_API12beta3_asm_version-expected.txt diff --git a/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_unsupported_runtime_version-expected.txt b/es2panda/test/version_control/API18/bytecode_feature/sendable-class-export_unsupported_runtime_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/es2panda/test/version_control/API20/bytecode_feature/annotations.ts b/es2panda/test/version_control/API20/bytecode_feature/annotations.ts new file mode 100644 index 0000000000000000000000000000000000000000..7cad18eb174c49ba7ea02d55265561848ba7c808 --- /dev/null +++ b/es2panda/test/version_control/API20/bytecode_feature/annotations.ts @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2025 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. + */ + + +@interface __$$ETS_ANNOTATION$$__Anno { + b: boolean = true +} + +@__$$ETS_ANNOTATION$$__Anno() +class A { } \ No newline at end of file diff --git a/es2panda/test/version_control/API20/bytecode_feature/annotations_runtime_below_abc_api_version-expected.txt b/es2panda/test/version_control/API20/bytecode_feature/annotations_runtime_below_abc_api_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..13510081b9bc44b4192aa01dadb03e5c04ca5537 --- /dev/null +++ b/es2panda/test/version_control/API20/bytecode_feature/annotations_runtime_below_abc_api_version-expected.txt @@ -0,0 +1 @@ +pandafile \ No newline at end of file diff --git a/es2panda/test/version_control/API20/bytecode_feature/annotations_supported_compile_asm_version-expected.txt b/es2panda/test/version_control/API20/bytecode_feature/annotations_supported_compile_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..11dd37ab8b3eba4994f5ecd5ed78a1770745580d --- /dev/null +++ b/es2panda/test/version_control/API20/bytecode_feature/annotations_supported_compile_asm_version-expected.txt @@ -0,0 +1,24 @@ +slotNum = 0x0 +.language ECMAScript +.function any .#~A=#A(any a0, any a1, any a2) { +label_1: +label_0: + lda a2 + return +label_2: +} + +slotNum = 0x3 +.language ECMAScript +.function any .func_main_0(any a0, any a1, any a2) { +label_1: +label_0: + ldhole + sta v0 + defineclasswithbuffer 0x0, .#~A=#A, _2, 0x0, v0 + ldobjbyname 0x1, prototype + returnundefined +label_2: +} + + diff --git a/es2panda/test/version_control/API20/bytecode_feature/annotations_supported_runtime_version-expected.txt b/es2panda/test/version_control/API20/bytecode_feature/annotations_supported_runtime_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/es2panda/test/version_control/API20/bytecode_feature/annotations_unsupported_compile_asm_version-expected.txt b/es2panda/test/version_control/API20/bytecode_feature/annotations_unsupported_compile_asm_version-expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..d327c04a727e2e2662cbd9470a2e080282f675a7 --- /dev/null +++ b/es2panda/test/version_control/API20/bytecode_feature/annotations_unsupported_compile_asm_version-expected.txt @@ -0,0 +1,3 @@ +SyntaxError: Current configuration does not support using annotations. Annotations can be used in the version of API 20 or higher versions. +Solutions: > Check the compatibleSdkVersion in build-profile.json5.> If compatibleSdkVersion is set to API 20 or higher version.> If you're running es2abc in commandline without IDE, please check whether target-api-version and enable-annotations options are correctly configured. [annotations.ts:17:12] +The size of programs is expected to be 1, but is 0 diff --git a/es2panda/typescript/core/destructuringContext.cpp b/es2panda/typescript/core/destructuringContext.cpp index 2243a62b95c8e8002b90d50c923695fbcf11f142..9c84408246194670a97f54c63ad062f409e6b010 100644 --- a/es2panda/typescript/core/destructuringContext.cpp +++ b/es2panda/typescript/core/destructuringContext.cpp @@ -197,6 +197,7 @@ void DestructuringContext::HandleIdentifierPattern(const ir::AssignmentExpressio void ArrayDestructuringContext::ValidateInferedType() { + CHECK_NOT_NULL(inferedType_); if (!inferedType_->IsArrayType() && !inferedType_->IsUnionType() && (!inferedType_->IsObjectType() || !inferedType_->AsObjectType()->IsTupleType())) { checker_->ThrowTypeError( @@ -521,6 +522,7 @@ void ArrayDestructuringContext::Start() void ObjectDestructuringContext::ValidateInferedType() { + CHECK_NOT_NULL(inferedType_); if (!inferedType_->IsObjectType()) { return; } diff --git a/es2panda/typescript/types/typeRelation.cpp b/es2panda/typescript/types/typeRelation.cpp index b87d32b1352c06959645e7d7cb9b7a7495d4cc7f..0603f632c4802834130b8bdfd4316d6f5201c83d 100644 --- a/es2panda/typescript/types/typeRelation.cpp +++ b/es2panda/typescript/types/typeRelation.cpp @@ -82,6 +82,7 @@ bool TypeRelation::IsIdenticalTo(Type *source, Type *target) CHECK_NOT_NULL(target); result_ = CacheLookup(source, target, checker_->IdenticalResults(), RelationType::IDENTICAL); if (result_ == RelationResult::CACHE_MISS) { + CHECK_NOT_NULL(source); checker_->ResolveStructuredTypeMembers(source); checker_->ResolveStructuredTypeMembers(target); result_ = RelationResult::FALSE; diff --git a/es2panda/util/commonUtil.h b/es2panda/util/commonUtil.h index f63afffa7dcf694a46b4aa674ab996b0c5499e1e..036d49c7658dd5c9e9d12878a744cdc23d9d976e 100644 --- a/es2panda/util/commonUtil.h +++ b/es2panda/util/commonUtil.h @@ -48,6 +48,7 @@ constexpr char NORMALIZED_OHMURL_PREFIX = '@'; constexpr char SLASH_TAG = '/'; constexpr char CHAR_VERTICAL_LINE = '|'; constexpr char COLON_SEPARATOR = ':'; +constexpr char DOT_SEPARATOR = '.'; constexpr size_t ORIGINAL_PKG_NAME_POS = 0U; constexpr size_t TARGET_PKG_NAME_POS = 1U; @@ -104,15 +105,15 @@ void VisitDyanmicImports(ConstReferenceIf function, // The dynamicimport bytecode should not have label, otherwise the dyanmicimport might be a jump // target and its parameter is a variable instead of a constant string expression (Check // AbcCodeProcessor::AddJumpLabels for more details). - if (iter->opcode != pandasm::Opcode::DYNAMICIMPORT || iter->set_label) { + if ((*iter)->opcode != pandasm::Opcode::DYNAMICIMPORT || (*iter)->IsLabel()) { continue; } auto prevIns = iter - 1; - if (prevIns->opcode != pandasm::Opcode::LDA_STR) { + if ((*prevIns)->opcode != pandasm::Opcode::LDA_STR) { continue; } - ASSERT(prevIns->ids.size() == 1); - cb(prevIns->ids[0]); // 0: index of the string in lda.str bytecode + ASSERT((*prevIns)->Ids().size() == 1); + cb((*prevIns)->GetId(0)); // 0: index of the string in lda.str bytecode } } } // namespace panda::es2panda::util diff --git a/es2panda/util/helpers.cpp b/es2panda/util/helpers.cpp index 8d4d486be4f8b9264dec4c84b074eff9086cb9ea..e0cd4127024cff5e8002f30f66880dc8fc786b29 100644 --- a/es2panda/util/helpers.cpp +++ b/es2panda/util/helpers.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 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 @@ -15,6 +15,7 @@ #include "helpers.h" +#include #include #include #include @@ -31,6 +32,7 @@ #include #include #include +#include #include #ifdef ENABLE_BYTECODE_OPT @@ -675,10 +677,9 @@ static std::string GetTempOutputName(const std::string &inputFile) void Helpers::AnalysisProgram(panda::pandasm::Program *prog, const std::string &inputFile) { +#ifdef PANDA_WITH_BYTECODE_OPTIMIZER std::map stat; std::map *statp = &stat; - -#ifdef PANDA_WITH_BYTECODE_OPTIMIZER auto tempOutput = GetTempOutputName(inputFile); bool exists = false; auto mapsp = &panda::bytecodeopt::BytecodeAnalysisResults::GetOrCreateBytecodeMaps(tempOutput, exists); @@ -699,11 +700,11 @@ void Helpers::AnalysisProgram(panda::pandasm::Program *prog, const std::string & void Helpers::OptimizeProgram(panda::pandasm::Program *prog, const std::string &inputFile) { - std::map stat; - std::map *statp = &stat; auto tempOutput = GetTempOutputName(inputFile); #ifdef PANDA_WITH_BYTECODE_OPTIMIZER + std::map stat; + std::map *statp = &stat; const uint32_t COMPONENT_MASK = panda::Logger::Component::ASSEMBLER | panda::Logger::Component::BYTECODE_OPTIMIZER | panda::Logger::Component::COMPILER; @@ -958,13 +959,41 @@ bool Helpers::BelongingToRecords(const std::string &name, const std::unordered_s return retainRecordSet.find(recordName) != retainRecordSet.end(); } +bool Helpers::IsInnerAnnotationRecordName(const std::string &name) +{ + return name == panda::abc2program::CONCURRENT_MODULE_REQUEST_RECORD_NAME || + name == panda::abc2program::SLOT_NUMBER_RECORD_NAME || + name == panda::abc2program::EXPECTED_PROPERTY_COUNT_RECORD_NAME; +} + +std::string Helpers::RemoveRecordSuffixAnnotationName(const std::string &name) +{ + auto pos = name.rfind(util::DOT_SEPARATOR); + if (pos == std::string::npos) { + return name; + } + return name.substr(0, pos); +} + void Helpers::RemoveProgramsRedundantData(std::map &progsInfo, const std::map> &resolvedDepsRelation) { auto progInfoIter = progsInfo.begin(); while (progInfoIter != progsInfo.end()) { + auto name = progInfoIter->first; + auto &program = progInfoIter->second->program; + /** + * The record name of a user-defined annotation is the annotation name concatenated with the record name of the + * file where it is declared. In order to preserve the annotated record, it is necessary to remove the + * concatenated annotation name from the record name before perform dependency matching. + */ + if (!util::RecordNotGeneratedFromBytecode(name) && + (program.record_table.begin()->second.metadata->GetAccessFlags() & ACC_ANNOTATION) != 0 && + !IsInnerAnnotationRecordName(program.record_table.begin()->first)) { + name = RemoveRecordSuffixAnnotationName(name); + } // remove redundant sourcefiles and bytecodefile data which are not dependant in compilation - if (resolvedDepsRelation.find(progInfoIter->first) == resolvedDepsRelation.end()) { + if (resolvedDepsRelation.find(name) == resolvedDepsRelation.end()) { progInfoIter = progsInfo.erase(progInfoIter); continue; } @@ -986,9 +1015,14 @@ bool Helpers::IsSupportLazyImportVersion(int apiVersion, std::string subApiVersi (subApiVersion == SUB_API_VERSION_1 || subApiVersion == SUB_API_VERSION_2))); } -bool Helpers::IsSupportLazyImportDefaultVersion(int apiVersion) +bool Helpers::IsEnableExpectedPropertyCountApiVersion(int apiVersion) +{ + return !(apiVersion < ENABLE_EXPECTED_PROPERTY_COUNT_MIN_SUPPORTED_API_VERSION); +} + +bool Helpers::IsSupportAnnotationVersion(int apiVersion) { - return !(apiVersion < LAZY_IMPORT_DEFAULT_MIN_SUPPORTED_API_VERSION); + return !(apiVersion < ANNOTATION_SUPPORTED_API_VERSION); } } // namespace panda::es2panda::util diff --git a/es2panda/util/helpers.h b/es2panda/util/helpers.h index e831d3727518480f2b2fdabb8bd3c57c335b558a..d2a0614fab33466bdd8a5d1c8f5ba974435d1b5f 100644 --- a/es2panda/util/helpers.h +++ b/es2panda/util/helpers.h @@ -182,11 +182,14 @@ public: static bool IsSpecialScopeName(const util::StringView &str); static bool BelongingToRecords(const std::string &name, const std::unordered_set &retainRecordSet, const std::string &delimiter = std::string(DOT)); + static bool IsInnerAnnotationRecordName(const std::string &name); + static std::string RemoveRecordSuffixAnnotationName(const std::string &name); static void RemoveProgramsRedundantData(std::map &progsInfo, const std::map> &resolveDepsRelation); static bool IsDefaultApiVersion(int apiVersion, std::string subApiVersion); static bool IsSupportLazyImportVersion(int apiVersion, std::string subApiVersion); - static bool IsSupportLazyImportDefaultVersion(int apiVersion); + static bool IsEnableExpectedPropertyCountApiVersion(int apiVersion); + static bool IsSupportAnnotationVersion(int apiVersion); static bool IsSupportEtsImplementsVersion(int apiVersion); static const uint32_t MAX_DOUBLE_DIGIT = 310; @@ -224,10 +227,11 @@ public: ABC_TO_PROGRAM_MIN_SUPPORTED_BYTECODE_VERSION {12, 0, 2, 0}; static const int32_t SENDABLE_FUNCTION_MIN_SUPPORTED_API_VERSION = 12; static const int32_t LAZY_IMPORT_MIN_SUPPORTED_API_VERSION = 12; - static const int32_t LAZY_IMPORT_DEFAULT_MIN_SUPPORTED_API_VERSION = 18; static const int32_t SENDABLE_LAZY_LOADING_MIN_SUPPORTED_API_VERSION = 12; static const int8_t SUPER_CALL_OPT_MIN_SUPPORTED_API_VERSION = 18; static const int8_t SENDABLE_CLASS_USING_LOCAL_MODULE_VAR_MIN_SUPPORTED_API_VERSION = 18; + static const int8_t ENABLE_EXPECTED_PROPERTY_COUNT_MIN_SUPPORTED_API_VERSION = 18; + static const int8_t ANNOTATION_SUPPORTED_API_VERSION = 20; static constexpr std::string_view SUB_API_VERSION_1 = "beta1"; static constexpr std::string_view SUB_API_VERSION_2 = "beta2"; static constexpr std::string_view DEFAULT_SUB_API_VERSION = SUB_API_VERSION_1; diff --git a/es2panda/util/patchFix.cpp b/es2panda/util/patchFix.cpp index e7c0dd5646409d14733a4461a33274cede0fc5a3..4a05c01108ebe254a14ca8a36e829325cfce24c3 100644 --- a/es2panda/util/patchFix.cpp +++ b/es2panda/util/patchFix.cpp @@ -176,18 +176,18 @@ std::vector> PatchFix::GenerateFunctionAndCl ss << ") {" << std::endl; for (const auto &ins : func->ins) { - ss << (ins.set_label ? "" : "\t") << ins.ToString("", true, func->GetTotalRegs()) << " "; - if (ins.opcode == panda::pandasm::Opcode::CREATEARRAYWITHBUFFER || - ins.opcode == panda::pandasm::Opcode::CREATEOBJECTWITHBUFFER) { - int64_t bufferIdx = GetLiteralIdxFromStringId(ins.ids[0]); + ss << (ins->IsLabel() ? "" : "\t") << ins->ToString("", true, func->GetTotalRegs()) << " "; + if (ins->opcode == panda::pandasm::Opcode::CREATEARRAYWITHBUFFER || + ins->opcode == panda::pandasm::Opcode::CREATEOBJECTWITHBUFFER) { + int64_t bufferIdx = GetLiteralIdxFromStringId(ins->GetId(0)); ss << ExpandLiteral(bufferIdx, literalBuffers) << " "; - } else if (ins.opcode == panda::pandasm::Opcode::DEFINECLASSWITHBUFFER) { - CollectFunctionsWithDefinedClasses(func->name, ins.ids[0]); - int64_t bufferIdx = GetLiteralIdxFromStringId(ins.ids[1]); + } else if (ins->opcode == panda::pandasm::Opcode::DEFINECLASSWITHBUFFER) { + CollectFunctionsWithDefinedClasses(func->name, ins->GetId(0)); + int64_t bufferIdx = GetLiteralIdxFromStringId(ins->GetId(1)); std::string literalStr = ExpandLiteral(bufferIdx, literalBuffers); auto classHash = Helpers::GetHashString(literalStr); - hashList.push_back(std::pair(ins.ids[0], classHash)); - CollectClassMemberFunctions(ins.ids[0], bufferIdx, literalBuffers); + hashList.push_back(std::pair(ins->GetId(0), classHash)); + CollectClassMemberFunctions(ins->GetId(0), bufferIdx, literalBuffers); } ss << " "; } @@ -319,27 +319,27 @@ uint32_t PatchFix::GetPatchLexicalIdx(const std::string &variableName) return topScopeLexEnvs_[variableName]; } -bool IsFunctionOrClassDefineIns(panda::pandasm::Ins &ins) +bool IsFunctionOrClassDefineIns(panda::pandasm::Ins *ins) { - if (ins.opcode == panda::pandasm::Opcode::DEFINEMETHOD || - ins.opcode == panda::pandasm::Opcode::DEFINEFUNC || - ins.opcode == panda::pandasm::Opcode::DEFINECLASSWITHBUFFER) { + if (ins->opcode == panda::pandasm::Opcode::DEFINEMETHOD || + ins->opcode == panda::pandasm::Opcode::DEFINEFUNC || + ins->opcode == panda::pandasm::Opcode::DEFINECLASSWITHBUFFER) { return true; } return false; } -bool IsStPatchVarIns(panda::pandasm::Ins &ins) +bool IsStPatchVarIns(panda::pandasm::Ins *ins) { - return ins.opcode == panda::pandasm::Opcode::WIDE_STPATCHVAR; + return ins->opcode == panda::pandasm::Opcode::WIDE_STPATCHVAR; } void PatchFix::CollectFuncDefineIns(panda::pandasm::Function *func) { for (size_t i = 0; i < func->ins.size(); ++i) { - if (IsFunctionOrClassDefineIns(func->ins[i])) { - funcDefineIns_.push_back(func->ins[i]); // push define ins - funcDefineIns_.push_back(func->ins[i + 1]); // push store ins + if (IsFunctionOrClassDefineIns(func->ins[i].get())) { + funcDefineIns_.push_back(func->ins[i].get()); // push define ins + funcDefineIns_.push_back(func->ins[i + 1].get()); // push store ins } } } @@ -377,31 +377,23 @@ void PatchFix::HandleModifiedDefinedClassFunc(panda::pandasm::Program *prog) } } -void PatchFix::AddHeadAndTailInsForPatchFuncMain0(std::vector &ins) +void PatchFix::AddHeadAndTailInsForPatchFuncMain0(std::vector &ins) { - panda::pandasm::Ins returnUndefine; - returnUndefine.opcode = pandasm::Opcode::RETURNUNDEFINED; - + auto returnUndefined = new pandasm::Returnundefined(); if (ins.size() == 0) { - ins.push_back(returnUndefine); + ins.emplace_back(returnUndefined); return; } - panda::pandasm::Ins newLexenv; - newLexenv.opcode = pandasm::Opcode::NEWLEXENV; - newLexenv.imms.reserve(1); - auto newFuncNum = long(ins.size() / 2); // each new function has 2 ins: define and store - newLexenv.imms.emplace_back(newFuncNum); - - ins.insert(ins.begin(), newLexenv); - ins.push_back(returnUndefine); + auto newLexenv = new pandasm::Newlexenv(long(ins.size() / 2)); // each new function has 2 ins: define and stor + ins.emplace(ins.begin(), newLexenv); + ins.emplace_back(returnUndefined); } -void PatchFix::AddTailInsForPatchFuncMain1(std::vector &ins) +void PatchFix::AddTailInsForPatchFuncMain1(std::vector &ins) { - panda::pandasm::Ins returnUndefined; - returnUndefined.opcode = pandasm::Opcode::RETURNUNDEFINED; - ins.push_back(returnUndefined); + auto returnUndefined = new pandasm::Returnundefined(); + ins.emplace_back(returnUndefined); } void PatchFix::CreateFunctionPatchMain0AndMain1(panda::pandasm::Function &patchFuncMain0, @@ -415,19 +407,19 @@ void PatchFix::CreateFunctionPatchMain0AndMain1(panda::pandasm::Function &patchF patchFuncMain1.params.emplace_back(panda::pandasm::Type("any", 0), patchFuncMain1.language); } - std::vector patchMain0DefineIns; - std::vector patchMain1DefineIns; + std::vector patchMain0DefineIns; + std::vector patchMain1DefineIns; for (size_t i = 0; i < funcDefineIns_.size(); ++i) { if (IsFunctionOrClassDefineIns(funcDefineIns_[i])) { - auto &name = funcDefineIns_[i].ids[0]; + auto name = funcDefineIns_[i]->GetId(0); if (newFuncNames_.count(name) && IsStPatchVarIns(funcDefineIns_[i + 1])) { - patchMain0DefineIns.push_back(funcDefineIns_[i]); - patchMain0DefineIns.push_back(funcDefineIns_[i + 1]); + patchMain0DefineIns.emplace_back(funcDefineIns_[i]->DeepCopy()); + patchMain0DefineIns.emplace_back(funcDefineIns_[i + 1]->DeepCopy()); continue; } if (patchFuncNames_.count(name) || modifiedClassNames_.count(name)) { - patchMain1DefineIns.push_back(funcDefineIns_[i]); + patchMain1DefineIns.emplace_back(funcDefineIns_[i]->DeepCopy()); continue; } } @@ -436,8 +428,8 @@ void PatchFix::CreateFunctionPatchMain0AndMain1(panda::pandasm::Function &patchF AddHeadAndTailInsForPatchFuncMain0(patchMain0DefineIns); AddTailInsForPatchFuncMain1(patchMain1DefineIns); - patchFuncMain0.ins = patchMain0DefineIns; - patchFuncMain1.ins = patchMain1DefineIns; + patchFuncMain0.ins = std::move(patchMain0DefineIns); + patchFuncMain1.ins = std::move(patchMain1DefineIns); patchFuncMain0.return_type = panda::pandasm::Type("any", 0); patchFuncMain1.return_type = panda::pandasm::Type("any", 0); diff --git a/es2panda/util/patchFix.h b/es2panda/util/patchFix.h index 1802233e0edb3f484bb2a6db2931bf0a9f43d2ee..db26b4a25e12f078c2755562b9858b636c8bd9b3 100644 --- a/es2panda/util/patchFix.h +++ b/es2panda/util/patchFix.h @@ -99,8 +99,8 @@ private: std::string ExpandLiteral(int64_t bufferIdx, LiteralBuffers &literalBuffers); std::string ConvertLiteralToString(std::vector &literalBuffer); void CollectFuncDefineIns(panda::pandasm::Function *func); - void AddHeadAndTailInsForPatchFuncMain0(std::vector &ins); - void AddTailInsForPatchFuncMain1(std::vector &ins); + void AddHeadAndTailInsForPatchFuncMain0(std::vector &ins); + void AddTailInsForPatchFuncMain1(std::vector &ins); void CreateFunctionPatchMain0AndMain1(panda::pandasm::Function &patchFuncMain0, panda::pandasm::Function &patchFuncMain1); bool IsAnonymousOrSpecialOrDuplicateFunction(const std::string &funcName); @@ -135,7 +135,7 @@ private: ArenaUnorderedMap topScopeLexEnvs_; ArenaSet patchFuncNames_; ArenaSet newFuncNames_; - ArenaVector funcDefineIns_; + ArenaVector funcDefineIns_; ArenaSet modifiedClassNames_; ArenaUnorderedMap> classMemberFunctions_; ArenaUnorderedMap> funcDefinedClasses_; diff --git a/ets2panda/BUILD.gn b/ets2panda/BUILD.gn index 5a5df7e3977b3c1bb2d5f6d2dd826691effdd79f..60c32ea888d672fd753514e638086c66492cc36b 100644 --- a/ets2panda/BUILD.gn +++ b/ets2panda/BUILD.gn @@ -11,7 +11,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//arkcompiler/runtime_core/static_core/ark_config.gni") +if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + import("//arkcompiler/runtime_core/static_core/ark_config.gni") +} else { + import( + "//build/config/components/runtime_core/static_core/ark_common_config.gni") +} if (ark_standalone_build) { import("$build_root/ark.gni") @@ -23,12 +29,16 @@ config("libes2panda_public_config") { include_dirs = [ "$target_gen_dir", "$target_gen_dir/include", - "$target_gen_dir/generated", - "//third_party/icu/icu4c/source/common", - "//third_party/icu/icu4c/source/i18n", - "//third_party/icu/icu4c/source", "$ark_es2panda_root", ] + if (ark_standalone_build || ark_static_standalone_build) { + include_dirs += [ + "$target_gen_dir/generated", + "//third_party/icu/icu4c/source/common", + "//third_party/icu/icu4c/source/i18n", + "//third_party/icu/icu4c/source", + ] + } } action("check_build_system_consistency") { @@ -216,8 +226,8 @@ libes2panda_sources = [ "compiler/lowering/ets/cfgBuilderPhase.cpp", "compiler/lowering/ets/constantExpressionLowering.cpp", "compiler/lowering/ets/convertPrimitiveCastMethodCall.cpp", - "compiler/lowering/ets/declareOverloadLowering.cpp", "compiler/lowering/ets/declGenPhase.cpp", + "compiler/lowering/ets/declareOverloadLowering.cpp", "compiler/lowering/ets/defaultParametersInConstructorLowering.cpp", "compiler/lowering/ets/defaultParametersLowering.cpp", "compiler/lowering/ets/dynamicImport.cpp", @@ -1056,7 +1066,7 @@ ES2PANDA_API_GENERATED = [ "$LIBGEN_DIR/gen/headers/util/importPathManager.yaml", "$LIBGEN_DIR/gen/headers/util/path.yaml", "$LIBGEN_DIR/gen/headers/util/arktsconfig.yaml", - "$LIBGEN_DIR/gen/headers/util/options.yaml" + "$LIBGEN_DIR/gen/headers/util/options.yaml", ] ES2PANDA_API = [ @@ -1130,26 +1140,45 @@ config("libes2panda_config") { ] } -libes2panda_configs = [ - "$ark_root/assembler:arkassembler_public_config", - "$ark_root:ark_config", +if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + libes2panda_configs = [ "$ark_root:ark_config" ] + libes2panda_public_configs = [ "$ark_root:ark_config" ] +} else { + libes2panda_configs = + [ "//build/config/components/runtime_core/static_core:ark_common_config" ] + libes2panda_public_configs = + [ "//build/config/components/runtime_core/static_core:ark_common_config" ] +} + +if (ark_standalone_build || ark_static_standalone_build) { + libes2panda_configs += [ + "$ark_root/assembler:arkassembler_public_config", + "$ark_root/libpandabase:arkbase_public_config", + "$ark_root/libpandafile:arkfile_public_config", + "$ark_root/abc2program:arkts_abc2program_public_config", + ] +} + +libes2panda_configs += [ ":libes2panda_public_config", ":libes2panda_config", - "$ark_root/libpandabase:arkbase_public_config", - "$ark_root/libpandafile:arkfile_public_config", - "$ark_root/abc2program:arkts_abc2program_public_config", ] -libes2panda_public_configs = [ - "$ark_root/assembler:arkassembler_public_config", - "$ark_root:ark_config", +if (ark_standalone_build || ark_static_standalone_build) { + libes2panda_public_configs += [ + "$ark_root/assembler:arkassembler_public_config", + "$ark_root/libpandabase:arkbase_public_config", + "$ark_root/libpandafile:arkfile_public_config", + "$ark_root/bytecode_optimizer:bytecodeopt_public_config", + "$ark_root/runtime:arkruntime_public_config", + "$ark_root/compiler:arkcompiler_public_config", + ] +} + +libes2panda_public_configs += [ ":libes2panda_public_config", ":libes2panda_config", - "$ark_root/libpandabase:arkbase_public_config", - "$ark_root/libpandafile:arkfile_public_config", - "$ark_root/bytecode_optimizer:bytecodeopt_public_config", - "$ark_root/compiler:arkcompiler_public_config", - "$ark_root/runtime:arkruntime_public_config", ] ohos_shared_library("libes2panda") { @@ -1179,17 +1208,31 @@ ohos_source_set("libes2panda_frontend_static") { ":gen_es2panda_lexer_token_inl", ":isa_gen_es2panda_formats_h", ":isa_gen_es2panda_isa_h", - "$ark_third_party_root/icu/icu4c:static_icui18n", - "$ark_third_party_root/icu/icu4c:static_icuuc", ] external_deps = [ + "runtime_core:libarktsabc2program_package", "runtime_core:libarktsassembler_package", "runtime_core:libarktsbase_package", "runtime_core:libarktscompiler_package", "runtime_core:libarktsfile_package", - "runtime_core:libarktsabc2program_package", sdk_libc_secshared_dep, ] + if (ark_standalone_build || ark_static_standalone_build) { + deps += [ + "$ark_third_party_root/icu/icu4c:static_icui18n", + "$ark_third_party_root/icu/icu4c:static_icuuc", + ] + } else { + external_deps += [ + "icu:static_icui18n", + "icu:static_icuuc", + "runtime_core:arkts_abc2program_public_headers", + "runtime_core:assembler_headers", + "runtime_core:libpandabase_headers", + "runtime_core:libpandafile_headers", + "runtime_core:runtime_gen_headers", + ] + } part_name = "ets_frontend" subsystem_name = "arkcompiler" } @@ -1227,27 +1270,39 @@ ohos_source_set("libes2panda_public_frontend_static") { deps = [ ":libes2panda_frontend_static" ] + if (target_os != "win" && target_os != "mingw" && target_os != "winuwp") { + deps += [ ":generate_ets2panda_info" ] + defines = [ "ES2PANDA_COMPILE_BY_GN" ] + } + + external_deps = [ + "runtime_core:libarktsabc2program_package", + "runtime_core:libarktsbytecodeopt_package", + sdk_libc_secshared_dep, + ] + if (ark_standalone_build || ark_static_standalone_build) { deps += [ - "$ark_root/bytecode_optimizer:libarktsbytecodeopt_package", "$ark_root/abc2program:libarktsabc2program_package", "$ark_root/assembler:libarktsassembler", + "$ark_root/bytecode_optimizer:libarktsbytecodeopt_package", "$ark_root/compiler:libarktscompiler", "$ark_root/libpandabase:libarktsbase", "$ark_root/libpandafile:libarktsfile", ] + } else { + external_deps += [ + "runtime_core:assembler_headers", + "runtime_core:bytecode_optimizer_headers", + "runtime_core:compiler_headers", + "runtime_core:libpandabase_headers", + "runtime_core:libpandafile_headers", + "runtime_core:runtime_gen_headers", + "runtime_core:runtime_headers", + "runtime_core:verification_headers", + ] } - if (target_os != "win" && target_os != "mingw" && target_os != "winuwp") { - deps += [ ":generate_ets2panda_info" ] - defines = [ "ES2PANDA_COMPILE_BY_GN" ] - } - - external_deps = [ - "runtime_core:libarktsbytecodeopt_package", - "runtime_core:libarktsabc2program_package", - sdk_libc_secshared_dep, - ] part_name = "ets_frontend" subsystem_name = "arkcompiler" } @@ -1335,10 +1390,10 @@ template("panda_code_fix_gen") { destination = invoker.destination api = api_list if (defined(invoker.requires)) { - requires = invoker.requires + requires = invoker.requires } if (defined(invoker.extra_dependencies)) { - extra_dependencies = invoker.extra_dependencies + extra_dependencies = invoker.extra_dependencies } } } diff --git a/ets2panda/REVIEWERS b/ets2panda/REVIEWERS index 8c8a73c98b8f671a65906508fd6690993b3fe508..9305160b98b4c953fad028c5484fbb8bdcb85cb0 100644 --- a/ets2panda/REVIEWERS +++ b/ets2panda/REVIEWERS @@ -14,16 +14,17 @@ * @gavin1012_hw @zhuoli72 .* @zhuoli72 @Prof1983 @igelhaus -/arkguard/ @zhangchen168 +/arkguard/ @xiao-peiyang /es2panda/ @gavin1012_hw /ets2panda/ @igelhaus @Prof1983 -/ets2panda/ast_verifier @mbolshov ^igelhaus ^Prof1983 +/ets2panda/aot @dkofanov @gavin1012_hw ^igelhaus ^Prof1983 +/ets2panda/ast_verifier @mbolshov @dkofanov ^yyang16 ^igelhaus ^Prof1983 /ets2panda/bindings ^igelhaus ^Prof1983 @dreamdoomwalker @Ascnbio ^muhammet-fevzi-bayiroglu @utkugursel /ets2panda/lexer @chernykhsergey @igelhaus ^zelentsovdmitry @Prof1983 /ets2panda/lsp ^igelhaus ^Prof1983 @dreamdoomwalker @Ascnbio ^muhammet-fevzi-bayiroglu @utkugursel /ets2panda/parser @chernykhsergey ^igelhaus ^Prof1983 -/ets2panda/public @mbolshov ^igelhaus ^Prof1983 -/ets2panda/test ^igelhaus ^Prof1983 +/ets2panda/public @mbolshov @yyang16 ^igelhaus ^Prof1983 +/ets2panda/test ^akmaevaleksey ^igelhaus ^Prof1983 /legacy_bin/ @ctw-ian /merge_abc/ @gavin1012_hw /test/ @gavin1012_hw @@ -32,37 +33,59 @@ /test262/*.py @shirunova_viktoria @gavin1012_hw @zhuheng27 /test262/ignored*.txt @shirunova_viktoria @gavin1012_hw @kuchkovairina @zhuheng27 /test_ecma_bcopt/ @gavin1012_hw -/ets2panda/checker/ETS*.* @zelentsovdmitry ^igelhaus ^Prof1983 @chernykhsergey -/ets2panda/checker/ETSAnalyzer.cpp @akmaevaleksey ^vpukhov ^igelhaus ^Prof1983 -/ets2panda/declgen_ets2ts/ @dreamdoomwalker ^trubachevilya ^ivagin ^hufeng20 ^igelhaus ^Prof1983 -/ets2panda/driver/ ^trubachevilya @dreamdoomwalker @chenqy930 @hufeng20 ^igelhaus ^Prof1983 -/ets2panda/linter/ @ragnvald @rosinskiyigor @eokolnov1 -/ets2panda/parser/ETSparser*.* @zelentsovdmitry ^igelhaus ^Prof1983 @chernykhsergey -/ets2panda/parser/expressionParser.cpp @zelentsovdmitry ^igelhaus ^Prof1983 @chernykhsergey -/ets2panda/parser/parser*.* @zelentsovdmitry ^igelhaus ^Prof1983 @chernykhsergey -/ets2panda/parser/statementParser.cpp @zelentsovdmitry ^igelhaus ^Prof1983 @chernykhsergey +/ets2panda/checker/ @akmaevaleksey @zelentsovdmitry ^lirismankarina ^igelhaus ^Prof1983 +/ets2panda/checker/ETS*.* @zelentsovdmitry ^igelhaus ^Prof1983 +/ets2panda/checker/ETSAnalyzer.cpp ^akmaevaleksey @Ekkoruse ^igelhaus ^Prof1983 +/ets2panda/checker/ETSAnalyzerHelpers.* @lirismankarina ^igelhaus ^Prof1983 +/ets2panda/compiler/ @xuxjeeee @gogabr ^igelhaus ^Prof1983 ^zelentsovdmitry +/ets2panda/declgen_ets2ts/ @dreamdoomwalker ^trubachevilya ^ivagin ^hufeng20 ^igelhaus ^Prof1983 @zenghang11 +/ets2panda/driver/ @trubachevilya @dreamdoomwalker ^chenqy930 ^hufeng20 ^igelhaus ^Prof1983 @zenghang11 +/ets2panda/ir/ @ziziziiziziz @gavin1012_hw ^igelhaus ^Prof1983 +/ets2panda/linter/ @ragnvald @rosinskiyigor @eokolnov1 @liwentao_uiw ^utkugursel +/ets2panda/parser/ @mkaskov ^igelhaus ^Prof1983 ^chernykhsergey ^zelentsovdmitry /ets2panda/scripts/*-build.sh @titovatatiana ^igelhaus ^Prof1983 /ets2panda/scripts/arkui* @titovatatiana ^igelhaus ^Prof1983 -/ets2panda/util/arktsconfig* @dreamdoomwalker ^trubachevilya ^igelhaus ^Prof1983 -/ets2panda/util/diagnostic* @chernykhsergey ^igelhaus ^Prof1983 -/ets2panda/util/importPathManager* @dreamdoomwalker ^trubachevilya ^igelhaus ^Prof1983 +/ets2panda/test/ast @mbolshov ^igelhaus ^Prof1983 +/ets2panda/test/depanalyzer @trubachevilya @dreamdoomwalker ^igelhaus ^Prof1983 +/ets2panda/test/srcdump @mbolshov ^igelhaus ^Prof1983 +/ets2panda/test/test-lists @igelhaus ^Prof1983 +/ets2panda/test/utils @mbolshov ^igelhaus ^Prof1983 +/ets2panda/util/ @mkaskov @dkofanov ^igelhaus ^Prof1983 +/ets2panda/util/arktsconfig* @dreamdoomwalker @trubachevilya ^igelhaus ^Prof1983 +/ets2panda/util/diagnostic* @chernykhsergey @mkaskov ^igelhaus ^Prof1983 +/ets2panda/util/importPathManager* @dreamdoomwalker @trubachevilya ^igelhaus ^Prof1983 +/ets2panda/util/plugin.* @yyang16 @mbolshov ^igelhaus ^Prof1983 +/ets2panda/varbinder/ @lirismankarina @akmaevaleksey ^Ekkoruse ^zelentsovdmitry ^igelhaus ^Prof1983 /test/workload/ignored*.txt @shirunova_viktoria @kuchkovairina @gavin1012_hw @zhuheng27 /ets2panda/checker/ets/function.cpp ^vpukhov @gogabr ^igelhaus ^Prof1983 /ets2panda/checker/ets/helpers.cpp @zelentsovdmitry ^igelhaus ^Prof1983 /ets2panda/checker/ets/object.cpp @zelentsovdmitry ^vpukhov ^igelhaus ^Prof1983 /ets2panda/checker/types/ets @gogabr ^igelhaus ^Prof1983 @zelentsovdmitry /ets2panda/checker/types/signature.* ^vpukhov ^igelhaus ^Prof1983 @zelentsovdmitry -/ets2panda/checker/types/typeFlag.h ^vpukhov ^igelhaus ^Prof1983 @zelentsovdmitry -/ets2panda/checker/types/typeRelation.* ^vpukhov ^igelhaus ^Prof1983 @zelentsovdmitry -/ets2panda/compiler/core/ @zelentsovdmitry ^vpukhov ^igelhaus ^Prof1983 +/ets2panda/checker/types/typeFlag.h ^vpukhov ^igelhaus ^Prof1983 @mkaskov +/ets2panda/checker/types/typeRelation.* ^vpukhov ^igelhaus ^Prof1983 @mkaskov +/ets2panda/compiler/core/ @zelentsovdmitry @xuxjeeee ^vpukhov ^igelhaus ^Prof1983 +/ets2panda/compiler/core/compilerImpl.* @yyang16 @dkofanov ^xuxjeeee ^igelhaus ^Prof1983 +/ets2panda/compiler/lowering/phase.* @yyang16 ^mbolshov ^igelhaus ^Prof1983 +/ets2panda/compiler/lowering/plugin_phase.* @yyang16 ^mbolshov ^igelhaus ^Prof1983 +/ets2panda/compiler/lowering/util.* @yyang16 ^mbolshov ^igelhaus ^Prof1983 +/ets2panda/ir/ets/ @lirismankarina @xuxjeeee ^igelhaus ^Prof1983 +/ets2panda/ir/expressions/ @mkaskov @ziziziiziziz ^igelhaus ^Prof1983 +/ets2panda/ir/statements/ @dkofanov @Ekkoruse ^akmaevaleksey ^igelhaus ^Prof1983 +/ets2panda/ir/statements/annotation* @lirismankarina @xuxjeeee ^igelhaus ^Prof1983 /ets2panda/test/test-lists/astchecker @chernykhsergey ^igelhaus ^Prof1983 -/ets2panda/test/test-lists/declgenets2ts @dreamdoomwalker ^hufeng20 ^igelhaus ^Prof1983 +/ets2panda/test/test-lists/declgenets2ts @dreamdoomwalker ^hufeng20 ^igelhaus ^Prof1983 @zenghang11 /ets2panda/test/test-lists/parser @chernykhsergey ^igelhaus ^Prof1983 -/ets2panda/test/unit/lsp ^igelhaus ^Prof1983 @dreamdoomwalker @Ascnbio ^muhammet-fevzi-bayiroglu @utkugursel +/ets2panda/test/unit/arktsconfig-parser @trubachevilya @dreamdoomwalker ^igelhaus ^Prof1983 +/ets2panda/test/unit/lsp @dreamdoomwalker @utkugursel ^igelhaus ^Prof1983 +/ets2panda/test/unit/plugin* @mbolshov ^igelhaus ^Prof1983 +/ets2panda/test/unit/public @mbolshov ^igelhaus ^Prof1983 /ets2panda/checker/types/ets/Nullish.* ^vpukhov @gogabr ^igelhaus ^Prof1983 /ets2panda/checker/types/ets/etsFunctionType.* ^vpukhov @gogabr ^igelhaus ^Prof1983 +/ets2panda/checker/types/ets/etsN* @ziziziiziziz ^zelentsovdmitry ^igelhaus ^Prof1983 +/ets2panda/checker/types/ets/etsT* @xuxjeeee ^gogabr ^igelhaus ^Prof1983 /ets2panda/checker/types/ets/etsTypeParameter.* ^vpukhov @gogabr ^igelhaus ^Prof1983 -/ets2panda/checker/types/ets/etsUnionType.* @akmaevaleksey ^vpukhov @gogabr ^igelhaus ^Prof1983 +/ets2panda/checker/types/ets/etsUnionType.* @akmaevaleksey ^vpukhov ^igelhaus ^Prof1983 /ets2panda/checker/types/ets/wildcardType.* ^vpukhov @gogabr ^igelhaus ^Prof1983 /ets2panda/compiler/lowering/ets/ @akmaevaleksey ^igelhaus ^Prof1983 ^zelentsovdmitry /ets2panda/compiler/lowering/ets/lambdaLowering.cpp ^vpukhov @akmaevaleksey @gogabr ^igelhaus ^Prof1983 diff --git a/ets2panda/aot/BUILD.gn b/ets2panda/aot/BUILD.gn index 7efccf65854505a222c43bd299160c92bb3e5e2f..a3a533b320f2393e94521c43ace7559dde162b22 100644 --- a/ets2panda/aot/BUILD.gn +++ b/ets2panda/aot/BUILD.gn @@ -11,7 +11,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//arkcompiler/runtime_core/static_core/ark_config.gni") +if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + import("//arkcompiler/runtime_core/static_core/ark_config.gni") +} else { + import( + "//build/config/components/runtime_core/static_core/ark_common_config.gni") +} if (ark_standalone_build) { import("$build_root/ark.gni") @@ -26,17 +32,28 @@ ohos_executable("ets2panda") { "$target_gen_dir", "$target_gen_dir/include", ] + if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + configs = [ "$ark_root:ark_config" ] + } else { + configs = [ + "//build/config/components/runtime_core/static_core:ark_common_config", + ] + } + + if (ark_standalone_build || ark_static_standalone_build) { + configs += [ + "$ark_root/assembler:arkassembler_public_config", + "$ark_root/libpandafile:arkfile_public_config", + "$ark_root/libpandabase:arkbase_public_config", + "$ark_root/bytecode_optimizer:bytecodeopt_public_config", + "$ark_root/runtime:arkruntime_public_config", + "$ark_root/compiler:arkcompiler_public_config", + ] + } - configs = [ - "$ark_root:ark_config", - "$ark_root/assembler:arkassembler_public_config", - "$ark_es2panda_root:libes2panda_public_config", - "$ark_root/libpandafile:arkfile_public_config", - "$ark_root/libpandabase:arkbase_public_config", - "$ark_root/bytecode_optimizer:bytecodeopt_public_config", - "$ark_root/compiler:arkcompiler_public_config", - "$ark_root/runtime:arkruntime_public_config", - "$ark_root/abc2program:arkts_abc2program_public_config", + configs += [ + "$ark_es2panda_root:libes2panda_public_config" ] deps = [ @@ -62,6 +79,23 @@ ohos_executable("ets2panda") { sdk_libc_secshared_dep, ] + if (!(ark_standalone_build || ark_static_standalone_build)) { + external_deps += [ + "runtime_core:assembler_headers", + "runtime_core:bytecode_optimizer_headers", + "runtime_core:libpandabase_headers", + "runtime_core:libpandafile_headers", + "runtime_core:runtime_gen_headers", + "runtime_core:runtime_headers", + "runtime_core:compiler_headers", + "runtime_core:verification_headers", + ] + } + + if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) { + external_deps += [ "icu:shared_icuuc" ] + } + libs = platform_libs ldflags = platform_ldflags if (is_linux) { diff --git a/ets2panda/ast_verifier/invariants/arithmeticOperationValid.cpp b/ets2panda/ast_verifier/invariants/arithmeticOperationValid.cpp index bb77859aed5faaa10db8e382b720112625617808..bf6ab126463ef72bdd5fcff959bce8227691f80f 100644 --- a/ets2panda/ast_verifier/invariants/arithmeticOperationValid.cpp +++ b/ets2panda/ast_verifier/invariants/arithmeticOperationValid.cpp @@ -19,7 +19,7 @@ #include "ir/ts/tsInterfaceDeclaration.h" #include "ir/ts/tsEnumDeclaration.h" #include "ir/ts/tsInterfaceBody.h" -#include "../helpers.h" +#include "ast_verifier/helpers.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/arithmeticOperationValid.h b/ets2panda/ast_verifier/invariants/arithmeticOperationValid.h index 1afed1ea7fb3564257f089b7ccda30e024f3bbd2..ba478d93ecc064ff547ac87b49e9e25f7581289d 100644 --- a/ets2panda/ast_verifier/invariants/arithmeticOperationValid.h +++ b/ets2panda/ast_verifier/invariants/arithmeticOperationValid.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_ARITHMETICOPERATIONVALID_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_ARITHMETICOPERATIONVALID_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/checkAbstractMethod.h b/ets2panda/ast_verifier/invariants/checkAbstractMethod.h index d2534f5483ea3017becd4dd6108ce2d7d4efde2a..174a685564664f5fa77352c57287319530a1a39b 100644 --- a/ets2panda/ast_verifier/invariants/checkAbstractMethod.h +++ b/ets2panda/ast_verifier/invariants/checkAbstractMethod.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_CHECKABSTRACTMETHOD_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_CHECKABSTRACTMETHOD_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/checkConstProperties.h b/ets2panda/ast_verifier/invariants/checkConstProperties.h index 379e446e7a90a5c09a018c1be19cf2a41f616c09..a4a042b1212389809609131311f4f1504535df00 100644 --- a/ets2panda/ast_verifier/invariants/checkConstProperties.h +++ b/ets2panda/ast_verifier/invariants/checkConstProperties.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_CHECKCONSTPROPERTIES_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_CHECKCONSTPROPERTIES_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/checkScopeDeclaration.h b/ets2panda/ast_verifier/invariants/checkScopeDeclaration.h index f7766ab0b8370e8bb76bbada509f4aec9589033d..1137ee9848c28dc9418a75da18189c88b6a979a4 100644 --- a/ets2panda/ast_verifier/invariants/checkScopeDeclaration.h +++ b/ets2panda/ast_verifier/invariants/checkScopeDeclaration.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_CHECKSCOPEDECLARATION_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_CHECKSCOPEDECLARATION_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/checkStructDeclaration.h b/ets2panda/ast_verifier/invariants/checkStructDeclaration.h index 931279a83c25db407b4612749cf19ec4b4849ee6..aa6d9ffe53e9dfe000c59308e950b81569f70848 100644 --- a/ets2panda/ast_verifier/invariants/checkStructDeclaration.h +++ b/ets2panda/ast_verifier/invariants/checkStructDeclaration.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_CHECKSTRUCTDECLARATION_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_CHECKSTRUCTDECLARATION_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/everyChildHasValidParent.h b/ets2panda/ast_verifier/invariants/everyChildHasValidParent.h index d18220f781f94a2e7563cdc420aca729529d7714..a2a3070c25b20d307a04d462dc0904490e2fbdc2 100644 --- a/ets2panda/ast_verifier/invariants/everyChildHasValidParent.h +++ b/ets2panda/ast_verifier/invariants/everyChildHasValidParent.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_EVERYCHILDHASVALIDPARENT_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_EVERYCHILDHASVALIDPARENT_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/everyChildInParentRange.h b/ets2panda/ast_verifier/invariants/everyChildInParentRange.h index c3406de3e0b04c9285e9b1b5dc8c4abb2ff482e2..fa25a4654465dc45f4304593faf99b1b32f2a6af 100644 --- a/ets2panda/ast_verifier/invariants/everyChildInParentRange.h +++ b/ets2panda/ast_verifier/invariants/everyChildInParentRange.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_EVERYCHILDINPARENTRANGE_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_EVERYCHILDINPARENTRANGE_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/forLoopCorrectlyInitialized.h b/ets2panda/ast_verifier/invariants/forLoopCorrectlyInitialized.h index 15c3e45451cf0457a420023a642fbadd4140f302..ea2fa365dd30501f0cd0cb33c8340796e660956b 100644 --- a/ets2panda/ast_verifier/invariants/forLoopCorrectlyInitialized.h +++ b/ets2panda/ast_verifier/invariants/forLoopCorrectlyInitialized.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_FORLOOPCORRECTLYINITIALIZED_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_FORLOOPCORRECTLYINITIALIZED_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/getterSetterValidation.h b/ets2panda/ast_verifier/invariants/getterSetterValidation.h index 4f4b1d4aed1ca3c3c5f867e857d62e619cb102f0..9d6bd4f22121c8a260a0d4c52f8f110a992fe170 100644 --- a/ets2panda/ast_verifier/invariants/getterSetterValidation.h +++ b/ets2panda/ast_verifier/invariants/getterSetterValidation.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_GETTERSETTERVALIDATION_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_GETTERSETTERVALIDATION_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/identifierHasVariable.h b/ets2panda/ast_verifier/invariants/identifierHasVariable.h index 8fc17ff9bba58291a17e394043688350b22342f1..72f9d271903f2d9c8246248651cea73ff2ad392f 100644 --- a/ets2panda/ast_verifier/invariants/identifierHasVariable.h +++ b/ets2panda/ast_verifier/invariants/identifierHasVariable.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_IDENTIFIERHASVARIABLE_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_IDENTIFIERHASVARIABLE_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" #include "ir/expressions/identifier.h" diff --git a/ets2panda/ast_verifier/invariants/importExportAccessValid.cpp b/ets2panda/ast_verifier/invariants/importExportAccessValid.cpp index 6d6ff354876263cca9636e8da9367292bb816629..d865ebe9c913cab99f60c8b6be357d8bb9ff4c90 100644 --- a/ets2panda/ast_verifier/invariants/importExportAccessValid.cpp +++ b/ets2panda/ast_verifier/invariants/importExportAccessValid.cpp @@ -14,7 +14,7 @@ */ #include "importExportAccessValid.h" -#include "../helpers.h" +#include "ast_verifier/helpers.h" #include "ir/expressions/callExpression.h" #include "checker/types/ets/etsObjectType.h" #include "ir/module/importSpecifier.h" diff --git a/ets2panda/ast_verifier/invariants/importExportAccessValid.h b/ets2panda/ast_verifier/invariants/importExportAccessValid.h index 7977ee3a56e9059fec269c1bc737b4122cf94bf6..1eaf3cb642f7e24867e7d38924b43e4ca0a11fbf 100644 --- a/ets2panda/ast_verifier/invariants/importExportAccessValid.h +++ b/ets2panda/ast_verifier/invariants/importExportAccessValid.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_IMPORTEXPORTACCESSVALID_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_IMPORTEXPORTACCESSVALID_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/modifierAccessValid.cpp b/ets2panda/ast_verifier/invariants/modifierAccessValid.cpp index 58ce2de70a8439b4446c9198aa3a03bd1de71147..7f8875f7a9a3ca63873ae1d15b0ea23875505acb 100644 --- a/ets2panda/ast_verifier/invariants/modifierAccessValid.cpp +++ b/ets2panda/ast_verifier/invariants/modifierAccessValid.cpp @@ -14,7 +14,7 @@ */ #include "modifierAccessValid.h" -#include "../helpers.h" +#include "ast_verifier/helpers.h" #include "varbinder/variableFlags.h" #include "ir/expressions/memberExpression.h" #include "ir/expressions/callExpression.h" diff --git a/ets2panda/ast_verifier/invariants/modifierAccessValid.h b/ets2panda/ast_verifier/invariants/modifierAccessValid.h index a5fe690286f0f832a3e92b8a55a558cc8be340b4..5889a24cb725fc596c25d1e2e93abbe8c8f32456 100644 --- a/ets2panda/ast_verifier/invariants/modifierAccessValid.h +++ b/ets2panda/ast_verifier/invariants/modifierAccessValid.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_MODIFIERACCESSVALID_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_MODIFIERACCESSVALID_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/nodeHasParent.h b/ets2panda/ast_verifier/invariants/nodeHasParent.h index c3f583c8d9b7cc72bbe2bdec15904481e9817b95..f5a77f9a3e09b316bf68b22e5cc50f9ebfd6ba13 100644 --- a/ets2panda/ast_verifier/invariants/nodeHasParent.h +++ b/ets2panda/ast_verifier/invariants/nodeHasParent.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_NODEHASPARENT_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_NODEHASPARENT_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/nodeHasSourceRange.h b/ets2panda/ast_verifier/invariants/nodeHasSourceRange.h index fed802ecb7d531d87106868fedb7def3bebbd026..a797369d03867595e09ca1f1fe4d9cb40b428e1b 100644 --- a/ets2panda/ast_verifier/invariants/nodeHasSourceRange.h +++ b/ets2panda/ast_verifier/invariants/nodeHasSourceRange.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_NODEHASSOURCERANGE_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_NODEHASSOURCERANGE_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/nodeHasType.cpp b/ets2panda/ast_verifier/invariants/nodeHasType.cpp index e9f4d335a76d94795237156775c4a8c36d1f0d32..a269292f9f5a330eba313720803c4c29fe209b32 100644 --- a/ets2panda/ast_verifier/invariants/nodeHasType.cpp +++ b/ets2panda/ast_verifier/invariants/nodeHasType.cpp @@ -13,7 +13,7 @@ * limitations under the License. */ -#include "../helpers.h" +#include "ast_verifier/helpers.h" #include "nodeHasType.h" #include "ir/base/classDefinition.h" #include "ir/base/methodDefinition.h" diff --git a/ets2panda/ast_verifier/invariants/nodeHasType.h b/ets2panda/ast_verifier/invariants/nodeHasType.h index edfee888c364fe11509d90b4cef6b0b0fe282e0d..c48d97ce8095479c72c9335c9ee02d918353aac1 100644 --- a/ets2panda/ast_verifier/invariants/nodeHasType.h +++ b/ets2panda/ast_verifier/invariants/nodeHasType.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_NODEHASTYPE_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_NODEHASTYPE_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" #include "checker/types/type.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/referenceTypeAnnotationIsNull.h b/ets2panda/ast_verifier/invariants/referenceTypeAnnotationIsNull.h index e0e7bcaf36f3583d834edf86ef9372a467920f48..562cc47cb18bdc5215a4513bda732e3b479f1c14 100644 --- a/ets2panda/ast_verifier/invariants/referenceTypeAnnotationIsNull.h +++ b/ets2panda/ast_verifier/invariants/referenceTypeAnnotationIsNull.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_REFERENCETYPEANNOTATIONISNULL_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_REFERENCETYPEANNOTATIONISNULL_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/sequenceExpressionHasLastType.h b/ets2panda/ast_verifier/invariants/sequenceExpressionHasLastType.h index c39f50507244ae115b4c818cee22b899a8daface..7b4f0760cbf77bcc1cf48b68eaefb77467ae2e13 100644 --- a/ets2panda/ast_verifier/invariants/sequenceExpressionHasLastType.h +++ b/ets2panda/ast_verifier/invariants/sequenceExpressionHasLastType.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_SEQUENCEEXPRESSIONHASLASTTYPE_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_SEQUENCEEXPRESSIONHASLASTTYPE_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/variableHasEnclosingScope.cpp b/ets2panda/ast_verifier/invariants/variableHasEnclosingScope.cpp index 1aa6f1abf062c4b37663c31cb50160668839ef1a..08ae83ddcbbfc6f587371a7b93c306f0e8cd9491 100644 --- a/ets2panda/ast_verifier/invariants/variableHasEnclosingScope.cpp +++ b/ets2panda/ast_verifier/invariants/variableHasEnclosingScope.cpp @@ -15,7 +15,7 @@ #include "variableHasEnclosingScope.h" #include "variableHasScope.h" -#include "../helpers.h" +#include "ast_verifier/helpers.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/variableHasEnclosingScope.h b/ets2panda/ast_verifier/invariants/variableHasEnclosingScope.h index 5d0cf636988ba868da9edffb947b4f22d6c8520f..fa75e280f00225ea0eb15b2ce99c99f252bcfe59 100644 --- a/ets2panda/ast_verifier/invariants/variableHasEnclosingScope.h +++ b/ets2panda/ast_verifier/invariants/variableHasEnclosingScope.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_VARIABLEHASENCLOSINGSCOPE_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_VARIABLEHASENCLOSINGSCOPE_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/ast_verifier/invariants/variableHasScope.cpp b/ets2panda/ast_verifier/invariants/variableHasScope.cpp index 0e072bf3845a13c8cda5f40a7d28c8ad2923d890..9b18ba8289d4d4a1a03daeedead8c049c92d4d73 100644 --- a/ets2panda/ast_verifier/invariants/variableHasScope.cpp +++ b/ets2panda/ast_verifier/invariants/variableHasScope.cpp @@ -13,7 +13,7 @@ * limitations under the License. */ -#include "../helpers.h" +#include "ast_verifier/helpers.h" #include "variableHasScope.h" #include "ir/base/scriptFunction.h" #include "ir/ts/tsEnumDeclaration.h" diff --git a/ets2panda/ast_verifier/invariants/variableHasScope.h b/ets2panda/ast_verifier/invariants/variableHasScope.h index 41d067774e285f773fc3c74c63f29a431abb515a..a6c7741c94677e9dcd630ef135ac1b1a0989069b 100644 --- a/ets2panda/ast_verifier/invariants/variableHasScope.h +++ b/ets2panda/ast_verifier/invariants/variableHasScope.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_VARIABLEHASSCOPE_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_VARIABLEHASSCOPE_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" #include "varbinder/varbinder.h" diff --git a/ets2panda/ast_verifier/invariants/variableNameIdentifierNameSame.h b/ets2panda/ast_verifier/invariants/variableNameIdentifierNameSame.h index 5eb9e85e2162d29c4f8d695879da3c12cc63d44d..211c166828bcfc0c26dd1310fbc857d0fe2bebf2 100644 --- a/ets2panda/ast_verifier/invariants/variableNameIdentifierNameSame.h +++ b/ets2panda/ast_verifier/invariants/variableNameIdentifierNameSame.h @@ -16,7 +16,7 @@ #ifndef ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_VARIABLENAMEIDENTIFIERNAMESAME_H #define ES2PANDA_COMPILER_CORE_AST_VERIFIER_INVARIANTS_VARIABLENAMEIDENTIFIERNAMESAME_H -#include "../invariantBase.h" +#include "ast_verifier/invariantBase.h" namespace ark::es2panda::compiler::ast_verifier { diff --git a/ets2panda/bindings/BUILD.gn b/ets2panda/bindings/BUILD.gn index 0e6be72fd93968839af67b16371f60a78528a488..a6f48462abf2b042df65d9c0eefb692587a09565 100644 --- a/ets2panda/bindings/BUILD.gn +++ b/ets2panda/bindings/BUILD.gn @@ -11,7 +11,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//arkcompiler/runtime_core/static_core/ark_config.gni") +if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + import("//arkcompiler/runtime_core/static_core/ark_config.gni") +} else { + import( + "//build/config/components/runtime_core/static_core/ark_common_config.gni") +} + if (ark_standalone_build) { import("$build_root/ark.gni") } else { @@ -26,9 +33,16 @@ shared_library("ts_bindings") { "./native/src/convertors-napi.cpp", "./native/src/lsp.cpp", ] + if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + configs += [ "$ark_root:ark_config" ] + } else { + configs += [ + "//build/config/components/runtime_core/static_core:ark_common_config", + ] + } configs += [ "$ark_root/assembler:arkassembler_public_config", - "$ark_root:ark_config", "../:libes2panda_public_config", "../:libes2panda_config", "$ark_root/libpandabase:arkbase_public_config", diff --git a/ets2panda/bindings/test/testcases/cases.json b/ets2panda/bindings/test/testcases/cases.json new file mode 100644 index 0000000000000000000000000000000000000000..6e708b142563391b18964014fc043fa85f472664 --- /dev/null +++ b/ets2panda/bindings/test/testcases/cases.json @@ -0,0 +1,225 @@ +{ + "getDefinitionAtPosition": { + "expectedFilePath": "path/to/bindings/test/expected/getDefinitionAtPosition.json", + "1": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition2.ets", + 655 + ], + "2": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition3.ets", + 662 + ], + "3": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition5.ets", + 664 + ], + "4": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition7.ets", + 683 + ], + "5": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition9.ets", + 666 + ], + "6": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition11.ets", + 675 + ], + "7": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition13.ets", + 664 + ], + "8": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition15.ets", + 617 + ], + "9": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition17.ets", + 677 + ], + "10": [ + "path/to/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition18.ets", + 930 + ] + }, + "getSemanticDiagnostics": { + "expectedFilePath": "path/to/bindings/test/expected/getSemanticDiagnostics.json", + "1": [ + "path/to/bindings/test/testcases/getSemanticDiagnostics/getSemanticDiagnostics1.ets" + ], + "2": [ + "path/to/bindings/test/testcases/getSemanticDiagnostics/getSemanticDiagnostics2.ets" + ] + }, + "getCurrentTokenValue": { + "expectedFilePath": "path/to/bindings/test/expected/getCurrentTokenValue.json", + "1": [ + "path/to/bindings/test/testcases/getCurrentTokenValue/getCurrentTokenValue1.ets", + 611 + ], + "2": [ + "path/to/bindings/test/testcases/getCurrentTokenValue/getCurrentTokenValue2.ets", + 612 + ], + "3": [ + "path/to/bindings/test/testcases/getCurrentTokenValue/getCurrentTokenValue3.ets", + 612 + ], + "4": [ + "path/to/bindings/test/testcases/getCurrentTokenValue/getCurrentTokenValue4.ets", + 611 + ] + }, + "getFileReferences": { + "expectedFilePath": "path/to/bindings/test/expected/getFileReferences.json", + "1": [ + "path/to/bindings/test/testcases/getFileReferences/getFileReferences1_export.ets" + ] + }, + "getReferencesAtPosition": { + "expectedFilePath": "path/to/bindings/test/expected/getReferencesAtPosition.json", + "1": [ + "path/to/bindings/test/testcases/getReferencesAtPosition/getReferencesAtPosition1.ets", + 613 + ], + "2": [ + "path/to/bindings/test/testcases/getReferencesAtPosition/getReferencesAtPosition2.ets", + 635 + ], + "3": [ + "path/to/bindings/test/testcases/getReferencesAtPosition/getReferencesAtPosition4.ets", + 625 + ] + }, + "getSyntacticDiagnostics": { + "expectedFilePath": "path/to/bindings/test/expected/getSyntacticDiagnostics.json", + "1": [ + "path/to/bindings/test/testcases/getSyntacticDiagnostics/getSyntacticDiagnostics1.ets" + ], + "2": [ + "path/to/bindings/test/testcases/getSyntacticDiagnostics/getSyntacticDiagnostics2.ets" + ] + }, + "getSuggestionDiagnostics": { + "expectedFilePath": "path/to/bindings/test/expected/getSuggestionDiagnostics.json", + "1": [ + "path/to/bindings/test/testcases/getSuggestionDiagnostics/getSuggestionDiagnostics1.ets" + ] + }, + "getQuickInfoAtPosition": { + "expectedFilePath": "path/to/bindings/test/expected/getQuickInfoAtPosition.json", + "1": [ + "path/to/bindings/test/testcases/getQuickInfoAtPosition/getQuickInfoAtPosition1.ets", + 626 + ], + "2": [ + "path/to/bindings/test/testcases/getQuickInfoAtPosition/getQuickInfoAtPosition2.ets", + 618 + ], + "3": [ + "path/to/bindings/test/testcases/getQuickInfoAtPosition/getQuickInfoAtPosition3.ets", + 663 + ] + }, + "getDocumentHighlights": { + "expectedFilePath": "path/to/bindings/test/expected/getDocumentHighlights.json", + "1": [ + "path/to/bindings/test/testcases/getDocumentHighlights/getDocumentHighlights1.ets", + 614 + ], + "2": [ + "path/to/bindings/test/testcases/getDocumentHighlights/getDocumentHighlights2.ets", + 717 + ], + "3": [ + "path/to/bindings/test/testcases/getDocumentHighlights/getDocumentHighlights3.ets", + 616 + ], + "4": [ + "path/to/bindings/test/testcases/getDocumentHighlights/getDocumentHighlights4.ets", + 626 + ], + "5": [ + "path/to/bindings/test/testcases/getDocumentHighlights/getDocumentHighlights5.ets", + 619 + ], + "6": [ + "path/to/bindings/test/testcases/getDocumentHighlights/getDocumentHighlights6.ets", + 657 + ], + "7": [ + "path/to/bindings/test/testcases/getDocumentHighlights/getDocumentHighlights7.ets", + 733 + ] + }, + "getCompletionAtPosition": { + "expectedFilePath": "path/to/bindings/test/expected/getCompletionAtPosition.json", + "1": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition1.ets", + 705 + ], + "2": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition2.ets", + 735 + ], + "3": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition3.ets", + 789 + ], + "4": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition4.ets", + 767 + ], + "5": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition5.ets", + 728 + ], + "6": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition6.ets", + 718 + ], + "7": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition7.ets", + 683 + ], + "8": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition8.ets", + 614 + ], + "9": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition9.ets", + 619 + ], + "10": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition10.ets", + 712 + ], + "11": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition11.ets", + 682 + ], + "12": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition12.ets", + 720 + ], + "13": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition13.ets", + 658 + ], + "14": [ + "path/to/bindings/test/testcases/getCompletionAtPosition/getCompletionsAtPosition14.ets", + 659 + ] + }, + "toLineColumnOffset": { + "expectedFilePath": "path/to/bindings/test/expected/toLineColumnOffset.json", + "1": [ + "path/to/bindings/test/testcases/toLineColumnOffset/toLineColumnOffset1.ets", + 0 + ], + "2": [ + "path/to/bindings/test/testcases/toLineColumnOffset/toLineColumnOffset1.ets", + 642 + ] + } +} \ No newline at end of file diff --git a/ets2panda/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition19.ets b/ets2panda/bindings/test/testcases/getDefinitionAtPosition/getDefinitionAtPosition19.ets old mode 100644 new mode 100755 diff --git a/ets2panda/checker/ETSchecker.cpp b/ets2panda/checker/ETSchecker.cpp index d63dcd1f115ce06087e78d98a04ea7097d03f476..f65ec3e537350052c5e806f8de6c242edec48d87 100644 --- a/ets2panda/checker/ETSchecker.cpp +++ b/ets2panda/checker/ETSchecker.cpp @@ -677,29 +677,34 @@ ETSObjectType *ETSChecker::GlobalBuiltinDynamicType(Language lang) const ETSObjectType *ETSChecker::GlobalBuiltinBoxType(Type *contents) { - switch (TypeKind(contents)) { - case TypeFlag::ETS_BOOLEAN: + ES2PANDA_ASSERT(contents->IsETSReferenceType()); + if (!contents->IsETSUnboxableObject()) { + auto *base = AsETSObjectType(&GlobalTypesHolder::GlobalBoxBuiltinType); + auto substitution = Substitution {}; + ES2PANDA_ASSERT(base != nullptr); + substitution.emplace(base->TypeArguments()[0]->AsETSTypeParameter(), contents); + return base->Substitute(Relation(), &substitution); + } + + switch (contents->AsETSObjectType()->UnboxableKind()) { + case ETSObjectFlags::BUILTIN_BOOLEAN: return AsETSObjectType(&GlobalTypesHolder::GlobalBooleanBoxBuiltinType); - case TypeFlag::BYTE: + case ETSObjectFlags::BUILTIN_BYTE: return AsETSObjectType(&GlobalTypesHolder::GlobalByteBoxBuiltinType); - case TypeFlag::CHAR: - return AsETSObjectType(&GlobalTypesHolder::GlobalCharBoxBuiltinType); - case TypeFlag::SHORT: + case ETSObjectFlags::BUILTIN_SHORT: return AsETSObjectType(&GlobalTypesHolder::GlobalShortBoxBuiltinType); - case TypeFlag::INT: + case ETSObjectFlags::BUILTIN_CHAR: + return AsETSObjectType(&GlobalTypesHolder::GlobalCharBoxBuiltinType); + case ETSObjectFlags::BUILTIN_INT: return AsETSObjectType(&GlobalTypesHolder::GlobalIntBoxBuiltinType); - case TypeFlag::LONG: + case ETSObjectFlags::BUILTIN_LONG: return AsETSObjectType(&GlobalTypesHolder::GlobalLongBoxBuiltinType); - case TypeFlag::FLOAT: + case ETSObjectFlags::BUILTIN_FLOAT: return AsETSObjectType(&GlobalTypesHolder::GlobalFloatBoxBuiltinType); - case TypeFlag::DOUBLE: + case ETSObjectFlags::BUILTIN_DOUBLE: return AsETSObjectType(&GlobalTypesHolder::GlobalDoubleBoxBuiltinType); default: { - auto *base = AsETSObjectType(&GlobalTypesHolder::GlobalBoxBuiltinType); - auto substitution = Substitution {}; - ES2PANDA_ASSERT(base != nullptr); - substitution.emplace(base->TypeArguments()[0]->AsETSTypeParameter(), contents); - return base->Substitute(Relation(), &substitution); + ES2PANDA_UNREACHABLE(); } } } diff --git a/ets2panda/declgen_ets2ts/BUILD.gn b/ets2panda/declgen_ets2ts/BUILD.gn index 8de1df605da2ef43c64b3e0efb64b7b443a2fcff..8cc3dabeefbebe8fcf39fd6acfec1e2d60410661 100644 --- a/ets2panda/declgen_ets2ts/BUILD.gn +++ b/ets2panda/declgen_ets2ts/BUILD.gn @@ -11,8 +11,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//arkcompiler/runtime_core/static_core/ark_config.gni") import("//build/ohos.gni") +if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + import("//arkcompiler/runtime_core/static_core/ark_config.gni") +} else { + import( + "//build/config/components/runtime_core/static_core/ark_common_config.gni") +} ohos_executable("declgen_ets2ts") { sources = [ @@ -22,9 +28,15 @@ ohos_executable("declgen_ets2ts") { ] include_dirs = [ "$target_gen_dir" ] - - configs = [ - "$ark_root:ark_config", + if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + configs = [ "$ark_root:ark_config" ] + } else { + configs = [ + "//build/config/components/runtime_core/static_core:ark_common_config", + ] + } + configs += [ "$ark_es2panda_root:libes2panda_public_config", "$ark_root/assembler:arkassembler_public_config", "$ark_root/libpandafile:arkfile_public_config", diff --git a/ets2panda/driver/build_system/src/build/base_mode.ts b/ets2panda/driver/build_system/src/build/base_mode.ts index 09458f4971269722963a8822104dd740e6ec2056..465492b1e76464e68a3ee4d73c2522b1567a46cf 100644 --- a/ets2panda/driver/build_system/src/build/base_mode.ts +++ b/ets2panda/driver/build_system/src/build/base_mode.ts @@ -107,6 +107,7 @@ export abstract class BaseMode { public hasCleanWorker: boolean; public byteCodeHar: boolean; public es2pandaMode: number; + public skipDeclCheck: boolean; constructor(buildConfig: BuildConfig) { this.buildConfig = buildConfig; @@ -143,6 +144,7 @@ export abstract class BaseMode { this.hasCleanWorker = false; this.byteCodeHar = buildConfig.byteCodeHar as boolean; this.es2pandaMode = buildConfig?.es2pandaMode ?? ES2PANDA_MODE.RUN; + this.skipDeclCheck = buildConfig?.skipDeclCheck as boolean ?? true; } public declgen(fileInfo: CompileFileInfo): void { @@ -175,13 +177,13 @@ export abstract class BaseMode { arktsGlobal.compilerContext = arkts.Context.createFromString(source); PluginDriver.getInstance().getPluginContext().setArkTSProgram(arktsGlobal.compilerContext.program); - arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_PARSED, arktsGlobal.compilerContext.peer, true); + arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_PARSED, arktsGlobal.compilerContext.peer, this.skipDeclCheck); let ast = arkts.EtsScript.fromContext(); PluginDriver.getInstance().getPluginContext().setArkTSAst(ast); PluginDriver.getInstance().runPluginHook(PluginHook.PARSED); - arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED, arktsGlobal.compilerContext.peer, true); + arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED, arktsGlobal.compilerContext.peer, this.skipDeclCheck); ast = arkts.EtsScript.fromContext(); PluginDriver.getInstance().getPluginContext().setArkTSAst(ast); @@ -694,10 +696,6 @@ export abstract class BaseMode { protected collectCompileFiles(): void { this.entryFiles.forEach((file: string) => { - // Skip the declaration files when compiling abc - if (file.endsWith(DECL_ETS_SUFFIX)) { - return; - } for (const [packageName, moduleInfo] of this.moduleInfos) { const relativePath = path.relative(moduleInfo.moduleRootPath, file); if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) { @@ -1513,4 +1511,4 @@ function createHash(str: string): string { // -- runConcurrent code ends -- -let finishedJob: string[] = []; \ No newline at end of file +let finishedJob: string[] = []; diff --git a/ets2panda/driver/build_system/src/build/declgen_worker.ts b/ets2panda/driver/build_system/src/build/declgen_worker.ts index 872eb49db1761b085a6db34df3b4e6f48249a49f..5a32a7f000671582d3a619a3553de0c478a8dfb9 100644 --- a/ets2panda/driver/build_system/src/build/declgen_worker.ts +++ b/ets2panda/driver/build_system/src/build/declgen_worker.ts @@ -18,7 +18,7 @@ import { BuildConfig } from '../types'; import { Logger } from '../logger'; import * as fs from 'fs'; import * as path from 'path'; -import { changeFileExtension, ensurePathExists } from '../utils'; +import { changeDeclgenFileExtension, ensurePathExists } from '../utils'; import { DECL_ETS_SUFFIX, TS_SUFFIX, @@ -56,13 +56,13 @@ process.on('message', (message: { moduleInfo.packageName, filePathFromModuleRoot ); - declEtsOutputPath = changeFileExtension(declEtsOutputPath, DECL_ETS_SUFFIX); + declEtsOutputPath = changeDeclgenFileExtension(declEtsOutputPath, DECL_ETS_SUFFIX); let etsOutputPath: string = path.join( moduleInfo.declgenBridgeCodePath as string, moduleInfo.packageName, filePathFromModuleRoot ); - etsOutputPath = changeFileExtension(etsOutputPath, TS_SUFFIX); + etsOutputPath = changeDeclgenFileExtension(etsOutputPath, TS_SUFFIX); ensurePathExists(declEtsOutputPath); ensurePathExists(etsOutputPath); @@ -78,14 +78,15 @@ process.on('message', (message: { ]).peer; arktsGlobal.compilerContext = arkts.Context.createFromString(source); pluginDriver.getPluginContext().setArkTSProgram(arktsGlobal.compilerContext.program); + const skipDeclCheck = buildConfig?.skipDeclCheck as boolean ?? true; - arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_PARSED, arktsGlobal.compilerContext.peer, true); + arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_PARSED, arktsGlobal.compilerContext.peer, skipDeclCheck); let ast = arkts.EtsScript.fromContext(); pluginDriver.getPluginContext().setArkTSAst(ast); pluginDriver.runPluginHook(PluginHook.PARSED); - arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED, arktsGlobal.compilerContext.peer, true); + arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED, arktsGlobal.compilerContext.peer, skipDeclCheck); ast = arkts.EtsScript.fromContext(); pluginDriver.getPluginContext().setArkTSAst(ast); diff --git a/ets2panda/driver/build_system/src/init/process_build_config.ts b/ets2panda/driver/build_system/src/init/process_build_config.ts index 9a98a3fd0029d7f5c53defcc6486b7027ab05fc7..50aac6d47c1258f3ad732a4c3df528ecb4ab6904 100644 --- a/ets2panda/driver/build_system/src/init/process_build_config.ts +++ b/ets2panda/driver/build_system/src/init/process_build_config.ts @@ -103,7 +103,7 @@ function initPlatformSpecificConfig(buildConfig: BuildConfig): void { buildConfig.dependencyAnalyzerPath = path.join(pandaSdkPath, 'bin', 'dependency_analyzer'); } - if (!fs.existsSync(buildConfig.abcLinkerPath as string)) { + if (!buildConfig.enableDeclgenEts2Ts && !fs.existsSync(buildConfig.abcLinkerPath as string)) { const logData: LogData = LogDataFactory.newInstance( ErrorCode.BUILDSYSTEM_ARK_LINK_NOT_FOUND_FAIL, 'Ark_link not found in path.', @@ -113,7 +113,7 @@ function initPlatformSpecificConfig(buildConfig: BuildConfig): void { logger.printError(logData); } - if (!buildConfig.frameworkMode && !fs.existsSync(buildConfig.dependencyAnalyzerPath as string)) { + if (!buildConfig.frameworkMode && !buildConfig.enableDeclgenEts2Ts && !fs.existsSync(buildConfig.dependencyAnalyzerPath as string)) { const logData: LogData = LogDataFactory.newInstance( ErrorCode.BUILDSYSTEM_Dependency_Analyzer_NOT_FOUND_FAIL, 'Dependency_analyzer not found in path.', diff --git a/ets2panda/driver/build_system/src/types.ts b/ets2panda/driver/build_system/src/types.ts index 6e69ccd0b1f5170b17febdc27bf98081e4aeb6ca..80f3f76ab3aa4b34374fba56991dff878c1ab5d8 100644 --- a/ets2panda/driver/build_system/src/types.ts +++ b/ets2panda/driver/build_system/src/types.ts @@ -164,6 +164,7 @@ export interface DeclgenConfig { declgenV1OutPath?: string; declgenV2OutPath?: string; declgenBridgeCodePath?: string; + skipDeclCheck?: boolean; } export interface LoggerConfig { diff --git a/ets2panda/driver/dependency_analyzer/BUILD.gn b/ets2panda/driver/dependency_analyzer/BUILD.gn index 7adcfb1a6f565278fc786f55e57e84c7e7f4b833..96449c6f58f2857eb8680f52e26b965dcf87d023 100644 --- a/ets2panda/driver/dependency_analyzer/BUILD.gn +++ b/ets2panda/driver/dependency_analyzer/BUILD.gn @@ -11,8 +11,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//arkcompiler/runtime_core/static_core/ark_config.gni") import("//build/ohos.gni") +if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + import("//arkcompiler/runtime_core/static_core/ark_config.gni") +} else { + import( + "//build/config/components/runtime_core/static_core/ark_common_config.gni") +} ohos_executable("dependency_analyzer") { sources = [ @@ -20,16 +26,16 @@ ohos_executable("dependency_analyzer") { "main.cpp", ] - configs = [ - "$ark_root:ark_config", - "$ark_root/assembler:arkassembler_public_config", - "$ark_es2panda_root:libes2panda_public_config", - "$ark_root/libpandafile:arkfile_public_config", - "$ark_root/libpandabase:arkbase_public_config", - "$ark_root/bytecode_optimizer:bytecodeopt_public_config", - "$ark_root/compiler:arkcompiler_public_config", - "$ark_root/runtime:arkruntime_public_config", - ] + include_dirs = [ "$target_gen_dir" ] + if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + configs = [ "$ark_root:ark_config" ] + } else { + configs = [ + "//build/config/components/runtime_core/static_core:ark_common_config", + ] + } + configs += [ "$ark_es2panda_root:libes2panda_public_config" ] deps = [ "$ark_es2panda_root:libes2panda_frontend_static", @@ -45,11 +51,14 @@ ohos_executable("dependency_analyzer") { } external_deps = [ + "runtime_core:assembler_headers", "runtime_core:libarktsassembler_package", "runtime_core:libarktsbase_package", "runtime_core:libarktsbytecodeopt_package", "runtime_core:libarktscompiler_package", "runtime_core:libarktsfile_package", + "runtime_core:libpandabase_headers", + "runtime_core:libpandafile_headers", sdk_libc_secshared_dep, ] diff --git a/ets2panda/lexer/regexp/regexp.h b/ets2panda/lexer/regexp/regexp.h index 445659c5573275ea31a8eb8b2bf376f1d8e2267f..42c11f4f1060f9f79dc1838bfab0dbdc0a748a76 100644 --- a/ets2panda/lexer/regexp/regexp.h +++ b/ets2panda/lexer/regexp/regexp.h @@ -1,5 +1,5 @@ /** - * Copyright (c) 2021-2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -19,7 +19,7 @@ #include "util/enumbitops.h" #include "util/ustring.h" -#include "../../parser/parserImpl.h" +#include "parser/parserImpl.h" #include diff --git a/ets2panda/linter/homecheck/scripts/install_arkanalyzer.sh b/ets2panda/linter/homecheck/scripts/install_arkanalyzer.sh new file mode 100644 index 0000000000000000000000000000000000000000..282d190c670e4295438767188c996c864deea436 --- /dev/null +++ b/ets2panda/linter/homecheck/scripts/install_arkanalyzer.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright (c) 2025 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. +# + +set -x + +# install and pack dependency arkanalyzer +cd ../arkanalyzer +npm install + +cp package.json package.json.bak + +sed -i '/postinstall/d' package.json +npm pack + +TAR_FILE=$(find . -maxdepth 1 -name "arkanalyzer-*.tgz" -print0) +cd ../homecheck +npm install ../arkanalyzer/$TAR_FILE + +# revert the project files +mv ../arkanalyzer/package.json.bak ../arkanalyzer/package.json +rm ../arkanalyzer/$TAR_FILE diff --git a/ets2panda/linter/homecheck/scripts/run_ci_ut.sh b/ets2panda/linter/homecheck/scripts/run_ci_ut.sh new file mode 100644 index 0000000000000000000000000000000000000000..56f455f87bfec03844eb6ea991bb9669ff4b7d15 --- /dev/null +++ b/ets2panda/linter/homecheck/scripts/run_ci_ut.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# Copyright (c) 2024 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. +# + +set -x + +if [ -z "${ROOT_DIR+x}" ]; then + export ROOT_DIR=$(pwd) + echo "ROOT_DIR was not set. Initialized to $ROOT_DIR" +else + echo "ROOT_DIR is already set to $ROOT_DIR" +fi + +NODE_VERSION=v22.3.0 +NODE_HOME=$ROOT_DIR/pre_scripts/node-$NODE_VERSION-linux-x64 +NODE_URL=https://gitee.com/muya318/pre_scripts/raw/master/node-v22.3.0-linux-x64.tar.gz +NODE_BIN=node-v22.3.0-linux-x64.tar.gz + +prepare_nodejs() { + echo "### preparing nodejs" + if [ ! -d "$NODE_HOME" ]; then + cd $ROOT_DIR/pre_scripts + tar -xf $NODE_BIN + chmod 777 $NODE_HOME/bin/* + cd - + export PATH=$NODE_HOME/bin:$PATH + fi + npm config set registry=https://repo.huaweicloud.com/repository/npm/ + npm config set strict-ssl false + echo "###nodejs env ready" +} + +git clone https://gitee.com/muya318/pre_scripts.git + +prepare_nodejs + +pwd +cd $ROOT_DIR + +node -v +npm -v + +npm install +npm run test + +if [ $? -ne 0 ]; then + echo "************* Unit test failed *************" + exit 1 +fi + +echo "************* Unit test success *************" + +npm pack +if [ $? -ne 0 ]; then + echo "************* Npm pack failed *************" + exit 1 +fi +echo "************* Npm pack success *************" + +exit 0 \ No newline at end of file diff --git a/ets2panda/linter/homecheck/src/model/File2Check.ts b/ets2panda/linter/homecheck/src/model/File2Check.ts index ecfc86270a7f9738fe6afd6ca45319a27f073504..f34f7e142014c745c4a44a142d450f6c92b2aeac 100644 --- a/ets2panda/linter/homecheck/src/model/File2Check.ts +++ b/ets2panda/linter/homecheck/src/model/File2Check.ts @@ -105,8 +105,12 @@ export class File2Check { } public async checkDisable(): Promise { - const fileLineList = await FileUtils.readLinesFromFile(this.arkFile.getFilePath()); - this.issues = await filterDisableIssue(fileLineList, this.issues, this.arkFile.getFilePath()); + try { + const fileLineList = await FileUtils.readLinesFromFile(this.arkFile.getFilePath()); + this.issues = await filterDisableIssue(fileLineList, this.issues, this.arkFile.getFilePath()); + } catch (e) { + logger.error(e); + } } public async run(): Promise { diff --git a/ets2panda/linter/homecheck/src/model/Project2Check.ts b/ets2panda/linter/homecheck/src/model/Project2Check.ts index 3e9c1bf9ed811aeca8b3a79474ba520156a057d6..43d57723ef431ecdf376c738e75b2ab3a5dec8cb 100644 --- a/ets2panda/linter/homecheck/src/model/Project2Check.ts +++ b/ets2panda/linter/homecheck/src/model/Project2Check.ts @@ -167,10 +167,14 @@ export class Project2Check { if (!fs.existsSync(filePath)) { continue; } - const fileLineList = await FileUtils.readLinesFromFile(filePath); - const filtedResult = await filterDisableIssue(fileLineList, [issue], filePath); - if (filtedResult.length > 0) { - filtedIssues = filtedIssues.concat(filtedResult[0]); + try { + const fileLineList = await FileUtils.readLinesFromFile(filePath); + const filtedResult = await filterDisableIssue(fileLineList, [issue], filePath); + if (filtedResult.length > 0) { + filtedIssues = filtedIssues.concat(filtedResult[0]); + } + } catch (e) { + logger.error(e); } } this.issues = filtedIssues; diff --git a/ets2panda/linter/homecheck/src/utils/common/Disable.ts b/ets2panda/linter/homecheck/src/utils/common/Disable.ts index e8f86a26181832606afabbf6b5748401fd0220e1..a33205ff20ae64f978186253320995756b2b4308 100644 --- a/ets2panda/linter/homecheck/src/utils/common/Disable.ts +++ b/ets2panda/linter/homecheck/src/utils/common/Disable.ts @@ -17,6 +17,9 @@ import * as fs from 'fs'; import path from 'path'; import { IssueReport } from '../../model/Defects'; import { FileUtils } from '../../Index'; +import Logger, { LOG_MODULE_TYPE } from 'arkanalyzer/lib/utils/logger'; + +const logger = Logger.getLogger(LOG_MODULE_TYPE.HOMECHECK, 'Disable'); export const DisableText = { FILE_DISABLE_TEXT: '\/* homecheck-disable *\/', @@ -25,23 +28,27 @@ export const DisableText = { export async function filterDisableIssue(lineList: string[], issues: IssueReport[], filePath: string): Promise { let filtedIssues: IssueReport[] = []; - for (const issue of issues) { - // @migration/arkui-data-observation规则的自动修复是在定义处,存在跨文件场景 - const actualFilePath = path.normalize(issue.defect.mergeKey.split('%')[0]); - if (path.normalize(actualFilePath) !== path.normalize(filePath)) { - if (!fs.existsSync(actualFilePath)) { + try { + for (const issue of issues) { + // @migration/arkui-data-observation规则的自动修复是在定义处,存在跨文件场景 + const actualFilePath = path.normalize(issue.defect.mergeKey.split('%')[0]); + if (path.normalize(actualFilePath) !== path.normalize(filePath)) { + if (!fs.existsSync(actualFilePath)) { + continue; + } + lineList = await FileUtils.readLinesFromFile(actualFilePath); + } + // 有些特殊规则允许返回行列号为0 + if (issue.defect.reportLine < 0 || issue.defect.reportLine - 1 > lineList.length) { continue; } - lineList = await FileUtils.readLinesFromFile(actualFilePath); - } - // 有些特殊规则允许返回行列号为0 - if (issue.defect.reportLine < 0 || issue.defect.reportLine - 1 > lineList.length) { - continue; - } - const text = lineList[issue.defect.reportLine - 2]; - if (!isDisableIssue(text, issue.defect.ruleId)) { - filtedIssues.push(issue); + const text = lineList[issue.defect.reportLine - 2]; + if (!isDisableIssue(text, issue.defect.ruleId)) { + filtedIssues.push(issue); + } } + } catch (e) { + logger.error(e); } return filtedIssues; } diff --git a/ets2panda/linter/homecheck/src/utils/common/FileUtils.ts b/ets2panda/linter/homecheck/src/utils/common/FileUtils.ts index f17425f284605ab9f4cd9738a2ec9fc9c72121ba..a69df56e6afb4c77b4338e97aefb530e8d505f6f 100644 --- a/ets2panda/linter/homecheck/src/utils/common/FileUtils.ts +++ b/ets2panda/linter/homecheck/src/utils/common/FileUtils.ts @@ -67,12 +67,16 @@ export class FileUtils { let result: string[] = []; for (const filePath of fileList) { if (!ignoreGlob?.matchGlob(filePath) && fileGlob.matchGlob(filePath)) { - // 读取file文件内容首行,若为屏蔽行则跳过 - const firstLineText = await this.readLinesFromFile(filePath, 1); - if (firstLineText.includes(DisableText.FILE_DISABLE_TEXT)) { - continue; + try { + // 读取file文件内容首行,若为屏蔽行则跳过 + const firstLineText = await this.readLinesFromFile(filePath, 1); + if (firstLineText.includes(DisableText.FILE_DISABLE_TEXT)) { + continue; + } + result.push(filePath); + } catch (e) { + logger.error(e); } - result.push(filePath); } } return result; @@ -310,4 +314,4 @@ export class FileUtils { export enum WriteFileMode { OVERWRITE, APPEND -} +} \ No newline at end of file diff --git a/ets2panda/linter/scripts/install-ohos-typescript-and-homecheck.mjs b/ets2panda/linter/scripts/install-ohos-typescript-and-homecheck.mjs index 5fc2c55baa1b709e4f9ad0ecaa6c50ee2c265aea..d4271589fe49d4c84f4a1a3d416fad99a9d68f93 100644 --- a/ets2panda/linter/scripts/install-ohos-typescript-and-homecheck.mjs +++ b/ets2panda/linter/scripts/install-ohos-typescript-and-homecheck.mjs @@ -90,7 +90,7 @@ function getTypescript(detectedOS) { fs.mkdirSync(third_party); } - let branch = process.env.TYPESCRIPT_BRANCH ?? 'OpenHarmony_feature_20250328' + let branch = process.env.TYPESCRIPT_BRANCH ?? 'master' if (detectedOS === 'Linux' || detectedOS === 'macOS') { let timeToWait = 5000 diff --git a/ets2panda/lsp/BUILD.gn b/ets2panda/lsp/BUILD.gn index 78dec71308cb8958669941d823fa4f3e3ce87f48..4c7e5927d8fccacbb9369b5ff82f4b68f1b702c8 100644 --- a/ets2panda/lsp/BUILD.gn +++ b/ets2panda/lsp/BUILD.gn @@ -11,7 +11,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//arkcompiler/runtime_core/static_core/ark_config.gni") +if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + import("//arkcompiler/runtime_core/static_core/ark_config.gni") +} else { + import( + "//build/config/components/runtime_core/static_core/ark_common_config.gni") +} if (ark_standalone_build) { import("$build_root/ark.gni") @@ -101,9 +107,16 @@ ohos_source_set("libes2panda_lsp_static") { "src/todo_comments.cpp", "src/types.cpp", ] - configs = [ + if ((defined(ark_standalone_build) && ark_standalone_build) || + (defined(ark_static_standalone_build) && ark_static_standalone_build)) { + configs = [ "$ark_root:ark_config" ] + } else { + configs = [ + "//build/config/components/runtime_core/static_core:ark_common_config", + ] + } + configs += [ "$ark_root/assembler:arkassembler_public_config", - "$ark_root:ark_config", "../:libes2panda_public_config", "../:libes2panda_config", "$ark_root/libpandabase:arkbase_public_config", diff --git a/ets2panda/lsp/src/services/text_change/change_tracker.cpp b/ets2panda/lsp/src/services/text_change/change_tracker.cpp index 949c7f1747eb1134ccc71651b392156f5bbffca3..8607fee034327aea09e35321c4a7b26826929182 100644 --- a/ets2panda/lsp/src/services/text_change/change_tracker.cpp +++ b/ets2panda/lsp/src/services/text_change/change_tracker.cpp @@ -18,7 +18,6 @@ #include #include #include -#include "util.h" #include #include diff --git a/ets2panda/test/unit/plugin_ut/plugin_ut_binary_expression_api.cpp b/ets2panda/test/unit/plugin_ut/plugin_ut_binary_expression_api.cpp index 42e150fa9f34bde580901033af35f739539f0c42..ac6bcbb874002ff894448304ac76cb5c241a8cbe 100644 --- a/ets2panda/test/unit/plugin_ut/plugin_ut_binary_expression_api.cpp +++ b/ets2panda/test/unit/plugin_ut/plugin_ut_binary_expression_api.cpp @@ -19,7 +19,7 @@ #include #include #include -#include "../plugin/util.h" +#include "test/unit/plugin/util.h" #include "public/es2panda_lib.h" // NOLINTBEGIN diff --git a/ets2panda/test/unit/plugin_ut/plugin_ut_new_array_instance_expression_api.cpp b/ets2panda/test/unit/plugin_ut/plugin_ut_new_array_instance_expression_api.cpp index 14c55feb305b4a8205a8148cc6f15eb1c77f72d8..2b1a73020d7bd477c3d1059a859a59ca82664a83 100644 --- a/ets2panda/test/unit/plugin_ut/plugin_ut_new_array_instance_expression_api.cpp +++ b/ets2panda/test/unit/plugin_ut/plugin_ut_new_array_instance_expression_api.cpp @@ -19,7 +19,7 @@ #include #include #include -#include "../plugin/util.h" +#include "test/unit/plugin/util.h" #include "public/es2panda_lib.h" // NOLINTBEGIN diff --git a/ets2panda/test/unit/plugin_ut/plugin_ut_variables_api.cpp b/ets2panda/test/unit/plugin_ut/plugin_ut_variables_api.cpp index b9752c7f486cfd4983708a1eb7413762944e792b..d96ab188a3b12d0fac007dcfe6c44aab309054aa 100644 --- a/ets2panda/test/unit/plugin_ut/plugin_ut_variables_api.cpp +++ b/ets2panda/test/unit/plugin_ut/plugin_ut_variables_api.cpp @@ -20,7 +20,7 @@ #include #include #include -#include "../plugin/util.h" +#include "test/unit/plugin/util.h" #include "public/es2panda_lib.h" // NOLINTBEGIN diff --git a/ets_frontend_config.gni b/ets_frontend_config.gni index 2c0ece9f9a5ea5e9235f27ee83cb99f162af07c2..67b7c47488d94c81458e8a02929004bbb57abe89 100644 --- a/ets_frontend_config.gni +++ b/ets_frontend_config.gni @@ -21,7 +21,7 @@ if (!ark_standalone_build) { toolchain_ohos = "$build_root/toolchain/ohos:ohos_clang_arm64" import("$build_root/ohos.gni") } else { - ark_third_party_root = "//arkcompiler/toolchain/build/third_party_gn" + ark_third_party_root = "//build/third_party_gn" import("$build_root/ark.gni") } import("$build_root/test.gni") diff --git a/merge_abc/BUILD.gn b/merge_abc/BUILD.gn index 54bdb3148c62f3ed1f53d47fcbc730874bce3c53..a20f2b5607b3245ed98a5fa8ff10ccc1d9dac86a 100644 --- a/merge_abc/BUILD.gn +++ b/merge_abc/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 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 @@ -52,7 +52,6 @@ config("panda_assembly_proto_public_config") { } assembly_proto_configs = [ - sdk_libc_secshared_config, "$ark_root:ark_config", ":panda_assembly_proto_public_config", "$ark_root/assembler:arkassembler_public_config", @@ -60,6 +59,10 @@ assembly_proto_configs = [ "$ark_root/libpandafile:arkfile_public_config", ] +if (defined(is_arkui_x) && is_arkui_x) { + assembly_proto_configs += [ sdk_libc_secshared_config ] +} + proto_file_defines = [ # add your proto file here "annotation", @@ -91,7 +94,8 @@ foreach(proto_file, proto_file_defines) { protoc_binary_out_path = "${THIRDPARTY_PROTOBUF_SUBSYS_NAME}/${THIRDPARTY_PROTOBUF_PART_NAME}" -if (!ark_standalone_build) { +if (!ark_standalone_build && defined(ohos_indep_compiler_enable) && + !ohos_indep_compiler_enable) { if (default_toolchain == current_toolchain) { #if target build host_out_path = "/" + get_label_info(host_toolchain, "name") @@ -102,6 +106,10 @@ if (!ark_standalone_build) { host_protoc_path = root_out_dir + host_out_path + "/" + protoc_binary_out_path + "/protoc" +} else if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) { + not_needed([ "protoc_binary_out_path" ]) + host_protoc_path = rebase_path( + "//binarys/third_party/protobuf/innerapis/protoc/clang_x64/libs/protoc") } else { host_protoc_path = get_label_info( @@ -110,7 +118,11 @@ if (!ark_standalone_build) { } action("arkcompiler_generate_proto") { - deps = [ "$ark_third_party_root/protobuf:protoc($host_toolchain)" ] + if (ark_standalone_build) { + deps = [ "$ark_third_party_root/protobuf:protoc($host_toolchain)" ] + } else { + external_deps = [ "protobuf:protoc($host_toolchain)" ] + } args = [] sources = [] outputs = proto_generated_header + proto_generated_source @@ -149,6 +161,7 @@ ohos_source_set("assembly_proto_static") { "runtime_core:libarkassembler_frontend_static", "runtime_core:libarkbase_frontend_static", "runtime_core:libarkfile_frontend_static", + sdk_libc_secshared_dep, ] } else { deps += [ @@ -160,6 +173,16 @@ ohos_source_set("assembly_proto_static") { ] } + if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) { + external_deps += [ + "abseil-cpp:absl_base_static", + "runtime_core:libarkassembler_static", + ] + if (enable_hilog) { + external_deps += [ "hilog:libhilog" ] + } + } + sources = proto_generated_header + proto_generated_source + protobuf_snapshot_generator_sources public_configs = assembly_proto_configs @@ -196,7 +219,6 @@ ohos_executable("merge_abc") { include_dirs = [ "./src" ] configs = [ - sdk_libc_secshared_config, "$ark_root:ark_config", ":panda_assembly_proto_public_config", "$ark_root/assembler:arkassembler_public_config", @@ -207,12 +229,14 @@ ohos_executable("merge_abc") { deps = [ ":panda_assembly_proto_static", - "$ark_third_party_root/icu/icu4c:static_icuuc", "../es2panda:es2panda_lib", ] - + external_deps = [ + "icu:static_icuuc", + sdk_libc_secshared_dep, + ] if (!is_arkui_x) { - external_deps = [ "runtime_core:libarkziparchive_frontend_static" ] + external_deps += [ "runtime_core:libarkziparchive_frontend_static" ] } else { deps += [ "$ark_root/libziparchive:libarkziparchive_frontend_static" ] } diff --git a/merge_abc/src/assemblyDebugProto.cpp b/merge_abc/src/assemblyDebugProto.cpp index 5fad0e562a1545a848a4130a518b9e0f23a7c32d..0be9fbf1f4d6b0732a649e14630184e3c3516390 100644 --- a/merge_abc/src/assemblyDebugProto.cpp +++ b/merge_abc/src/assemblyDebugProto.cpp @@ -20,16 +20,12 @@ void DebuginfoIns::Serialize(const panda::pandasm::debuginfo::Ins &debug, protoP { protoDebug.set_linenumber(debug.line_number); protoDebug.set_columnnumber(debug.column_number); - protoDebug.set_boundleft(debug.bound_left); - protoDebug.set_boundright(debug.bound_right); } void DebuginfoIns::Deserialize(const protoPanda::DebuginfoIns &protoDebug, panda::pandasm::debuginfo::Ins &debug) { debug.line_number = protoDebug.linenumber(); debug.column_number = protoDebug.columnnumber(); - debug.bound_left = protoDebug.boundleft(); - debug.bound_right = protoDebug.boundright(); } void LocalVariable::Serialize(const panda::pandasm::debuginfo::LocalVariable &debug, diff --git a/merge_abc/src/assemblyFunctionProto.cpp b/merge_abc/src/assemblyFunctionProto.cpp index fe40351bb6301c1325b21c1b263b1ef907c8a8c4..522437ad139e40f2cbd5dc66ef3499bfcb39f4b0 100644 --- a/merge_abc/src/assemblyFunctionProto.cpp +++ b/merge_abc/src/assemblyFunctionProto.cpp @@ -122,9 +122,9 @@ void Function::DeserializeProtoIns(const protoPanda::Function &protoFunction, pa { function.ins.reserve(protoFunction.ins_size()); for (const auto &protoIns : protoFunction.ins()) { - panda::pandasm::Ins ins; + panda::pandasm::Ins *ins {nullptr}; Ins::Deserialize(protoIns, ins); - function.ins.emplace_back(std::move(ins)); + function.ins.emplace_back(ins); } } diff --git a/merge_abc/src/assemblyInsProto.cpp b/merge_abc/src/assemblyInsProto.cpp index c1016ef04aacf1d56943272fe99bbc222e07e1ce..fe322bba7ff98f4d128c80093fb58741ffe32937 100644 --- a/merge_abc/src/assemblyInsProto.cpp +++ b/merge_abc/src/assemblyInsProto.cpp @@ -16,16 +16,16 @@ #include "assemblyInsProto.h" namespace panda::proto { -void Ins::Serialize(const panda::pandasm::Ins &insn, protoPanda::Ins &protoInsn) +void Ins::Serialize(const panda::pandasm::InsPtr &insn, protoPanda::Ins &protoInsn) { - protoInsn.set_opcode(static_cast(insn.opcode)); - for (const auto ® : insn.regs) { + protoInsn.set_opcode(static_cast(insn->opcode)); + for (const auto ® : insn->Regs()) { protoInsn.add_regs(static_cast(reg)); } - for (const auto &str : insn.ids) { + for (const auto &str : insn->Ids()) { protoInsn.add_ids(str); } - for (const auto &imm : insn.imms) { + for (const auto &imm : insn->Imms()) { auto *protoImm = protoInsn.add_imms(); switch (static_cast(imm.index() + 1)) { // 1: enum TypeCase start from 1 case protoPanda::Ins_IType::kValueInt: @@ -38,41 +38,51 @@ void Ins::Serialize(const panda::pandasm::Ins &insn, protoPanda::Ins &protoInsn) UNREACHABLE(); } } - protoInsn.set_label(insn.label); - protoInsn.set_setlabelval(insn.set_label); + protoInsn.set_label(insn->IsLabel() ? insn->Label() : ""); + protoInsn.set_setlabelval(insn->IsLabel()); auto *protoDebug = protoInsn.mutable_insdebug(); - DebuginfoIns::Serialize(insn.ins_debug, *protoDebug); + DebuginfoIns::Serialize(insn->ins_debug, *protoDebug); } -void Ins::Deserialize(const protoPanda::Ins &protoInsn, panda::pandasm::Ins &insn) +void Ins::Deserialize(const protoPanda::Ins &protoInsn, panda::pandasm::Ins *&insn) { - insn.opcode = static_cast(protoInsn.opcode()); - insn.regs.reserve(protoInsn.regs_size()); + auto opcode = static_cast(protoInsn.opcode()); + std::vector regs; + regs.reserve(protoInsn.regs_size()); for (const auto &protoReg : protoInsn.regs()) { - insn.regs.push_back(static_cast(protoReg)); + regs.push_back(static_cast(protoReg)); } - insn.ids.reserve(protoInsn.ids_size()); + std::vector ids; + ids.reserve(protoInsn.ids_size()); for (const auto &protoId : protoInsn.ids()) { - insn.ids.push_back(protoId); + ids.push_back(protoId); } - insn.imms.reserve(protoInsn.imms_size()); + std::vector imms; + imms.reserve(protoInsn.imms_size()); for (const auto &protoImm : protoInsn.imms()) { switch (protoImm.type_case()) { case protoPanda::Ins_IType::kValueInt: { - insn.imms.push_back(protoImm.valueint()); + imms.push_back(protoImm.valueint()); break; } case protoPanda::Ins_IType::kValueDouble: { - insn.imms.push_back(protoImm.valuedouble()); + imms.push_back(protoImm.valuedouble()); break; } default: UNREACHABLE(); } } - insn.label = protoInsn.label(); - insn.set_label = protoInsn.setlabelval(); + + auto set_label = protoInsn.setlabelval(); + if (set_label) { + auto label = protoInsn.label(); + insn = new pandasm::LabelIns(label); + } else { + insn = pandasm::Ins::CreateIns(opcode, regs, imms, ids); + } + const protoPanda::DebuginfoIns &protoDebugInfoIns = protoInsn.insdebug(); - DebuginfoIns::Deserialize(protoDebugInfoIns, insn.ins_debug); + DebuginfoIns::Deserialize(protoDebugInfoIns, insn->ins_debug); } } // panda::proto diff --git a/merge_abc/src/assemblyInsProto.h b/merge_abc/src/assemblyInsProto.h index 05053d5dec5b0aae862d7c8e9235cb3877de7734..3daeb45353104b7d2c6e32c125c4685a5212e773 100644 --- a/merge_abc/src/assemblyInsProto.h +++ b/merge_abc/src/assemblyInsProto.h @@ -23,8 +23,8 @@ namespace panda::proto { class Ins { public: - static void Serialize(const panda::pandasm::Ins &insn, protoPanda::Ins &protoInsn); - static void Deserialize(const protoPanda::Ins &protoInsn, panda::pandasm::Ins &insn); + static void Serialize(const panda::pandasm::InsPtr &insn, protoPanda::Ins &protoInsn); + static void Deserialize(const protoPanda::Ins &protoInsn, panda::pandasm::Ins *&insn); }; } // panda::proto #endif diff --git a/test/sdk_test_projects/bytecodehar_test/.gitignore b/test/sdk_test_projects/bytecodehar_test/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..d2ff20141ceed86d87c0ea5d99481973005bab2b --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/.gitignore @@ -0,0 +1,12 @@ +/node_modules +/oh_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy +**/.test +/.appanalyzer \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/AppScope/app.json5 b/test/sdk_test_projects/bytecodehar_test/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..c414205cbb365530837dfb88ec1fd85e7fab4c01 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/AppScope/app.json5 @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "app": { + "bundleName": "com.example.bytecodehar_test", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/AppScope/resources/base/element/string.json b/test/sdk_test_projects/bytecodehar_test/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..4622d4109071d93e8b28d9f829b6b2f9c4558fb6 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "bytecodehar_test" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/build-profile.json5 b/test/sdk_test_projects/bytecodehar_test/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..ed8847dca02815b42fb9b2f241549994cd0a1939 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/build-profile.json5 @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compatibleSdkVersion": "5.0.2(14)", + "runtimeOS": "HarmonyOS", + "buildOption": { + "strictMode": { + "caseSensitiveCheck": true, + "useNormalizedOHMUrl": true + } + } + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + }, + { + "name": "bytecode_har", + "srcPath": "./bytecode_har", + }, + { + "name": "bytecode_har1", + "srcPath": "./bytecode_har1", + }, + { + "name": "source_har", + "srcPath": "./source_har", + }, + { + "name": "source_har1", + "srcPath": "./source_har1", + } + ] +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/.gitignore b/test/sdk_test_projects/bytecodehar_test/bytecode_har/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e2713a2779c5a3e0eb879efe6115455592caeea5 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/BuildProfile.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/BuildProfile.ets new file mode 100644 index 0000000000000000000000000000000000000000..2235f87d8fce0cd79dce70fd3089ec056c397d42 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/BuildProfile.ets @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2025 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. + */ + +/** + * Use these variables when you tailor your ArkTS code. They must be of the const type. + */ +export const HAR_VERSION = '1.0.0'; +export const BUILD_MODE_NAME = 'debug'; +export const DEBUG = true; +export const TARGET_NAME = 'default'; + +/** + * BuildProfile Class is used only for compatibility purposes. + */ +export default class BuildProfile { + static readonly HAR_VERSION = HAR_VERSION; + static readonly BUILD_MODE_NAME = BUILD_MODE_NAME; + static readonly DEBUG = DEBUG; + static readonly TARGET_NAME = TARGET_NAME; +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/Index.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..2b7c3e556909ac74f0f1db3d862a85a58244297d --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/Index.ets @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2025 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 { MainPage } from './src/main/ets/components/MainPage'; +export function bcharTest() { + console.log("bcharTest"); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/build-profile.json5 b/test/sdk_test_projects/bytecodehar_test/bytecode_har/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..edc097032980d0b6899ecdb33f409df38b5049f3 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/build-profile.json5 @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "apiType": "stageMode", + "buildOption": { + "sourceOption": { + "workers": [ + './src/main/ets/workers/Worker.ets' + ] + } + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + }, + "consumerFiles": [ + "./consumer-rules.txt" + ] + } + }, + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest" + } + ] +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/consumer-rules.txt b/test/sdk_test_projects/bytecodehar_test/bytecode_har/consumer-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/hvigorfile.ts b/test/sdk_test_projects/bytecodehar_test/bytecode_har/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..194f648a98be5523ba996a5e542a8bd34287543f --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/hvigorfile.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2025 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 { harTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/obfuscation-rules.txt b/test/sdk_test_projects/bytecodehar_test/bytecode_har/obfuscation-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..272efb6ca3f240859091bbbfc7c5802d52793b0b --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/oh-package.json5 b/test/sdk_test_projects/bytecodehar_test/bytecode_har/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..4baf6de76986113b09e1cac9aea646e2098a6fc1 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/oh-package.json5 @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "name": "bytecode_har", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "dependencies": { + "source_har": "file:./source_har.har", + "bytecode_har1": "file:./bytecode_har1.har" + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/components/MainPage.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/components/MainPage.ets new file mode 100644 index 0000000000000000000000000000000000000000..f2fd166264e1c2b0aae43c8991de7ecb601da3d6 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/components/MainPage.ets @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2025 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 {sourceHarTest} from "source_har"; +import {bytecodeHar1Test} from "bytecode_har1"; +import {test} from "bytecode_har/ets/components/test"; +test(); + +@Component +export struct MainPage { + @State message: string = 'dispatch source Har'; + @State bytecideMessage: string = 'Initial state'; + + build() { + Row() { + Column() { + Button(this.message) + .fontSize(25) + .fontWeight(FontWeight.Bold) + .onClick(()=>{ + sourceHarTest(); + import("source_har").then((obj: ESObject)=>{ + console.log("dynamic import source_har"); + obj.sourceHarTest(); + }) + }) + Button("bytecode har1 test") + .fontSize(25) + .fontWeight(FontWeight.Bold) + .onClick(()=>{ + sourceHarTest(); + import("bytecode_har1").then((obj: ESObject)=>{ + console.log("dynamic import source_har"); + obj.bytecodeHar1Test(); + this.bytecideMessage = "byteciode har1 test executed" + }) + }) + Text(this.bytecideMessage) + .fontSize(25) + .fontWeight(FontWeight.Bold) + } + .width('100%') + } + .height('100%') + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/components/Second.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/components/Second.ets new file mode 100644 index 0000000000000000000000000000000000000000..d27b669bc069c38bf186a4a6e9b8e80777885c17 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/components/Second.ets @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2025 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. + */ + +@Builder +export function SecondPageBuilder() { + Second() +} + +@Component +export struct Second { + pageStack: NavPathStack = new NavPathStack(); + @State message: string = 'SecondPage'; + @State bytecideMessage: string = 'Initial state'; + + build() { + NavDestination() { + Column() { + Text(this.message) + .fontSize(25) + .fontWeight(FontWeight.Bold) + .fontColor(Color.Red) + Text("push to bytecode har1") + .fontSize(25) + .fontWeight(FontWeight.Bold) + .fontColor(Color.Red) + .onClick(()=>{ + this.pageStack.pushPathByName("BytecodeHar1Page", null, false); + }) + } + } + .title('SecondPage') + .onReady((context: NavDestinationContext)=>{ + this.pageStack = context.pathStack; + }); + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/components/test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/components/test.ets new file mode 100644 index 0000000000000000000000000000000000000000..d1fd9fe6587b34c0ebf352ea1d3ceb4336566419 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/components/test.ets @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2025 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 test() { + console.log("test"); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/workers/Worker.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/workers/Worker.ets new file mode 100644 index 0000000000000000000000000000000000000000..d5e2461619fe1553af0cec835502890c5b8951fd --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/ets/workers/Worker.ets @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2025 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 { ErrorEvent, JSON, MessageEvents, ThreadWorkerGlobalScope, worker } from '@kit.ArkTS'; + +const workerPort: ThreadWorkerGlobalScope = worker.workerPort; +let i = 0; +/** + * Defines the event handler to be called when the worker thread receives a message sent by the host thread. + * The event handler is executed in the worker thread. + * + * @param event message data + */ +workerPort.onmessage = (event: MessageEvents) => { + console.log('bytecode har recevived entry on Message success', JSON.stringify(event)); + i++; + workerPort.postMessage(`bytecode har post message: ${i}`); +}; + +/** + * Defines the event handler to be called when the worker receives a message that cannot be deserialized. + * The event handler is executed in the worker thread. + * + * @param event message data + */ +workerPort.onmessageerror = (event: MessageEvents) => { +}; + +/** + * Defines the event handler to be called when an exception occurs during worker execution. + * The event handler is executed in the worker thread. + * + * @param event error message + */ +workerPort.onerror = (event: ErrorEvent) => { +}; \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/module.json5 b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..e13a1c188b50ccf5b408fcfa5b3ca5cb54fc4341 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/module.json5 @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "bytecode_har", + "type": "har", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ], + "routerMap": "$profile:router_map" + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/resources/base/element/float.json b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..33ea22304f9b1485b5f22d811023701b5d4e35b6 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/resources/base/element/string.json b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f51a9c8461a55f6312ef950344e3145b7f82d607 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/resources/base/profile/router_map.json b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/resources/base/profile/router_map.json new file mode 100644 index 0000000000000000000000000000000000000000..31ba4575a1f2fd21f67229e25cd05bb78c6c3ef2 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/main/resources/base/profile/router_map.json @@ -0,0 +1,9 @@ +{ + "routerMap": [ + { + "name": "SecondPage", + "pageSourceFile": "src/main/ets/components/Second.ets", + "buildFunction": "SecondPageBuilder" + } + ] +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/ohosTest/ets/test/Ability.test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..bc35f7c9959facbfddf00d83953204f18d4bcbdb --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2025 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 { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/ohosTest/ets/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..683e5df1cd0c6c1734f7deef08400f6c49b1f4a1 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/ohosTest/module.json5 b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..d66531445882db699bd5041aa03ccdba7fc458b2 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/ohosTest/module.json5 @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "bytecode_har_test", + "type": "feature", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..4d92bb1fb875d14f5d27b2e29e138dec9114b293 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/test/LocalUnit.test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/test/LocalUnit.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..555ba8084b00d0863df1f76e4f5b31d8f725b3ba --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har/src/test/LocalUnit.test.ets @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2025 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 { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/.gitignore b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e2713a2779c5a3e0eb879efe6115455592caeea5 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/BuildProfile.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/BuildProfile.ets new file mode 100644 index 0000000000000000000000000000000000000000..2235f87d8fce0cd79dce70fd3089ec056c397d42 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/BuildProfile.ets @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2025 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. + */ + +/** + * Use these variables when you tailor your ArkTS code. They must be of the const type. + */ +export const HAR_VERSION = '1.0.0'; +export const BUILD_MODE_NAME = 'debug'; +export const DEBUG = true; +export const TARGET_NAME = 'default'; + +/** + * BuildProfile Class is used only for compatibility purposes. + */ +export default class BuildProfile { + static readonly HAR_VERSION = HAR_VERSION; + static readonly BUILD_MODE_NAME = BUILD_MODE_NAME; + static readonly DEBUG = DEBUG; + static readonly TARGET_NAME = TARGET_NAME; +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/Index.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..972fa9fc7b1d7cd0eb1aeb47a404f2a3e221c04a --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/Index.ets @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2025 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 { MainPage } from './src/main/ets/components/MainPage'; +export function bytecodeHar1Test() { + console.log("bytecode har1 test"); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/build-profile.json5 b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..faeced45ce9259f73e15132de3a5f2e6167b028b --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/build-profile.json5 @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "apiType": "stageMode", + "buildOption": { + "sourceOption": { + "workers": [ + './src/main/ets/workers/Workers.ets' + ] + } + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + }, + "consumerFiles": [ + "./consumer-rules.txt" + ] + } + }, + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest" + } + ] +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/consumer-rules.txt b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/consumer-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/hvigorfile.ts b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..194f648a98be5523ba996a5e542a8bd34287543f --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/hvigorfile.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2025 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 { harTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/obfuscation-rules.txt b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/obfuscation-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..272efb6ca3f240859091bbbfc7c5802d52793b0b --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/oh-package.json5 b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..a062721df4707f0374a49734372c178437bcb07c --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/oh-package.json5 @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "name": "bytecode_har1", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "dependencies": {} +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/components/BytecodeHar1Page.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/components/BytecodeHar1Page.ets new file mode 100644 index 0000000000000000000000000000000000000000..a9081250adf5780e24eb9bbcc990125bc81bc1f5 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/components/BytecodeHar1Page.ets @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2025 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. + */ + +@Builder +export function BytecodeHar1PageBuilder() { + BytecodeHar1Page() +} +@Component +export struct BytecodeHar1Page { + @State message: string = 'BytecodeHar1Page'; + + build() { + NavDestination() { + Column() { + Text(this.message) + .fontSize($r('app.float.page_text_font_size')) + .fontWeight(FontWeight.Bold) + } + } + .title("BytecodeHar1Page") + .height('100%') + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/components/MainPage.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/components/MainPage.ets new file mode 100644 index 0000000000000000000000000000000000000000..274df9cee67a39c4ffa076388d90c5d9344f95b9 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/components/MainPage.ets @@ -0,0 +1,38 @@ +/** + * Copyright (c) 2025 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 {test} from "./test"; +test(); +import("./test").then((obj: ESObject)=>{ + console.log(obj); + obj.test() +}) + +@Component +export struct MainPage { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize($r('app.float.page_text_font_size')) + .fontWeight(FontWeight.Bold) + } + .width('100%') + } + .height('100%') + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/components/test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/components/test.ets new file mode 100644 index 0000000000000000000000000000000000000000..21b3db2731a38b28c99dc349a5dcae6ca2d50b27 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/components/test.ets @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2025 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 test() { + console.log("this is bytecodehar1 test") +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/workers/Workers.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/workers/Workers.ets new file mode 100644 index 0000000000000000000000000000000000000000..e3e7b9d8fab34a45d4106e87ab1128dda44a14b8 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/ets/workers/Workers.ets @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2025 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 { ErrorEvent, JSON, MessageEvents, ThreadWorkerGlobalScope, worker } from '@kit.ArkTS'; + +const workerPort: ThreadWorkerGlobalScope = worker.workerPort; +let i = 0; +/** + * Defines the event handler to be called when the worker thread receives a message sent by the host thread. + * The event handler is executed in the worker thread. + * + * @param event message data + */ +workerPort.onmessage = (event: MessageEvents) => { + console.log('bytecode har1 received entry on message success:', JSON.stringify(event)); + i++; + workerPort.postMessage(`bytecode har2 post message:' ${i}`); +}; + +/** + * Defines the event handler to be called when the worker receives a message that cannot be deserialized. + * The event handler is executed in the worker thread. + * + * @param event message data + */ +workerPort.onmessageerror = (event: MessageEvents) => { +}; + +/** + * Defines the event handler to be called when an exception occurs during worker execution. + * The event handler is executed in the worker thread. + * + * @param event error message + */ +workerPort.onerror = (event: ErrorEvent) => { +}; diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/module.json5 b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..21fa9fdef9540450606261fd610b628c84308ddf --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/module.json5 @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "bytecode_har1", + "type": "har", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ], + "routerMap": "$profile:router_map" + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/resources/base/element/float.json b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..33ea22304f9b1485b5f22d811023701b5d4e35b6 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/resources/base/element/string.json b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f51a9c8461a55f6312ef950344e3145b7f82d607 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/resources/base/profile/router_map.json b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/resources/base/profile/router_map.json new file mode 100644 index 0000000000000000000000000000000000000000..a16c711da493514724a85bf0a4df832706c8b286 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/main/resources/base/profile/router_map.json @@ -0,0 +1,9 @@ +{ + "routerMap": [ + { + "name": "BytecodeHar1Page", + "pageSourceFile": "src/main/ets/components/BytecodeHar1Page.ets", + "buildFunction": "BytecodeHar1PageBuilder" + } + ] +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/ohosTest/ets/test/Ability.test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..bc35f7c9959facbfddf00d83953204f18d4bcbdb --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2025 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 { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/ohosTest/ets/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..683e5df1cd0c6c1734f7deef08400f6c49b1f4a1 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/ohosTest/module.json5 b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..929339ece602181c44228b2bc598d8beb65f6f2c --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/ohosTest/module.json5 @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "bytecode_har1_test", + "type": "feature", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..4d92bb1fb875d14f5d27b2e29e138dec9114b293 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/test/LocalUnit.test.ets b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/test/LocalUnit.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..555ba8084b00d0863df1f76e4f5b31d8f725b3ba --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/bytecode_har1/src/test/LocalUnit.test.ets @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2025 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 { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/code-linter.json5 b/test/sdk_test_projects/bytecodehar_test/code-linter.json5 new file mode 100644 index 0000000000000000000000000000000000000000..b83cb20573ec933b0f8e0bffff017436d0c2075b --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/code-linter.json5 @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "files": [ + "**/*.ets" + ], + "ignore": [ + "**/src/ohosTest/**/*", + "**/src/test/**/*", + "**/src/mock/**/*", + "**/node_modules/**/*", + "**/oh_modules/**/*", + "**/build/**/*", + "**/.preview/**/*" + ], + "ruleSet": [ + "plugin:@performance/recommended", + "plugin:@typescript-eslint/recommended" + ], + "rules": { + "@security/no-unsafe-aes": "error", + "@security/no-unsafe-hash": "error", + "@security/no-unsafe-mac": "warn", + "@security/no-unsafe-dh": "error", + "@security/no-unsafe-dsa": "error", + "@security/no-unsafe-ecdsa": "error", + "@security/no-unsafe-rsa-encrypt": "error", + "@security/no-unsafe-rsa-sign": "error", + "@security/no-unsafe-rsa-key": "error", + "@security/no-unsafe-dsa-key": "error", + "@security/no-unsafe-dh-key": "error", + "@security/no-unsafe-3des": "error" + } +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/.gitignore b/test/sdk_test_projects/bytecodehar_test/entry/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e2713a2779c5a3e0eb879efe6115455592caeea5 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/build-profile.json5 b/test/sdk_test_projects/bytecodehar_test/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..43057f9f4c6c685f7e342a2a7d54605f0f724138 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/build-profile.json5 @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/hvigorfile.ts b/test/sdk_test_projects/bytecodehar_test/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..8df8885cb234fc0c9961cfa3fbb20ebd3be4ac0f --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/hvigorfile.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2025 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 { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/test/sdk_test_projects/bytecodehar_test/entry/obfuscation-rules.txt b/test/sdk_test_projects/bytecodehar_test/entry/obfuscation-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..272efb6ca3f240859091bbbfc7c5802d52793b0b --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/oh-package.json5 b/test/sdk_test_projects/bytecodehar_test/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..1953e3fb41e86e04ce0687fa1af3ae6eb8222497 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/oh-package.json5 @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "name": "entry", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": { + "bytecode_har" : "file:./bytecode_har.har", + "bytecode_har1" : "file:./bytecode_har1.har", + "source_har" : "file:../source_har", + "source_har1": "file:../source_har1" + } +} + diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/entryability/EntryAbility.ets b/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..4d04abce31daafc02b48f75a5ddc702e04402554 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2025 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 { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; + +const DOMAIN = 0x0000; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err)); + return; + } + hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onBackground'); + } +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..fc0108ed4091081744a0c0844ee21bf6dae43343 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2025 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 { hilog } from '@kit.PerformanceAnalysisKit'; +import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit'; + +const DOMAIN = 0x0000; + +export default class EntryBackupAbility extends BackupExtensionAbility { + async onBackup() { + hilog.info(DOMAIN, 'testTag', 'onBackup ok'); + await Promise.resolve(); + } + + async onRestore(bundleVersion: BundleVersion) { + hilog.info(DOMAIN, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion)); + await Promise.resolve(); + } +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/pages/Index.ets b/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..13b9f114d15c5c922a169283041bafeca5ad45e6 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,117 @@ +/** + * Copyright (c) 2025 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 worker from '@ohos.worker'; +import {MainPage} from "bytecode_har" +import {sourceHarTest} from "source_har" +import {bycodeHar1Test} from "bytecode_har1" +import {sourceHarDispatchbcHarTest} from "source_har1" +import promptAction from '@ohos.promptAction' +import {test} from "entry/ets/pages/test" +test() + +console.log("hap dispatch test") +sourceHarTest(); +import ("source_har").then((obj :ESObject)=>{ + console.log("dynamic import source_har") + obj.sourceHarTest(); +}) + +bycodeHar1Test(); +import ("bytecode_har1").then((obj :ESObject)=>{ + console.log("dynamic import bytecodehar2") + obj.bycodeHar1Test(); +}) +@Entry +@Component +struct Index { + @State message: string = 'Hello World'; + pageStack : NavPathStack = new NavPathStack(); + workerInstance?: worker.ThreadWorker; + workerInstance1?: worker.ThreadWorker; + createWorkerThread() { + this.workerInstance = new worker.ThreadWorker("@bytecode_har/ets/workers/Worker.ets"); + this.workerInstance.onmessage = (e) => { + console.log("receive bytecodehar thread message success", e.data); + promptAction.showToast({ + message: "bytecodehar" + e.data, + duration: 2000 + }); + } + this.workerInstance1 = new worker.ThreadWorker("@bytecode_har1/ets/workers/Workers.ets"); + this.workerInstance1.onmessage = (e) => { + console.log("receive bytecodehar thread message success", e.data); + promptAction.showToast({ + message: "bytecodehar2" + e.data, + duration: 2000 + }); + } + } + + aboutToAppear(): void { + this.createWorkerThread(); + } + + build() { + Navigation(this.pageStack) { + Button("push Second Page1111") + .fontWeight(FontWeight.Bold) + .fontSize(25) + .alignRules({ + center: { anchor: 'container', align: VerticalAlign.Center }, + middle: { anchor: 'container', align: HorizontalAlign.Center } + }) + .onClick(()=>{ + this.pageStack.pushPathByName("SecondPage", null, false); + }) + + Button("dispatch bchar worker") + .fontWeight(FontWeight.Bold) + .fontSize(25) + .alignRules({ + center: { anchor: '__container__', align: VerticalAlign.Center }, + middle: { anchor: '__container__', align: HorizontalAlign.Center } + }) + .onClick(()=>{ + this.workerInstance?.postMessage(" hap to bytecodehar thread begin"); + }) + Button("dispatch bchar2 worker") + .fontWeight(FontWeight.Bold) + .fontSize(25) + .alignRules({ + center: { anchor: '__container__', align: VerticalAlign.Center }, + middle: { anchor: '__container__', align: HorizontalAlign.Center } + }) + .onClick(()=>{ + this.workerInstance1?.postMessage(" hap to bytecodehar2 thread begin"); + }) + Button("dispatch sourcehar1 test") + .fontWeight(FontWeight.Bold) + .fontSize(25) + .alignRules({ + center: { anchor: '__container__', align: VerticalAlign.Center }, + middle: { anchor: '__container__', align: HorizontalAlign.Center } + }) + + .onClick(()=>{ + sourceHarDispatchbcHarTest() + }) + MainPage() + } + .title("Entry Page") + .height('100%') + .width('100%') + } +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/pages/test.ets b/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/pages/test.ets new file mode 100644 index 0000000000000000000000000000000000000000..c595bc91b6e5639f2d8f179ed0788aa85e232b01 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/ets/pages/test.ets @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2025 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 test() { + console.log("1111"); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/module.json5 b/test/sdk_test_projects/bytecodehar_test/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..496f8feb49959e3b8bdd0a87ac06488259e501e1 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/module.json5 @@ -0,0 +1,67 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "phone", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:layered_image", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "name": "EntryBackupAbility", + "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets", + "type": "backup", + "exported": false, + "metadata": [ + { + "name": "ohos.extension.backup", + "resource": "$profile:backup_config" + } + ], + } + ] + } +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/element/color.json b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..d66f9a7d4ac61fb8d215239ab3620b7bcd77bf33 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/element/float.json b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..a8a5d404dcd8b0466194afc3aa25d90a8a327470 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/element/string.json b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f94595515a99e0c828807e243494f57f09251930 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/profile/backup_config.json b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/profile/backup_config.json new file mode 100644 index 0000000000000000000000000000000000000000..d742c2f96e7dd0f406f499941f3147345e998f95 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/profile/backup_config.json @@ -0,0 +1,3 @@ +{ + "allowToBackupRestore": true +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/profile/main_pages.json b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..1898d94f58d6128ab712be2c68acc7c98e9ab9ce --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,5 @@ +{ + "src": [ + "pages/Index" + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/dark/element/color.json b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/dark/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..438d5bc43bb23c59c210d586b96635a72da5b64a --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/main/resources/dark/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#000000" + } + ] +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/mock/mock-config.json5 b/test/sdk_test_projects/bytecodehar_test/entry/src/mock/mock-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..e263e747438223f8bb9fd861af8e0132f7866a01 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/mock/mock-config.json5 @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2025 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. + */ + +{ +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/ohosTest/ets/test/Ability.test.ets b/test/sdk_test_projects/bytecodehar_test/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..bc35f7c9959facbfddf00d83953204f18d4bcbdb --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2025 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 { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/ohosTest/ets/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..683e5df1cd0c6c1734f7deef08400f6c49b1f4a1 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/ohosTest/module.json5 b/test/sdk_test_projects/bytecodehar_test/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..b361ba491c6f6d6f612a96abaa3e537a4bf4d467 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/ohosTest/module.json5 @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "entry_test", + "type": "feature", + "deviceTypes": [ + "phone", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/entry/src/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..4d92bb1fb875d14f5d27b2e29e138dec9114b293 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/entry/src/test/LocalUnit.test.ets b/test/sdk_test_projects/bytecodehar_test/entry/src/test/LocalUnit.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..555ba8084b00d0863df1f76e4f5b31d8f725b3ba --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/entry/src/test/LocalUnit.test.ets @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2025 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 { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/hvigor/hvigor-config.json5 b/test/sdk_test_projects/bytecodehar_test/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..47b3a60e590b915c270f08e77119f8f1fa1751ae --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/hvigor/hvigor-config.json5 @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "modelVersion": "5.0.2", + "dependencies": { + }, + "execution": { + // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | false ]. Default: "normal" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ + // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/hvigorfile.ts b/test/sdk_test_projects/bytecodehar_test/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..d2d14bd72b19379489dc63e49120492dad076c51 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/hvigorfile.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2025 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 { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/test/sdk_test_projects/bytecodehar_test/oh-package.json5 b/test/sdk_test_projects/bytecodehar_test/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..1ec7d875076077eb21395a6256afddfa1d0c672a --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/oh-package.json5 @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "modelVersion": "5.0.2", + "description": "Please describe the basic information.", + "dependencies": { + }, + "devDependencies": { + "@ohos/hypium": "1.0.21", + "@ohos/hamock": "1.0.0" + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/.gitignore b/test/sdk_test_projects/bytecodehar_test/source_har/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e2713a2779c5a3e0eb879efe6115455592caeea5 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/BuildProfile.ets b/test/sdk_test_projects/bytecodehar_test/source_har/BuildProfile.ets new file mode 100644 index 0000000000000000000000000000000000000000..2235f87d8fce0cd79dce70fd3089ec056c397d42 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/BuildProfile.ets @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2025 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. + */ + +/** + * Use these variables when you tailor your ArkTS code. They must be of the const type. + */ +export const HAR_VERSION = '1.0.0'; +export const BUILD_MODE_NAME = 'debug'; +export const DEBUG = true; +export const TARGET_NAME = 'default'; + +/** + * BuildProfile Class is used only for compatibility purposes. + */ +export default class BuildProfile { + static readonly HAR_VERSION = HAR_VERSION; + static readonly BUILD_MODE_NAME = BUILD_MODE_NAME; + static readonly DEBUG = DEBUG; + static readonly TARGET_NAME = TARGET_NAME; +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/Index.ets b/test/sdk_test_projects/bytecodehar_test/source_har/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..92c1b0dfa9ac9041c1e845dba0269af01ca53911 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/Index.ets @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2025 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 {promptAction} from '@kit.ArkUI'; +export { MainPage } from './src/main/ets/components/MainPage'; + +export function sourceHarTest() { + console.log("source har success"); + promptAction.showToast({ + message: "sourcehar test success", + duration: 2000 + }); +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/build-profile.json5 b/test/sdk_test_projects/bytecodehar_test/source_har/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..1e7b34cf781bb6efa8cea57d291ecf8edee498c7 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/build-profile.json5 @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "apiType": "stageMode", + "buildOption": { + "arkOptions": {"byteCodeHar": false} + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + }, + "consumerFiles": [ + "./consumer-rules.txt" + ] + } + }, + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/consumer-rules.txt b/test/sdk_test_projects/bytecodehar_test/source_har/consumer-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/hvigorfile.ts b/test/sdk_test_projects/bytecodehar_test/source_har/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..194f648a98be5523ba996a5e542a8bd34287543f --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/hvigorfile.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2025 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 { harTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/obfuscation-rules.txt b/test/sdk_test_projects/bytecodehar_test/source_har/obfuscation-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..272efb6ca3f240859091bbbfc7c5802d52793b0b --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/oh-package.json5 b/test/sdk_test_projects/bytecodehar_test/source_har/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..c5e4bdeba6ca40fb075dd6f87f1a149ded0d9020 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/oh-package.json5 @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "name": "source_har", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "dependencies": {} +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/src/main/ets/components/MainPage.ets b/test/sdk_test_projects/bytecodehar_test/source_har/src/main/ets/components/MainPage.ets new file mode 100644 index 0000000000000000000000000000000000000000..3a90f0b7c2085e552413d3a5d64dd27e65225efc --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/src/main/ets/components/MainPage.ets @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2025 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. + */ + +@Component +export struct MainPage { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize($r('app.float.page_text_font_size')) + .fontWeight(FontWeight.Bold) + .onClick(() => { + this.message = 'Welcome'; + }) + } + .width('100%') + } + .height('100%') + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/src/main/module.json5 b/test/sdk_test_projects/bytecodehar_test/source_har/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..9d233c98b8da77046a6e013eed625978d1368a1f --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/src/main/module.json5 @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "source_har", + "type": "har", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ] + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/src/main/resources/base/element/float.json b/test/sdk_test_projects/bytecodehar_test/source_har/src/main/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..33ea22304f9b1485b5f22d811023701b5d4e35b6 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/src/main/resources/base/element/string.json b/test/sdk_test_projects/bytecodehar_test/source_har/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f51a9c8461a55f6312ef950344e3145b7f82d607 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/src/main/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/src/ohosTest/ets/test/Ability.test.ets b/test/sdk_test_projects/bytecodehar_test/source_har/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..bc35f7c9959facbfddf00d83953204f18d4bcbdb --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2025 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 { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/src/ohosTest/ets/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/source_har/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..683e5df1cd0c6c1734f7deef08400f6c49b1f4a1 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/src/ohosTest/module.json5 b/test/sdk_test_projects/bytecodehar_test/source_har/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..148445491988552b658387c6f3aa1cce9051b24d --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/src/ohosTest/module.json5 @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "source_har_test", + "type": "feature", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/src/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/source_har/src/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..4d92bb1fb875d14f5d27b2e29e138dec9114b293 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/src/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har/src/test/LocalUnit.test.ets b/test/sdk_test_projects/bytecodehar_test/source_har/src/test/LocalUnit.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..555ba8084b00d0863df1f76e4f5b31d8f725b3ba --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har/src/test/LocalUnit.test.ets @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2025 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 { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/.gitignore b/test/sdk_test_projects/bytecodehar_test/source_har1/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e2713a2779c5a3e0eb879efe6115455592caeea5 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/.gitignore @@ -0,0 +1,6 @@ +/node_modules +/oh_modules +/.preview +/build +/.cxx +/.test \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/Index.ets b/test/sdk_test_projects/bytecodehar_test/source_har1/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..2b88e078547e528896567eacbbcaa13b23da80c4 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/Index.ets @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2025 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 {bchar1Test} from "bytecode_har" +import {bytecodeHar1Test} from "bytecode_har1" +import { promptAction } from "@kit.ArkUI"; + +export { MainPage } from './src/main/ets/components/MainPage' +export function sourceHarDispatchbcHarTest() { + bchar1Test(); + import ("bytecode_har").then((obj :ESObject)=>{ + console.log("sourcehar1 dynamic import bytecodehar") + promptAction.showToast({ + message: "sourcehar1 dynamic import bytecodehar", + duration: 2000 + }); + obj.bchar1Test(); + }) + + bytecodeHar1Test(); + import ("bytecode_har1").then((obj :ESObject)=>{ + console.log("dynamic import bytecodehar1") + promptAction.showToast({ + message: "dynamic import bytecodehar1", + duration: 2000 + }); + obj.bytecodeHar1Test(); + }) +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/build-profile.json5 b/test/sdk_test_projects/bytecodehar_test/source_har1/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..6b7940f3b397a1d3e6ce7ddf8ffc579c3275274b --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/build-profile.json5 @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + }, + "consumerFiles": [ + "./consumer-rules.txt" + ] + } + }, + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/consumer-rules.txt b/test/sdk_test_projects/bytecodehar_test/source_har1/consumer-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/hvigorfile.ts b/test/sdk_test_projects/bytecodehar_test/source_har1/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..194f648a98be5523ba996a5e542a8bd34287543f --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/hvigorfile.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2025 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 { harTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/obfuscation-rules.txt b/test/sdk_test_projects/bytecodehar_test/source_har1/obfuscation-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..272efb6ca3f240859091bbbfc7c5802d52793b0b --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/oh-package.json5 b/test/sdk_test_projects/bytecodehar_test/source_har1/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..d22ad47bdda38389981efce84cd105c569fedda0 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/oh-package.json5 @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "name": "source_har1", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "Index.ets", + "author": "", + "license": "Apache-2.0", + "dependencies": { + "bytecode_har": "file:../entry/bytecode_har.har", + "bytecode_har1": "file:../entry/bytecode_har1.har" + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/ets/components/MainPage.ets b/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/ets/components/MainPage.ets new file mode 100644 index 0000000000000000000000000000000000000000..3a90f0b7c2085e552413d3a5d64dd27e65225efc --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/ets/components/MainPage.ets @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2025 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. + */ + +@Component +export struct MainPage { + @State message: string = 'Hello World'; + + build() { + Row() { + Column() { + Text(this.message) + .fontSize($r('app.float.page_text_font_size')) + .fontWeight(FontWeight.Bold) + .onClick(() => { + this.message = 'Welcome'; + }) + } + .width('100%') + } + .height('100%') + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/module.json5 b/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..65639bcf59a3e4642eb4026e3a713e038798ba43 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/module.json5 @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "source_har1", + "type": "har", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ] + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/resources/base/element/float.json b/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..33ea22304f9b1485b5f22d811023701b5d4e35b6 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/resources/base/element/string.json b/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f51a9c8461a55f6312ef950344e3145b7f82d607 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/src/main/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "page_show", + "value": "page from package" + } + ] +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/src/ohosTest/ets/test/Ability.test.ets b/test/sdk_test_projects/bytecodehar_test/source_har1/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..bc35f7c9959facbfddf00d83953204f18d4bcbdb --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2025 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 { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/src/ohosTest/ets/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/source_har1/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..683e5df1cd0c6c1734f7deef08400f6c49b1f4a1 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/src/ohosTest/module.json5 b/test/sdk_test_projects/bytecodehar_test/source_har1/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..f5e54081cdd2d81c50c988a4c8c3a95f3fa57a73 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/src/ohosTest/module.json5 @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 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. + */ + +{ + "module": { + "name": "source_har1_test", + "type": "feature", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/src/test/List.test.ets b/test/sdk_test_projects/bytecodehar_test/source_har1/src/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..4d92bb1fb875d14f5d27b2e29e138dec9114b293 --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/src/test/List.test.ets @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2025 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 localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/test/sdk_test_projects/bytecodehar_test/source_har1/src/test/LocalUnit.test.ets b/test/sdk_test_projects/bytecodehar_test/source_har1/src/test/LocalUnit.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..555ba8084b00d0863df1f76e4f5b31d8f725b3ba --- /dev/null +++ b/test/sdk_test_projects/bytecodehar_test/source_har1/src/test/LocalUnit.test.ets @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2025 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 { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/test/workload/ignored-app_workload-fastverify-qemu-aot-litecg.txt b/test/workload/ignored-app_workload-fastverify-qemu-aot-litecg.txt index f1740c568c834e86f956c065dd4a5643ab50315c..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 --- a/test/workload/ignored-app_workload-fastverify-qemu-aot-litecg.txt +++ b/test/workload/ignored-app_workload-fastverify-qemu-aot-litecg.txt @@ -1,12 +1 @@ -#21456 -sort_pcfilemanager -arkui -bili -tranform_zsyh -bili_kntr -testfileinfo -gaode -OneItems_zsyh -welink -lottie -shimo + diff --git a/test/workload/ignored-third_lib_js-cmc-gc-fastverify-arm64-int.txt b/test/workload/ignored-third_lib_js-cmc-gc-fastverify-arm64-int.txt index e27198600a4c125f4ba83d12cac6190d0f7c8e0a..7cd6233d2ba736dc2881be0ec542eaf54ab900f3 100644 --- a/test/workload/ignored-third_lib_js-cmc-gc-fastverify-arm64-int.txt +++ b/test/workload/ignored-third_lib_js-cmc-gc-fastverify-arm64-int.txt @@ -7,4 +7,4 @@ crypto-js_test memory-cache_test validator_test dayjs_test -rxjs_test \ No newline at end of file +rxjs_test diff --git a/test/workload/ignored-third_lib_js-debug-arm64-jit.txt b/test/workload/ignored-third_lib_js-debug-arm64-jit.txt index 5282f00e57e2e63b2ac7a4e9029800d726653dae..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/test/workload/ignored-third_lib_js-debug-arm64-jit.txt +++ b/test/workload/ignored-third_lib_js-debug-arm64-jit.txt @@ -1,2 +0,0 @@ -# Known failures list for third_lib_js-fastverify-arm64-jit - diff --git a/test/workload/ignored-third_lib_js-fastverify-arm64-jit.txt b/test/workload/ignored-third_lib_js-fastverify-arm64-jit.txt index ac37e564cc2eb33ea7480bf50df979ddc7ff84c0..48752bf92031d893aeb880b685b3aac3d636dd06 100644 --- a/test/workload/ignored-third_lib_js-fastverify-arm64-jit.txt +++ b/test/workload/ignored-third_lib_js-fastverify-arm64-jit.txt @@ -1,4 +1,3 @@ -# Known failures list for third_lib_js-debug-arm64-jit #21456 gson_test @@ -16,3 +15,9 @@ hamcrest_test #24592 dayjs_test + +#19247 +jsDiff_test + +#23235 +pdfview_test diff --git a/test/workload/ignored-third_lib_js-fastverify-x64-aot-litecg.txt b/test/workload/ignored-third_lib_js-fastverify-x64-aot-litecg.txt index 0297a12cfc6999ba13c077ba9155c557a694921e..9c0352849e8889b1b6ea98eaeb0e03dd446d453a 100644 --- a/test/workload/ignored-third_lib_js-fastverify-x64-aot-litecg.txt +++ b/test/workload/ignored-third_lib_js-fastverify-x64-aot-litecg.txt @@ -1,5 +1,2 @@ #19251 pdfview_test - -#19247 -jsDiff_test diff --git a/test/workload/ignored-third_lib_js-release-arm64-aot.txt b/test/workload/ignored-third_lib_js-release-arm64-aot.txt index 4fdf6cc547c18ebbfd573a2318b3ffbf5a869da8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/test/workload/ignored-third_lib_js-release-arm64-aot.txt +++ b/test/workload/ignored-third_lib_js-release-arm64-aot.txt @@ -1,2 +0,0 @@ -# Known failures list for third_lib_js - release-arm64-aot - diff --git a/test/workload/ignored-third_lib_js-release-x64-jit.txt b/test/workload/ignored-third_lib_js-release-x64-jit.txt index 95ceef636cd20dc66d811d74674bdf41121ff274..8e46369b430f19295aefd5e4705e908990f64361 100644 --- a/test/workload/ignored-third_lib_js-release-x64-jit.txt +++ b/test/workload/ignored-third_lib_js-release-x64-jit.txt @@ -1,7 +1,6 @@ # Known failures list for third_lib_js - release-x64-jit -# 21116 -pdfview_test - -#20325 -htmlParser2_test +#19623 +rebound_test +#23235 +pdfview_test diff --git a/test/workload/ignored-weekly_workload-fastverify-qemu-aot-litecg.txt b/test/workload/ignored-weekly_workload-fastverify-qemu-aot-litecg.txt index fd0d0c4437459cece8b9e3cf98c52e67091a532d..fb31da2b18f285d096bc144d1bfe79af5d3871f3 100644 --- a/test/workload/ignored-weekly_workload-fastverify-qemu-aot-litecg.txt +++ b/test/workload/ignored-weekly_workload-fastverify-qemu-aot-litecg.txt @@ -1,38 +1,5 @@ -#18546 -air -crypto - -##18863 -json-parse-inspector - -#18745 -json-stringify-inspector - -#21663 -mandreel - -#21456 -crypto-aes -splay-latency -stanford-crypto-pbkdf2 - -##21577 -OfflineAssembler - -##19010 -box2d - -##19398 -raytrace - -##18740 -splay -##21607 -pdfjs - -##19862 -typescript-compiler - -##19216 +#19216 wsl +#24985 +mandreel diff --git a/test/workload/ignored-weekly_workload-fastverify-qemu-int.txt b/test/workload/ignored-weekly_workload-fastverify-qemu-int.txt index 5c9d90d0f7fee8b95699280728e863054249f62a..0dc89e0861bf6db8f8b66b5d066145a75a75f9cd 100644 --- a/test/workload/ignored-weekly_workload-fastverify-qemu-int.txt +++ b/test/workload/ignored-weekly_workload-fastverify-qemu-int.txt @@ -1,13 +1,11 @@ #21131 float-mm - -#21131 wsl -#21131 +#23119 stanford-crypto-pbkdf2 -##18863 +#18863 json-parse-inspector ##18486 diff --git a/test/workload/workload.properties b/test/workload/workload.properties index e01ed222fc2bea4a8c568b2c579a37ceb34c8c62..b51747878003f8cf6dfe5087228b0c3674e3743f 100644 --- a/test/workload/workload.properties +++ b/test/workload/workload.properties @@ -1,3 +1,3 @@ WORKLOAD_REPO=https://gitee.com/haizaibali/ohcompiler-daily.git WORKLOAD_REPO_BRANCH=workload_all -WORKLOAD_REPO_REVISION=d5075b5a12bc94a0ca305fb4e118390a8ab13620 +WORKLOAD_REPO_REVISION=e632f32071213ba6818f9e2013e8fd43c182deb9 diff --git a/test262/ignored-test262-fastverify-x64-aot-pgo-litecg.txt b/test262/ignored-test262-fastverify-x64-aot-pgo-litecg.txt index a9b564117521913ace0cd6d0dd67b43e7e2a3c57..c9e09aa947e91724ffb43db1f8fc5e3a5776f59a 100644 --- a/test262/ignored-test262-fastverify-x64-aot-pgo-litecg.txt +++ b/test262/ignored-test262-fastverify-x64-aot-pgo-litecg.txt @@ -1,3 +1,2 @@ #19208 test262/data/test_es2021/language/module-code/instn-iee-err-circular-as.js - diff --git a/test262/ignored-test262-fastverify-x64-aot-pgo.txt b/test262/ignored-test262-fastverify-x64-aot-pgo.txt index 7a848c57ea6fa3c09702119bc7586eae60abd0e3..616d78ec153fc18f9d90dc50e186c10e40f2c760 100644 --- a/test262/ignored-test262-fastverify-x64-aot-pgo.txt +++ b/test262/ignored-test262-fastverify-x64-aot-pgo.txt @@ -1,4 +1,4 @@ # Known failure list for test262 - fastverify-x64-aot-pgo #19208 -test262/data/test_es2021/language/module-code/instn-iee-err-circular-as.js \ No newline at end of file +test262/data/test_es2021/language/module-code/instn-iee-err-circular-as.js diff --git a/test262/ignored-test262-other-cmc-gc-fastverify-x64-int.txt b/test262/ignored-test262-other-cmc-gc-fastverify-x64-int.txt index dc93a8953f3065ff8563a93bf05d3d2dcb905a72..50f0b77eb94228ddab12effd312acf721f114068 100644 --- a/test262/ignored-test262-other-cmc-gc-fastverify-x64-int.txt +++ b/test262/ignored-test262-other-cmc-gc-fastverify-x64-int.txt @@ -7,4 +7,4 @@ test262/data/other_tests/built-ins/RegExp/property-escapes/generated/Script_Exte test262/data/other_tests/language/statements/class/elements/after-same-line-static-async-gen-rs-private-method-alt.js #27147 -test262/data/other_tests/language/module-code/top-level-await/syntax/if-expr-await-expr-template-literal.js \ No newline at end of file +test262/data/other_tests/language/module-code/top-level-await/syntax/if-expr-await-expr-template-literal.js diff --git a/test262/ignored-test262-release-qemu-jit.txt b/test262/ignored-test262-release-qemu-jit.txt index 924dfda25afba6101ffbae99b39245c45a0201ce..43a60883fbcbc71ad36ff81321e98ba528c8bc24 100644 --- a/test262/ignored-test262-release-qemu-jit.txt +++ b/test262/ignored-test262-release-qemu-jit.txt @@ -1,2 +1,6 @@ #21423 test262/data/test_es2021/intl402/String/prototype/toLocaleUpperCase/special_casing_Lithuanian.js + +#19208 +test262/data/test_es2021/language/module-code/instn-iee-err-circular.js +test262/data/test_es2021/language/module-code/instn-iee-err-circular-as.js diff --git a/test262/intl_skip_tests.json b/test262/intl_skip_tests.json index a417e22f1b48f25c807b5bad227fb44ed5883ddb..88fbfd1932b4f32be548ec792df99f69f086ce9f 100644 --- a/test262/intl_skip_tests.json +++ b/test262/intl_skip_tests.json @@ -28,6 +28,8 @@ "intl402/NumberFormat/prototype/formatToParts/main.js", "intl402/NumberFormat/currency-digits.js", "intl402/NumberFormat/prototype/format/numbering-systems.js", + "intl402/NumberFormat/prototype/formatToParts/unit.js", + "intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-timezone.js", "intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-yes-to-true.js", "intl402/Intl/getCanonicalLocales/canonicalized-tags.js" ] diff --git a/test262/run_sunspider.py b/test262/run_sunspider.py index 60c7e6f7a1c4a6b8bbba6126aee2fff66031bce3..1e6310d80c785327d963c47887d14e6d4dd89291 100755 --- a/test262/run_sunspider.py +++ b/test262/run_sunspider.py @@ -114,6 +114,8 @@ def parse_args(): help="Use abc2prog to generate abc, aot or pgo is not supported yet under this option") parser.add_argument('--disable-force-gc', action='store_true', help="Run test262 with close force-gc") + parser.add_argument('--multi-context', action='store_true', + help="Run test262 with multi context") parser.add_argument('--enable-arkguard', action='store_true', required=False, help="enable arkguard for 262 tests") @@ -141,6 +143,7 @@ class ArkProgram(): self.run_pgo = False self.enable_litecg = False self.disable_force_gc = False + self.multi_context = False self.run_jit = False self.run_baseline_jit = False self.ark_aot_tool = ARK_AOT_TOOL @@ -181,6 +184,9 @@ class ArkProgram(): if self.args.disable_force_gc: self.disable_force_gc = self.args.disable_force_gc + if self.args.multi_context: + self.multi_context = self.args.multi_context + if self.args.run_jit: self.run_jit = self.args.run_jit @@ -694,7 +700,10 @@ class ArkProgram(): asm_arg1 = "--enable-force-gc=true" if unforce_gc or self.disable_force_gc: asm_arg1 = "--enable-force-gc=false" - cmd_args = [self.ark_tool, icu_path, asm_arg1, + asm_arg2 = "--multi-context=false" + if self.multi_context: + asm_arg2 = "--multi-context=true" + cmd_args = [self.ark_tool, icu_path, asm_arg1, asm_arg2, f'{file_name_pre}.abc'] record_name = os.path.splitext(os.path.split(self.js_file)[1])[0] diff --git a/test262/run_test262.py b/test262/run_test262.py index 3a5e196373009318eb6b4a3d228ccffd2e9d6c94..484f63aa8cc205adae1b0ea3cc75eaf04e75a4e7 100755 --- a/test262/run_test262.py +++ b/test262/run_test262.py @@ -157,6 +157,8 @@ def parse_args(): help="stub file") parser.add_argument('--disable-force-gc', action='store_true', help="Run test262 with close force-gc") + parser.add_argument('--multi-context', action='store_true', + help="Run test262 with multi context") parser.add_argument('--enable-arkguard', action='store_true', help="enable arkguard for 262 tests") @@ -758,6 +760,10 @@ def get_disable_force_gc(host_args, args): return host_args +def get_multi_context(args, host_args): + host_args += f"--multi-context " + + return host_args def get_host_args_of_stub_file(args, host_args): host_args += f"--stub-file={args.stub_file} " @@ -830,6 +836,9 @@ def get_host_args(args, host_type): if args.disable_force_gc: host_args = get_disable_force_gc(host_args, args) + if args.multi_context: + host_args = get_multi_context(args, host_args) + return host_args