From 7e91962652594183d617ceff69e5514c38f99e46 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 19 Feb 2025 03:40:51 +0300 Subject: [PATCH 1/5] Attaching memo plugin Signed-off-by: Alexander Gorshenev --- arkoala-arkts/libarkts/arktsconfig.json | 9 +++++++++ arkoala-arkts/package.json | 1 + arkoala-arkts/trivial/user/arktsconfig-pure-sts.json | 9 ++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/arkoala-arkts/libarkts/arktsconfig.json b/arkoala-arkts/libarkts/arktsconfig.json index 85e9e51f6..f04abed16 100644 --- a/arkoala-arkts/libarkts/arktsconfig.json +++ b/arkoala-arkts/libarkts/arktsconfig.json @@ -2,6 +2,11 @@ "compilerOptions": { "outDir": "./abc", "baseUrl": ".", + "paths": { + "@koalaui/runtime": [ + "../memo-plugin/runtime-api" + ] + }, "plugins": [ { "transform": "./plugins/build/src/printer-plugin.js", @@ -16,6 +21,10 @@ { "transform": "./plugins/build/src/checked-stage-plugin.js", "stage": "checked" + }, + { + "transform": "@koalaui/memo-plugin", + "stage": "checked" } ] } diff --git a/arkoala-arkts/package.json b/arkoala-arkts/package.json index ee2066012..effe48e80 100644 --- a/arkoala-arkts/package.json +++ b/arkoala-arkts/package.json @@ -4,6 +4,7 @@ "workspaces": [ "./arkui", "./libarkts", + "./memo-plugin", "./loader", "./har", "../arkoala/arkui-common", diff --git a/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json b/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json index 551fb7ed8..57b49b67b 100644 --- a/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json +++ b/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json @@ -4,7 +4,10 @@ "outDir": "build/sts/abc", "baseUrl": ".", "paths": { - "@ohos.arkui": ["../../arkui/src/sts"] + "@ohos.arkui": ["../../arkui/src/sts"], + "@koalaui/runtime": [ + "../../memo-plugin/runtime-api" + ] }, "plugins": [ { @@ -19,6 +22,10 @@ { "transform": "@koalaui/libarkts/plugins/checked-stage-plugin", "stage": "checked" + }, + { + "transform": "@koalaui/memo-plugin", + "stage": "checked" } ] }, -- Gitee From 3ffd29ee6eee2c6c008d504ef3d8e980a0220186 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 19 Feb 2025 03:48:19 +0300 Subject: [PATCH 2/5] more Signed-off-by: Alexander Gorshenev --- arkoala-arkts/libarkts/arktsconfig.json | 7 +++---- arkoala-arkts/trivial/user/arktsconfig-pure-sts.json | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/arkoala-arkts/libarkts/arktsconfig.json b/arkoala-arkts/libarkts/arktsconfig.json index f04abed16..b242bc41a 100644 --- a/arkoala-arkts/libarkts/arktsconfig.json +++ b/arkoala-arkts/libarkts/arktsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "outDir": "./abc", "baseUrl": ".", - "paths": { + "paths": { "@koalaui/runtime": [ "../memo-plugin/runtime-api" ] @@ -16,16 +16,15 @@ "transform": "./plugins/build/src/parsed-stage-plugin.js", "stage": "parsed", "arkui": "../../../arkui/src/sts" - }, { "transform": "./plugins/build/src/checked-stage-plugin.js", "stage": "checked" }, - { + { "transform": "@koalaui/memo-plugin", "stage": "checked" } ] } -} +} \ No newline at end of file diff --git a/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json b/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json index 57b49b67b..403d8fed3 100644 --- a/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json +++ b/arkoala-arkts/trivial/user/arktsconfig-pure-sts.json @@ -23,7 +23,7 @@ "transform": "@koalaui/libarkts/plugins/checked-stage-plugin", "stage": "checked" }, - { + { "transform": "@koalaui/memo-plugin", "stage": "checked" } -- Gitee From 1724b6b5ef8ffce3ecfd30d9bdaf49ab3c4606ed Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 19 Feb 2025 04:45:30 +0300 Subject: [PATCH 3/5] more Signed-off-by: Alexander Gorshenev --- arkoala-arkts/arkui/arktsconfig-pure-sts.json | 13 +++++++++++- arkoala-arkts/arkui/package.json | 2 +- arkoala-arkts/arkui/src/sts/arkui.sts | 21 +++++++++++++++---- arkoala-arkts/libarkts/src/es2panda.ts | 2 ++ arkoala-arkts/libarkts/src/utils.ts | 11 +++++++++- 5 files changed, 42 insertions(+), 7 deletions(-) diff --git a/arkoala-arkts/arkui/arktsconfig-pure-sts.json b/arkoala-arkts/arkui/arktsconfig-pure-sts.json index 52c609f78..edc6f83bc 100644 --- a/arkoala-arkts/arkui/arktsconfig-pure-sts.json +++ b/arkoala-arkts/arkui/arktsconfig-pure-sts.json @@ -2,7 +2,18 @@ "compilerOptions": { "package": "@ohos.arkui", "outDir": "build/sts/abc", - "baseUrl": "./src/sts" + "baseUrl": "./src/sts", + "paths": { + "@koalaui/runtime": [ + "../../../memo-plugin/runtime-api" + ] + }, + "plugins": [ + { + "transform": "@koalaui/libarkts/plugins/printer-plugin", + "stage": "checked" + } + ] }, "files": [ "./src/sts/arkui.sts" diff --git a/arkoala-arkts/arkui/package.json b/arkoala-arkts/arkui/package.json index b09a5f050..0674cb108 100644 --- a/arkoala-arkts/arkui/package.json +++ b/arkoala-arkts/arkui/package.json @@ -10,6 +10,6 @@ "build:arkui-no-common:inc": "npm run unmemoize && fast-arktsc --input-files ./arktsconfig-unmemoized.json --output-dir ./build --compiler ../../incremental/tools/panda/arkts/arktsc --link-name arkui-no-common && ninja ${NINJA_OPTIONS} -f build/build.ninja", "build:arkui-no-common": "npm run unmemoize && fast-arktsc --input-files ./arktsconfig-unmemoized.json --output-dir ./build --compiler ../../incremental/tools/panda/arkts/arktsc --link-name arkui-no-common && ninja ${NINJA_OPTIONS} -f build/build.ninja", "unmemoize": "ets-tsc -b ./tsconfig-unmemoize.json && cp -r ./src/generated/arkts ./build/unmemoized/src/generated", - "build:arkui:pure-sts": "mkdir -p build/sts/abc && ../../incremental/tools/panda/arkts/arktsc --arktsconfig arktsconfig-pure-sts.json" + "build:arkui:pure-sts": "mkdir -p build/sts/abc && ../../incremental/tools/panda/arkts/arktsc-capi --arktsconfig arktsconfig-pure-sts.json --file src/sts/arkui.sts --output build/sts/abc --dump-plugin-ast --restart-stages" } } diff --git a/arkoala-arkts/arkui/src/sts/arkui.sts b/arkoala-arkts/arkui/src/sts/arkui.sts index 58a5b1b1a..37d17fe33 100644 --- a/arkoala-arkts/arkui/src/sts/arkui.sts +++ b/arkoala-arkts/arkui/src/sts/arkui.sts @@ -11,35 +11,47 @@ export @interface State {} export @interface memo {} export abstract class StructBase { + @memo @BuilderLambda("instantiateImpl") static $_instantiate, OptionsS> ( factory: () => S, options?: OptionsS, - content?: () => void + @memo content?: () => void ): S { throw new Error("This method should only be called through a @BuilderLambda redirect") } + @memo static instantiateImpl, OptionsS>( - builder: ((instance: S)=>S)|undefined, + @memo builder: ((instance: S)=>S)|undefined, factory: () => S, options?: OptionsS, - content?: () => void + @memo content?: () => void ) { console.log("Struct instantiate redirected") const instance = factory() if (builder !== undefined) builder(instance) instance._build(builder, content, options) } + + @memo build() { throw new Error("The struct build() should never be executed directly") } - protected _build(style: ((instance: T)=>T)|undefined, content: (() => void)|undefined, options: OptionsT|undefined) { + @memo + protected _build( + @memo + style: ((instance: T)=>T)|undefined, + @memo + content: (() => void)|undefined, + options: OptionsT|undefined + ) { throw new Error("The struct _build() must have a valid override") } } +/* export enum Color { White, Red @@ -153,3 +165,4 @@ export class Text extends CommonMethod { return this } } +*/ diff --git a/arkoala-arkts/libarkts/src/es2panda.ts b/arkoala-arkts/libarkts/src/es2panda.ts index 46ba9309b..8410c3b99 100644 --- a/arkoala-arkts/libarkts/src/es2panda.ts +++ b/arkoala-arkts/libarkts/src/es2panda.ts @@ -75,10 +75,12 @@ function insertPlugin(pluginsByState: Map", "_cctor_") + + return filtered // dropEmptyEtsglobal(filtered) } +export function dropEmptyEtsglobal(text: string): string { + const lines = text.split('\n') + const index = lines.findIndex(it => it.includes('class ETSGLOBAL')) + if (index == -1 || index == undefined) return text + lines.splice(index, 3) + return lines.join("\n") +} -- Gitee From e7afe01e9f270758da5760d1d7b8230bae83cbe9 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 19 Feb 2025 04:52:32 +0300 Subject: [PATCH 4/5] dropped garbage Signed-off-by: Alexander Gorshenev --- arkoala-arkts/arkui/arktsconfig-pure-sts.json | 2 +- arkoala-arkts/libarkts/src/utils.ts | 10 +--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/arkoala-arkts/arkui/arktsconfig-pure-sts.json b/arkoala-arkts/arkui/arktsconfig-pure-sts.json index edc6f83bc..9d78ffcd2 100644 --- a/arkoala-arkts/arkui/arktsconfig-pure-sts.json +++ b/arkoala-arkts/arkui/arktsconfig-pure-sts.json @@ -10,7 +10,7 @@ }, "plugins": [ { - "transform": "@koalaui/libarkts/plugins/printer-plugin", + "transform": "@koalaui/memo-plugin", "stage": "checked" } ] diff --git a/arkoala-arkts/libarkts/src/utils.ts b/arkoala-arkts/libarkts/src/utils.ts index f2582a236..464eb7eb6 100644 --- a/arkoala-arkts/libarkts/src/utils.ts +++ b/arkoala-arkts/libarkts/src/utils.ts @@ -36,13 +36,5 @@ export function filterSource(text: string): string { .replaceAll(/#/g, "_") .replaceAll("", "_cctor_") - return filtered // dropEmptyEtsglobal(filtered) -} - -export function dropEmptyEtsglobal(text: string): string { - const lines = text.split('\n') - const index = lines.findIndex(it => it.includes('class ETSGLOBAL')) - if (index == -1 || index == undefined) return text - lines.splice(index, 3) - return lines.join("\n") + return filtered } -- Gitee From 0096a3423f8174d7b5be6ea5d53e4fc184cfdaa8 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 19 Feb 2025 04:57:19 +0300 Subject: [PATCH 5/5] more Signed-off-by: Alexander Gorshenev --- arkoala-arkts/libarkts/arktsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arkoala-arkts/libarkts/arktsconfig.json b/arkoala-arkts/libarkts/arktsconfig.json index b242bc41a..48dfefbf4 100644 --- a/arkoala-arkts/libarkts/arktsconfig.json +++ b/arkoala-arkts/libarkts/arktsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "package0": "@koalaui/example", "outDir": "./abc", "baseUrl": ".", "paths": { @@ -27,4 +28,4 @@ } ] } -} \ No newline at end of file +} -- Gitee