diff --git a/arkoala-arkts/libarkts/package.json b/arkoala-arkts/libarkts/package.json index afacc015b7beffb8c4edc6510a6e49c4eb4667d4..a74a98bdfb6cfc71a1b0f95d24fe55798ac22841 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" + } } diff --git a/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts b/arkoala-arkts/libarkts/plugins/src/builder-lambda-transformer.ts index 6b14bf6bf6b1d4b67fe311e5553e0627adad89e6..ad6db83701a99e679f54e5344d4a64563099c36e 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( @@ -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 ) @@ -267,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/plugins/src/component-transformer.ts b/arkoala-arkts/libarkts/plugins/src/component-transformer.ts index a40db46df9996c0f4b426582cdaf9fc9d39a5802..180ff903fb5bdcf44ff209aef03c3d95f08fdb57 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 6233ae7805726a612cd9c291d9daed4083d87f7a..a14a0b3c552c008c7aa623add4ba6b069c14a849 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 ca2a7fb80379eb61f4137ba8878ec7e8d6d3ce51..9f789a939745a227847417cafa431b133f1108dc 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeFactory.ts @@ -17,21 +17,15 @@ import { updateNodeByNode } from "../utilities/private" import { ArrowFunctionExpression, CallExpression, - ClassProperty, EtsImportDeclaration, ETSParameterExpression, EtsScript, - ETSTypeReference, - ETSTypeReferencePart, ExpressionStatement, FunctionDeclaration, FunctionExpression, - Identifier, IfStatement, - ImportSpecifier, MethodDefinition, NumberLiteral, - ReturnStatement, ScriptFunction, StructDeclaration, VariableDeclaration, @@ -45,13 +39,18 @@ import { BlockStatement, ClassDeclaration, ClassDefinition, + ClassProperty, ConditionalExpression, ETSFunctionType, ETSPrimitiveType, + ETSTypeReference, + ETSTypeReferencePart, ETSUndefinedType, ETSUnionType, FunctionSignature, - Identifier as GeneratedIdentifier, + Identifier, + ImportSpecifier, + ReturnStatement, 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 @@ -193,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, @@ -221,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 @@ -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 0f246a70127c7be63cccbfa8f250ab201615eb3e..31ed8a9cbd409bf2c175d1980a440bf041241b85 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/factory/nodeTests.ts @@ -1,17 +1,14 @@ import { ArrowFunctionExpression, CallExpression, - ClassProperty, - ETSParameterExpression, EtsImportDeclaration, + ETSParameterExpression, EtsScript, ExpressionStatement, FunctionDeclaration, FunctionExpression, - Identifier, IfStatement, MethodDefinition, - ReturnStatement, ScriptFunction, StructDeclaration, VariableDeclaration, @@ -20,10 +17,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,14 +65,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 -} - 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 e2b7a2cde6b2c91750b7da9661e60666796c3cbd..975105d4de9dc01648c14613bb4658e989bdfa6e 100644 --- a/arkoala-arkts/libarkts/src/arkts-api/index.ts +++ b/arkoala-arkts/libarkts/src/arkts-api/index.ts @@ -30,6 +30,14 @@ 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 "../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" @@ -39,6 +47,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/to-be-generated/MemberExpression.ts b/arkoala-arkts/libarkts/src/arkts-api/to-be-generated/MemberExpression.ts index ac8213680266d3c21d870fa8db30698870834973..ee160eb16d087cee8b10894b2c10259aeea3f409 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 aca38e1847006b093f2d1dff6aee2b6fa34d26cd..e16b5c2697e09c8da89509497eb4cbe001be9965 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,10 @@ import { AnnotationUsage, BlockStatement, ClassDefinition, - ClassElement, Expression, FunctionSignature, + Identifier, + ImportSpecifier, Literal, StringLiteral, TSTypeParameterDeclaration, @@ -136,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) @@ -177,70 +175,10 @@ 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 } -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 +205,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) @@ -612,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) @@ -742,54 +604,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) @@ -934,26 +748,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], @@ -962,10 +756,7 @@ 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_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], @@ -977,6 +768,7 @@ 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(([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 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 5421f2d512466c70b15d71d77bd25117c49f5b19..ff38a4726713f55ec614c5f14cb3b6aad366dbf5 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 928e92ccc638c291d4d0fb40c8d667aa93078170..ac0d680a98b1480e7a328ed39adcb1f14d5eac25 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' + ) ) ) ), diff --git a/arkoala-arkts/memo-plugin/src/MemoFactory.ts b/arkoala-arkts/memo-plugin/src/MemoFactory.ts index 6b4d9c264685fb978705dc3ea8199e10200e6014..6ac456efbcdf03974e2db80dc65dd609e45f729c 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 ) @@ -222,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([ @@ -238,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),