From 0f9630994510e88fca3a969f21f605bf0ec23b06 Mon Sep 17 00:00:00 2001 From: Aleksandr Veselov Date: Wed, 6 Aug 2025 18:33:43 +0300 Subject: [PATCH] Add clearContext --- ui2abc/libarkts/plugins/src/printer-plugin.ts | 4 ++-- ui2abc/libarkts/src-host/es2panda.ts | 2 +- ui2abc/libarkts/src/arkts-api/static/global.ts | 6 +++++- ui2abc/libarkts/src/index.ts | 1 + ui2abc/libarkts/test/arkts-api/general/recheck.test.ts | 6 +++--- ui2abc/libarkts/test/arkts-api/recheck/recheck.test.ts | 2 +- ui2abc/memo-plugin/src/entry.ts | 4 ++-- ui2abc/ui-plugins/src/annotation-translator.ts | 2 +- ui2abc/ui-plugins/src/call-transformer.ts | 2 +- ui2abc/ui-plugins/src/entry.ts | 4 ++-- ui2abc/ui-plugins/src/struct-recorder.ts | 2 +- 11 files changed, 20 insertions(+), 15 deletions(-) diff --git a/ui2abc/libarkts/plugins/src/printer-plugin.ts b/ui2abc/libarkts/plugins/src/printer-plugin.ts index 063f130e1..0d8734119 100644 --- a/ui2abc/libarkts/plugins/src/printer-plugin.ts +++ b/ui2abc/libarkts/plugins/src/printer-plugin.ts @@ -38,7 +38,7 @@ export function init(parsedJson?: Object, checkedJson?: Object) { parsed(hooks: arkts.RunTransformerHooks = parsedHooks) { console.log("[printer-plugin] Run parsed state plugin") const transform = printerTransformer(parsedJson) - const prog = arkts.arktsGlobal.compilerContext.program + const prog = arkts.arktsGlobal.compilerContext!.program const state = arkts.Es2pandaContextState.ES2PANDA_STATE_PARSED try { arkts.runTransformer(prog, state, transform, pluginContext, hooks) @@ -50,7 +50,7 @@ export function init(parsedJson?: Object, checkedJson?: Object) { checked(hooks: arkts.RunTransformerHooks = checkedHooks) { console.log("[printer-plugin] Run checked state plugin") const transform = printerTransformer(checkedJson) - const prog = arkts.arktsGlobal.compilerContext.program + const prog = arkts.arktsGlobal.compilerContext!.program const state = arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED try { arkts.runTransformer(prog, state, transform, pluginContext, hooks) diff --git a/ui2abc/libarkts/src-host/es2panda.ts b/ui2abc/libarkts/src-host/es2panda.ts index 25b24d7bf..fad61c145 100644 --- a/ui2abc/libarkts/src-host/es2panda.ts +++ b/ui2abc/libarkts/src-host/es2panda.ts @@ -112,7 +112,7 @@ function dumpMemoryProfilerInfo(str: string) { function dumpCompilationInfo(simultaneous: boolean) { traceGlobal(() => { - const programs = listPrograms(global.compilerContext.program) + const programs = listPrograms(global.compilerContext!.program) if (simultaneous) { const programsForCodegeneration = programs.filter(it => it.isGenAbcForExternal) traceGlobal(() => `Programs for codegeneration : ${programsForCodegeneration.length}`) diff --git a/ui2abc/libarkts/src/arkts-api/static/global.ts b/ui2abc/libarkts/src/arkts-api/static/global.ts index ac198cc9a..29318853a 100644 --- a/ui2abc/libarkts/src/arkts-api/static/global.ts +++ b/ui2abc/libarkts/src/arkts-api/static/global.ts @@ -47,7 +47,7 @@ export class global { } // Improve: rename to context when the pointer valued one is eliminated - public static compilerContext: Context + public static compilerContext: Context | undefined public static isContextGenerateAbcForExternalSourceFiles: boolean = false private static _es2panda: Es2pandaNativeModule | undefined = undefined @@ -77,4 +77,8 @@ export class global { // Check node type values during node creation public static validatePeerTypes = false + + public static clearContext(): void { + global.compilerContext = undefined + } } diff --git a/ui2abc/libarkts/src/index.ts b/ui2abc/libarkts/src/index.ts index 3d71d4ae7..730181a83 100644 --- a/ui2abc/libarkts/src/index.ts +++ b/ui2abc/libarkts/src/index.ts @@ -39,6 +39,7 @@ export * from "./arkts-api/peers/ExternalSource" export * from "./arkts-api/peers/ImportPathManager" export * from "./arkts-api/peers/Options" export { global as arktsGlobal } from "./arkts-api/static/global" +export * from "./arkts-api/static/globalUtils" export * as arkts from "./arkts-api" export * from "./plugin-utils" diff --git a/ui2abc/libarkts/test/arkts-api/general/recheck.test.ts b/ui2abc/libarkts/test/arkts-api/general/recheck.test.ts index 6ba9036b4..ad0e4e6ca 100644 --- a/ui2abc/libarkts/test/arkts-api/general/recheck.test.ts +++ b/ui2abc/libarkts/test/arkts-api/general/recheck.test.ts @@ -63,7 +63,7 @@ suite(util.basename(__filename), () => { arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_PARSED) - const program = arkts.arktsGlobal.compilerContext.program + const program = arkts.arktsGlobal.compilerContext!.program const importStorage = new arkts.ImportStorage(program, true) const module = program.ast as arkts.ETSModule @@ -128,11 +128,11 @@ console.log("test"); arkts.proceedToState(arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED) - const program = arkts.arktsGlobal.compilerContext.program + const program = arkts.arktsGlobal.compilerContext!.program const importStorage = new arkts.ImportStorage(program, true) const module = program.ast as arkts.ETSModule - arkts.arktsGlobal.compilerContext.program.getExternalSources().forEach(it => { + arkts.arktsGlobal.compilerContext!.program.getExternalSources().forEach(it => { if (!it.getName().includes("library")) return it.programs.forEach(program => { program.setAst(new RenameTestFunction().visitor(program.ast)) diff --git a/ui2abc/libarkts/test/arkts-api/recheck/recheck.test.ts b/ui2abc/libarkts/test/arkts-api/recheck/recheck.test.ts index ce11a18e5..da720d30a 100644 --- a/ui2abc/libarkts/test/arkts-api/recheck/recheck.test.ts +++ b/ui2abc/libarkts/test/arkts-api/recheck/recheck.test.ts @@ -68,7 +68,7 @@ function proceedToChecked() { } function applyTransformOnState(transform?: arkts.ProgramTransformer, state: arkts.Es2pandaContextState = arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED) { - arkts.runTransformer(arkts.arktsGlobal.compilerContext.program, state, transform, new arkts.PluginContextImpl(), {}) + arkts.runTransformer(arkts.arktsGlobal.compilerContext!.program, state, transform, new arkts.PluginContextImpl(), {}) } function recheck() { diff --git a/ui2abc/memo-plugin/src/entry.ts b/ui2abc/memo-plugin/src/entry.ts index 61af10f89..9f8252848 100644 --- a/ui2abc/memo-plugin/src/entry.ts +++ b/ui2abc/memo-plugin/src/entry.ts @@ -27,7 +27,7 @@ export function init(parsedJson?: Object, checkedJson?: Object) { arkts.Tracer.pushContext('memo-plugin') arkts.traceGlobal(() => "Run parsed state plugin", true) const transform = parsedTransformer(parsedJson) - const prog = arkts.arktsGlobal.compilerContext.program + const prog = arkts.arktsGlobal.compilerContext!.program const state = arkts.Es2pandaContextState.ES2PANDA_STATE_PARSED try { arkts.runTransformer(prog, state, transform, pluginContext, hooks) @@ -41,7 +41,7 @@ export function init(parsedJson?: Object, checkedJson?: Object) { arkts.Tracer.pushContext('memo-plugin') arkts.traceGlobal(() => "Run checked state plugin", true) const transform = checkedTransformer(checkedJson) - const prog = arkts.arktsGlobal.compilerContext.program + const prog = arkts.arktsGlobal.compilerContext!.program const state = arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED try { arkts.runTransformer(prog, state, transform, pluginContext, hooks) diff --git a/ui2abc/ui-plugins/src/annotation-translator.ts b/ui2abc/ui-plugins/src/annotation-translator.ts index 3ec8af741..e65f6040d 100644 --- a/ui2abc/ui-plugins/src/annotation-translator.ts +++ b/ui2abc/ui-plugins/src/annotation-translator.ts @@ -22,7 +22,7 @@ export class AnnotationsTransformer extends arkts.AbstractVisitor { constructor(options?: arkts.VisitorOptions) { super(options) - this.program = arkts.global.compilerContext.program + this.program = arkts.global.compilerContext!.program } diff --git a/ui2abc/ui-plugins/src/call-transformer.ts b/ui2abc/ui-plugins/src/call-transformer.ts index 0d68a1c79..3fc3fce88 100644 --- a/ui2abc/ui-plugins/src/call-transformer.ts +++ b/ui2abc/ui-plugins/src/call-transformer.ts @@ -25,7 +25,7 @@ export class CallTransformer extends arkts.AbstractVisitor { constructor(private imports: Importer, options?: ComponentTransformerOptions) { super() - this.program = arkts.global.compilerContext.program + this.program = arkts.global.compilerContext!.program this.applicationInfo = options?.applicationInfo } diff --git a/ui2abc/ui-plugins/src/entry.ts b/ui2abc/ui-plugins/src/entry.ts index 98ef43f9e..827afa9cb 100644 --- a/ui2abc/ui-plugins/src/entry.ts +++ b/ui2abc/ui-plugins/src/entry.ts @@ -28,7 +28,7 @@ export function init(parsedJson?: Object, checkedJson?: Object) { arkts.Tracer.pushContext('ui-plugin') arkts.traceGlobal(() => "Run parsed state plugin", true) const transform = parsedTransformer(parsedJson) - const prog = arkts.arktsGlobal.compilerContext.program + const prog = arkts.arktsGlobal.compilerContext!.program const state = arkts.Es2pandaContextState.ES2PANDA_STATE_PARSED try { arkts.runTransformer(prog, state, transform, pluginContext, hooks) @@ -42,7 +42,7 @@ export function init(parsedJson?: Object, checkedJson?: Object) { arkts.Tracer.pushContext('ui-plugin') arkts.traceGlobal(() => "Run checked state plugin", true) const transform = checkedTransformer(checkedJson) - const prog = arkts.arktsGlobal.compilerContext.program + const prog = arkts.arktsGlobal.compilerContext!.program const state = arkts.Es2pandaContextState.ES2PANDA_STATE_CHECKED try { arkts.runTransformer(prog, state, transform, pluginContext, hooks) diff --git a/ui2abc/ui-plugins/src/struct-recorder.ts b/ui2abc/ui-plugins/src/struct-recorder.ts index 48f3563cc..62d7144d4 100644 --- a/ui2abc/ui-plugins/src/struct-recorder.ts +++ b/ui2abc/ui-plugins/src/struct-recorder.ts @@ -61,7 +61,7 @@ export class StructsResolver { } init() { - for (let source of arkts.global.compilerContext.program.getExternalSources()) { + for (let source of arkts.arktsGlobal.compilerContext!.program.getExternalSources()) { const name = source.getName() if (name.startsWith("std.")) continue if (name.startsWith("escompat")) continue -- Gitee