From e3c748f2c097ce9765c284a4b750f55fb769c359 Mon Sep 17 00:00:00 2001 From: Dmitrii Naumov Date: Fri, 28 Feb 2025 10:44:48 +0800 Subject: [PATCH 1/8] super good regular methods Signed-off-by: Dmitrii Naumov super good regular methods Signed-off-by: Dmitrii Naumov make internal Signed-off-by: Dmitrii Naumov make internal Signed-off-by: Dmitrii Naumov make deprecated Signed-off-by: Dmitrii Naumov even version Signed-off-by: Dmitrii Naumov fix script, even version Signed-off-by: Dmitrii Naumov version Signed-off-by: Dmitrii Naumov --- .../libarkts/src/generated/peers/AnnotationDeclaration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arkoala-arkts/libarkts/src/generated/peers/AnnotationDeclaration.ts b/arkoala-arkts/libarkts/src/generated/peers/AnnotationDeclaration.ts index 98f530d3d4..551b1b917e 100644 --- a/arkoala-arkts/libarkts/src/generated/peers/AnnotationDeclaration.ts +++ b/arkoala-arkts/libarkts/src/generated/peers/AnnotationDeclaration.ts @@ -32,7 +32,7 @@ import { import { Statement } from "./Statement" import { Expression } from "./Expression" import { Identifier } from "./Identifier" -import { AnnotationUsage } from "./AnnotationUsage" +import { AnnotationUsage } from "./AnnotationUsage"; export class AnnotationDeclaration extends Statement { constructor(pointer: KNativePointer) { assertValidPeer(pointer, 1) -- Gitee From 2220602bde39f06509b8588667bd334e8c11632c Mon Sep 17 00:00:00 2001 From: Dmitrii Naumov Date: Mon, 3 Mar 2025 12:04:22 +0800 Subject: [PATCH 2/8] remove 3 classes Signed-off-by: Dmitrii Naumov --- .../plugins/src/builder-lambda-transformer.ts | 18 +- .../plugins/src/component-transformer.ts | 12 +- .../plugins/src/struct-transformer.ts | 10 +- .../src/arkts-api/factory/nodeFactory.ts | 35 ++-- .../src/arkts-api/factory/nodeTests.ts | 12 +- arkoala-arkts/libarkts/src/arkts-api/index.ts | 5 + arkoala-arkts/libarkts/src/arkts-api/types.ts | 165 +----------------- 7 files changed, 50 insertions(+), 207 deletions(-) diff --git a/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts b/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts index 6b14bf6bf6..85306cc6e9 100644 --- a/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts +++ b/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts @@ -31,10 +31,12 @@ function getLambdaArg(lambdaBody: arkts.AstNode, typeName: string|undefined): ar arkts.factory.createIdentifier( builderLambdaInstanceName, // TODO: it should be the return type of the function annotated with the @BuilderLambda - typeName ? arkts.factory.createTypeReferenceFromId( - arkts.factory.createIdentifier( - typeName - ) + typeName ? arkts.factory.createTypeReference( + arkts.factory.createTypeReferencePart( + arkts.factory.createIdentifier( + typeName + ) + ) ) : undefined, ), undefined @@ -49,9 +51,11 @@ function getLambdaArg(lambdaBody: arkts.AstNode, typeName: string|undefined): ar [ param ], undefined, // TODO: it should be the return type of the function annotated with the @BuilderLambda - typeName ? arkts.factory.createTypeReferenceFromId( - arkts.factory.createIdentifier( - typeName + typeName ? arkts.factory.createTypeReference( + arkts.factory.createTypeReferencePart( + arkts.factory.createIdentifier( + typeName + ) ) ) : undefined ) diff --git a/arkoala-arkts/libarkts/plugins/src/component-transformer.ts b/arkoala-arkts/libarkts/plugins/src/component-transformer.ts index a40db46df9..180ff903fb 100644 --- a/arkoala-arkts/libarkts/plugins/src/component-transformer.ts +++ b/arkoala-arkts/libarkts/plugins/src/component-transformer.ts @@ -104,11 +104,15 @@ export class ComponentTransformer extends AbstractVisitor { arkts.factory.createIdentifier('StructBase'), arkts.factory.createTSTypeParameterInstantiation( [ - arkts.factory.createTypeReferenceFromId( - arkts.factory.createIdentifier(className) + arkts.factory.createTypeReference( + arkts.factory.createTypeReferencePart( + arkts.factory.createIdentifier(className) + ) ), - arkts.factory.createTypeReferenceFromId( - arkts.factory.createIdentifier(`__Options_${className}`) + arkts.factory.createTypeReference( + arkts.factory.createTypeReferencePart( + arkts.factory.createIdentifier(`__Options_${className}`) + ) ), ] ) diff --git a/arkoala-arkts/libarkts/plugins/src/struct-transformer.ts b/arkoala-arkts/libarkts/plugins/src/struct-transformer.ts index 6233ae7805..a14a0b3c55 100644 --- a/arkoala-arkts/libarkts/plugins/src/struct-transformer.ts +++ b/arkoala-arkts/libarkts/plugins/src/struct-transformer.ts @@ -22,7 +22,9 @@ function createStyleArgInBuildMethod(className: string): arkts.ETSParameterExpre const styleLambdaParams: arkts.ETSParameterExpression = arkts.factory.createParameterDeclaration( arkts.factory.createIdentifier( 'instance', - arkts.factory.createIdentifier(className), + arkts.factory.createTypeReferencePart( + arkts.factory.createIdentifier(className) + ) ), undefined ); @@ -86,8 +88,10 @@ function createInitializerArgInBuildMethod(className: string): arkts.ETSParamete return arkts.factory.createParameterDeclaration( arkts.factory.createIdentifier( 'initializers', - arkts.factory.createTypeReferenceFromId( - arkts.factory.createIdentifier(`__Options_${className}`) + arkts.factory.createTypeReference( + arkts.factory.createTypeReferencePart( + arkts.factory.createIdentifier(`__Options_${className}`) + ) ) ).setOptional(true), undefined diff --git a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts index ca2a7fb803..a584168f9f 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts @@ -17,16 +17,12 @@ import { updateNodeByNode } from "../utilities/private" import { ArrowFunctionExpression, CallExpression, - ClassProperty, EtsImportDeclaration, ETSParameterExpression, EtsScript, - ETSTypeReference, - ETSTypeReferencePart, ExpressionStatement, FunctionDeclaration, FunctionExpression, - Identifier, IfStatement, ImportSpecifier, MethodDefinition, @@ -45,13 +41,16 @@ import { BlockStatement, ClassDeclaration, ClassDefinition, + ClassProperty, ConditionalExpression, ETSFunctionType, ETSPrimitiveType, + ETSTypeReference, + ETSTypeReferencePart, ETSUndefinedType, ETSUnionType, FunctionSignature, - Identifier as GeneratedIdentifier, + Identifier, StringLiteral, SuperExpression, TSInterfaceBody, @@ -63,7 +62,6 @@ import { UndefinedLiteral } from "../../generated" - function compose( create: (...args: ARGS) => T, update: (node: T, original: T) => T = updateNodeByNode @@ -73,10 +71,10 @@ function compose( export const factory = { get createIdentifier() { - return Identifier.create + return Identifier.create2Identifier }, get updateIdentifier() { - return compose(Identifier.create) + return compose(Identifier.create2Identifier) }, get createCallExpression() { return CallExpression.create @@ -169,22 +167,16 @@ export const factory = { return compose(ETSPrimitiveType.createETSPrimitiveType) }, get createTypeReference() { - return ETSTypeReference.create + return ETSTypeReference.createETSTypeReference }, get updateTypeReference() { - return compose(ETSTypeReference.create) - }, - get createTypeReferenceFromId() { - return ETSTypeReference.createFromId - }, - get updateTypeReferenceFromId() { - return compose(ETSTypeReference.createFromId) + return compose(ETSTypeReference.createETSTypeReference) }, get createTypeReferencePart() { - return ETSTypeReferencePart.create + return ETSTypeReferencePart.createETSTypeReferencePart }, get updateTypeReferencePart() { - return compose(ETSTypeReferencePart.create) + return compose(ETSTypeReferencePart.createETSTypeReferencePart) }, get createImportDeclaration() { return EtsImportDeclaration.create @@ -257,10 +249,10 @@ export const factory = { return compose(ClassDefinition.createClassDefinition) }, get createClassProperty() { - return ClassProperty.create + return ClassProperty.createClassProperty }, get updateClassProperty() { - return compose(ClassProperty.create) + return compose(ClassProperty.createClassProperty) }, get createFunctionType() { return ETSFunctionType.createETSFunctionType @@ -331,7 +323,8 @@ export const factory = { get updateConditionalExpression() { return compose(ConditionalExpression.createConditionalExpression) }, + /** @deprecated */ createTypeParameter1_(name: Identifier, constraint?: TypeNode, defaultType?: TypeNode) { - return TSTypeParameter.createTSTypeParameter(GeneratedIdentifier.create1Identifier(name.name), constraint, defaultType) + return TSTypeParameter.createTSTypeParameter(Identifier.create1Identifier(name.name), constraint, defaultType) }, } diff --git a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts index 0f246a7012..29323c72cd 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts @@ -1,14 +1,12 @@ import { ArrowFunctionExpression, CallExpression, - ClassProperty, - ETSParameterExpression, EtsImportDeclaration, + ETSParameterExpression, EtsScript, ExpressionStatement, FunctionDeclaration, FunctionExpression, - Identifier, IfStatement, MethodDefinition, ReturnStatement, @@ -20,10 +18,6 @@ import { import { MemberExpression } from "../to-be-generated/MemberExpression" import { AstNode } from "../peers/AstNode" -export function isIdentifier(node: AstNode): node is Identifier { - return node instanceof Identifier -} - export function isCallExpression(node: AstNode): node is CallExpression { return node instanceof CallExpression } @@ -72,10 +66,6 @@ export function isScriptFunction(node: AstNode): node is ScriptFunction { return node instanceof ScriptFunction } -export function isClassProperty(node: AstNode): node is ClassProperty { - return node instanceof ClassProperty -} - export function isReturnStatement(node: AstNode): node is ReturnStatement { return node instanceof ReturnStatement } diff --git a/arkoala-arkts/libarkts/src/arkts-api/index.ts b/arkoala-arkts/libarkts/src/arkts-api/index.ts index e2b7a2cde6..a2b5b7d7ef 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/index.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/index.ts @@ -30,6 +30,10 @@ export * from "../generated/peers/ThrowStatement" export * from "../generated/peers/TypeNode" export * from "../generated/peers/ClassDeclaration" export * from "../generated/peers/ClassDefinition" +export * from "../generated/peers/Identifier" +export * from "../generated/peers/ETSTypeReference" +export * from "../generated/peers/ETSTypeReferencePart" +export * from "../generated/peers/ClassProperty" export * from "./types" export * from "./utilities/private" @@ -39,6 +43,7 @@ export * from "./factory/nodeTests" export * from "./visitor" export * from "./peers/AstNode" import "../generated" + export * from "./peers/Config" export * from "./peers/Context" export * from "./peers/Program" diff --git a/arkoala-arkts/libarkts/src/arkts-api/types.ts b/arkoala-arkts/libarkts/src/arkts-api/types.ts index aca38e1847..f0a0ada478 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/types.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/types.ts @@ -16,7 +16,6 @@ import { global } from "./static/global" import { KInt, KNativePointer, KNativePointer as KPtr, nullptr } from "@koalaui/interop" import { Es2pandaContextState, - Es2pandaIdentifierFlags, Es2pandaImportKinds, Es2pandaMethodDefinitionKind, Es2pandaModifierFlags, @@ -31,11 +30,9 @@ import { nodeType, passNode, passNodeArray, - passString, unpackNode, unpackNodeArray, unpackNonNullableNode, - unpackString, updatePeerByNode, } from "./utilities/private" import { proceedToState } from "./utilities/public" @@ -51,9 +48,9 @@ import { AnnotationUsage, BlockStatement, ClassDefinition, - ClassElement, Expression, FunctionSignature, + Identifier, Literal, StringLiteral, TSTypeParameterDeclaration, @@ -181,66 +178,6 @@ export class CallExpression extends AstNode { readonly trailingBlock: AstNode|undefined // BlockStatement } -export class ETSTypeReference extends TypeNode { - constructor(peer: KPtr) { - assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_ETS_TYPE_REFERENCE) - super(peer) - } - - static create( - part: ETSTypeReferencePart, - ): ETSTypeReference { - return new ETSTypeReference( - global.generatedEs2panda._CreateETSTypeReference( - global.context, - passNode(part) - ) - ) - } - - static createFromId( - typeName: Identifier, - ): ETSTypeReference { - return new ETSTypeReference( - global.generatedEs2panda._CreateETSTypeReference( - global.context, - ETSTypeReferencePart.create(typeName).peer - ) - ) - } - - // TODO: - // readonly typeName: Identifier - // readonly typeRefPart: TypeReferencePart -} - -export class ETSTypeReferencePart extends AstNode { - constructor(peer: KPtr) { - assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_ETS_TYPE_REFERENCE_PART) - super(peer) - this.typeName = unpackNonNullableNode(global.generatedEs2panda._ETSTypeReferencePartName(global.context, this.peer)); - } - - // TODO: support type params and prev - static create( - typeName: Identifier, - typeParamsDecl?: AstNode, - ) { - // typeName.setReference(true) - // TODO: support type params and prev - return new ETSTypeReferencePart( - global.generatedEs2panda._CreateETSTypeReferencePart( - global.context, - passNode(typeName), - passNode(typeParamsDecl), - nullptr - ) - ) - } - - readonly typeName: Identifier -} - export class TSUnionType extends AstNode { constructor(peer: KPtr) { assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_TS_UNION_TYPE) @@ -267,52 +204,6 @@ export class TSUnionType extends AstNode { readonly types: readonly AstNode[] } -export class Identifier extends Expression { - constructor(peer: KPtr) { - assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_IDENTIFIER) - super(peer) - } - - static create( - name: string, - typeAnnotation?: AstNode, - ): Identifier { - return new Identifier( - global.es2panda._CreateIdentifier2(global.context, passString(name), passNode(typeAnnotation)) - ) - } - - setOptional(optional: boolean): Identifier { - global.generatedEs2panda._IdentifierSetOptional(global.context, this.peer, optional) - return this - } - - setAnnotationUsage(): Identifier { - global.generatedEs2panda._IdentifierSetAnnotationUsage(global.context, this.peer); - return this; - } - - protected override dumpMessage(): string { - return ` ` - } - - get name(): string { - return unpackString(global.generatedEs2panda._IdentifierName(global.context, this.peer)) - } - - set name(name: string) { - global.generatedEs2panda._IdentifierSetName(global.context, this.peer, passString(name)) - } - - get isPrivate(): boolean { - return global.generatedEs2panda._IdentifierIsPrivateIdentConst(global.context, this.peer) - } - - get identifierFlags(): Es2pandaIdentifierFlags { - return global.es2panda._IdentifierIdentifierFlags(global.context, this.peer) - } -} - export class NumberLiteral extends Literal { constructor(peer: KPtr) { assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_NUMBER_LITERAL) @@ -742,54 +633,6 @@ export class MethodDefinition extends AstNode { readonly name: Identifier } -export class ClassProperty extends ClassElement { - constructor(peer: KPtr) { - assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_CLASS_PROPERTY) - super(peer) - this.typeAnnotation = unpackNode(global.generatedEs2panda._ClassPropertyTypeAnnotationConst(global.context, this.peer)); - } - - static create( - key: AstNode, - value: AstNode, - typeAnnotation: AstNode, - modifiers: KInt, - isComputed: boolean - ): ClassProperty { - return new ClassProperty( - global.generatedEs2panda._CreateClassProperty( - global.context, - passNode(key), - passNode(value), - passNode(typeAnnotation), - modifiers, - isComputed - ) - ) - } - - get annotations(): AnnotationUsage[] { - return unpackNodeArray( - global.es2panda._ScriptFunctionAnnotations( - global.context, - this.peer, - nullptr - ) - ) - } - - set annotations(newAnnotations: AnnotationUsage[]) { - global.es2panda._ScriptFunctionSetAnnotations( - global.context, - this.peer, - passNodeArray(newAnnotations), - newAnnotations.length - ); - } - - readonly typeAnnotation?: ETSTypeReference -} - export class VariableDeclaration extends AstNode { constructor(peer: KPtr) { assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_VARIABLE_DECLARATION) @@ -964,8 +807,6 @@ const pairs: [Es2pandaAstNodeType, { new(peer: KNativePointer): AstNode }][] = [ [Es2pandaAstNodeType.AST_NODE_TYPE_BLOCK_STATEMENT, BlockStatement], [Es2pandaAstNodeType.AST_NODE_TYPE_RETURN_STATEMENT, ReturnStatement], [Es2pandaAstNodeType.AST_NODE_TYPE_ETS_PARAMETER_EXPRESSION, ETSParameterExpression], - [Es2pandaAstNodeType.AST_NODE_TYPE_ETS_TYPE_REFERENCE, ETSTypeReference], - [Es2pandaAstNodeType.AST_NODE_TYPE_ETS_TYPE_REFERENCE_PART, ETSTypeReferencePart], [Es2pandaAstNodeType.AST_NODE_TYPE_TS_TYPE_PARAMETER_DECLARATION, TSTypeParameterDeclaration], [Es2pandaAstNodeType.AST_NODE_TYPE_CALL_EXPRESSION, CallExpression], [Es2pandaAstNodeType.AST_NODE_TYPE_MEMBER_EXPRESSION, MemberExpression], @@ -979,4 +820,6 @@ const pairs: [Es2pandaAstNodeType, { new(peer: KNativePointer): AstNode }][] = [ [Es2pandaAstNodeType.AST_NODE_TYPE_ETS_IMPORT_DECLARATION, EtsImportDeclaration], [Es2pandaAstNodeType.AST_NODE_TYPE_IMPORT_SPECIFIER, ImportSpecifier], ] -pairs.forEach(([tp, cctor]) => nodeByType.set(tp, cctor)) \ No newline at end of file +pairs.forEach(([nodeType, astNode]) => + nodeByType.set(nodeType, astNode) +) \ No newline at end of file -- Gitee From 58a0b035cdb416f3a171445eb703afe175499472 Mon Sep 17 00:00:00 2001 From: Dmitrii Naumov Date: Mon, 3 Mar 2025 12:17:53 +0800 Subject: [PATCH 3/8] fix tests Signed-off-by: Dmitrii Naumov --- .../test/arkts-api/expressions/call-expression.test.ts | 2 +- .../libarkts/test/arkts-api/functions/create.test.ts | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/arkoala-arkts/libarkts/test/arkts-api/expressions/call-expression.test.ts b/arkoala-arkts/libarkts/test/arkts-api/expressions/call-expression.test.ts index 5421f2d512..ff38a47267 100644 --- a/arkoala-arkts/libarkts/test/arkts-api/expressions/call-expression.test.ts +++ b/arkoala-arkts/libarkts/test/arkts-api/expressions/call-expression.test.ts @@ -26,7 +26,7 @@ suite(util.basename(__filename), () => { arkts.factory.createIdentifier( 'console' ), - arkts.Identifier.create( + arkts.Identifier.create2Identifier( 'log' ), arkts.Es2pandaMemberExpressionKind.MEMBER_EXPRESSION_KIND_PROPERTY_ACCESS, diff --git a/arkoala-arkts/libarkts/test/arkts-api/functions/create.test.ts b/arkoala-arkts/libarkts/test/arkts-api/functions/create.test.ts index 928e92ccc6..ac0d680a98 100644 --- a/arkoala-arkts/libarkts/test/arkts-api/functions/create.test.ts +++ b/arkoala-arkts/libarkts/test/arkts-api/functions/create.test.ts @@ -170,9 +170,11 @@ suite(util.basename(__filename), () => { arkts.factory.createParameterDeclaration( arkts.factory.createIdentifier( 'y', - arkts.factory.createTypeReferenceFromId( - arkts.factory.createIdentifier( - 'string' + arkts.factory.createTypeReference( + arkts.factory.createTypeReferencePart( + arkts.factory.createIdentifier( + 'string' + ) ) ) ), -- Gitee From e6bddf6885ad1d26531d5e23080aa246217c773a Mon Sep 17 00:00:00 2001 From: Dmitrii Naumov Date: Mon, 3 Mar 2025 12:22:32 +0800 Subject: [PATCH 4/8] fix Signed-off-by: Dmitrii Naumov --- arkoala-arkts/memo-plugin/src/MemoFactory.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/arkoala-arkts/memo-plugin/src/MemoFactory.ts b/arkoala-arkts/memo-plugin/src/MemoFactory.ts index 6b4d9c2646..d6c541de68 100644 --- a/arkoala-arkts/memo-plugin/src/MemoFactory.ts +++ b/arkoala-arkts/memo-plugin/src/MemoFactory.ts @@ -42,8 +42,13 @@ export class factory { // Parameters static createContextParameter(): arkts.ETSParameterExpression { return arkts.factory.createParameterDeclaration( - arkts.factory.createIdentifier(RuntimeNames.CONTEXT, - arkts.factory.createIdentifier(RuntimeNames.CONTEXT_TYPE) + arkts.factory.createIdentifier( + RuntimeNames.CONTEXT, + arkts.factory.createTypeReference( + arkts.factory.createTypeReferencePart( + arkts.factory.createIdentifier(RuntimeNames.CONTEXT_TYPE) + ) + ) ), undefined ) @@ -51,7 +56,11 @@ export class factory { static createIdParameter(): arkts.ETSParameterExpression { return arkts.factory.createParameterDeclaration( arkts.factory.createIdentifier(RuntimeNames.ID, - arkts.factory.createIdentifier(RuntimeNames.ID_TYPE) + arkts.factory.createTypeReference( + arkts.factory.createTypeReferencePart( + arkts.factory.createIdentifier(RuntimeNames.ID_TYPE) + ) + ) ), undefined ) -- Gitee From 779c91e2dfbd48db4fcf09095effd293a590e918 Mon Sep 17 00:00:00 2001 From: Dmitrii Naumov Date: Mon, 3 Mar 2025 12:36:57 +0800 Subject: [PATCH 5/8] regen Signed-off-by: Dmitrii Naumov --- .../libarkts/src/generated/peers/AnnotationDeclaration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arkoala-arkts/libarkts/src/generated/peers/AnnotationDeclaration.ts b/arkoala-arkts/libarkts/src/generated/peers/AnnotationDeclaration.ts index 551b1b917e..98f530d3d4 100644 --- a/arkoala-arkts/libarkts/src/generated/peers/AnnotationDeclaration.ts +++ b/arkoala-arkts/libarkts/src/generated/peers/AnnotationDeclaration.ts @@ -32,7 +32,7 @@ import { import { Statement } from "./Statement" import { Expression } from "./Expression" import { Identifier } from "./Identifier" -import { AnnotationUsage } from "./AnnotationUsage"; +import { AnnotationUsage } from "./AnnotationUsage" export class AnnotationDeclaration extends Statement { constructor(pointer: KNativePointer) { assertValidPeer(pointer, 1) -- Gitee From 2353af4cbe995aa43058c5d5fbc43c696d49304f Mon Sep 17 00:00:00 2001 From: Dmitrii Naumov Date: Mon, 3 Mar 2025 12:12:23 +0800 Subject: [PATCH 6/8] import specifier Signed-off-by: Dmitrii Naumov --- .../src/arkts-api/factory/nodeFactory.ts | 6 ++--- arkoala-arkts/libarkts/src/arkts-api/types.ts | 22 +------------------ 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts index a584168f9f..6d14377ea0 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts @@ -24,7 +24,6 @@ import { FunctionDeclaration, FunctionExpression, IfStatement, - ImportSpecifier, MethodDefinition, NumberLiteral, ReturnStatement, @@ -51,6 +50,7 @@ import { ETSUnionType, FunctionSignature, Identifier, + ImportSpecifier, StringLiteral, SuperExpression, TSInterfaceBody, @@ -185,10 +185,10 @@ export const factory = { return compose(EtsImportDeclaration.create) }, get createImportSpecifier() { - return ImportSpecifier.create + return ImportSpecifier.createImportSpecifier }, get updateImportSpecifier() { - return compose(ImportSpecifier.create) + return compose(ImportSpecifier.createImportSpecifier) }, // create ImportSource: ImportSource.create, diff --git a/arkoala-arkts/libarkts/src/arkts-api/types.ts b/arkoala-arkts/libarkts/src/arkts-api/types.ts index f0a0ada478..f094b05df7 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/types.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/types.ts @@ -51,6 +51,7 @@ import { Expression, FunctionSignature, Identifier, + ImportSpecifier, Literal, StringLiteral, TSTypeParameterDeclaration, @@ -777,26 +778,6 @@ export class EtsImportDeclaration extends AstNode { readonly hasDecl: boolean } -export class ImportSpecifier extends AstNode { - constructor(peer: KPtr) { - assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_IMPORT_SPECIFIER) - super(peer) - } - - static create( - imported: Identifier, - local: Identifier, - ): ImportSpecifier { - return new ImportSpecifier( - global.generatedEs2panda._CreateImportSpecifier( - global.context, - passNode(imported), - passNode(local), - ) - ) - } -} - const pairs: [Es2pandaAstNodeType, { new(peer: KNativePointer): AstNode }][] = [ [Es2pandaAstNodeType.AST_NODE_TYPE_ETS_MODULE, EtsScript], [Es2pandaAstNodeType.AST_NODE_TYPE_IDENTIFIER, Identifier], @@ -818,7 +799,6 @@ const pairs: [Es2pandaAstNodeType, { new(peer: KNativePointer): AstNode }][] = [ [Es2pandaAstNodeType.AST_NODE_TYPE_VARIABLE_DECLARATOR, VariableDeclarator], [Es2pandaAstNodeType.AST_NODE_TYPE_FUNCTION_EXPRESSION, FunctionExpression], [Es2pandaAstNodeType.AST_NODE_TYPE_ETS_IMPORT_DECLARATION, EtsImportDeclaration], - [Es2pandaAstNodeType.AST_NODE_TYPE_IMPORT_SPECIFIER, ImportSpecifier], ] pairs.forEach(([nodeType, astNode]) => nodeByType.set(nodeType, astNode) -- Gitee From 91a6997e15ff74ada8db552b95af2bab405f987a Mon Sep 17 00:00:00 2001 From: Dmitrii Naumov Date: Mon, 3 Mar 2025 13:35:02 +0800 Subject: [PATCH 7/8] more Signed-off-by: Dmitrii Naumov --- .../plugins/src/builder-lambda-transformer.ts | 6 ++-- .../src/arkts-api/factory/nodeFactory.ts | 6 ++-- .../src/arkts-api/factory/nodeTests.ts | 5 --- arkoala-arkts/libarkts/src/arkts-api/index.ts | 4 +++ .../to-be-generated/MemberExpression.ts | 3 +- arkoala-arkts/libarkts/src/arkts-api/types.ts | 35 ++----------------- arkoala-arkts/memo-plugin/src/MemoFactory.ts | 4 +-- 7 files changed, 16 insertions(+), 47 deletions(-) diff --git a/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts b/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts index 85306cc6e9..ad6db83701 100644 --- a/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts +++ b/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts @@ -18,7 +18,7 @@ import { AbstractVisitor } from "./AbstractVisitor"; const builderLambdaInstanceName = "instance" -function getLambdaArg(lambdaBody: arkts.AstNode, typeName: string|undefined): arkts.ArrowFunctionExpression { +function getLambdaArg(lambdaBody: arkts.Expression, typeName: string|undefined): arkts.ArrowFunctionExpression { const body = arkts.factory.createBlock( [ arkts.factory.createReturnStatement( @@ -271,8 +271,8 @@ function transformBuilderLambda(node: arkts.CallExpression): arkts.AstNode { const typeName = builderLambdaTypeName(leaf) const lambdaArg = getLambdaArg(lambdaBody, typeName) - let args: arkts.AstNode[] = leaf.arguments.length < 3 - ? leaf.arguments as arkts.AstNode[] + let args: readonly arkts.AstNode[] = leaf.arguments.length < 3 + ? leaf.arguments : [ ...leaf.arguments.slice(0, 2), builderLambdaBodyRewrite(leaf.arguments.at(2)!), diff --git a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts index 6d14377ea0..9f789a9397 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts @@ -26,7 +26,6 @@ import { IfStatement, MethodDefinition, NumberLiteral, - ReturnStatement, ScriptFunction, StructDeclaration, VariableDeclaration, @@ -51,6 +50,7 @@ import { FunctionSignature, Identifier, ImportSpecifier, + ReturnStatement, StringLiteral, SuperExpression, TSInterfaceBody, @@ -213,10 +213,10 @@ export const factory = { return compose(ETSUnionType.createETSUnionType) }, get createReturnStatement() { - return ReturnStatement.create + return ReturnStatement.create1ReturnStatement }, get updateReturnStatement() { - return compose(ReturnStatement.create) + return compose(ReturnStatement.create1ReturnStatement) }, get createIfStatement() { return IfStatement.create diff --git a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts index 29323c72cd..31ed8a9cbd 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts @@ -9,7 +9,6 @@ import { FunctionExpression, IfStatement, MethodDefinition, - ReturnStatement, ScriptFunction, StructDeclaration, VariableDeclaration, @@ -66,10 +65,6 @@ export function isScriptFunction(node: AstNode): node is ScriptFunction { return node instanceof ScriptFunction } -export function isReturnStatement(node: AstNode): node is ReturnStatement { - return node instanceof ReturnStatement -} - export function isEtsImportDeclaration(node: AstNode): node is EtsImportDeclaration { return node instanceof EtsImportDeclaration } diff --git a/arkoala-arkts/libarkts/src/arkts-api/index.ts b/arkoala-arkts/libarkts/src/arkts-api/index.ts index a2b5b7d7ef..975105d4de 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/index.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/index.ts @@ -34,6 +34,10 @@ export * from "../generated/peers/Identifier" export * from "../generated/peers/ETSTypeReference" export * from "../generated/peers/ETSTypeReferencePart" export * from "../generated/peers/ClassProperty" +export * from "../generated/peers/ReturnStatement" +export * from "../generated/peers/Expression" +export * from "../generated/peers/Statement" +export * from "../generated/peers/ImportSpecifier" export * from "./types" export * from "./utilities/private" diff --git a/arkoala-arkts/libarkts/src/arkts-api/to-be-generated/MemberExpression.ts b/arkoala-arkts/libarkts/src/arkts-api/to-be-generated/MemberExpression.ts index ac82136802..ee160eb16d 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/to-be-generated/MemberExpression.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/to-be-generated/MemberExpression.ts @@ -14,6 +14,7 @@ */ +import { Expression } from "../../generated" import { assertValidPeer, AstNode, @@ -25,7 +26,7 @@ import { global } from "../../reexport-for-generated" -export class MemberExpression extends AstNode { +export class MemberExpression extends Expression { constructor(peer: KNativePointer) { assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_MEMBER_EXPRESSION) super(peer) diff --git a/arkoala-arkts/libarkts/src/arkts-api/types.ts b/arkoala-arkts/libarkts/src/arkts-api/types.ts index f094b05df7..e16b5c2697 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/types.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/types.ts @@ -134,7 +134,7 @@ export class ExpressionStatement extends AstNode { // TODO: // the CallExpression idl Create signature doesn't include the trailing block at all. // Need to clarify with the compiler people if they will provide create signature with a trailing block argument. -export class CallExpression extends AstNode { +export class CallExpression extends Expression { constructor(peer: KPtr) { assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_CALL_EXPRESSION) super(peer) @@ -175,7 +175,7 @@ export class CallExpression extends AstNode { readonly expression: AstNode // Expression readonly typeArguments: readonly TypeNode[] | undefined - readonly arguments: readonly AstNode[] + readonly arguments: readonly Expression[] readonly trailingBlock: AstNode|undefined // BlockStatement } @@ -504,36 +504,6 @@ export class ETSParameterExpression extends Expression { identifier: Identifier } -export class ReturnStatement extends AstNode { - constructor(peer: KPtr) { - assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_RETURN_STATEMENT) - super(peer) - this.argument = unpackNode( - global.generatedEs2panda._ReturnStatementArgument(global.context, this.peer) - ) - } - - static create( - argument?: AstNode, - ): ReturnStatement { - if (argument === undefined) { - return new ReturnStatement( - global.generatedEs2panda._CreateReturnStatement( - global.context - ) - ) - } - return new ReturnStatement( - global.es2panda._CreateReturnStatement1( - global.context, - passNode(argument) - ) - ) - } - - readonly argument: AstNode | undefined -} - export class IfStatement extends AstNode { constructor(peer: KPtr) { assertValidPeer(peer, Es2pandaAstNodeType.AST_NODE_TYPE_IF_STATEMENT) @@ -786,7 +756,6 @@ const pairs: [Es2pandaAstNodeType, { new(peer: KNativePointer): AstNode }][] = [ [Es2pandaAstNodeType.AST_NODE_TYPE_FUNCTION_DECLARATION, FunctionDeclaration], [Es2pandaAstNodeType.AST_NODE_TYPE_SCRIPT_FUNCTION, ScriptFunction], [Es2pandaAstNodeType.AST_NODE_TYPE_BLOCK_STATEMENT, BlockStatement], - [Es2pandaAstNodeType.AST_NODE_TYPE_RETURN_STATEMENT, ReturnStatement], [Es2pandaAstNodeType.AST_NODE_TYPE_ETS_PARAMETER_EXPRESSION, ETSParameterExpression], [Es2pandaAstNodeType.AST_NODE_TYPE_TS_TYPE_PARAMETER_DECLARATION, TSTypeParameterDeclaration], [Es2pandaAstNodeType.AST_NODE_TYPE_CALL_EXPRESSION, CallExpression], diff --git a/arkoala-arkts/memo-plugin/src/MemoFactory.ts b/arkoala-arkts/memo-plugin/src/MemoFactory.ts index d6c541de68..6ac456efbc 100644 --- a/arkoala-arkts/memo-plugin/src/MemoFactory.ts +++ b/arkoala-arkts/memo-plugin/src/MemoFactory.ts @@ -231,7 +231,7 @@ export class factory { } // Compute - static createLambdaWrapper(node: arkts.AstNode): arkts.ArrowFunctionExpression { + static createLambdaWrapper(node: arkts.Expression): arkts.ArrowFunctionExpression { return arkts.factory.createArrowFunction( arkts.factory.createScriptFunction( arkts.factory.createBlock([ @@ -247,7 +247,7 @@ export class factory { ) ) } - static createComputeExpression(hash: arkts.NumberLiteral | arkts.StringLiteral, node: arkts.AstNode): arkts.CallExpression { + static createComputeExpression(hash: arkts.NumberLiteral | arkts.StringLiteral, node: arkts.Expression): arkts.CallExpression { return arkts.factory.createCallExpression( arkts.factory.createMemberExpression( arkts.factory.createIdentifier(RuntimeNames.CONTEXT), -- Gitee From 6ac3a847838169fe0d27a635d575254a979d2582 Mon Sep 17 00:00:00 2001 From: Dmitrii Naumov Date: Mon, 3 Mar 2025 15:51:20 +0800 Subject: [PATCH 8/8] reindent Signed-off-by: Dmitrii Naumov --- arkoala-arkts/libarkts/package.json | 86 ++++++++++++++--------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/arkoala-arkts/libarkts/package.json b/arkoala-arkts/libarkts/package.json index afacc015b7..a74a98bdfb 100644 --- a/arkoala-arkts/libarkts/package.json +++ b/arkoala-arkts/libarkts/package.json @@ -1,45 +1,45 @@ { - "name": "@koalaui/libarkts", - "private": true, - "main": "./build/src/es2panda.js", - "types": "./build/src/arkts-api/index.d.ts", - "exports": { - ".": "./build/src/arkts-api/index.js", - "./plugins/*": "./plugins/build/src/*.js" - }, - "files": [ - "./build/*" - ], - "config": { - "gen_version": "3.0.29", - "input_file": "../../incremental/tools/panda/node_modules/@panda/sdk/ohos_arm64/include/tools/es2panda/generated/es2panda_lib/es2panda_lib.idl" - }, - "dependencies": { - }, - "scripts": { - "clean": "rimraf build native/build*", - "clean:plugins": "rimraf plugins/build", - "compile:koala:interop": "npm run --prefix ../../interop compile", - "compile:meson": "cd native && meson setup build && meson compile -C build", - "copy:.node": "mkdir -p ./build/native/build && cp ./native/build/es2panda.node ./build/native/build", - "compile:native": "npm run compile:koala:interop && npm run compile:meson && npm run copy:.node", - "compile:src": "npx ets-tsc -p ./tsconfig.json", - "compile": "npm run compile:native && npm run compile:src", - "compile:plugins": "npx ets-tsc -p plugins/tsconfig.json", - "restart": "PANDA_SDK_PATH=../../incremental/tools/panda/node_modules/@panda/sdk node . --file ./plugins/input/main.sts --output ./build/abc/main.abc --dump-plugin-ast --arktsconfig ./arktsconfig.json --restart-stages", - "direct": "PANDA_SDK_PATH=../../incremental/tools/panda/node_modules/@panda/sdk node . --file ./plugins/input/no-import-no-struct.sts --output ./build/abc/no-import-no-struct.abc --dump-plugin-ast --arktsconfig ./arktsconfig-print-only.json", - "memo": "PANDA_SDK_PATH=../../incremental/tools/panda/node_modules/@panda/sdk node . --file ./plugins/input/memo.sts --output ./build/abc/memo.abc --dump-plugin-ast --arktsconfig ./arktsconfig-memo.json --restart-stages", - "run": "npm run compile && npm run compile:plugins && npm run compile --prefix ../memo-plugin && npm run restart", - "run:memo": "npm run compile && npm run compile:plugins && npm run compile --prefix ../memo-plugin && npm run memo", - "run:abc": "../../incremental/tools/panda/node_modules/@panda/sdk/linux_host_tools/bin/ark --load-runtimes=ets --boot-panda-files=../../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc ./main.abc main.ETSGLOBAL::main", - "mocha": "PANDA_SDK_PATH=../../incremental/tools/panda/node_modules/@panda/sdk TS_NODE_PROJECT=./test/tsconfig.json mocha -r tsconfig-paths/register --reporter-option maxDiffSize=0", - "test": "npm run compile:native && npm run mocha", - "compile:playground": "cd playground && meson setup build && meson compile -C build", - "run:playground": "npm run compile:playground && ./playground/build/playground.out", - "panda:sdk:clean": "cd ../../incremental/tools/panda && rimraf node_modules", - "panda:sdk:install": "cd ../../incremental/tools/panda && npm run panda:sdk:install", - "panda:sdk:reinstall": "npm run panda:sdk:clean && npm run panda:sdk:install", - "regenerate": "npx @idlizer/libarkts-gen@$npm_package_config_gen_version --input-file $npm_package_config_input_file --output-dir ../ --files bridges,nativeModule", - "reinstall:regenerate": "npm run panda:sdk:reinstall && npm run regenerate" - } + "name": "@koalaui/libarkts", + "private": true, + "main": "./build/src/es2panda.js", + "types": "./build/src/arkts-api/index.d.ts", + "exports": { + ".": "./build/src/arkts-api/index.js", + "./plugins/*": "./plugins/build/src/*.js" + }, + "files": [ + "./build/*" + ], + "config": { + "gen_version": "3.0.29", + "input_file": "../../incremental/tools/panda/node_modules/@panda/sdk/ohos_arm64/include/tools/es2panda/generated/es2panda_lib/es2panda_lib.idl" + }, + "dependencies": { + }, + "scripts": { + "clean": "rimraf build native/build*", + "clean:plugins": "rimraf plugins/build", + "compile:koala:interop": "npm run --prefix ../../interop compile", + "compile:meson": "cd native && meson setup build && meson compile -C build", + "copy:.node": "mkdir -p ./build/native/build && cp ./native/build/es2panda.node ./build/native/build", + "compile:native": "npm run compile:koala:interop && npm run compile:meson && npm run copy:.node", + "compile:src": "npx ets-tsc -p ./tsconfig.json", + "compile": "npm run compile:native && npm run compile:src", + "compile:plugins": "npx ets-tsc -p plugins/tsconfig.json", + "restart": "PANDA_SDK_PATH=../../incremental/tools/panda/node_modules/@panda/sdk node . --file ./plugins/input/main.sts --output ./build/abc/main.abc --dump-plugin-ast --arktsconfig ./arktsconfig.json --restart-stages", + "direct": "PANDA_SDK_PATH=../../incremental/tools/panda/node_modules/@panda/sdk node . --file ./plugins/input/no-import-no-struct.sts --output ./build/abc/no-import-no-struct.abc --dump-plugin-ast --arktsconfig ./arktsconfig-print-only.json", + "memo": "PANDA_SDK_PATH=../../incremental/tools/panda/node_modules/@panda/sdk node . --file ./plugins/input/memo.sts --output ./build/abc/memo.abc --dump-plugin-ast --arktsconfig ./arktsconfig-memo.json --restart-stages", + "run": "npm run compile && npm run compile:plugins && npm run compile --prefix ../memo-plugin && npm run restart", + "run:memo": "npm run compile && npm run compile:plugins && npm run compile --prefix ../memo-plugin && npm run memo", + "run:abc": "../../incremental/tools/panda/node_modules/@panda/sdk/linux_host_tools/bin/ark --load-runtimes=ets --boot-panda-files=../../incremental/tools/panda/node_modules/@panda/sdk/ets/etsstdlib.abc ./main.abc main.ETSGLOBAL::main", + "mocha": "PANDA_SDK_PATH=../../incremental/tools/panda/node_modules/@panda/sdk TS_NODE_PROJECT=./test/tsconfig.json mocha -r tsconfig-paths/register --reporter-option maxDiffSize=0", + "test": "npm run compile:native && npm run mocha", + "compile:playground": "cd playground && meson setup build && meson compile -C build", + "run:playground": "npm run compile:playground && ./playground/build/playground.out", + "panda:sdk:clean": "cd ../../incremental/tools/panda && rimraf node_modules", + "panda:sdk:install": "cd ../../incremental/tools/panda && npm run panda:sdk:install", + "panda:sdk:reinstall": "npm run panda:sdk:clean && npm run panda:sdk:install", + "regenerate": "npx @idlizer/libarkts-gen@$npm_package_config_gen_version --input-file $npm_package_config_input_file --output-dir ../ --files bridges,nativeModule", + "reinstall:regenerate": "npm run panda:sdk:reinstall && npm run regenerate" + } } -- Gitee