From b3f8b34438e45599065a8fe2fd0f0fbdac043cd7 Mon Sep 17 00:00:00 2001 From: Fouckttt Date: Tue, 10 Jun 2025 10:37:38 +0800 Subject: [PATCH 1/2] fix arkts-no-props-by-inedx Issue:https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/ICDV6J Test scenarios:fix Signed-off-by: Fouckttt --- .../linter/src/lib/autofixes/Autofixer.ts | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/ets2panda/linter/src/lib/autofixes/Autofixer.ts b/ets2panda/linter/src/lib/autofixes/Autofixer.ts index bfeb543cd9..18b348ffc0 100644 --- a/ets2panda/linter/src/lib/autofixes/Autofixer.ts +++ b/ets2panda/linter/src/lib/autofixes/Autofixer.ts @@ -975,7 +975,38 @@ export class Autofixer { return this.renameSymbolAsIdentifier(symbol, enumMember); } + private static renameAsObjectElementAccessExpression(node: ts.ElementAccessExpression): Autofix[] | undefined { + const parenExpr = ts.isParenthesizedExpression(node.expression) ? node.expression : undefined; + const asExpr = parenExpr && ts.isAsExpression(parenExpr.expression) ? parenExpr.expression : undefined; + if (!asExpr) { + return undefined; + } + + const argument = node.argumentExpression; + const propertyName = ts.isStringLiteral(argument) || ts.isIdentifier(argument) ? argument.text : undefined; + if (!propertyName) { + return undefined; + } + + const realObj = asExpr.expression; + + return [ + { + replacementText: realObj.getText() + '.' + propertyName, + start: node.getStart(), + end: node.getEnd() + } + ]; + } + fixPropertyAccessByIndex(node: ts.ElementAccessExpression): Autofix[] | undefined { + if (ts.isParenthesizedExpression(node.expression) && ts.isAsExpression(node.expression.expression)) { + const assertedType = this.typeChecker.getTypeAtLocation(node.expression.expression.type); + if (this.typeChecker.typeToString(assertedType) === 'object') { + return Autofixer.renameAsObjectElementAccessExpression(node); + } + } + const symbol = this.typeChecker.getSymbolAtLocation(node.argumentExpression); if (symbol === undefined) { return undefined; -- Gitee From 2164fbcad2bc76ea2f15676315428e8a1b9402bc Mon Sep 17 00:00:00 2001 From: Fouckttt Date: Tue, 10 Jun 2025 10:37:38 +0800 Subject: [PATCH 2/2] fix arkts-no-props-by-inedx Issue:https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/ICDV6J Test scenarios:fix Signed-off-by: Fouckttt --- .../linter/src/lib/autofixes/Autofixer.ts | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/ets2panda/linter/src/lib/autofixes/Autofixer.ts b/ets2panda/linter/src/lib/autofixes/Autofixer.ts index bfeb543cd9..18b348ffc0 100644 --- a/ets2panda/linter/src/lib/autofixes/Autofixer.ts +++ b/ets2panda/linter/src/lib/autofixes/Autofixer.ts @@ -975,7 +975,38 @@ export class Autofixer { return this.renameSymbolAsIdentifier(symbol, enumMember); } + private static renameAsObjectElementAccessExpression(node: ts.ElementAccessExpression): Autofix[] | undefined { + const parenExpr = ts.isParenthesizedExpression(node.expression) ? node.expression : undefined; + const asExpr = parenExpr && ts.isAsExpression(parenExpr.expression) ? parenExpr.expression : undefined; + if (!asExpr) { + return undefined; + } + + const argument = node.argumentExpression; + const propertyName = ts.isStringLiteral(argument) || ts.isIdentifier(argument) ? argument.text : undefined; + if (!propertyName) { + return undefined; + } + + const realObj = asExpr.expression; + + return [ + { + replacementText: realObj.getText() + '.' + propertyName, + start: node.getStart(), + end: node.getEnd() + } + ]; + } + fixPropertyAccessByIndex(node: ts.ElementAccessExpression): Autofix[] | undefined { + if (ts.isParenthesizedExpression(node.expression) && ts.isAsExpression(node.expression.expression)) { + const assertedType = this.typeChecker.getTypeAtLocation(node.expression.expression.type); + if (this.typeChecker.typeToString(assertedType) === 'object') { + return Autofixer.renameAsObjectElementAccessExpression(node); + } + } + const symbol = this.typeChecker.getSymbolAtLocation(node.argumentExpression); if (symbol === undefined) { return undefined; -- Gitee