diff --git a/ui2abc/libarkts/src/arkts-api/static/global.ts b/ui2abc/libarkts/src/arkts-api/static/global.ts index ac198cc9a21e3fdef0c659cef410106782f9fb13..994248a1036db19cd9b181a4a69d604978e639b2 100644 --- a/ui2abc/libarkts/src/arkts-api/static/global.ts +++ b/ui2abc/libarkts/src/arkts-api/static/global.ts @@ -77,4 +77,8 @@ export class global { // Check node type values during node creation public static validatePeerTypes = false + + public static clearContext() { + + } } diff --git a/ui2abc/libarkts/src/generated/peers/MethodDefinition.ts b/ui2abc/libarkts/src/generated/peers/MethodDefinition.ts index 4e2d2eb86e2e831030dc054c319997c445a0fa70..9a5e8caae1372399b3c89b7f8c1a07bcb7a6e146 100644 --- a/ui2abc/libarkts/src/generated/peers/MethodDefinition.ts +++ b/ui2abc/libarkts/src/generated/peers/MethodDefinition.ts @@ -145,6 +145,13 @@ export class MethodDefinition extends ClassElement { setChildrenParentPtr = extension_MethodDefinitionSetChildrenParentPtr onUpdate = extension_MethodDefinitionOnUpdate protected readonly brandMethodDefinition: undefined + + /** TODO remove me */ + + /** @deprecated */ + get scriptFunction() { + return this.function + } } export function isMethodDefinition(node: object | undefined): node is MethodDefinition { return node instanceof MethodDefinition diff --git a/ui2abc/libarkts/src/wrapper-compat/arkts-api/factory/nodeFactory.ts b/ui2abc/libarkts/src/wrapper-compat/arkts-api/factory/nodeFactory.ts index 6cc23ced6b33d511a9e95a1f21115666ee76cd40..c83d4ac97c7d480be235e1f9f8efa14fe69ff5db 100644 --- a/ui2abc/libarkts/src/wrapper-compat/arkts-api/factory/nodeFactory.ts +++ b/ui2abc/libarkts/src/wrapper-compat/arkts-api/factory/nodeFactory.ts @@ -76,6 +76,7 @@ import { AnnotationDeclaration, TryStatement, TSClassImplements, + Expression, } from '../../../generated'; import { updateCallExpression } from '../node-utilities/CallExpression'; import { updateExpressionStatement } from '../node-utilities/ExpressionStatement'; @@ -105,9 +106,12 @@ import { updateObjectExpression } from '../node-utilities/ObjectExpression'; import { updateProperty } from '../node-utilities/Property'; import { updateArrayExpression } from '../node-utilities/ArrayExpression'; import { updateTryStatement } from '../node-utilities/TryStatement'; -import { Es2pandaModifierFlags } from 'src/arkts-api'; +import { arktsGlobal, AstNode, Es2pandaImportKinds, Es2pandaModifierFlags, Es2pandaPropertyKind, factory as factory1, passNode, passNodeArray } from '../../../arkts-api'; +import { Program } from '../peers/Program'; +import { KInt } from '@koalaui/interop'; export const factory = { + ...factory1, get createIdentifier(): (...args: Parameters) => Identifier { return Identifier.create2Identifier; }, @@ -129,12 +133,6 @@ export const factory = { get updateMemberExpression(): (...args: Parameters) => MemberExpression { return updateMemberExpression; }, - get createEtsScript(): (...args: Parameters) => EtsScript { - return EtsScript.createFromSource; - }, - get updateEtsScript(): (...args: Parameters) => EtsScript { - return EtsScript.updateByStatements; - }, get createFunctionDeclaration(): (...args: Parameters) => FunctionDeclaration { return FunctionDeclaration.create; }, @@ -208,9 +206,21 @@ export const factory = { return ETSTypeReferencePart.createETSTypeReferencePart; }, get createImportDeclaration(): ( - ...args: Parameters + ...args: any[] //Parameters ) => ETSImportDeclaration { - return ETSImportDeclaration.createETSImportDeclaration; + return (importPath: StringLiteral | undefined, specifiers: readonly AstNode[], importKinds: Es2pandaImportKinds, program: Program, flags: KInt) => { + const result: ETSImportDeclaration = new ETSImportDeclaration(arktsGlobal.es2panda._ETSParserBuildImportDeclaration( + arktsGlobal.context, + importKinds, + passNodeArray(specifiers), + specifiers.length, + passNode(importPath), + program.peer, + flags + )) + result.setChildrenParentPtr() + return result + } }, get updateImportDeclaration(): (...args: Parameters) => ETSImportDeclaration { return updateETSImportDeclaration; @@ -418,8 +428,12 @@ export const factory = { get updateObjectExpression(): (...args: Parameters) => ObjectExpression { return updateObjectExpression; }, - get createProperty(): (...args: Parameters) => Property { - return Property.create1Property; + get createProperty(): (...args: any[] /* Parameters */) => Property { + return (key: Expression | undefined, value: Expression | undefined) => { + const result: Property = new Property(arktsGlobal.generatedEs2panda._CreateProperty(arktsGlobal.context, passNode(key), passNode(value))) + result.setChildrenParentPtr() + return result + } }, get updateProperty(): (...args: Parameters) => Property { return updateProperty; @@ -447,8 +461,15 @@ export const factory = { get createTSClassImplements(): (...args: Parameters) => TSClassImplements { return TSClassImplements.createTSClassImplements; }, + get createEtsScript(): (...args: Parameters) => EtsScript { + return EtsScript.createFromSource; + }, + get updateEtsScript(): (...args: Parameters) => EtsScript { + return EtsScript.updateByStatements; + }, /** @deprecated */ createTypeParameter1_(name: Identifier, constraint?: TypeNode, defaultType?: TypeNode, flags = Es2pandaModifierFlags.MODIFIER_FLAGS_NONE) { return TSTypeParameter.create1TSTypeParameter(Identifier.create2Identifier(name.name), constraint, defaultType, flags); }, + }; diff --git a/ui2abc/libarkts/src/wrapper-compat/arkts-api/factory/nodeTests.ts b/ui2abc/libarkts/src/wrapper-compat/arkts-api/factory/nodeTests.ts index 62c02275a505a51ae282d041066c946d32d22dd1..f9c9ea98e0c4bc7679766bf5ee187803c8b91e2c 100644 --- a/ui2abc/libarkts/src/wrapper-compat/arkts-api/factory/nodeTests.ts +++ b/ui2abc/libarkts/src/wrapper-compat/arkts-api/factory/nodeTests.ts @@ -33,6 +33,7 @@ import { } from "../types" import { MemberExpression } from "../to-be-generated/MemberExpression" import { AstNode } from "../peers/AstNode" +import { isETSStructDeclaration } from "src/arkts-api" export function isCallExpression(node: AstNode): node is CallExpression { return node instanceof CallExpression @@ -50,9 +51,7 @@ export function isMethodDefinition(node: AstNode): node is MethodDefinition { return global.es2panda._IsMethodDefinition(node.peer); } -export function isEtsScript(node: AstNode): node is EtsScript { - return node instanceof EtsScript -} +export { isETSModule, isETSModule as isEtsModule, isETSModule as isEtsScript } from "../../../generated" export function isExpressionStatement(node: AstNode): node is ExpressionStatement { return node instanceof ExpressionStatement @@ -63,7 +62,7 @@ export function isArrowFunctionExpression(node: AstNode): node is ArrowFunctionE } export function isStructDeclaration(node: AstNode): node is StructDeclaration { - return node instanceof StructDeclaration + return isETSStructDeclaration(node) } export function isFunctionExpression(node: AstNode): node is FunctionExpression { diff --git a/ui2abc/libarkts/src/wrapper-compat/arkts-api/peers/Program.ts b/ui2abc/libarkts/src/wrapper-compat/arkts-api/peers/Program.ts index 0f2ac917e331bc6a624a88fbc499820226b74994..f85408f3ec1c137aa08690191d66bd74372abf1e 100644 --- a/ui2abc/libarkts/src/wrapper-compat/arkts-api/peers/Program.ts +++ b/ui2abc/libarkts/src/wrapper-compat/arkts-api/peers/Program.ts @@ -18,6 +18,7 @@ import { global } from "../static/global" import { acceptNativeObjectArrayResult, unpackString } from "../utilities/private" import { KNativePointer } from "@koalaui/interop" import { EtsScript } from "../types" +import { Program } from "../../../generated" enum SkipPhaseResult { NOT_COMPUTED, @@ -25,13 +26,8 @@ enum SkipPhaseResult { CANNOT_SKIP, } -export class Program extends ArktsObject { - private canSkipPhaseResult: SkipPhaseResult; - - constructor(peer: KNativePointer) { - super(peer); - this.canSkipPhaseResult = SkipPhaseResult.NOT_COMPUTED; - } +class ProgramExt extends Program { + declare private canSkipPhaseResult: SkipPhaseResult get astNode(): EtsScript { return new EtsScript(global.es2panda._ProgramAst(global.context, this.peer)); @@ -67,9 +63,9 @@ export class Program extends ArktsObject { return unpackString(global.generatedEs2panda._ProgramModuleNameConst(global.context, this.peer)); } - isASTLowered(): boolean { - return global.generatedEs2panda._ProgramIsASTLoweredConst(global.context, this.peer); - } + // isASTLowered(): boolean { + // return global.generatedEs2panda._ProgramIsASTLoweredConst(global.context, this.peer); + // } canSkipPhases(): boolean { if (this.canSkipPhaseResult === SkipPhaseResult.CAN_SKIP) { @@ -87,6 +83,15 @@ export class Program extends ArktsObject { } } +const props = { + ...Object.getOwnPropertyDescriptors(ProgramExt.prototype), + ...Object.getOwnPropertyDescriptors(Program.prototype), +} +Object.defineProperties(Program.prototype, props) +Object.assign(Program.prototype, { canSkipPhaseResult: SkipPhaseResult.NOT_COMPUTED }) + +export { ProgramExt as Program } + export class ExternalSource extends ArktsObject { constructor(peer: KNativePointer) { super(peer) diff --git a/ui2abc/libarkts/src/wrapper-compat/arkts-api/types.ts b/ui2abc/libarkts/src/wrapper-compat/arkts-api/types.ts index e9eaf245083ad61ba3ba362b565c41fb65801741..09afb86c7718ec6bcc8cd7a25d0d22bda2acf1c7 100644 --- a/ui2abc/libarkts/src/wrapper-compat/arkts-api/types.ts +++ b/ui2abc/libarkts/src/wrapper-compat/arkts-api/types.ts @@ -55,6 +55,7 @@ import { ScriptFunction, TSTypeParameterDeclaration, TSTypeParameterInstantiation, + ETSStructDeclaration, TypeNode, } from '../../generated'; @@ -604,14 +605,14 @@ export class IfStatement extends AstNode { alternate: AstNode | undefined; } -export class StructDeclaration extends AstNode { +export class StructDeclaration extends ETSStructDeclaration { constructor(peer: KPtr) { assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_STRUCT_DECLARATION); super(peer); // Improve: is struct definition the same as struct definition? - this.definition = unpackNonNullableNode( + this.setDefinition(unpackNonNullableNode( global.generatedEs2panda._ClassDeclarationDefinition(global.context, this.peer) - ); + )); } static create(definition: ClassDefinition): StructDeclaration { @@ -625,8 +626,6 @@ export class StructDeclaration extends AstNode { global.generatedEs2panda._UpdateETSStructDeclaration(global.context, node.peer, passNode(definition)) ); } - - readonly definition: ClassDefinition; } export class MethodDefinition extends AstNode { diff --git a/ui2abc/libarkts/src/wrapper-compat/arkts-api/utilities/performance.ts b/ui2abc/libarkts/src/wrapper-compat/arkts-api/utilities/performance.ts index c938de34c133bf65a15d51689e47623741fe87ec..f03e1660c84ae8d6e36fdbbc601a88cb868189a8 100644 --- a/ui2abc/libarkts/src/wrapper-compat/arkts-api/utilities/performance.ts +++ b/ui2abc/libarkts/src/wrapper-compat/arkts-api/utilities/performance.ts @@ -66,6 +66,13 @@ export class Performance { this.shouldSkip = shouldSkip; } + enableMemoryTracker(enableMemoryTracker: boolean = false): void {} + memoryTrackerPrintCurrent() {} + startMemRecord() {} + stopMemRecord() {} + memoryTrackerGetDelta() {} + memoryTrackerReset() {} + createEvent(name: string): Event { if (this.shouldSkip) { return { name: '', startTime: 0 }; diff --git a/ui2abc/libarkts/src/wrapper-compat/arkts-api/visitor.ts b/ui2abc/libarkts/src/wrapper-compat/arkts-api/visitor.ts index d6060343342c0a8d766cb4366e0b6241b7c32237..d247332e53b1a45bc6ffa8335f4e925572c2ef65 100644 --- a/ui2abc/libarkts/src/wrapper-compat/arkts-api/visitor.ts +++ b/ui2abc/libarkts/src/wrapper-compat/arkts-api/visitor.ts @@ -43,9 +43,9 @@ import { isArrayExpression, isTryStatement, isBinaryExpression, + isETSModule, } from '../../generated'; import { - isEtsScript, isCallExpression, isFunctionDeclaration, isExpressionStatement, @@ -86,6 +86,7 @@ function nodesVisitor( let updated: boolean = false; export function visitEachChild(node: AstNode, visitor: Visitor): AstNode { + let prevUpdated = updated updated = false; let script: AstNode = node; script = visitETSModule(script, visitor); @@ -97,6 +98,7 @@ export function visitEachChild(node: AstNode, visitor: Visitor): AstNode { script = visitInnerExpression(script, visitor); script = visitTrivialExpression(script, visitor); script = visitLiteral(script, visitor); + updated = prevUpdated // Improve: return visitWithoutUpdate(script, visitor); } @@ -234,7 +236,7 @@ function visitDeclaration(node: AstNode, visitor: Visitor): AstNode { } if (isStructDeclaration(node)) { updated = true; - return factory.updateStructDeclaration(node, nodeVisitor(node.definition, visitor)); + return factory.updateStructDeclaration(node, nodeVisitor(node.definition, visitor)!); } if (isTSInterfaceDeclaration(node)) { updated = true; @@ -352,9 +354,14 @@ function visitETSModule(node: AstNode, visitor: Visitor): AstNode { if (updated) { return node; } - if (isEtsScript(node)) { - updated = true; - return factory.updateEtsScript(node, nodesVisitor(node.statements, visitor)); + if (isETSModule(node)) { + updated = true + return factory1.updateETSModule( + node, + nodesVisitor(node.statements, visitor), + nodeVisitor(node.ident, visitor), + node.getNamespaceFlag(), + ) } return node; }