From 41b10b245362d8f3570fb1200ac1361af6ab6ec0 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Sat, 31 May 2025 09:45:47 +0300 Subject: [PATCH 1/7] WIP --- ui2abc/libarkts/src-host/es2panda.ts | 2 ++ ui2abc/ui-plugins/src/parsed-stage-plugin.ts | 6 +++-- ui2abc/ui-plugins/src/struct-recorder.ts | 24 ++++++++++++++------ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/ui2abc/libarkts/src-host/es2panda.ts b/ui2abc/libarkts/src-host/es2panda.ts index a59eb50b4..3c6781dfe 100644 --- a/ui2abc/libarkts/src-host/es2panda.ts +++ b/ui2abc/libarkts/src-host/es2panda.ts @@ -245,6 +245,8 @@ function invokeWithPlugins( const context = new PluginContextImpl() + context.setParameter("restart", restart) + pluginsByState.get(Es2pandaContextState.ES2PANDA_STATE_PARSED)?.forEach(plugin => { insertPlugin(source, plugin, Es2pandaContextState.ES2PANDA_STATE_PARSED, dumpAst, restart, context) restartProcedure() diff --git a/ui2abc/ui-plugins/src/parsed-stage-plugin.ts b/ui2abc/ui-plugins/src/parsed-stage-plugin.ts index 0b73f4486..9416dd3f7 100644 --- a/ui2abc/ui-plugins/src/parsed-stage-plugin.ts +++ b/ui2abc/ui-plugins/src/parsed-stage-plugin.ts @@ -27,9 +27,11 @@ export default function parsedTransformer( userPluginOptions?: ComponentTransformerOptions ): arkts.ProgramTransformer { return (program: arkts.Program, _compilationOptions: arkts.CompilationOptions, context: arkts.PluginContext) => { + const restart = context.parameter("restart")! const importer = new Importer() - const resolver = new StructsResolver() - const structs = new StructTable(arkts.global.newFilePath ? `${arkts.global.newFilePath}.meta.json` : undefined) + const resolver = new StructsResolver(restart) + const currentFile = restart ? arkts.global.newFilePath : arkts.global.filePath + const structs = new StructTable(currentFile, restart ? undefined : resolver) context.setParameter("structsTable", resolver) context.setParameter("importer", importer) const transformers: arkts.AbstractVisitor[] = [ diff --git a/ui2abc/ui-plugins/src/struct-recorder.ts b/ui2abc/ui-plugins/src/struct-recorder.ts index ef40ed42b..8702eede6 100644 --- a/ui2abc/ui-plugins/src/struct-recorder.ts +++ b/ui2abc/ui-plugins/src/struct-recorder.ts @@ -49,6 +49,12 @@ export class StructDescriptor { export class StructsResolver { private structByFile = new Map() + constructor(private restart: boolean) {} + + addTable(fileName: string, table: StructTable) { + this.structByFile.set(fileName, table) + } + findDeclarationFile(declaration: arkts.AstNode): string { let current: arkts.AstNode|undefined = declaration while (current && !arkts.isETSModule(current)) { @@ -64,8 +70,8 @@ export class StructsResolver { if (!declarationFile) throw new Error(`No declaration file`) let structs = this.structByFile.get(declarationFile) if (!structs) { - structs = new StructTable(`${declarationFile}.meta.json`) - this.structByFile.set(declarationFile, structs) + structs = new StructTable(`${declarationFile}.meta.json`, this.restart ? undefined : this) + this.addTable(declarationFile, structs) } return structs } @@ -88,14 +94,18 @@ export class StructsResolver { export class StructTable { private structByName = new Map() - constructor(public database: string|undefined) { - if (database && fs.existsSync(database)) { + constructor(private fileName: string, private resolverToSync: StructsResolver|undefined) { + if (fs.existsSync(this.database(fileName))) { try { - this.addDescriptors(StructDescriptor.fromJSON(JSON.parse(fs.readFileSync(database, "utf-8")))) + this.addDescriptors(StructDescriptor.fromJSON(JSON.parse(fs.readFileSync(this.database(fileName), "utf-8")))) } catch (e: any) { console.log(e.stack) } } + resolverToSync?.addTable(fileName, this) + } + private database(fileName: string): string { + return `${fileName}.meta.json` } findStruct(name: string): StructDescriptor|undefined { return this.structByName.get(name) @@ -131,14 +141,14 @@ export class StructTable { return decorators.concat(annotations) } update() { - if (!this.database) return + if (this.resolverToSync) return if (this.structByName.size == 0) return let lines = [] for (let desc of this.structByName.values()) { lines.push(desc.toJSON()) } let result = `{"structs": [ ${lines.join(",")} ]}` - fs.writeFileSync(this.database, result) + fs.writeFileSync(this.database(this.fileName), result) } } -- Gitee From 5d993d791ce4f6b2806882991a81bde8964d1ed0 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Sat, 31 May 2025 10:00:34 +0300 Subject: [PATCH 2/7] WIP --- ui2abc/ui-plugins/src/parsed-stage-plugin.ts | 2 +- ui2abc/ui-plugins/src/struct-recorder.ts | 27 ++++++++++++++------ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/ui2abc/ui-plugins/src/parsed-stage-plugin.ts b/ui2abc/ui-plugins/src/parsed-stage-plugin.ts index 9416dd3f7..5278830d1 100644 --- a/ui2abc/ui-plugins/src/parsed-stage-plugin.ts +++ b/ui2abc/ui-plugins/src/parsed-stage-plugin.ts @@ -27,7 +27,7 @@ export default function parsedTransformer( userPluginOptions?: ComponentTransformerOptions ): arkts.ProgramTransformer { return (program: arkts.Program, _compilationOptions: arkts.CompilationOptions, context: arkts.PluginContext) => { - const restart = context.parameter("restart")! + const restart = context.parameter("restart") ?? false const importer = new Importer() const resolver = new StructsResolver(restart) const currentFile = restart ? arkts.global.newFilePath : arkts.global.filePath diff --git a/ui2abc/ui-plugins/src/struct-recorder.ts b/ui2abc/ui-plugins/src/struct-recorder.ts index 8702eede6..fc46479d7 100644 --- a/ui2abc/ui-plugins/src/struct-recorder.ts +++ b/ui2abc/ui-plugins/src/struct-recorder.ts @@ -46,6 +46,10 @@ export class StructDescriptor { } } +function database(fileName: string): string { + return `${fileName}.meta.json` +} + export class StructsResolver { private structByFile = new Map() @@ -70,7 +74,7 @@ export class StructsResolver { if (!declarationFile) throw new Error(`No declaration file`) let structs = this.structByFile.get(declarationFile) if (!structs) { - structs = new StructTable(`${declarationFile}.meta.json`, this.restart ? undefined : this) + structs = new StructTable(database(declarationFile), this.restart ? undefined : this) this.addTable(declarationFile, structs) } return structs @@ -89,23 +93,30 @@ export class StructsResolver { if (!declaration) return undefined return this.declarationToTable(declaration).findStruct(name.name) } + + hasDefinition(filename: string): boolean { + return this.structByFile.get(filename) != undefined + } } export class StructTable { private structByName = new Map() constructor(private fileName: string, private resolverToSync: StructsResolver|undefined) { - if (fs.existsSync(this.database(fileName))) { + if (fs.existsSync(database(fileName))) { try { - this.addDescriptors(StructDescriptor.fromJSON(JSON.parse(fs.readFileSync(this.database(fileName), "utf-8")))) + this.addDescriptors(StructDescriptor.fromJSON(JSON.parse(fs.readFileSync(database(fileName), "utf-8")))) } catch (e: any) { console.log(e.stack) } } - resolverToSync?.addTable(fileName, this) - } - private database(fileName: string): string { - return `${fileName}.meta.json` + if (resolverToSync) { + // TODO: parse target file to extract declaration + if (!resolverToSync.hasDefinition(fileName)) { + // TODO: use StructRecorder visitor to fill the table. + resolverToSync.addTable(fileName, this) + } + } } findStruct(name: string): StructDescriptor|undefined { return this.structByName.get(name) @@ -148,7 +159,7 @@ export class StructTable { lines.push(desc.toJSON()) } let result = `{"structs": [ ${lines.join(",")} ]}` - fs.writeFileSync(this.database(this.fileName), result) + fs.writeFileSync(database(this.fileName), result) } } -- Gitee From e4ccd67b1cfd3128686843c0bc8a9a85488ab4de Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Sat, 31 May 2025 11:44:10 +0300 Subject: [PATCH 3/7] Glorify meta --- .../user/src/ets/pages/collect/nullPage.ets | 2 +- .../src/ets/pages/collect/singlePage1.ets | 2 +- .../user/src/ets/pages/homePage/User.ets | 2 +- ui2abc/libarkts/src-host/es2panda.ts | 6 +-- .../src/arkts-api/utilities/public.ts | 12 +++++- .../libarkts/src/generated/Es2pandaEnums.ts | 27 ++++++------- ui2abc/ui-plugins/src/struct-recorder.ts | 40 ++++++++++++------- 7 files changed, 55 insertions(+), 36 deletions(-) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/collect/nullPage.ets b/arkoala-arkts/shopping/user/src/ets/pages/collect/nullPage.ets index 73bfd6a1c..c598af407 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/collect/nullPage.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/collect/nullPage.ets @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Color, Flex, Text, FlexAlign, ItemAlign, FlexDirection, Margin } from '@ohos.arkui' +import { Color, Flex, FlexOptions, Text, FlexAlign, ItemAlign, FlexDirection, Margin } from '@ohos.arkui' @Component diff --git a/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage1.ets b/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage1.ets index 59ee1ce64..56752b74f 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage1.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage1.ets @@ -13,7 +13,7 @@ * limitations under the License. */ import { GoodsType} from '../../data/singleData'; -import { Margin, Padding, TextOverflow, TextOverflowOptions, Image, Column, Flex, Text, Row, ImageFit, FlexAlign, ItemAlign, Color, BorderOptions, FontWeight, HorizontalAlign, VerticalAlign } from "@ohos.arkui" +import { Margin, Padding, TextOverflow, TextOverflowOptions, Image, Column, ColumnOptions, FlexOptions, RowOptions, Flex, Text, Row, ImageFit, FlexAlign, ItemAlign, Color, BorderOptions, FontWeight, HorizontalAlign, VerticalAlign } from "@ohos.arkui" @Component export struct SinglePage1 { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets index 843db214d..635728eb0 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets @@ -19,7 +19,7 @@ import { recordData, orderData, discountData, serviceData } from '../../data/hom import { Core2 } from './core2' import { SearchParam } from '../../model/routeModel' import { cacheId } from './main' -import { Padding, FlexDirection, Image, Scroll, Scroller, Column, ColumnOptions, RowOptions, ColumnOptions, FlexOptions, Row, Flex, FlexAlign, Text, ItemAlign, FontWeight,TextOverflow, TextOverflowOptions, BorderOptions, ImageFit, Margin, ClickEvent, Color, ForEach, HorizontalAlign, BarState } from '@ohos.arkui' +import { Padding, FlexDirection, Image, Scroll, Scroller, Column, ColumnOptions, RowOptions, Row, Flex, FlexOptions, FlexAlign, Text, ItemAlign, FontWeight,TextOverflow, TextOverflowOptions, BorderOptions, ImageFit, Margin, ClickEvent, Color, ForEach, HorizontalAlign, BarState } from '@ohos.arkui' @Component export struct User { diff --git a/ui2abc/libarkts/src-host/es2panda.ts b/ui2abc/libarkts/src-host/es2panda.ts index 3c6781dfe..2a73b5efa 100644 --- a/ui2abc/libarkts/src-host/es2panda.ts +++ b/ui2abc/libarkts/src-host/es2panda.ts @@ -15,7 +15,7 @@ import * as fs from "node:fs" import * as path from "node:path" -import { checkSDK, arktsGlobal as global, ImportStorage, ETSModule, ProgramProvider } from "@koalaui/libarkts" +import { checkSDK, arktsGlobal as global, ImportStorage, ETSModule, ProgramProvider, metaDatabase } from "@koalaui/libarkts" import { CheckedBackFilter, ChainExpressionFilter, PluginContext, PluginContextImpl } from "@koalaui/libarkts" import { Command } from "commander" import { filterSource, isNumber, throwError, withWarning } from "@koalaui/libarkts" @@ -226,8 +226,8 @@ function invokeWithPlugins( const newConfigPath = `${configPath.substring(0, configPath.length - pluginNames[pluginsApplied].length - ext.length)}${pluginNames[pluginsApplied + 1]}${ext}` const newFilePath = path.resolve(outDir, pluginNames[pluginsApplied], global.filePathFromPackageRoot) global.newFilePath = newFilePath - if (fs.existsSync(`${filePath}.meta.json`)) { - fs.copyFileSync(`${filePath}.meta.json`, `${newFilePath}.meta.json`) + if (fs.existsSync(metaDatabase(filePath))) { + fs.copyFileSync(metaDatabase(filePath), metaDatabase(newFilePath)) } if (pluginsApplied == stage) { // uncomment if switch to dets generator diff --git a/ui2abc/libarkts/src/arkts-api/utilities/public.ts b/ui2abc/libarkts/src/arkts-api/utilities/public.ts index 46df8f561..5406e1301 100644 --- a/ui2abc/libarkts/src/arkts-api/utilities/public.ts +++ b/ui2abc/libarkts/src/arkts-api/utilities/public.ts @@ -41,7 +41,12 @@ export function createETSModuleFromContext(): ETSModule { if (program == nullptr) { throw new Error(`Program is null for context ${global.context.toString(16)}`) } - return new ETSModule(global.es2panda._ProgramAst(global.context, program)) + const ast = global.es2panda._ProgramAst(global.context, program) + if (ast == nullptr) { + throw new Error(`AST is null for program ${program.toString(16)}`) + + } + return new ETSModule(ast) } export function createETSModuleFromSource( @@ -59,6 +64,11 @@ export function createETSModuleFromSource( return new ETSModule(global.es2panda._ProgramAst(global.context, program)) } +export function metaDatabase(fileName: string): string { + if (fileName.endsWith(".meta.json")) throw new Error(`Must pass source, not database: ${fileName}`) + return `${fileName}.meta.json` +} + export function updateETSModuleByStatements( node: ETSModule, statements: readonly AstNode[], diff --git a/ui2abc/libarkts/src/generated/Es2pandaEnums.ts b/ui2abc/libarkts/src/generated/Es2pandaEnums.ts index fcb6562ac..1754ad204 100644 --- a/ui2abc/libarkts/src/generated/Es2pandaEnums.ts +++ b/ui2abc/libarkts/src/generated/Es2pandaEnums.ts @@ -530,14 +530,13 @@ export enum Es2pandaTokenType { export enum Es2pandaAstNodeFlags { AST_NODE_FLAGS_NO_OPTS = 0, AST_NODE_FLAGS_CHECKCAST = 1, - AST_NODE_FLAGS_CONVERT_TO_STRING = 2, - AST_NODE_FLAGS_ALLOW_REQUIRED_INSTANTIATION = 4, - AST_NODE_FLAGS_HAS_EXPORT_ALIAS = 8, - AST_NODE_FLAGS_GENERATE_VALUE_OF = 16, - AST_NODE_FLAGS_RECHECK = 32, - AST_NODE_FLAGS_NOCLEANUP = 64, - AST_NODE_FLAGS_RESIZABLE_REST = 128, - AST_NODE_FLAGS_TMP_CONVERT_PRIMITIVE_CAST_METHOD_CALL = 256 + AST_NODE_FLAGS_ALLOW_REQUIRED_INSTANTIATION = 2, + AST_NODE_FLAGS_HAS_EXPORT_ALIAS = 4, + AST_NODE_FLAGS_GENERATE_VALUE_OF = 8, + AST_NODE_FLAGS_RECHECK = 16, + AST_NODE_FLAGS_NOCLEANUP = 32, + AST_NODE_FLAGS_RESIZABLE_REST = 64, + AST_NODE_FLAGS_TMP_CONVERT_PRIMITIVE_CAST_METHOD_CALL = 128 } export enum Es2pandaModifierFlags { MODIFIER_FLAGS_NONE = 0, @@ -713,7 +712,6 @@ export enum Es2pandaTypeRelationFlag { TYPE_RELATION_FLAG_NO_THROW_GENERIC_TYPEALIAS = 8388608, TYPE_RELATION_FLAG_OVERRIDING_CONTEXT = 16777216, TYPE_RELATION_FLAG_IGNORE_REST_PARAM = 33554432, - TYPE_RELATION_FLAG_STRING_TO_CHAR = 67108864, TYPE_RELATION_FLAG_ASSIGNMENT_CONTEXT = 14, TYPE_RELATION_FLAG_BRIDGE_CHECK = 17826816, TYPE_RELATION_FLAG_CASTING_CONTEXT = 524303 @@ -1308,12 +1306,11 @@ export enum Es2pandaProgramFlags { PROGRAM_FLAGS_AST_CHECK_PROCESSED = 2, PROGRAM_FLAGS_AST_ENUM_LOWERED = 4, PROGRAM_FLAGS_AST_BOXED_TYPE_LOWERED = 8, - PROGRAM_FLAGS_AST_CONST_STRING_TO_CHAR_LOWERED = 16, - PROGRAM_FLAGS_AST_CONSTANT_EXPRESSION_LOWERED = 32, - PROGRAM_FLAGS_AST_STRING_CONSTANT_LOWERED = 64, - PROGRAM_FLAGS_AST_IDENTIFIER_ANALYZED = 128, - PROGRAM_FLAGS_AST_HAS_SCOPES_INITIALIZED = 256, - PROGRAM_FLAGS_AST_HAS_OPTIONAL_PARAMETER_ANNOTATION = 512 + PROGRAM_FLAGS_AST_CONSTANT_EXPRESSION_LOWERED = 16, + PROGRAM_FLAGS_AST_STRING_CONSTANT_LOWERED = 32, + PROGRAM_FLAGS_AST_IDENTIFIER_ANALYZED = 64, + PROGRAM_FLAGS_AST_HAS_SCOPES_INITIALIZED = 128, + PROGRAM_FLAGS_AST_HAS_OPTIONAL_PARAMETER_ANNOTATION = 256 } export enum Es2pandaCompilationMode { COMPILATION_MODE_GEN_STD_LIB = 0, diff --git a/ui2abc/ui-plugins/src/struct-recorder.ts b/ui2abc/ui-plugins/src/struct-recorder.ts index fc46479d7..816e0ebbb 100644 --- a/ui2abc/ui-plugins/src/struct-recorder.ts +++ b/ui2abc/ui-plugins/src/struct-recorder.ts @@ -16,6 +16,7 @@ import * as arkts from "@koalaui/libarkts" import * as fs from "fs" import { CustomComponentNames } from "./utils" +import { metaDatabase } from "@koalaui/libarkts" export class PropertyDescriptor { constructor(public name: string, public decorators: string[]) { } @@ -46,10 +47,6 @@ export class StructDescriptor { } } -function database(fileName: string): string { - return `${fileName}.meta.json` -} - export class StructsResolver { private structByFile = new Map() @@ -74,7 +71,7 @@ export class StructsResolver { if (!declarationFile) throw new Error(`No declaration file`) let structs = this.structByFile.get(declarationFile) if (!structs) { - structs = new StructTable(database(declarationFile), this.restart ? undefined : this) + structs = new StructTable(declarationFile, this.restart ? undefined : this) this.addTable(declarationFile, structs) } return structs @@ -103,21 +100,36 @@ export class StructTable { private structByName = new Map() constructor(private fileName: string, private resolverToSync: StructsResolver|undefined) { - if (fs.existsSync(database(fileName))) { - try { - this.addDescriptors(StructDescriptor.fromJSON(JSON.parse(fs.readFileSync(database(fileName), "utf-8")))) - } catch (e: any) { - console.log(e.stack) - } - } if (resolverToSync) { - // TODO: parse target file to extract declaration if (!resolverToSync.hasDefinition(fileName)) { // TODO: use StructRecorder visitor to fill the table. resolverToSync.addTable(fileName, this) + this.parseFile() } + } else { + this.readDB() } } + readDB() { + const db = metaDatabase(this.fileName) + if (fs.existsSync(db)) { + console.log(`read DB ${db}`) + try { + this.addDescriptors( + StructDescriptor.fromJSON( + JSON.parse( + fs.readFileSync(db, "utf-8") + ) + ) + ) + } catch (e: any) { + console.log(e.stack) + } + } + } + parseFile() { + console.log("parseFile: BAD!") + } findStruct(name: string): StructDescriptor|undefined { return this.structByName.get(name) } @@ -159,7 +171,7 @@ export class StructTable { lines.push(desc.toJSON()) } let result = `{"structs": [ ${lines.join(",")} ]}` - fs.writeFileSync(database(this.fileName), result) + fs.writeFileSync(metaDatabase(this.fileName), result) } } -- Gitee From a2cf08d454645ee03a089edbdd5d1cf47d2b4727 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Sat, 31 May 2025 12:13:41 +0300 Subject: [PATCH 4/7] Small tweaks --- .../shopping/user/src/ets/pages/collect/singlePage2.ets | 2 +- arkoala-arkts/shopping/user/src/ets/pages/homePage/cart.ets | 2 +- arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets | 2 +- arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets | 2 +- .../shopping/user/src/ets/pages/homePage/goodsList.ets | 2 +- .../shopping/user/src/ets/pages/homePage/imageItem.ets | 2 +- .../shopping/user/src/ets/pages/homePage/informance.ets | 2 +- arkoala-arkts/shopping/user/src/ets/pages/homePage/other.ets | 2 +- arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets | 2 +- .../shopping/user/src/ets/pages/homePage/visitPage.ets | 2 +- arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets | 2 +- arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets | 2 +- ui2abc/ui-plugins/src/struct-recorder.ts | 1 - 13 files changed, 12 insertions(+), 13 deletions(-) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage2.ets b/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage2.ets index bca7cfdb2..d4b124622 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage2.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage2.ets @@ -14,7 +14,7 @@ */ import { GoodsType} from '../../data/singleData'; -import { Image, Column, Flex, Text, Row, FlexAlign, ItemAlign, ImageFit, Color, TextAlign, HorizontalAlign, Margin, BorderOptions, Padding } from '@ohos.arkui' +import { Image, Column, ColumnOptions, FlexOptions, RowOptions, Flex, Text, Row, FlexAlign, ItemAlign, ImageFit, Color, TextAlign, HorizontalAlign, Margin, BorderOptions, Padding } from '@ohos.arkui' @Component export struct SinglePage2 { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/cart.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/cart.ets index 4c10c270a..e724f6f2a 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/cart.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/cart.ets @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { ImageFit, FlexDirection, Counter, Toggle, Image, Column, Flex, Row, Text, ItemAlign, FontWeight, HorizontalAlign, FlexAlign, Margin, ClickEvent, Color, BorderOptions, ToggleType } from '@ohos.arkui' +import { ImageFit, FlexDirection, ColumnOptions, FlexOptions, RowOptions, ToggleOptions, Counter, Toggle, Image, Column, Flex, Row, Text, ItemAlign, FontWeight, HorizontalAlign, FlexAlign, Margin, ClickEvent, Color, BorderOptions, ToggleType } from '@ohos.arkui' @Component export struct Cart { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets index 2ed0c9374..b56140a61 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets @@ -16,7 +16,7 @@ import { CoreDataModel } from '../../model/homeModel' import { coreData } from '../../data/homeData' import { cacheId } from './main' -import { List, ListOptions, Image, Column, ForEach, ListItem, Grid, GridItem, Text, Margin, ImageFit, Axis } from '@ohos.arkui' +import { List, ListOptions, Image, Column, ColumnOptions, Scroller, ForEach, ListItem, Grid, GridItem, Text, Margin, ImageFit, Axis } from '@ohos.arkui' @Component export struct Core1 { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets index 3e932241e..ab6104273 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets @@ -16,7 +16,7 @@ import { CoreDataModel } from '../../model/homeModel' import { coreData } from '../../data/homeData' import { cacheId } from './main' -import { List, Image, ListOptions, Column, ForEach, ListItem, GridItem, Text, ImageFit, Grid, Margin, Axis } from '@ohos.arkui' +import { List, Image, ListOptions, ColumnOptions, Scroller, GridItemOptions, Column, ForEach, ListItem, GridItem, Text, ImageFit, Grid, Margin, Axis } from '@ohos.arkui' @Component export struct Core2 { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets index a11210853..948c010be 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets @@ -16,7 +16,7 @@ import { ProductDataModel } from '../../model/homeModel' import { productData } from '../../data/homeData' import { cacheId } from './main' -import { LazyForEach, Image, IDataSource, DataChangeListener, GridItem, Column, Text, Row, Margin, BorderOptions, Padding, Grid, ImageFit, Color, HorizontalAlign } from '@ohos.arkui' +import { LazyForEach, Image, IDataSource, DataChangeListener, GridItem, Column, ColumnOptions, GridItemOptions, RowOptions, GridLayoutOptions, Text, Row, Margin, BorderOptions, Padding, Grid, ImageFit, Color, HorizontalAlign } from '@ohos.arkui' class GoodListSource implements IDataSource { totalCount(): number { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/imageItem.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/imageItem.ets index caf5d3cc1..19564e703 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/imageItem.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/imageItem.ets @@ -15,7 +15,7 @@ import { FindImgSrcModel, FindImgIntroModel, FindImgNameModel, FindIconSrcModel } from '../../model/homeModel' import { findImgSrcData, findImgIntroData, findImgNameData, findIconSrcData } from '../../data/homeData' -import { Image, ImageFit, Margin, ClickEvent, Column, Row, Flex, FlexAlign, TextOverflowOptions, ItemAlign, TextOverflow, BorderOptions, Text } from '@ohos.arkui' +import { Image, ImageFit, Margin, ClickEvent, Column, ColumnOptions, RowOptions, FlexOptions, Row, Flex, FlexAlign, TextOverflowOptions, ItemAlign, TextOverflow, BorderOptions, Text } from '@ohos.arkui' @Component export struct ImageItem { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/informance.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/informance.ets index 28f14f493..d57dda6ca 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/informance.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/informance.ets @@ -15,7 +15,7 @@ import { InformationModel } from '../../model/homeModel' import { informationData } from '../../data/homeData' -import { Button, ClickEvent, Column, Color, FlexAlign } from '@ohos.arkui' +import { Button, ClickEvent, Column, ColumnOptions, Color, FlexAlign } from '@ohos.arkui' //import { callFetchWithEACoroutine, callFetchWithCoroutine, callFetchWithTaskPool} from '../../arkcompilerPOC/concurrency' //import { callRDBWithManagedEACoroutine, callRDBWithNativeEACoroutine, GetAll } from '../../arkcompilerPOC/concurrency2' diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/other.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/other.ets index e6aa0cb60..89bf69abf 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/other.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/other.ets @@ -15,7 +15,7 @@ import { ShopCartItemDataModel } from '../../model/homeModel' import { shopCartItemData } from '../../data/homeData' -import { Image, Flex, Row, Column, Span, Text,ImageFit, TextOverflowOptions, FlexAlign, Margin, ItemAlign, TextOverflow, Color, BorderOptions, HorizontalAlign, Padding } from '@ohos.arkui' +import { Image, Flex, Row, Column, ColumnOptions, FlexOptions, RowOptions, TextOptions, Span, Text,ImageFit, TextOverflowOptions, FlexAlign, Margin, ItemAlign, TextOverflow, Color, BorderOptions, HorizontalAlign, Padding } from '@ohos.arkui' @Component export struct Other { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets index 917c5b45f..4773b9178 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets @@ -16,7 +16,7 @@ import { Cart } from './cart' import { Other } from './other' import { cacheId } from './main' -import { Image, Scroll, Column, ColumnOptions, FlexOptions, RowOptions, FlexOptions, ColumnOptions, Flex, Text, FlexAlign, FontWeight, ItemAlign, Row, ForEach, BorderOptions, Color, ImageFit, Padding, Margin, VerticalAlign, BarState } from '@ohos.arkui' +import { Image, Scroll, Column, ColumnOptions, FlexOptions, RowOptions, Scroller, Flex, Text, FlexAlign, FontWeight, ItemAlign, Row, ForEach, BorderOptions, Color, ImageFit, Padding, Margin, VerticalAlign, BarState } from '@ohos.arkui' @Component export struct ShopCart { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/visitPage.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/visitPage.ets index f8ef38460..b35231e45 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/visitPage.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/visitPage.ets @@ -14,7 +14,7 @@ */ import { FindPage } from './find' -import { Image, Column, Flex, Text, BorderOptions, ImageFit, ItemAlign, Tabs, TabContent, TabsController, FlexAlign, Padding, Margin } from '@ohos.arkui' +import { Image, Column, ColumnOptions, FlexOptions, TabsOptions, Flex, Text, BorderOptions, ImageFit, ItemAlign, Tabs, TabContent, TabsController, FlexAlign, Padding, Margin } from '@ohos.arkui' @Component export struct VisitPage { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets b/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets index a4f78d582..7ab51de8f 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets @@ -24,7 +24,7 @@ import { SearchPage } from './search/searchPage' //import mediaquery from '@ohos.mediaquery'; import { SearchParam } from '../model/routeModel' import { cacheId } from './homePage/main' -import { Stack, TabBarOptions, PageTransitionEnter, PageTransitionExit, RouteType, NavPathStack, Navigation, Curve, Tabs, Color, NavigationMode, BarPosition, TabContent, TabsController, ForEach, Padding, FlexDirection, Image, Scroll, Column, Row, Flex, FlexAlign, Text, ItemAlign, FontWeight,TextOverflow, TextOverflowOptions, BorderOptions, ImageFit, Margin, ClickEvent } from '@ohos.arkui' +import { Stack, StackOptions, ColumnOptions, TabsOptions, FlexOptions, PageTransitionOptions, TabBarOptions, PageTransitionEnter, PageTransitionExit, RouteType, NavPathStack, Navigation, Curve, Tabs, Color, NavigationMode, BarPosition, TabContent, TabsController, ForEach, Padding, FlexDirection, Image, Scroll, Column, Row, Flex, FlexAlign, Text, ItemAlign, FontWeight,TextOverflow, TextOverflowOptions, BorderOptions, ImageFit, Margin, ClickEvent } from '@ohos.arkui' @Builder diff --git a/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets b/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets index e488031f5..9722c9668 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets @@ -19,7 +19,7 @@ import { ExampleDataModel, SearchDataModel } from '../../model/searchModel'; import { exampleData, searchData } from '../../data/searchData' import { BaseRouteParam, SearchParam } from '../../model/routeModel' import { cacheId } from '../homePage/main' -import { Image, Button, List, FontWeight, Stack, Alignment, FlexWrap, ForEach, Row, HorizontalAlign, Axis, Visibility, ListItem, ImageRepeat, SizeOptions, ItemAlign, ImageFit, Font, Color, EnterKeyType, Padding, BorderOptions, Text, NavDestination, Column, Flex, NavPathStack, TextInput, ClickEvent, FlexAlign, Margin } from '@ohos.arkui' +import { Image, Button, List, ColumnOptions, RowOptions, FlexOptions, ButtonOptions, StackOptions,TextInputOptions, ListOptions, FontWeight, Stack, Alignment, FlexWrap, ForEach, Row, HorizontalAlign, Axis, Visibility, ListItem, ImageRepeat, SizeOptions, ItemAlign, ImageFit, Font, Color, EnterKeyType, Padding, BorderOptions, Text, NavDestination, Column, Flex, NavPathStack, TextInput, ClickEvent, FlexAlign, Margin } from '@ohos.arkui' @Entry @Component diff --git a/ui2abc/ui-plugins/src/struct-recorder.ts b/ui2abc/ui-plugins/src/struct-recorder.ts index 816e0ebbb..5303a585a 100644 --- a/ui2abc/ui-plugins/src/struct-recorder.ts +++ b/ui2abc/ui-plugins/src/struct-recorder.ts @@ -113,7 +113,6 @@ export class StructTable { readDB() { const db = metaDatabase(this.fileName) if (fs.existsSync(db)) { - console.log(`read DB ${db}`) try { this.addDescriptors( StructDescriptor.fromJSON( -- Gitee From 70a410ed9b1d7385ab04c71224672d00ba0e8a83 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Sat, 31 May 2025 12:50:19 +0300 Subject: [PATCH 5/7] Update --- .../shopping/user/src/ets/pages/homePage/goodsList.ets | 2 +- ui2abc/ui-plugins/src/struct-recorder.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets index 948c010be..e8376293b 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets @@ -113,7 +113,7 @@ export struct GoodsList { build() { Column({}) { - Grid(undefined, {}) { + Grid(undefined, undefined) { LazyForEach(this.data, (item: Number, index: number): void => { GGGItem({ data: this.productData[item.valueOf() % 14], ratio: this.ratio }) }, (item: Number, index: number): string => cacheId(item.valueOf())) diff --git a/ui2abc/ui-plugins/src/struct-recorder.ts b/ui2abc/ui-plugins/src/struct-recorder.ts index 5303a585a..d51ed1538 100644 --- a/ui2abc/ui-plugins/src/struct-recorder.ts +++ b/ui2abc/ui-plugins/src/struct-recorder.ts @@ -127,7 +127,7 @@ export class StructTable { } } parseFile() { - console.log("parseFile: BAD!") + console.log(`parseFile: ${this.fileName}`) } findStruct(name: string): StructDescriptor|undefined { return this.structByName.get(name) -- Gitee From d0bc6ec01dfa9690f73fe331c2cf6464847d2444 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Sun, 1 Jun 2025 08:43:27 +0300 Subject: [PATCH 6/7] Basic recheck mode --- .../libarkts/src/arkts-api/peers/Context.ts | 20 ++++++++ ui2abc/libarkts/src/index.ts | 1 + ui2abc/ui-plugins/src/parsed-stage-plugin.ts | 9 ++-- ui2abc/ui-plugins/src/struct-recorder.ts | 47 ++++++++++++++----- 4 files changed, 61 insertions(+), 16 deletions(-) diff --git a/ui2abc/libarkts/src/arkts-api/peers/Context.ts b/ui2abc/libarkts/src/arkts-api/peers/Context.ts index f36852a92..8535e95fe 100644 --- a/ui2abc/libarkts/src/arkts-api/peers/Context.ts +++ b/ui2abc/libarkts/src/arkts-api/peers/Context.ts @@ -18,6 +18,8 @@ import { Program } from "../../generated" import { global } from "../static/global" import { passString } from "../utilities/private" import { KNativePointer } from "@koalaui/interop" +import { Config } from "./Config" +import * as fs from "fs" export class Context extends ArktsObject { constructor(peer: KNativePointer) { @@ -39,6 +41,24 @@ export class Context extends ArktsObject { ) } + static createFromFile(filePath: string, configPath: string): Context | undefined { + const config = Config.create([ + "", + "--arktsconfig", + configPath, + '--extension', + 'ets', + filePath + ]) + return new Context( + global.es2panda._CreateContextFromString( + config.peer, + passString(fs.readFileSync(filePath, 'utf-8')), + passString(filePath) + ) + ) + } + get program(): Program { return new Program(global.es2panda._ContextProgram(this.peer)); } diff --git a/ui2abc/libarkts/src/index.ts b/ui2abc/libarkts/src/index.ts index b45f5d025..f242ba396 100644 --- a/ui2abc/libarkts/src/index.ts +++ b/ui2abc/libarkts/src/index.ts @@ -31,6 +31,7 @@ export * from "./arkts-api/plugins" export * from "./arkts-api/ImportStorage" export * from "./arkts-api/InferVoidReturnType" export * from "./arkts-api/ProgramProvider" +export * from "./arkts-api/node-utilities/Program" export * from "./arkts-api/peers/AstNode" export * from "./arkts-api/peers/Config" diff --git a/ui2abc/ui-plugins/src/parsed-stage-plugin.ts b/ui2abc/ui-plugins/src/parsed-stage-plugin.ts index 5278830d1..a422dcfe6 100644 --- a/ui2abc/ui-plugins/src/parsed-stage-plugin.ts +++ b/ui2abc/ui-plugins/src/parsed-stage-plugin.ts @@ -29,10 +29,13 @@ export default function parsedTransformer( return (program: arkts.Program, _compilationOptions: arkts.CompilationOptions, context: arkts.PluginContext) => { const restart = context.parameter("restart") ?? false const importer = new Importer() - const resolver = new StructsResolver(restart) + let resolver = context.parameter("structsTable") + if (!resolver) { + resolver = new StructsResolver(restart) + context.setParameter("structsTable", resolver) + } const currentFile = restart ? arkts.global.newFilePath : arkts.global.filePath - const structs = new StructTable(currentFile, restart ? undefined : resolver) - context.setParameter("structsTable", resolver) + const structs = resolver.getOrCreateTable(currentFile, restart) context.setParameter("importer", importer) const transformers: arkts.AbstractVisitor[] = [ new StructRecorder(structs), diff --git a/ui2abc/ui-plugins/src/struct-recorder.ts b/ui2abc/ui-plugins/src/struct-recorder.ts index d51ed1538..c038020a1 100644 --- a/ui2abc/ui-plugins/src/struct-recorder.ts +++ b/ui2abc/ui-plugins/src/struct-recorder.ts @@ -15,8 +15,9 @@ import * as arkts from "@koalaui/libarkts" import * as fs from "fs" +import * as path from "path" import { CustomComponentNames } from "./utils" -import { metaDatabase } from "@koalaui/libarkts" +import { programGetExternalSources, metaDatabase } from "@koalaui/libarkts" export class PropertyDescriptor { constructor(public name: string, public decorators: string[]) { } @@ -46,16 +47,36 @@ export class StructDescriptor { return this.decoratorsFor(property)?.includes(decorator) ?? false } } - export class StructsResolver { private structByFile = new Map() - constructor(private restart: boolean) {} + constructor(private restart: boolean) { + this.init() + } + + init() { + for (let source of programGetExternalSources(arkts.global.compilerContext.program)) { + let program = source.programs[0] + console.log(`preparse ${program.sourceFilePath}`) + let table = this.getOrCreateTable(program.sourceFilePath, this.restart) + table.recordStructs(program) + this.addTable(program.sourceFilePath, table) + } + } addTable(fileName: string, table: StructTable) { this.structByFile.set(fileName, table) } + getOrCreateTable(fileName: string, restart: boolean) { + let result = this.structByFile.get(fileName) + if (!result) { + result = new StructTable(fileName, restart ? undefined : this) + this.addTable(fileName, result) + } + return result + } + findDeclarationFile(declaration: arkts.AstNode): string { let current: arkts.AstNode|undefined = declaration while (current && !arkts.isETSModule(current)) { @@ -92,7 +113,7 @@ export class StructsResolver { } hasDefinition(filename: string): boolean { - return this.structByFile.get(filename) != undefined + return this.structByFile.has(filename) } } @@ -100,13 +121,7 @@ export class StructTable { private structByName = new Map() constructor(private fileName: string, private resolverToSync: StructsResolver|undefined) { - if (resolverToSync) { - if (!resolverToSync.hasDefinition(fileName)) { - // TODO: use StructRecorder visitor to fill the table. - resolverToSync.addTable(fileName, this) - this.parseFile() - } - } else { + if (!resolverToSync) { this.readDB() } } @@ -126,13 +141,14 @@ export class StructTable { } } } - parseFile() { - console.log(`parseFile: ${this.fileName}`) + recordStructs(program: arkts.Program) { + new StructRecorder(this).visitor(program.ast) } findStruct(name: string): StructDescriptor|undefined { return this.structByName.get(name) } addStruct(declaration: arkts.ETSStructDeclaration) { + if (this.structByName.has(declaration.definition?.ident?.name!)) return const descriptor = StructTable.toDescriptor(declaration) this.addDescriptor(descriptor) } @@ -187,6 +203,11 @@ export class StructRecorder extends arkts.AbstractVisitor { } if (arkts.isETSStructDeclaration(node)) { this.table.addStruct(node) + return node + } + // Do not go inside classes, structs cannot be there. + if (arkts.isClassDeclaration(node)) { + return node } return this.visitEachChild(node) } -- Gitee From 51390f24f460e841cbd361246a56b926e80c417e Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Sun, 1 Jun 2025 11:34:18 +0300 Subject: [PATCH 7/7] Update --- .../user/src/ets/pages/detailPage/detail.ets | 14 +++++++------- .../shopping/user/src/ets/pages/homePage/User.ets | 8 ++++---- .../user/src/ets/pages/homePage/boutique.ets | 2 +- .../shopping/user/src/ets/pages/homePage/core1.ets | 4 ++-- .../shopping/user/src/ets/pages/homePage/core2.ets | 4 ++-- .../shopping/user/src/ets/pages/homePage/find.ets | 6 +++--- .../user/src/ets/pages/homePage/goodsList.ets | 3 +-- .../shopping/user/src/ets/pages/homePage/main.ets | 12 ++++++------ .../user/src/ets/pages/homePage/shopCart.ets | 4 ++-- .../shopping/user/src/ets/pages/index-entry.ets | 2 +- .../user/src/ets/pages/search/searchPage.ets | 8 ++++---- ui2abc/libarkts/src-host/es2panda.ts | 1 + ui2abc/ui-plugins/src/struct-recorder.ts | 1 - 13 files changed, 34 insertions(+), 35 deletions(-) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets b/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets index 7e7c3bf5e..2f393a2ba 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets @@ -15,7 +15,7 @@ //import mediaQuery from '@ohos.mediaquery'; import router from '@ohos.router' -import { TextOptions, ColumnOptions, FlexOptions, RowOptions, FlexWrap, Span, Scroller, RowOptions, ListOptions, TabsOptions, Image, Scroller, SwiperController, NavPathStack, Margin, TextOverflowOptions, Padding, NavDestination, ClickEvent, BorderOptions, Scroll, Literal_String_target_NavigationType_type, Column, BarState, Flex, Swiper, Text, HorizontalAlign, Row, Color, ForEach, FlexAlign, ItemAlign, ImageFit, TextOverflow, FlexDirection, Navigator } from "@ohos.arkui" +import { TextOptions, ColumnOptions, FlexOptions, FlexWrap, Span, RowOptions, ListOptions, TabsOptions, Image, Scroller, SwiperController, NavPathStack, Margin, TextOverflowOptions, Padding, NavDestination, ClickEvent, BorderOptions, Scroll, Literal_String_target_NavigationType_type, Column, BarState, Flex, Swiper, Text, HorizontalAlign, Row, Color, ForEach, FlexAlign, ItemAlign, ImageFit, TextOverflow, FlexDirection, Navigator } from "@ohos.arkui" import { SwiperModel, PhoneTypeModel, ShowImgModel, RecommendDataModel, GoodsInfoModel, ListDataModel } from "../../model/detailModel" import { swiperData, phoneTypeData, showImgData, recommendData, goodsInfoData, listData } from '../../data/detailData' @@ -90,7 +90,7 @@ export struct Detail { ForEach(this.swiper, (item: SwiperModel) => { Image(item.src) .objectFit(ImageFit.Contain) - }, (item: SwiperModel) => cacheId(item)) + }, (item: SwiperModel): string => cacheId(item)) } .index(0) .width('100%') @@ -370,7 +370,7 @@ export struct Detail { Image(`${item.uri}`) .objectFit(ImageFit.Contain) .width(35 * this.ratio) - }, (item: PhoneTypeModel) => cacheId(item)) + }, (item: PhoneTypeModel): string => cacheId(item)) Text('共6种机身颜色可选') .fontSize(13 * this.ratio) } @@ -463,7 +463,7 @@ export struct Detail { .objectFit(ImageFit.Cover) .width('25%') .height(100 * this.ratio) - }, (item: ShowImgModel) => cacheId(item)) + }, (item: ShowImgModel): string => cacheId(item)) } .backgroundColor(Color.Red) @@ -608,7 +608,7 @@ export struct Detail { .width('33%') .height('48%') .alignItems(HorizontalAlign.Start) - }, (item: RecommendDataModel) => cacheId(item)) + }, (item: RecommendDataModel): string => cacheId(item)) } .height('45%') } @@ -619,7 +619,7 @@ export struct Detail { Image(`${item.img}`) .width('100%') .objectFit(ImageFit.Cover) - }, (item: GoodsInfoModel) => cacheId(item)) + }, (item: GoodsInfoModel): string => cacheId(item)) } Flex({ justifyContent: FlexAlign.Start, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Start }) { @@ -640,7 +640,7 @@ export struct Detail { .height('32%') .margin(5) .alignItems(HorizontalAlign.Center) - }, (item: ListDataModel) => cacheId(item)) + }, (item: ListDataModel): string => cacheId(item)) } } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets index 635728eb0..01b942673 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets @@ -115,7 +115,7 @@ export struct User { } as SearchParam }) }) - }, (item: RecordModel) => cacheId(item)) + }, (item: RecordModel): string => cacheId(item)) } Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { @@ -173,7 +173,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: OrderModel) => cacheId(item)) + }, (item: OrderModel): string => cacheId(item)) } .margin({ top: 10 } as Margin) @@ -227,7 +227,7 @@ export struct User { .fontSize(12 * this.ratio) .fontColor(Color.Grey) } - }, (item: DiscountModel) => cacheId(item)) + }, (item: DiscountModel): string => cacheId(item)) } .margin({ top: 10 } as Margin) } @@ -248,7 +248,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: ServiceModel) => cacheId(item)) + }, (item: ServiceModel): string => cacheId(item)) } .margin({ top: 10 } as Margin) } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/boutique.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/boutique.ets index 47c4b76b7..b3d361483 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/boutique.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/boutique.ets @@ -48,7 +48,7 @@ export struct Boutique { } .width('50%') .alignItems(HorizontalAlign.Start) - }, (item: BoutiqueModel) => cacheId(item)) + }, (item: BoutiqueModel): string => cacheId(item)) } } .width('92%') diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets index b56140a61..98ecf55b5 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets @@ -44,13 +44,13 @@ export struct Core1 { } } .width('100%') - }, (item2: Number) => cacheId(item2.valueOf())) + }, (item2: Number): string => cacheId(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('20%') - }, (item1: Number) => cacheId(item1.valueOf())) + }, (item1: Number): string => cacheId(item1.valueOf())) } .listDirection(Axis.Horizontal) .height(160 * this.ratio) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets index ab6104273..9b5f8e741 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets @@ -44,13 +44,13 @@ export struct Core2 { } } .width('100%') - }, (item2: Number) => cacheId(item2.valueOf())) + }, (item2: Number): string => cacheId(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('22.5%') - }, (item1: Number) => cacheId(item1.valueOf())) + }, (item1: Number): string => cacheId(item1.valueOf())) } .listDirection(Axis.Horizontal) .height('22%') diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/find.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/find.ets index 412c084d5..5afdf0552 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/find.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/find.ets @@ -47,7 +47,7 @@ export struct FindPage { Text(item.searchText) .fontSize(15 * this.ratio) .fontColor(Color.Grey) - }, (item: SearchTextModel) => cacheId(item)) + }, (item: SearchTextModel): string => cacheId(item)) } .width('65%') .autoPlay(false) @@ -82,7 +82,7 @@ export struct FindPage { ForEach(this.titleText, (item: FindTitleTextModel) => { Text(item.titleText) .fontSize(15 * this.ratio) - }, (item: FindTitleTextModel) => cacheId(item)) + }, (item: FindTitleTextModel): string => cacheId(item)) } .padding({ left: 15, right: 15 } as Padding) } @@ -107,7 +107,7 @@ export struct FindPage { .width('100%') .aspectRatio(1.1) .margin({ top: 10 } as Margin) - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .padding({ left: 10, right: 10 } as Padding) } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets index e8376293b..5a0e65728 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets @@ -108,7 +108,6 @@ export struct GoodsList { @State move: number = 0 aboutToAppear() { - this.data = new GoodListSource(); } build() { @@ -121,7 +120,7 @@ export struct GoodsList { .columnsTemplate('1fr 1fr') .padding({ bottom: 60 } as Padding) .onScrollIndex((first: number, second: number) => { - this.GridIndex = Number(first) + this.GridIndex = first }) } .width('100%') diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets index df2f8e742..bd999c38a 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets @@ -74,7 +74,7 @@ export struct MainPage { console.log(`Measuring...`) ForEach(perfData, (item: number) => { Stack({}).width(100).height(100).backgroundColor(Color.Red).margin(5) - }, (item: number) => String(item)) + }, (item: number): string => String(item)) let passed = Date.now() - now console.log(`Passed ${passed}ms, ${passed / count}ms per iteration`) } @@ -89,7 +89,7 @@ export struct MainPage { console.log(`Measuring...`) ForEach(perfData, (item: number) => { this.buildReal() - }, (item: number) => String(item)) + }, (item: number): string => String(item)) let passed = Date.now() - now console.log(`Passed ${passed}ms, ${passed / count}ms per iteration`) } else { @@ -132,7 +132,7 @@ export struct MainPage { } this.pathInfos.pushPath(new NavPathInfo('searchPage', searchParam)) }) - }, (item: SearchTextModel) => cacheId(item)) + }, (item: SearchTextModel):string => cacheId(item)) } .width('65%') .autoPlay(true) @@ -174,7 +174,7 @@ export struct MainPage { .lineHeight(30 * this.ratio) } .height(30 * this.ratio) - }, (item: NavDataModel) => cacheId(item)) + }, (item: NavDataModel): string => cacheId(item)) } .height(30 * this.ratio) .width('85%') @@ -208,7 +208,7 @@ export struct MainPage { this.pathInfos.pushPath(new NavPathInfo('detailPage', params)) }) - }, (item: SwiperModel) => cacheId(item)) + }, (item: SwiperModel): string => cacheId(item)) } .autoPlay(true) .loop(true) @@ -238,7 +238,7 @@ export struct MainPage { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TitleBarModel) => cacheId(item)) + }, (item: TitleBarModel): string => cacheId(item)) } .height('7%') .zIndex(2) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets index 4773b9178..8509c28ee 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets @@ -103,7 +103,7 @@ export struct ShopCart { Column({}) { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .margin(2) @@ -112,7 +112,7 @@ export struct ShopCart { Column({}) { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .margin(2) } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets b/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets index 7ab51de8f..c650978bb 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets @@ -112,7 +112,7 @@ struct Index { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TabTitleModel) => cacheId(item)) + }, (item: TabTitleModel): string => cacheId(item)) } .height('8%') } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets b/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets index 9722c9668..00c6104ac 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets @@ -145,7 +145,7 @@ export struct SearchPage { .margin(3) .height(30 * this.ratio) .backgroundColor('#f8f8f8') - }, (item: ExampleDataModel) => cacheId(item)) + }, (item: ExampleDataModel): string => cacheId(item)) } .margin({ left: 10, right: 10 } as Margin) } else { @@ -234,7 +234,7 @@ export struct SearchPage { .padding({ left: 5, right: 5 } as Padding) .width('100%') .height(40 * this.ratio) - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .width('100%') } @@ -243,7 +243,7 @@ export struct SearchPage { .padding({ top: 5 } as Padding) .backgroundColor(Color.White) .width(`60%`) - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .listDirection(Axis.Horizontal) .height('70%') @@ -284,7 +284,7 @@ export struct SearchPage { this.isFlag = false this.value = item }) - }, (item: string) => cacheId(item)) + }, (item: string): string => cacheId(item)) } } } diff --git a/ui2abc/libarkts/src-host/es2panda.ts b/ui2abc/libarkts/src-host/es2panda.ts index 2a73b5efa..ebc9c8751 100644 --- a/ui2abc/libarkts/src-host/es2panda.ts +++ b/ui2abc/libarkts/src-host/es2panda.ts @@ -91,6 +91,7 @@ function insertPlugin( const importStorage = new ImportStorage(currentProgram.program, state == Es2pandaContextState.ES2PANDA_STATE_PARSED) stageSpecificPreFilters(ast, state) + console.log(`transform ${currentProgram.name}`) transform?.(currentProgram.program, { isMainProgram: currentProgram.program.peer == global.compilerContext.program.peer, name: currentProgram.name, stage: state }, context) stageSpecificPostFilters(ast, state) diff --git a/ui2abc/ui-plugins/src/struct-recorder.ts b/ui2abc/ui-plugins/src/struct-recorder.ts index c038020a1..e225a971c 100644 --- a/ui2abc/ui-plugins/src/struct-recorder.ts +++ b/ui2abc/ui-plugins/src/struct-recorder.ts @@ -57,7 +57,6 @@ export class StructsResolver { init() { for (let source of programGetExternalSources(arkts.global.compilerContext.program)) { let program = source.programs[0] - console.log(`preparse ${program.sourceFilePath}`) let table = this.getOrCreateTable(program.sourceFilePath, this.restart) table.recordStructs(program) this.addTable(program.sourceFilePath, table) -- Gitee