diff --git a/ets2panda/linter/src/lib/CookBookMsg.ts b/ets2panda/linter/src/lib/CookBookMsg.ts index 3a9d31e00111acd399db23ef34f17b9c0ff44281..06558eadcdf3b1576af2b896a561f2db0a04f8e4 100644 --- a/ets2panda/linter/src/lib/CookBookMsg.ts +++ b/ets2panda/linter/src/lib/CookBookMsg.ts @@ -315,7 +315,6 @@ cookBookTag[319] = cookBookTag[321] = 'Import Concurrency is not required (arkts-limited-stdlib-no-import-concurrency)'; cookBookTag[322] = 'isConcurrent is not supported (arkts-limited-stdlib-no-support-isConcurrent)'; cookBookTag[323] = 'Direct export of interop JS objects is not supported (arkts-interop-js2s-export-js)'; -cookBookTag[324] = 'Direct export of interop ArkTS1.0 objects is not supported (arkts-interop-d2s-export-entity)'; cookBookTag[325] = 'Default parameters must be placed after mandatory parameters (arkts-default-args-behind-required-args)'; cookBookTag[326] = 'It is not allowed to create object literal in interop calls (arkts-interop-s2d-object-literal)'; diff --git a/ets2panda/linter/src/lib/FaultAttrs.ts b/ets2panda/linter/src/lib/FaultAttrs.ts index d06f179b1c97cd3b8e9cd6956fc00416fb9ee1d5..4e22d31370ed6c78aad709bee7bdccef33c16216 100644 --- a/ets2panda/linter/src/lib/FaultAttrs.ts +++ b/ets2panda/linter/src/lib/FaultAttrs.ts @@ -222,7 +222,6 @@ faultsAttrs[FaultID.MethodInheritRule] = new FaultAttributes(319); faultsAttrs[FaultID.LimitedStdLibNoImportConcurrency] = new FaultAttributes(321); faultsAttrs[FaultID.IsConcurrentDeprecated] = new FaultAttributes(322); faultsAttrs[FaultID.InteropJsObjectExport] = new FaultAttributes(323); -faultsAttrs[FaultID.InteropArkTs1ObjectExport] = new FaultAttributes(324); faultsAttrs[FaultID.DefaultArgsBehindRequiredArgs] = new FaultAttributes(325); faultsAttrs[FaultID.InteropStaticObjectLiterals] = new FaultAttributes(326); faultsAttrs[FaultID.InteropObjectLiteralAmbiguity] = new FaultAttributes(327); diff --git a/ets2panda/linter/src/lib/FaultDesc.ts b/ets2panda/linter/src/lib/FaultDesc.ts index 5e59068df3d83e7bc5d38e07edfe934761584bfb..8716e7d24189e179bfdc0e1d54531d291bfbebca 100644 --- a/ets2panda/linter/src/lib/FaultDesc.ts +++ b/ets2panda/linter/src/lib/FaultDesc.ts @@ -173,7 +173,6 @@ faultDesc[FaultID.ExtendsExpression] = 'Extends Expression'; faultDesc[FaultID.NumericSemantics] = 'Numeric semantics'; faultDesc[FaultID.AnimatableExtendDecoratorTransform] = '"@AnimatableExtend" decorator'; faultDesc[FaultID.InteropJsObjectExport] = 'Interop JS object export'; -faultDesc[FaultID.InteropArkTs1ObjectExport] = 'Interop ArkTS1.0 object export'; faultDesc[FaultID.DefaultArgsBehindRequiredArgs] = 'Default parameters before mandatory'; faultDesc[FaultID.NoDuplicateFunctionName] = 'No duplicate function name'; faultDesc[FaultID.OhmUrlFullPath] = 'Require full path file name'; diff --git a/ets2panda/linter/src/lib/Problems.ts b/ets2panda/linter/src/lib/Problems.ts index fae33a9b99505982c2d90ae76d0903feb8ebffed..b0db00e16a8470fe201710eb790faefece0ba11f 100644 --- a/ets2panda/linter/src/lib/Problems.ts +++ b/ets2panda/linter/src/lib/Problems.ts @@ -202,7 +202,6 @@ export enum FaultID { InteropJsObjectTraverseJsInstance, InteropJsObjectCallStaticFunc, InteropJsObjectExport, - InteropArkTs1ObjectExport, DefaultArgsBehindRequiredArgs, LimitedStdLibNoImportConcurrency, MissingSuperCall, diff --git a/ets2panda/linter/src/lib/TypeScriptLinter.ts b/ets2panda/linter/src/lib/TypeScriptLinter.ts index 1ba26f68a66fd4705c83ef78e502ecdc7a6cb8b8..84b5a362bffd31b3599d67e33eaa79e5b47b21d1 100644 --- a/ets2panda/linter/src/lib/TypeScriptLinter.ts +++ b/ets2panda/linter/src/lib/TypeScriptLinter.ts @@ -19,7 +19,7 @@ import { FaultID } from './Problems'; import { TypeScriptLinterConfig } from './TypeScriptLinterConfig'; import type { Autofix } from './autofixes/Autofixer'; import { Autofixer } from './autofixes/Autofixer'; -import { SYMBOL, SYMBOL_CONSTRUCTOR, TsUtils } from './utils/TsUtils'; +import { PROMISE_METHODS, SYMBOL, SYMBOL_CONSTRUCTOR, TsUtils } from './utils/TsUtils'; import { FUNCTION_HAS_NO_RETURN_ERROR_CODE } from './utils/consts/FunctionHasNoReturnErrorCode'; import { LIMITED_STANDARD_UTILITY_TYPES } from './utils/consts/LimitedStandardUtilityTypes'; import { LIKE_FUNCTION } from './utils/consts/LikeFunction'; @@ -180,6 +180,7 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { static literalAsPropertyNameTypeSet: Set; private localApiListItem: ApiListItem | undefined = undefined; static constructorFuncsSet: Set; + static ConstructorIfaceSet: Set; static initGlobals(): void { TypeScriptLinter.sharedModulesCache = new Map(); @@ -273,11 +274,18 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { } } + private static addSdkConstructorIfaceSetData(item: ApiListItem): void { + if (item.api_info.problem === SdkProblem.ConstructorIface) { + TypeScriptLinter.ConstructorIfaceSet.add(item); + } + } + private static initSdkWhitelist(): void { TypeScriptLinter.indexedTypeSet = new Set(); TypeScriptLinter.literalAsPropertyNameTypeSet = new Set(); TypeScriptLinter.constructorFuncsSet = new Set(); const list: ApiList = new ApiList(apiWhiteList); + TypeScriptLinter.ConstructorIfaceSet = new Set(); if (list?.api_list?.length > 0) { for (const item of list.api_list) { if (item.file_path !== '') { @@ -290,6 +298,7 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { TypeScriptLinter.addSdkliteralAsPropertyNameTypeSetData(item); TypeScriptLinter.addSdkConstructorFuncsSetData(item); TypeScriptLinter.addGlobalApiInfosCollocetionData(item); + TypeScriptLinter.addSdkConstructorIfaceSetData(item); } } } @@ -605,13 +614,24 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { } } + static ifValidObjectLiteralProperty( + prop: ts.ObjectLiteralElementLike, + objLitExpr: ts.ObjectLiteralExpression + ): boolean { + return ( + ts.isPropertyAssignment(prop) || + ts.isShorthandPropertyAssignment(prop) && + (ts.isCallExpression(objLitExpr.parent) || ts.isNewExpression(objLitExpr.parent)) + ); + } + private handleObjectLiteralProperties( objectLiteralType: ts.Type | undefined, objectLiteralExpr: ts.ObjectLiteralExpression ): void { let objLiteralAutofix: Autofix[] | undefined; const invalidProps = objectLiteralExpr.properties.filter((prop) => { - return !ts.isPropertyAssignment(prop); + return !TypeScriptLinter.ifValidObjectLiteralProperty(prop, objectLiteralExpr); }); if ( @@ -640,22 +660,39 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { return; } const arrayLitNode = node as ts.ArrayLiteralExpression; - let emptyContextTypeForArrayLiteral = false; - const arrayLitType = this.tsTypeChecker.getContextualType(arrayLitNode); if (arrayLitType && this.tsUtils.typeContainsSendableClassOrInterface(arrayLitType)) { this.incrementCounters(node, FaultID.SendableObjectInitialization); return; } + this.checkArrayElementsAndReportErrors(node, arrayLitNode, arrayLitType); + + this.handleObjectLiteralAssignmentToClass(arrayLitNode); + } + + private checkArrayElementsAndReportErrors( + node: ts.Node, + arrayLitNode: ts.ArrayLiteralExpression, + arrayLitType: undefined | ts.Type + ): void { + const parent = arrayLitNode.parent; + const arrayLitElements = arrayLitNode.elements; + const arrayElementIsEmpty = arrayLitElements.length === 0; + let emptyContextTypeForArrayLiteral = false; + /* * check that array literal consists of inferrable types * e.g. there is no element which is untyped object literals */ - const arrayLitElements = arrayLitNode.elements; - if (this.options.arkts2 && !arrayLitType && arrayLitElements.length === 0) { + const isPromiseEmptyArray = this.checkPromiseEmptyArray(parent, arrayElementIsEmpty); + const isEmptyArray = this.options.arkts2 && !arrayLitType && arrayElementIsEmpty; + if (isPromiseEmptyArray) { + this.incrementCounters(arrayLitNode, FaultID.NosparseArray); + } else if (isEmptyArray) { this.incrementCounters(node, FaultID.NosparseArray); } + for (const element of arrayLitElements) { const elementContextType = this.tsTypeChecker.getContextualType(element); if (ts.isObjectLiteralExpression(element)) { @@ -677,7 +714,25 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { if (emptyContextTypeForArrayLiteral) { this.incrementCounters(node, FaultID.ArrayLiteralNoContextType); } - this.handleObjectLiteralAssignmentToClass(arrayLitNode); + } + + private checkPromiseEmptyArray(parent: ts.Node, arrayElementIsEmpty: boolean): boolean { + if (this.options.arkts2 && ts.isCallExpression(parent) && arrayElementIsEmpty) { + const callExpr = parent; + const methodName = TypeScriptLinter.getPromiseMethodName(callExpr.expression); + if (methodName && PROMISE_METHODS.has(methodName)) { + return true; + } + return false; + } + return false; + } + + private static getPromiseMethodName(node: ts.Expression): string | undefined { + if (ts.isPropertyAccessExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === 'Promise') { + return node.name.text; + } + return undefined; } private handleStructDeclaration(node: ts.StructDeclaration): void { @@ -3942,15 +3997,34 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { private handleIllegalSymbolUsage(tsIdentifier: ts.Identifier, tsIdentSym: ts.Symbol): void { if (tsIdentSym.flags & ts.SymbolFlags.ValueModule) { this.incrementCounters(tsIdentifier, FaultID.NamespaceAsObject); - } else { - const typeName = tsIdentifier.getText(); - const isWrapperObject = typeName === 'Number' || typeName === 'String' || typeName === 'Boolean'; + return; + } + + const typeName = tsIdentifier.getText(); + const isWrapperObject = typeName === 'Number' || typeName === 'String' || typeName === 'Boolean'; + if (isWrapperObject) { + return; + } + + // Special-case element-access cast for autofix: (X as object)["prop"] + const asExpr = tsIdentifier.parent; + let elemAccess: ts.ElementAccessExpression | undefined; - if (!isWrapperObject) { - const faultId = this.options.arkts2 ? FaultID.ClassAsObjectError : FaultID.ClassAsObject; - this.incrementCounters(tsIdentifier, faultId); + if ( + ts.isAsExpression(asExpr) && + ts.isParenthesizedExpression(asExpr.parent) && + ts.isElementAccessExpression(asExpr.parent.parent) && + ts.isStringLiteral(asExpr.parent.parent.argumentExpression) + ) { + // only care if it’s literally “as object” && static-class casts + if (asExpr.type.getText() === 'object' && tsIdentSym.flags & ts.SymbolFlags.Class) { + elemAccess = asExpr.parent.parent; } } + + const autofix = elemAccess ? this.autofixer?.fixPropertyAccessByIndex(elemAccess) : undefined; + const faultId = this.options.arkts2 ? FaultID.ClassAsObjectError : FaultID.ClassAsObject; + this.incrementCounters(tsIdentifier, faultId, autofix); } private isElementAcessAllowed(type: ts.Type, argType: ts.Type): boolean { @@ -3986,12 +4060,33 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { private handleElementAccessExpression(node: ts.Node): void { const tsElementAccessExpr = node as ts.ElementAccessExpression; - const tsElementAccessExprSymbol = this.tsUtils.trueSymbolAtLocation(tsElementAccessExpr.expression); const tsElemAccessBaseExprType = this.tsUtils.getNonNullableType( this.tsUtils.getTypeOrTypeConstraintAtLocation(tsElementAccessExpr.expression) ); const tsElemAccessArgType = this.tsTypeChecker.getTypeAtLocation(tsElementAccessExpr.argumentExpression); + if (this.tsUtils.hasEsObjectType(tsElementAccessExpr.expression)) { + const faultId = this.options.arkts2 ? FaultID.EsValueTypeError : FaultID.EsValueType; + this.incrementCounters(node, faultId); + } + if (this.tsUtils.isOrDerivedFrom(tsElemAccessBaseExprType, this.tsUtils.isIndexableArray)) { + this.handleIndexNegative(node); + } + this.checkPropertyAccessByIndex(tsElementAccessExpr, tsElemAccessBaseExprType, tsElemAccessArgType); + this.checkArrayUsageWithoutBound(tsElementAccessExpr); + this.checkArrayIndexType(tsElemAccessBaseExprType, tsElemAccessArgType, tsElementAccessExpr); + this.fixJsImportElementAccessExpression(tsElementAccessExpr); + this.checkInterOpImportJsIndex(tsElementAccessExpr); + this.checkEnumGetMemberValue(tsElementAccessExpr); + } + + private checkPropertyAccessByIndex( + tsElementAccessExpr: ts.ElementAccessExpression, + tsElemAccessBaseExprType: ts.Type, + tsElemAccessArgType: ts.Type + ): void { + const tsElementAccessExprSymbol = this.tsUtils.trueSymbolAtLocation(tsElementAccessExpr.expression); + const isSet = TsUtils.isSetExpression(tsElementAccessExpr); const isSetIndexable = isSet && @@ -4006,28 +4101,37 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { if ( // unnamed types do not have symbol, so need to check that explicitly - !this.tsUtils.isLibrarySymbol(tsElementAccessExprSymbol) && - !ts.isArrayLiteralExpression(tsElementAccessExpr.expression) && - !this.isElementAcessAllowed(tsElemAccessBaseExprType, tsElemAccessArgType) && - !(this.options.arkts2 && isGetIndexable) && - !(this.options.arkts2 && isSetIndexable) + this.tsUtils.isLibrarySymbol(tsElementAccessExprSymbol) || + ts.isArrayLiteralExpression(tsElementAccessExpr.expression) || + this.isElementAcessAllowed(tsElemAccessBaseExprType, tsElemAccessArgType) || + this.options.arkts2 && isGetIndexable || + this.options.arkts2 && isSetIndexable ) { - const autofix = this.autofixer?.fixPropertyAccessByIndex(tsElementAccessExpr); - this.incrementCounters(node, FaultID.PropertyAccessByIndex, autofix); + return; } - if (this.tsUtils.hasEsObjectType(tsElementAccessExpr.expression)) { - const faultId = this.options.arkts2 ? FaultID.EsValueTypeError : FaultID.EsValueType; - this.incrementCounters(node, faultId); + if (this.isStaticClassAccess(tsElementAccessExpr)) { + return; } - if (this.tsUtils.isOrDerivedFrom(tsElemAccessBaseExprType, this.tsUtils.isIndexableArray)) { - this.handleIndexNegative(node); + + const autofix = this.autofixer?.fixPropertyAccessByIndex(tsElementAccessExpr); + this.incrementCounters(tsElementAccessExpr, FaultID.PropertyAccessByIndex, autofix); + } + + /** + * Returns true if this element-access is a static-class cast (e.g., (A as object)["foo"]). + */ + private isStaticClassAccess(expr: ts.ElementAccessExpression): boolean { + const inner = expr.expression; + if ( + ts.isParenthesizedExpression(inner) && + ts.isAsExpression(inner.expression) && + ts.isIdentifier(inner.expression.expression) + ) { + const sym = this.tsTypeChecker.getSymbolAtLocation(inner.expression.expression); + return !!(sym && sym.flags & ts.SymbolFlags.Class); } - this.checkArrayUsageWithoutBound(tsElementAccessExpr); - this.checkArrayIndexType(tsElemAccessBaseExprType, tsElemAccessArgType, tsElementAccessExpr); - this.fixJsImportElementAccessExpression(tsElementAccessExpr); - this.checkInterOpImportJsIndex(tsElementAccessExpr); - this.checkEnumGetMemberValue(tsElementAccessExpr); + return false; } private checkInterOpImportJsIndex(expr: ts.ElementAccessExpression): void { @@ -4413,7 +4517,7 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { const tsCallExpr = node as ts.CallExpression; this.handleStateStyles(tsCallExpr); this.handleBuiltinCtorCallSignature(tsCallExpr); - + this.handleSdkConstructorIfaceForCallExpression(tsCallExpr); if (this.options.arkts2 && tsCallExpr.typeArguments !== undefined) { this.handleSdkPropertyAccessByIndex(tsCallExpr); } @@ -4595,32 +4699,6 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { return false; } - private isExportedEntityDeclaredInArkTs1(exportDecl: ts.ExportDeclaration): boolean | undefined { - if (!this.options.arkts2 || !this.useStatic) { - return false; - } - - // For named exports with braces { ... } - if (exportDecl.exportClause && ts.isNamedExports(exportDecl.exportClause)) { - for (const exportSpecifier of exportDecl.exportClause.elements) { - const identifier = exportSpecifier.name; - if (this.tsUtils.isExportImportedFromArkTs1(identifier, exportDecl)) { - return true; - } - } - } - - // For namespace exports (export * as namespace from ...) - if (exportDecl.exportClause && ts.isNamespaceExport(exportDecl.exportClause)) { - const namespaceIdentifier = exportDecl.exportClause.name; - if (this.tsUtils.isExportImportedFromArkTs1(namespaceIdentifier, exportDecl)) { - return true; - } - } - - return false; - } - private isDeclaredInArkTs2(callSignature: ts.Signature): boolean | undefined { const declarationSourceFile = callSignature?.declaration?.getSourceFile(); if (!declarationSourceFile) { @@ -4636,17 +4714,9 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { return false; } - private checkRestrictedAPICall(node: ts.Node): void { - if (ts.isCallExpression(node)) { - if (TypeScriptLinter.isReflectAPICall(node)) { - this.incrementCounters(node.parent, FaultID.InteropCallReflect); - return; - } - - const signature = this.tsTypeChecker.getResolvedSignature(node); - if (signature) { - this.checkForForbiddenAPIs(signature, node); - } + private checkRestrictedAPICall(node: ts.CallExpression): void { + if (TypeScriptLinter.isReflectAPICall(node)) { + this.incrementCounters(node.parent, FaultID.InteropCallReflect); } } @@ -4667,11 +4737,31 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { return false; } + private shouldCheckForForbiddenAPI(declaration: ts.SignatureDeclaration | ts.JSDocSignature): boolean { + for (const parameter of declaration.parameters) { + if (ts.isJSDocParameterTag(parameter)) { + continue; + } + const parameterType = this.tsTypeChecker.getTypeAtLocation(parameter); + const parameterTypeString = this.tsTypeChecker.typeToString(parameterType); + + if (parameterTypeString === OBJECT_LITERAL) { + return true; + } + } + + return false; + } + private checkForForbiddenAPIs(callSignature: ts.Signature, tsCallExpr: ts.CallExpression): void { if (!callSignature.declaration) { return; } + if (!this.shouldCheckForForbiddenAPI(callSignature.declaration)) { + return; + } + const functionSymbol = this.getFunctionSymbol(callSignature.declaration); const functionDeclaration = functionSymbol?.valueDeclaration; if (!functionDeclaration) { @@ -5089,30 +5179,32 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { if (!this.options.arkts2 || !this.useStatic) { return; } - - if (!ts.isReturnStatement(newExpression.parent)) { - return; - } - const calleeExpr = newExpression.expression; if (!ts.isIdentifier(calleeExpr)) { return; } const type = this.tsTypeChecker.getTypeAtLocation(calleeExpr); - if (!type.symbol) { - return; - } - const typeDeclarations = type.symbol.declarations; - if (!typeDeclarations || typeDeclarations.length === 0) { - return; - } - - if (!ts.isInterfaceDeclaration(typeDeclarations[0])) { - return; + const typeDeclaration = TsUtils.getDeclaration(type.symbol); + if (typeDeclaration && ts.isInterfaceDeclaration(typeDeclaration) && type.symbol) { + const filePath = typeDeclaration.getSourceFile().fileName; + this.checkIsConstructorIface(calleeExpr, type.symbol.name, path.basename(filePath)); } + } - this.incrementCounters(calleeExpr, FaultID.ConstructorIfaceFromSdk); + private checkIsConstructorIface(node: ts.Node, symbol: string, filePath: string): void { + const constructorIfaceSetInfos = Array.from(TypeScriptLinter.ConstructorIfaceSet); + constructorIfaceSetInfos.some((constructorFuncsInfo) => { + const api_name = constructorFuncsInfo.api_info.parent_api[0].api_name; + if ( + symbol === api_name && + (constructorFuncsInfo.file_path.includes(filePath) || constructorFuncsInfo.import_path.includes(filePath)) + ) { + this.incrementCounters(node, FaultID.ConstructorIfaceFromSdk); + return true; + } + return false; + }); } private handleNewExpression(node: ts.Node): void { @@ -5342,6 +5434,52 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { } } + private handleSdkConstructorIfaceForCallExpression(callExpr: ts.CallExpression): void { + if (!this.options.arkts2) { + return; + } + let type: ts.Type | undefined; + if (!callExpr.arguments || callExpr.arguments.length === 0) { + if (ts.isPropertyAccessExpression(callExpr.expression)) { + type = this.tsTypeChecker.getTypeAtLocation(callExpr.expression.expression); + } + } + callExpr.arguments.some((args) => { + if (ts.isIdentifier(args)) { + type = this.tsTypeChecker.getTypeAtLocation(args); + } + }); + if (!type) { + return; + } + const decl = TsUtils.getDeclaration(type?.symbol); + if (!decl) { + return; + } + const filePath = TypeScriptLinter.getFileName(decl); + this.checkIsConstructorIface(callExpr, type.symbol.name, filePath); + } + + private static getFileName(decl: ts.Declaration): string { + let filePath = ''; + if ( + ts.isImportSpecifier(decl) && + ts.isImportDeclaration(decl.parent.parent.parent) && + ts.isStringLiteral(decl.parent.parent.parent.moduleSpecifier) + ) { + filePath = decl.parent.parent.parent.moduleSpecifier.text; + } else if ( + ts.isImportClause(decl) && + ts.isImportDeclaration(decl.parent) && + ts.isStringLiteral(decl.parent.moduleSpecifier) + ) { + filePath = decl.parent.moduleSpecifier.text; + } else { + filePath = decl.getSourceFile().fileName; + } + return path.basename(filePath); + } + private handleSharedArrayBuffer( node: ts.TypeReferenceNode | ts.NewExpression | ts.ExpressionWithTypeArguments ): void { @@ -6010,11 +6148,6 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { return; } - if (this.isExportedEntityDeclaredInArkTs1(exportDecl)) { - this.incrementCounters(node, FaultID.InteropArkTs1ObjectExport); - return; - } - if (!TypeScriptLinter.inSharedModule(node) || ts.isModuleBlock(node.parent)) { return; } diff --git a/ets2panda/linter/src/lib/autofixes/Autofixer.ts b/ets2panda/linter/src/lib/autofixes/Autofixer.ts index 39545de72264cb5e549916898bb41af127e45e02..a29f4742e47f407ad4db9cf4e8c7cddbfe64aea1 100644 --- a/ets2panda/linter/src/lib/autofixes/Autofixer.ts +++ b/ets2panda/linter/src/lib/autofixes/Autofixer.ts @@ -46,10 +46,8 @@ import { ES_VALUE } from '../utils/consts/ESObject'; import type { IncrementDecrementNodeInfo } from '../utils/consts/InteropAPI'; import { LOAD, - GET_PROPERTY_BY_NAME, - SET_PROPERTY_BY_NAME, - GET_PROPERTY_BY_INDEX, - SET_PROPERTY_BY_INDEX, + GET_PROPERTY, + SET_PROPERTY, ARE_EQUAL, ARE_STRICTLY_EQUAL, WRAP, @@ -3294,7 +3292,7 @@ export class Autofixer { ts.factory.createCallExpression( ts.factory.createPropertyAccessExpression( ts.factory.createIdentifier(expression), - ts.factory.createIdentifier(GET_PROPERTY_BY_NAME) + ts.factory.createIdentifier(GET_PROPERTY) ), undefined, [ts.factory.createStringLiteral(name)] @@ -3329,7 +3327,7 @@ export class Autofixer { const node = ts.factory.createCallExpression( ts.factory.createPropertyAccessExpression( ts.factory.createIdentifier(expression), - ts.factory.createIdentifier(SET_PROPERTY_BY_NAME) + ts.factory.createIdentifier(SET_PROPERTY) ), undefined, [ts.factory.createIdentifier(field), value] @@ -3896,7 +3894,7 @@ export class Autofixer { void this; const base = lhs.expression.getText(); const prop = lhs.name.text; - const replacementText = `${base}.setPropertyByName('${prop}',ESValue.wrap(${rhs.getText()}))`; + const replacementText = `${base}.setProperty('${prop}',ESValue.wrap(${rhs.getText()}))`; return [{ start: binaryExpr.getStart(), end: binaryExpr.getEnd(), replacementText }]; } @@ -3934,7 +3932,7 @@ export class Autofixer { let start = node.getStart(); let end = node.getEnd(); - let replacementText = `${objName}.${GET_PROPERTY_BY_NAME}('${propName}')`; + let replacementText = `${objName}.${GET_PROPERTY}('${propName}')`; // Check if there is an "as number" type assertion in the statement if (ts.isAsExpression(node.parent) && node.parent.type.kind === ts.SyntaxKind.NumberKeyword) { @@ -3954,7 +3952,7 @@ export class Autofixer { const end = node.getEnd(); const typeTag = this.utils.findTypeOfNodeForConversion(node); - const replacement = `${objName}.${GET_PROPERTY_BY_NAME}('${propName}')${typeTag}`; + const replacement = `${objName}.${GET_PROPERTY}('${propName}')${typeTag}`; return [{ replacementText: replacement, start, end }]; } @@ -3962,8 +3960,8 @@ export class Autofixer { /** * Converts a JS element access (e.g. `arr[index]`) into the corresponding * interop call: - * - On assignment (`arr[index] = value`), emits `arr.setPropertyByIndex(index, ESValue.wrap(value))` - * - On read, emits `arr.getPropertyByIndex(index)` plus any type conversion suffix + * - On assignment (`arr[index] = value`), emits `arr.setProperty(index, ESValue.wrap(value))` + * - On read, emits `arr.getProperty(index)` plus any type conversion suffix * * @param elementAccessExpr The original `ElementAccessExpression` node. * @returns An array with a single `Autofix` describing the replacement range and text. @@ -3979,7 +3977,7 @@ export class Autofixer { let replacementText: string; if (isAssignment) { - // arr.setPropertyByIndex(index, ESValue.wrap(value)) + // arr.setProperty(index, ESValue.wrap(value)) const wrapped = ts.factory.createCallExpression( ts.factory.createPropertyAccessExpression( ts.factory.createIdentifier(ES_VALUE), @@ -3990,16 +3988,16 @@ export class Autofixer { ); const callExpr = ts.factory.createCallExpression( - ts.factory.createPropertyAccessExpression(identifierNode, ts.factory.createIdentifier(SET_PROPERTY_BY_INDEX)), + ts.factory.createPropertyAccessExpression(identifierNode, ts.factory.createIdentifier(SET_PROPERTY)), undefined, [elementAccessExpr.argumentExpression, wrapped] ); replacementText = this.printer.printNode(ts.EmitHint.Unspecified, callExpr, elementAccessExpr.getSourceFile()); } else { - // arr.getPropertyByIndex(index) plus conversion + // arr.getProperty(index) plus conversion const callExpr = ts.factory.createCallExpression( - ts.factory.createPropertyAccessExpression(identifierNode, ts.factory.createIdentifier(GET_PROPERTY_BY_INDEX)), + ts.factory.createPropertyAccessExpression(identifierNode, ts.factory.createIdentifier(GET_PROPERTY)), undefined, [elementAccessExpr.argumentExpression] ); @@ -4017,17 +4015,17 @@ export class Autofixer { /** * Replace each loop‐variable reference (e.g. `element`) with - * `array.getPropertyByIndex(i)` plus appropriate conversion. + * `array.getProperty(i)` plus appropriate conversion. * * @param identifier The Identifier node of the loop variable usage. * @param arrayName The name of the array being iterated. */ fixInteropArrayElementUsage(identifier: ts.Identifier, arrayName: string): Autofix { - // arr.getPropertyByIndex(i) + // arr.getProperty(i) const callExpr = ts.factory.createCallExpression( ts.factory.createPropertyAccessExpression( ts.factory.createIdentifier(arrayName), - ts.factory.createIdentifier(GET_PROPERTY_BY_INDEX) + ts.factory.createIdentifier(GET_PROPERTY) ), undefined, [ts.factory.createIdentifier('i')] @@ -4068,7 +4066,7 @@ export class Autofixer { /** * Converts a `for...of` over an interop array into - * an index-based `for` loop using `getPropertyByName("length")`. + * an index-based `for` loop using `getProperty("length")`. * * @param node The `ForOfStatement` node to fix. * @returns A single Autofix for the loop header replacement. @@ -4091,7 +4089,7 @@ export class Autofixer { const lengthAccess = ts.factory.createCallExpression( ts.factory.createPropertyAccessExpression( ts.factory.createIdentifier(iterableName), - ts.factory.createIdentifier(GET_PROPERTY_BY_NAME) + ts.factory.createIdentifier(GET_PROPERTY) ), undefined, [ts.factory.createStringLiteral(LENGTH)] @@ -4244,7 +4242,7 @@ export class Autofixer { return undefined; } const propName = node.name.text; - return `${base}.${GET_PROPERTY_BY_NAME}('${propName}')`; + return `${base}.${GET_PROPERTY}('${propName}')`; } else if (ts.isNewExpression(node)) { const newArgs = this.createArgs(node.arguments); const newCallExpr = this.createJSInvokeCallExpression(node.expression, INSTANTIATE, [...newArgs || []]); @@ -4314,7 +4312,7 @@ export class Autofixer { const propertyName = originalName || symbolName; const constructDeclInfo: string[] = isLoad ? [this.modVarName, ES_VALUE, LOAD] : - [symbolName, this.modVarName, GET_PROPERTY_BY_NAME]; + [symbolName, this.modVarName, GET_PROPERTY]; const newVarDecl = Autofixer.createVariableForInteropImport( constructDeclInfo[0], constructDeclInfo[1], @@ -4339,7 +4337,7 @@ export class Autofixer { fixInteropPropertyAccessExpression(express: ts.PropertyAccessExpression): Autofix[] | undefined { let text: string = ''; const statements = ts.factory.createCallExpression( - ts.factory.createPropertyAccessExpression(express.expression, ts.factory.createIdentifier(GET_PROPERTY_BY_NAME)), + ts.factory.createPropertyAccessExpression(express.expression, ts.factory.createIdentifier(GET_PROPERTY)), undefined, [ts.factory.createStringLiteral(express.name.getText())] ); @@ -4361,7 +4359,7 @@ export class Autofixer { const statements = ts.factory.createCallExpression( ts.factory.createPropertyAccessExpression( ts.factory.createIdentifier(objectName), - ts.factory.createIdentifier(SET_PROPERTY_BY_NAME) + ts.factory.createIdentifier(SET_PROPERTY) ), undefined, [ @@ -4398,7 +4396,7 @@ export class Autofixer { } const propertyAccess = ts.factory.createCallExpression( - ts.factory.createPropertyAccessExpression(express.expression, ts.factory.createIdentifier(GET_PROPERTY_BY_NAME)), + ts.factory.createPropertyAccessExpression(express.expression, ts.factory.createIdentifier(GET_PROPERTY)), undefined, [ts.factory.createStringLiteral(express.name.getText())] ); @@ -4457,7 +4455,7 @@ export class Autofixer { private fixPropertyAccessToNumber(expr: ts.PropertyAccessExpression): Autofix[] { const getPropCall = ts.factory.createCallExpression( - ts.factory.createPropertyAccessExpression(expr.expression, ts.factory.createIdentifier(GET_PROPERTY_BY_NAME)), + ts.factory.createPropertyAccessExpression(expr.expression, ts.factory.createIdentifier(GET_PROPERTY)), undefined, [ts.factory.createStringLiteral(expr.name.getText())] ); @@ -4481,7 +4479,7 @@ export class Autofixer { fixInteropArrayElementAccessExpression(express: ts.ElementAccessExpression): Autofix[] | undefined { const statements = ts.factory.createCallExpression( - ts.factory.createPropertyAccessExpression(express.expression, ts.factory.createIdentifier(GET_PROPERTY_BY_INDEX)), + ts.factory.createPropertyAccessExpression(express.expression, ts.factory.createIdentifier(GET_PROPERTY)), undefined, [express.argumentExpression] ); @@ -4495,7 +4493,7 @@ export class Autofixer { const statements = ts.factory.createCallExpression( ts.factory.createPropertyAccessExpression( ts.factory.createIdentifier(left.expression.getText()), - ts.factory.createIdentifier(SET_PROPERTY_BY_INDEX) + ts.factory.createIdentifier(SET_PROPERTY) ), undefined, [ @@ -4531,7 +4529,7 @@ export class Autofixer { const getPropertyCall = ts.factory.createCallExpression( ts.factory.createPropertyAccessExpression( ts.factory.createIdentifier(propertyAccess.expression.getText()), - ts.factory.createIdentifier(GET_PROPERTY_BY_NAME) + ts.factory.createIdentifier(GET_PROPERTY) ), undefined, [ts.factory.createStringLiteral(propertyAccess.name.getText())] @@ -4904,6 +4902,12 @@ export class Autofixer { if (!typeNode) { return this.fixGenericCallNoTypeArgsWithContextualType(node); } + if (ts.isUnionTypeNode(typeNode)) { + return this.fixGenericCallNoTypeArgsForUnionType(node, typeNode); + } + if (ts.isArrayTypeNode(typeNode)) { + return this.fixGenericCallNoTypeArgsForArrayType(node, typeNode); + } if (!ts.isTypeReferenceNode(typeNode) || typeNode.typeName.getText() !== node.expression.getText()) { return undefined; } @@ -4920,6 +4924,36 @@ export class Autofixer { return [{ start: insertPos, end: insertPos, replacementText: typeArgsText }]; } + private fixGenericCallNoTypeArgsForArrayType(node: ts.NewExpression, arrayTypeNode: ts.ArrayTypeNode): Autofix[] | undefined { + const elementTypeNode = arrayTypeNode.elementType; + const srcFile = node.getSourceFile(); + const typeArgsText = `<${this.printer.printNode(ts.EmitHint.Unspecified, elementTypeNode, srcFile)}>`; + const insertPos = node.expression.getEnd(); + return [{ start: insertPos, end: insertPos, replacementText: typeArgsText }]; + } + + private fixGenericCallNoTypeArgsForUnionType(node: ts.NewExpression, unionType: ts.UnionTypeNode): Autofix[] | undefined { + const matchingTypes = unionType.types.filter((type) => { + return ts.isTypeReferenceNode(type) && type.typeName.getText() === node.expression.getText(); + }) as ts.TypeReferenceNode[]; + + if (matchingTypes.length === 1) { + const matchingType = matchingTypes[0]; + if (matchingType.typeArguments) { + const srcFile = node.getSourceFile(); + const typeArgsText = `<${matchingType.typeArguments. + map((arg) => { + return this.printer.printNode(ts.EmitHint.Unspecified, arg, srcFile); + }). + join(', ')}>`; + + const insertPos = node.expression.getEnd(); + return [{ start: insertPos, end: insertPos, replacementText: typeArgsText }]; + } + } + return undefined; + } + private generateGenericTypeArgumentsAutofix( node: ts.NewExpression, typeArgs: ts.TypeReferenceNode[] diff --git a/ets2panda/linter/src/lib/utils/TsUtils.ts b/ets2panda/linter/src/lib/utils/TsUtils.ts index 3395d32594540e75005beb8ba4593ecbf30bb8cc..e164774602d29402032b17e067b07adee45db3f6 100644 --- a/ets2panda/linter/src/lib/utils/TsUtils.ts +++ b/ets2panda/linter/src/lib/utils/TsUtils.ts @@ -48,6 +48,7 @@ import { ETS_MODULE, PATH_SEPARATOR, VALID_OHM_COMPONENTS_MODULE_PATH } from './ import { EXTNAME_ETS, EXTNAME_JS, EXTNAME_D_ETS } from './consts/ExtensionName'; import { STRING_ERROR_LITERAL } from './consts/Literals'; +export const PROMISE_METHODS = new Set(['all', 'race', 'any', 'resolve', 'allSettled']); export const SYMBOL = 'Symbol'; export const SYMBOL_CONSTRUCTOR = 'SymbolConstructor'; const ITERATOR = 'iterator'; @@ -3705,41 +3706,6 @@ export class TsUtils { return undefined; } - /** - * Checks whether an exported identifier is imported from an ArkTS1 file. - * @param exportIdentifier The exported identifier to check. - * @param node The node where the export occurs (used to get the current source file). - * @returns true if imported from ArkTS1, false if not, undefined if undetermined. - */ - isExportImportedFromArkTs1(exportIdentifier: ts.Identifier, node: ts.Node): boolean | undefined { - // Get the symbol associated with the identifier. - const symbol = this.tsTypeChecker.getSymbolAtLocation(exportIdentifier); - if (!symbol) { - return undefined; - } - - // If the symbol is an alias (imported), resolve the real symbol. - const realSymbol = - (symbol.flags & ts.SymbolFlags.Alias) !== 0 ? this.tsTypeChecker.getAliasedSymbol(symbol) : undefined; - - const declarations = realSymbol?.getDeclarations(); - if (!declarations || declarations.length === 0) { - return undefined; - } - - // Get the source file where the declaration is located. - const importSourceFile = declarations[0].getSourceFile(); - - // Ensure import is from ArkTS1 file and usage is in ArkTS1.2 file - const currentSourceFile = node.getSourceFile(); - return ( - importSourceFile.fileName.endsWith(EXTNAME_ETS) && - currentSourceFile.fileName.endsWith(EXTNAME_ETS) && - !this.isArkts12File(importSourceFile) && - this.isArkts12File(currentSourceFile) - ); - } - isArkts12File(sourceFile: ts.SourceFile): boolean { if (!sourceFile?.fileName) { return false; diff --git a/ets2panda/linter/src/lib/utils/consts/ArkTS2Rules.ts b/ets2panda/linter/src/lib/utils/consts/ArkTS2Rules.ts index 1f26e36e862aa393385cf635d5b726a41ec9c02c..ea727f914a048f94a8e9aece92d854c2bd5b50c0 100644 --- a/ets2panda/linter/src/lib/utils/consts/ArkTS2Rules.ts +++ b/ets2panda/linter/src/lib/utils/consts/ArkTS2Rules.ts @@ -108,7 +108,6 @@ export const arkts2Rules: number[] = [ 321, 322, 323, - 324, 325, 326, 327, diff --git a/ets2panda/linter/src/lib/utils/consts/InteropAPI.ts b/ets2panda/linter/src/lib/utils/consts/InteropAPI.ts index 285a75b407baf65f6c5d0096832041ebf3dc57c0..afd7fcc08737fc52d29b37f99fa38852b6417450 100644 --- a/ets2panda/linter/src/lib/utils/consts/InteropAPI.ts +++ b/ets2panda/linter/src/lib/utils/consts/InteropAPI.ts @@ -39,6 +39,7 @@ export const REFLECT_PROPERTIES = [ 'isExtensible', 'preventExtensions' ]; + export const OBJECT_PROPERTIES = [ 'get', 'set', @@ -66,10 +67,8 @@ export const REFLECT_LITERAL = 'Reflect'; export const NONE = 'none'; export type ForbidenAPICheckResult = 'Object' | 'Reflect' | 'none'; export const LOAD = 'load'; -export const GET_PROPERTY_BY_NAME = 'getPropertyByName'; -export const SET_PROPERTY_BY_NAME = 'setPropertyByName'; -export const GET_PROPERTY_BY_INDEX = 'getPropertyByIndex'; -export const SET_PROPERTY_BY_INDEX = 'setPropertyByIndex'; +export const GET_PROPERTY = 'getProperty'; +export const SET_PROPERTY = 'setProperty'; export const TO_NUMBER = 'toNumber'; export enum InteropType { diff --git a/ets2panda/linter/test/interop/binary_operation_js_obj.ets.autofix.json b/ets2panda/linter/test/interop/binary_operation_js_obj.ets.autofix.json index 8bf1b635a68ff6b9b200e96005430d8081c31da9..796dfbb772a4068a047047116df7245c1ec5ea44 100644 --- a/ets2panda/linter/test/interop/binary_operation_js_obj.ets.autofix.json +++ b/ets2panda/linter/test/interop/binary_operation_js_obj.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 656, "end": 656, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./binary_operation_js_obj_js');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\nlet m = GeneratedImportVar_1.getPropertyByName('m');\nlet n = GeneratedImportVar_1.getPropertyByName('n');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./binary_operation_js_obj_js');\nlet foo = GeneratedImportVar_1.getProperty('foo');\nlet m = GeneratedImportVar_1.getProperty('m');\nlet n = GeneratedImportVar_1.getProperty('n');\n", "line": 15, "column": 1, "endLine": 15, @@ -54,7 +54,7 @@ { "start": 665, "end": 670, - "replacementText": "foo.getPropertyByName(\"a\")", + "replacementText": "foo.getProperty(\"a\")", "line": 16, "column": 9, "endLine": 16, @@ -75,7 +75,7 @@ { "start": 679, "end": 684, - "replacementText": "foo.getPropertyByName(\"b\")", + "replacementText": "foo.getProperty(\"b\")", "line": 17, "column": 9, "endLine": 17, @@ -96,7 +96,7 @@ { "start": 665, "end": 670, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 18, "column": 1, "endLine": 18, @@ -117,7 +117,7 @@ { "start": 679, "end": 684, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 18, "column": 5, "endLine": 18, @@ -138,7 +138,7 @@ { "start": 665, "end": 670, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 19, "column": 1, "endLine": 19, @@ -159,7 +159,7 @@ { "start": 679, "end": 684, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 19, "column": 5, "endLine": 19, @@ -180,7 +180,7 @@ { "start": 665, "end": 670, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 20, "column": 1, "endLine": 20, @@ -201,7 +201,7 @@ { "start": 679, "end": 684, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 20, "column": 5, "endLine": 20, @@ -222,7 +222,7 @@ { "start": 665, "end": 670, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 21, "column": 1, "endLine": 21, @@ -243,7 +243,7 @@ { "start": 679, "end": 684, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 21, "column": 5, "endLine": 21, @@ -264,7 +264,7 @@ { "start": 665, "end": 670, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 22, "column": 1, "endLine": 22, @@ -285,7 +285,7 @@ { "start": 679, "end": 684, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 22, "column": 5, "endLine": 22, @@ -306,7 +306,7 @@ { "start": 665, "end": 670, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 23, "column": 1, "endLine": 23, @@ -327,7 +327,7 @@ { "start": 679, "end": 684, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 23, "column": 6, "endLine": 23, @@ -756,7 +756,7 @@ { "start": 884, "end": 889, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 43, "column": 1, "endLine": 43, @@ -777,7 +777,7 @@ { "start": 892, "end": 897, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 43, "column": 9, "endLine": 43, @@ -798,7 +798,7 @@ { "start": 884, "end": 889, - "replacementText": "foo.getPropertyByName(\"a\")", + "replacementText": "foo.getProperty(\"a\")", "line": 43, "column": 1, "endLine": 43, @@ -819,7 +819,7 @@ { "start": 892, "end": 897, - "replacementText": "foo.getPropertyByName(\"b\")", + "replacementText": "foo.getProperty(\"b\")", "line": 43, "column": 9, "endLine": 43, diff --git a/ets2panda/linter/test/interop/binary_operation_js_obj.ets.migrate.ets b/ets2panda/linter/test/interop/binary_operation_js_obj.ets.migrate.ets index f29b91c27508799b1f7054d1ab2b622b82fe51cd..f71f2540b498b2c0e453cc82aaabbb508b1a8b5c 100644 --- a/ets2panda/linter/test/interop/binary_operation_js_obj.ets.migrate.ets +++ b/ets2panda/linter/test/interop/binary_operation_js_obj.ets.migrate.ets @@ -13,12 +13,12 @@ * limitations under the License. */ let GeneratedImportVar_1 = ESValue.load('./binary_operation_js_obj_js'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); -let m = GeneratedImportVar_1.getPropertyByName('m'); -let n = GeneratedImportVar_1.getPropertyByName('n'); +let foo = GeneratedImportVar_1.getProperty('foo'); +let m = GeneratedImportVar_1.getProperty('m'); +let n = GeneratedImportVar_1.getProperty('n'); -let a = foo.getPropertyByName("a") -let b = foo.getPropertyByName("b") +let a = foo.getProperty("a") +let b = foo.getProperty("b") a + b a - b a * b @@ -48,4 +48,4 @@ x2 - y2; x2 % y2; Math.pow(x2, y2); -foo.getPropertyByName("a").toNumber() + foo.getPropertyByName("b").toNumber(); \ No newline at end of file +foo.getProperty("a").toNumber() + foo.getProperty("b").toNumber(); \ No newline at end of file diff --git a/ets2panda/linter/test/interop/binary_operation_js_obj.ets.migrate.json b/ets2panda/linter/test/interop/binary_operation_js_obj.ets.migrate.json index 817c2a94501ff9e7c7d318f8d8bacf6f388092a8..00ccbc39c61e627b937eae4dcd3b32d495906082 100644 --- a/ets2panda/linter/test/interop/binary_operation_js_obj.ets.migrate.json +++ b/ets2panda/linter/test/interop/binary_operation_js_obj.ets.migrate.json @@ -28,7 +28,7 @@ "line": 16, "column": 5, "endLine": 16, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 17, "column": 5, "endLine": 17, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -48,7 +48,7 @@ "line": 18, "column": 5, "endLine": 18, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -58,7 +58,7 @@ "line": 20, "column": 5, "endLine": 20, - "endColumn": 35, + "endColumn": 29, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +68,7 @@ "line": 21, "column": 5, "endLine": 21, - "endColumn": 35, + "endColumn": 29, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/call_object_methods.ets.autofix.json b/ets2panda/linter/test/interop/call_object_methods.ets.autofix.json index 5776d747e91eb48f6601bcff75f5fe371e5f1e75..ca67f37978d18385d4c2b0877925b32652d6b317 100644 --- a/ets2panda/linter/test/interop/call_object_methods.ets.autofix.json +++ b/ets2panda/linter/test/interop/call_object_methods.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 650, "end": 650, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./call_object_methods_js');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./call_object_methods_js');\nlet foo = GeneratedImportVar_1.getProperty('foo');\n", "line": 15, "column": 1, "endLine": 15, diff --git a/ets2panda/linter/test/interop/call_object_methods.ets.migrate.ets b/ets2panda/linter/test/interop/call_object_methods.ets.migrate.ets index 2d455bda8efef122fba489a3d60a57d3f71c6379..600a9cadacf84ccc7a9cf27a38eb2731efe84d42 100644 --- a/ets2panda/linter/test/interop/call_object_methods.ets.migrate.ets +++ b/ets2panda/linter/test/interop/call_object_methods.ets.migrate.ets @@ -13,7 +13,7 @@ * limitations under the License. */ let GeneratedImportVar_1 = ESValue.load('./call_object_methods_js'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); +let foo = GeneratedImportVar_1.getProperty('foo'); foo.invokeMethod("bar", ESValue.wrap(123.0)) diff --git a/ets2panda/linter/test/interop/call_object_methods.ets.migrate.json b/ets2panda/linter/test/interop/call_object_methods.ets.migrate.json index 4f96146af19c8bb188c5157221d11ba6cf249284..ccc6caf0a4f15dd1754ff45bd3e3c750d7c388a1 100644 --- a/ets2panda/linter/test/interop/call_object_methods.ets.migrate.json +++ b/ets2panda/linter/test/interop/call_object_methods.ets.migrate.json @@ -28,7 +28,7 @@ "line": 16, "column": 5, "endLine": 16, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.autofix.json b/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.autofix.json index e48a8565b9797a819a48576450a0c1ddaf2d4b5d..a0e63a21c5d46c4ca42f831c725824c226409396 100644 --- a/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.autofix.json +++ b/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.autofix.json @@ -14,7 +14,7 @@ "limitations under the License." ], "result": [ - { + { "line": 15, "column": 1, "endLine": 15, @@ -33,7 +33,7 @@ { "start": 655, "end": 655, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./increases_decreases_js_obj_js');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./increases_decreases_js_obj_js');\nlet foo = GeneratedImportVar_1.getProperty('foo');\n", "line": 15, "column": 1, "endLine": 15, @@ -73,7 +73,7 @@ "problem": "InteropIncrementDecrement", "autofix": [ { - "replacementText": "a = foo.getPropertyByName(\"num\").toNumber()\nfoo.setPropertyByName(num, a + 1)\na = a + 1\n", + "replacementText": "a = foo.getProperty(\"num\").toNumber()\nfoo.setProperty(num, a + 1)\na = a + 1\n", "start": 673, "end": 686, "line": 17, @@ -96,7 +96,7 @@ { "start": 677, "end": 684, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 17, "column": 5, "endLine": 17, @@ -115,7 +115,7 @@ "problem": "InteropIncrementDecrement", "autofix": [ { - "replacementText": "a = foo.getPropertyByName(\"num\").toNumber()\na = a + 1\nfoo.setPropertyByName(num, a)\n", + "replacementText": "a = foo.getProperty(\"num\").toNumber()\na = a + 1\nfoo.setProperty(num, a)\n", "start": 687, "end": 700, "line": 18, @@ -138,7 +138,7 @@ { "start": 693, "end": 700, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 18, "column": 7, "endLine": 18, @@ -157,7 +157,7 @@ "problem": "InteropIncrementDecrement", "autofix": [ { - "replacementText": "a = foo.getPropertyByName(\"num\").toNumber()\nfoo.setPropertyByName(num, a - 1)\na = a - 1\n", + "replacementText": "a = foo.getProperty(\"num\").toNumber()\nfoo.setProperty(num, a - 1)\na = a - 1\n", "start": 701, "end": 714, "line": 19, @@ -180,7 +180,7 @@ { "start": 705, "end": 712, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 19, "column": 5, "endLine": 19, @@ -199,7 +199,7 @@ "problem": "InteropIncrementDecrement", "autofix": [ { - "replacementText": "a = foo.getPropertyByName(\"num\").toNumber()\na = a - 1\nfoo.setPropertyByName(num, a)\n", + "replacementText": "a = foo.getProperty(\"num\").toNumber()\na = a - 1\nfoo.setProperty(num, a)\n", "start": 715, "end": 728, "line": 20, @@ -222,7 +222,7 @@ { "start": 721, "end": 728, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 20, "column": 7, "endLine": 20, @@ -241,7 +241,7 @@ "problem": "InteropIncrementDecrement", "autofix": [ { - "replacementText": "let tmp_1 = foo.getPropertyByName(\"num\").toNumber()\nfoo.setPropertyByName(num, tmp_1 + 1)\ntmp_1 = tmp_1 + 1\n", + "replacementText": "let tmp_1 = foo.getProperty(\"num\").toNumber()\nfoo.setProperty(num, tmp_1 + 1)\ntmp_1 = tmp_1 + 1\n", "start": 730, "end": 739, "line": 22, @@ -264,7 +264,7 @@ { "start": 730, "end": 737, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 22, "column": 1, "endLine": 22, @@ -283,7 +283,7 @@ "problem": "InteropIncrementDecrement", "autofix": [ { - "replacementText": "let tmp_2 = foo.getPropertyByName(\"num\").toNumber()\ntmp_2 = tmp_2 + 1\nfoo.setPropertyByName(num, tmp_2)\n", + "replacementText": "let tmp_2 = foo.getProperty(\"num\").toNumber()\ntmp_2 = tmp_2 + 1\nfoo.setProperty(num, tmp_2)\n", "start": 740, "end": 749, "line": 23, @@ -306,7 +306,7 @@ { "start": 742, "end": 749, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 23, "column": 3, "endLine": 23, @@ -325,7 +325,7 @@ "problem": "InteropIncrementDecrement", "autofix": [ { - "replacementText": "let tmp_3 = foo.getPropertyByName(\"num\").toNumber()\nfoo.setPropertyByName(num, tmp_3 - 1)\ntmp_3 = tmp_3 - 1\n", + "replacementText": "let tmp_3 = foo.getProperty(\"num\").toNumber()\nfoo.setProperty(num, tmp_3 - 1)\ntmp_3 = tmp_3 - 1\n", "start": 750, "end": 759, "line": 24, @@ -348,7 +348,7 @@ { "start": 750, "end": 757, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 24, "column": 1, "endLine": 24, @@ -367,7 +367,7 @@ "problem": "InteropIncrementDecrement", "autofix": [ { - "replacementText": "let tmp_4 = foo.getPropertyByName(\"num\").toNumber()\ntmp_4 = tmp_4 - 1\nfoo.setPropertyByName(num, tmp_4)\n", + "replacementText": "let tmp_4 = foo.getProperty(\"num\").toNumber()\ntmp_4 = tmp_4 - 1\nfoo.setProperty(num, tmp_4)\n", "start": 760, "end": 769, "line": 25, @@ -390,7 +390,7 @@ { "start": 762, "end": 769, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 25, "column": 3, "endLine": 25, diff --git a/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.migrate.ets b/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.migrate.ets index f022ce0834ee6528d5c77bf5bd845590530ea4b7..276cf1196d9e91bbafc575221cffbea97f376f0d 100644 --- a/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.migrate.ets +++ b/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.migrate.ets @@ -13,39 +13,39 @@ * limitations under the License. */ let GeneratedImportVar_1 = ESValue.load('./increases_decreases_js_obj_js'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); +let foo = GeneratedImportVar_1.getProperty('foo'); let a: number =0.0 -a = foo.getPropertyByName("num").toNumber() -foo.setPropertyByName(num, a + 1.0) +a = foo.getProperty("num").toNumber() +foo.setProperty(num, a + 1.0) a = a + 1.0 -a = foo.getPropertyByName("num").toNumber() +a = foo.getProperty("num").toNumber() a = a + 1.0 -foo.setPropertyByName(num, a) +foo.setProperty(num, a) -a = foo.getPropertyByName("num").toNumber() -foo.setPropertyByName(num, a - 1.0) +a = foo.getProperty("num").toNumber() +foo.setProperty(num, a - 1.0) a = a - 1.0 -a = foo.getPropertyByName("num").toNumber() +a = foo.getProperty("num").toNumber() a = a - 1.0 -foo.setPropertyByName(num, a) +foo.setProperty(num, a) -let tmp_1 = foo.getPropertyByName("num").toNumber() -foo.setPropertyByName(num, tmp_1 + 1.0) +let tmp_1 = foo.getProperty("num").toNumber() +foo.setProperty(num, tmp_1 + 1.0) tmp_1 = tmp_1 + 1.0 -let tmp_2 = foo.getPropertyByName("num").toNumber() +let tmp_2 = foo.getProperty("num").toNumber() tmp_2 = tmp_2 + 1.0 -foo.setPropertyByName(num, tmp_2) +foo.setProperty(num, tmp_2) -let tmp_3 = foo.getPropertyByName("num").toNumber() -foo.setPropertyByName(num, tmp_3 - 1.0) +let tmp_3 = foo.getProperty("num").toNumber() +foo.setProperty(num, tmp_3 - 1.0) tmp_3 = tmp_3 - 1.0 -let tmp_4 = foo.getPropertyByName("num").toNumber() +let tmp_4 = foo.getProperty("num").toNumber() tmp_4 = tmp_4 - 1.0 -foo.setPropertyByName(num, tmp_4) +foo.setProperty(num, tmp_4) diff --git a/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.migrate.json b/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.migrate.json index 0a10b6a69edbbda115aff18cc7d947ae932ec423..78b7199f4f1749dddbdfa9785fcb4c54cf2c4a5f 100644 --- a/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.migrate.json +++ b/ets2panda/linter/test/interop/increases_decreases_js_obj.ets.migrate.json @@ -28,7 +28,7 @@ "line": 16, "column": 5, "endLine": 16, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 36, "column": 5, "endLine": 36, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -48,7 +48,7 @@ "line": 40, "column": 5, "endLine": 40, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -58,7 +58,7 @@ "line": 44, "column": 5, "endLine": 44, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +68,7 @@ "line": 48, "column": 5, "endLine": 48, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/instantiated_js_obj.ets.autofix.json b/ets2panda/linter/test/interop/instantiated_js_obj.ets.autofix.json index f9ae170771c98c555d228cd0ac3d36b36294688e..c0509f85eaabe032baed6855e3652fddf5217db8 100644 --- a/ets2panda/linter/test/interop/instantiated_js_obj.ets.autofix.json +++ b/ets2panda/linter/test/interop/instantiated_js_obj.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 655, "end": 655, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./instantiated_js_obj_js');\nlet Foo = GeneratedImportVar_1.getPropertyByName('Foo');\nlet Foo1 = GeneratedImportVar_1.getPropertyByName('Foo1');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./instantiated_js_obj_js');\nlet Foo = GeneratedImportVar_1.getProperty('Foo');\nlet Foo1 = GeneratedImportVar_1.getProperty('Foo1');\n", "line": 16, "column": 1, "endLine": 16, diff --git a/ets2panda/linter/test/interop/instantiated_js_obj.ets.migrate.ets b/ets2panda/linter/test/interop/instantiated_js_obj.ets.migrate.ets index b033816ddb15de3ae08e462513ec1258f69269e8..754fa9a041e6552057ee34ae4285012c4306f39f 100644 --- a/ets2panda/linter/test/interop/instantiated_js_obj.ets.migrate.ets +++ b/ets2panda/linter/test/interop/instantiated_js_obj.ets.migrate.ets @@ -14,8 +14,8 @@ */ let GeneratedImportVar_1 = ESValue.load('./instantiated_js_obj_js'); -let Foo = GeneratedImportVar_1.getPropertyByName('Foo'); -let Foo1 = GeneratedImportVar_1.getPropertyByName('Foo1'); +let Foo = GeneratedImportVar_1.getProperty('Foo'); +let Foo1 = GeneratedImportVar_1.getProperty('Foo1'); class A { num: number = 1.0; diff --git a/ets2panda/linter/test/interop/instantiated_js_obj.ets.migrate.json b/ets2panda/linter/test/interop/instantiated_js_obj.ets.migrate.json index 2084de8763deeb4f9899489c2da2f6cf454ad82d..5c043e26be03b3860729c8b8cecc87b75ac03a96 100644 --- a/ets2panda/linter/test/interop/instantiated_js_obj.ets.migrate.json +++ b/ets2panda/linter/test/interop/instantiated_js_obj.ets.migrate.json @@ -28,7 +28,7 @@ "line": 17, "column": 5, "endLine": 17, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 18, "column": 5, "endLine": 18, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/interop_convert_import.ets b/ets2panda/linter/test/interop/interop_convert_import.ets index 02426a43180b9f34518bb0f1601ca6425a1084b6..ea40300e23fda4510e7c8a7ce069925a782daf1c 100644 --- a/ets2panda/linter/test/interop/interop_convert_import.ets +++ b/ets2panda/linter/test/interop/interop_convert_import.ets @@ -1,4 +1,3 @@ -<<<<<<< HEAD /* * Copyright (c) 2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); @@ -39,27 +38,4 @@ return null_val as null === null;// 扫描出 arkts-interop-js2s-convert-js-type // convert type - undefined test_helper.test(() => { return undefined_val as undefined === undefined; // 扫描出 arkts-interop-js2s-convert-js-type - no pass -}, "undefined_val as undefined === undefined"); -======= -/* - * Copyright (c) 2025 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - import {foo, foo2, foo3, foo4} from "./interop_convert_import_js.js" - - let a: number = foo.num as number - let a: boolean = foo2.bool as boolean - let a: string = foo3.str as string - let a: bigint = foo4.big as bigint" ->>>>>>> efeb0a81e (modify use static spec) +}, "undefined_val as undefined === undefined"); diff --git a/ets2panda/linter/test/interop/interop_convert_import.ets.arkts2.json b/ets2panda/linter/test/interop/interop_convert_import.ets.arkts2.json index d6f91a557d1e1a3e03b5b1a4c6049645c84a0a5b..2891efe2d7def1366a16a6da0da14de0eaf272ac 100644 --- a/ets2panda/linter/test/interop/interop_convert_import.ets.arkts2.json +++ b/ets2panda/linter/test/interop/interop_convert_import.ets.arkts2.json @@ -15,9 +15,9 @@ ], "result": [ { - "line": 18, + "line": 17, "column": 2, - "endLine": 18, + "endLine": 17, "endColumn": 106, "problem": "ImportAfterStatement", "suggest": "", @@ -25,9 +25,9 @@ "severity": "ERROR" }, { - "line": 18, + "line": 17, "column": 2, - "endLine": 18, + "endLine": 17, "endColumn": 106, "problem": "InterOpImportJs", "suggest": "", @@ -35,9 +35,9 @@ "severity": "ERROR" }, { - "line": 20, + "line": 19, "column": 18, - "endLine": 20, + "endLine": 19, "endColumn": 35, "problem": "InterOpConvertImport", "suggest": "", @@ -45,9 +45,9 @@ "severity": "ERROR" }, { - "line": 20, + "line": 19, "column": 18, - "endLine": 20, + "endLine": 19, "endColumn": 25, "problem": "InteropObjectProperty", "suggest": "", @@ -55,9 +55,9 @@ "severity": "ERROR" }, { - "line": 21, + "line": 20, "column": 20, - "endLine": 21, + "endLine": 20, "endColumn": 41, "problem": "InterOpConvertImport", "suggest": "", @@ -65,9 +65,9 @@ "severity": "ERROR" }, { - "line": 21, + "line": 20, "column": 20, - "endLine": 21, + "endLine": 20, "endColumn": 29, "problem": "InteropObjectProperty", "suggest": "", @@ -75,9 +75,9 @@ "severity": "ERROR" }, { - "line": 22, + "line": 21, "column": 19, - "endLine": 22, + "endLine": 21, "endColumn": 38, "problem": "InterOpConvertImport", "suggest": "", @@ -85,9 +85,9 @@ "severity": "ERROR" }, { - "line": 22, + "line": 21, "column": 19, - "endLine": 22, + "endLine": 21, "endColumn": 27, "problem": "InteropObjectProperty", "suggest": "", @@ -95,9 +95,9 @@ "severity": "ERROR" }, { - "line": 23, + "line": 22, "column": 19, - "endLine": 23, + "endLine": 22, "endColumn": 38, "problem": "InterOpConvertImport", "suggest": "", @@ -105,9 +105,9 @@ "severity": "ERROR" }, { - "line": 23, + "line": 22, "column": 19, - "endLine": 23, + "endLine": 22, "endColumn": 27, "problem": "InteropObjectProperty", "suggest": "", @@ -115,9 +115,9 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 9, - "endLine": 26, + "endLine": 25, "endColumn": 27, "problem": "InterOpConvertImport", "suggest": "", @@ -125,9 +125,9 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 44, - "endLine": 26, + "endLine": 25, "endColumn": 62, "problem": "GenericCallNoTypeArgs", "suggest": "", @@ -135,9 +135,9 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 54, - "endLine": 26, + "endLine": 25, "endColumn": 55, "problem": "NumericSemantics", "suggest": "", @@ -145,9 +145,9 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 57, - "endLine": 26, + "endLine": 25, "endColumn": 58, "problem": "NumericSemantics", "suggest": "", @@ -155,9 +155,9 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 60, - "endLine": 26, + "endLine": 25, "endColumn": 61, "problem": "NumericSemantics", "suggest": "", @@ -165,9 +165,9 @@ "severity": "ERROR" }, { - "line": 31, + "line": 30, "column": 9, - "endLine": 31, + "endLine": 30, "endColumn": 30, "problem": "InterOpConvertImport", "suggest": "", @@ -175,9 +175,9 @@ "severity": "ERROR" }, { - "line": 31, + "line": 30, "column": 48, - "endLine": 31, + "endLine": 30, "endColumn": 49, "problem": "NumericSemantics", "suggest": "", @@ -185,9 +185,9 @@ "severity": "ERROR" }, { - "line": 31, + "line": 30, "column": 50, - "endLine": 31, + "endLine": 30, "endColumn": 51, "problem": "NumericSemantics", "suggest": "", @@ -195,9 +195,9 @@ "severity": "ERROR" }, { - "line": 31, + "line": 30, "column": 52, - "endLine": 31, + "endLine": 30, "endColumn": 53, "problem": "NumericSemantics", "suggest": "", @@ -205,9 +205,9 @@ "severity": "ERROR" }, { - "line": 36, + "line": 35, "column": 8, - "endLine": 36, + "endLine": 35, "endColumn": 24, "problem": "InterOpConvertImport", "suggest": "", @@ -215,9 +215,9 @@ "severity": "ERROR" }, { - "line": 41, + "line": 40, "column": 8, - "endLine": 41, + "endLine": 40, "endColumn": 34, "problem": "InterOpConvertImport", "suggest": "", diff --git a/ets2panda/linter/test/interop/interop_convert_import.ets.autofix.json b/ets2panda/linter/test/interop/interop_convert_import.ets.autofix.json index b49b275bb55fe496eed776379f50e210e3354a4b..f2a8c5c3a451b77e49bfb080be12c3406ef7a682 100644 --- a/ets2panda/linter/test/interop/interop_convert_import.ets.autofix.json +++ b/ets2panda/linter/test/interop/interop_convert_import.ets.autofix.json @@ -15,9 +15,9 @@ ], "result": [ { - "line": 18, + "line": 17, "column": 2, - "endLine": 18, + "endLine": 17, "endColumn": 106, "problem": "ImportAfterStatement", "suggest": "", @@ -25,28 +25,28 @@ "severity": "ERROR" }, { - "line": 18, + "line": 17, "column": 2, - "endLine": 18, + "endLine": 17, "endColumn": 106, "problem": "InterOpImportJs", "autofix": [ { - "start": 649, - "end": 753, + "start": 636, + "end": 740, "replacementText": "", - "line": 18, + "line": 17, "column": 2, - "endLine": 18, + "endLine": 17, "endColumn": 106 }, { - "start": 753, - "end": 753, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_convert_import_js.js');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\nlet foo2 = GeneratedImportVar_1.getPropertyByName('foo2');\nlet foo3 = GeneratedImportVar_1.getPropertyByName('foo3');\nlet foo4 = GeneratedImportVar_1.getPropertyByName('foo4');\nlet array_val = GeneratedImportVar_1.getPropertyByName('array_val');\nlet null_val = GeneratedImportVar_1.getPropertyByName('null_val');\nlet undefined_val = GeneratedImportVar_1.getPropertyByName('undefined_val');\n", - "line": 18, + "start": 740, + "end": 740, + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_convert_import_js.js');\r\nlet foo = GeneratedImportVar_1.getProperty('foo');\r\nlet foo2 = GeneratedImportVar_1.getProperty('foo2');\r\nlet foo3 = GeneratedImportVar_1.getProperty('foo3');\r\nlet foo4 = GeneratedImportVar_1.getProperty('foo4');\r\nlet array_val = GeneratedImportVar_1.getProperty('array_val');\r\nlet null_val = GeneratedImportVar_1.getProperty('null_val');\r\nlet undefined_val = GeneratedImportVar_1.getProperty('undefined_val');\r\n", + "line": 17, "column": 2, - "endLine": 18, + "endLine": 17, "endColumn": 106 } ], @@ -55,19 +55,19 @@ "severity": "ERROR" }, { - "line": 20, + "line": 19, "column": 18, - "endLine": 20, + "endLine": 19, "endColumn": 35, "problem": "InterOpConvertImport", "autofix": [ { - "start": 774, - "end": 791, - "replacementText": "foo.getPropertyByName(\"num\").toNumber()", - "line": 20, + "start": 761, + "end": 778, + "replacementText": "foo.getProperty(\"num\").toNumber()", + "line": 19, "column": 18, - "endLine": 20, + "endLine": 19, "endColumn": 35 } ], @@ -76,19 +76,19 @@ "severity": "ERROR" }, { - "line": 20, + "line": 19, "column": 18, - "endLine": 20, + "endLine": 19, "endColumn": 25, "problem": "InteropObjectProperty", "autofix": [ { - "start": 774, - "end": 781, - "replacementText": "foo.getPropertyByName(\"num\")", - "line": 20, + "start": 761, + "end": 768, + "replacementText": "foo.getProperty(\"num\")", + "line": 19, "column": 18, - "endLine": 20, + "endLine": 19, "endColumn": 25 } ], @@ -97,19 +97,19 @@ "severity": "ERROR" }, { - "line": 21, + "line": 20, "column": 20, - "endLine": 21, + "endLine": 20, "endColumn": 41, "problem": "InterOpConvertImport", "autofix": [ { - "start": 812, - "end": 833, - "replacementText": "foo2.getPropertyByName(\"bool\").toBoolean()", - "line": 21, + "start": 799, + "end": 820, + "replacementText": "foo2.getProperty(\"bool\").toBoolean()", + "line": 20, "column": 20, - "endLine": 21, + "endLine": 20, "endColumn": 41 } ], @@ -118,19 +118,19 @@ "severity": "ERROR" }, { - "line": 21, + "line": 20, "column": 20, - "endLine": 21, + "endLine": 20, "endColumn": 29, "problem": "InteropObjectProperty", "autofix": [ { - "start": 812, - "end": 821, - "replacementText": "foo2.getPropertyByName(\"bool\")", - "line": 21, + "start": 799, + "end": 808, + "replacementText": "foo2.getProperty(\"bool\")", + "line": 20, "column": 20, - "endLine": 21, + "endLine": 20, "endColumn": 29 } ], @@ -139,19 +139,19 @@ "severity": "ERROR" }, { - "line": 22, + "line": 21, "column": 19, - "endLine": 22, + "endLine": 21, "endColumn": 38, "problem": "InterOpConvertImport", "autofix": [ { - "start": 853, - "end": 872, - "replacementText": "foo3.getPropertyByName(\"str\").toString()", - "line": 22, + "start": 840, + "end": 859, + "replacementText": "foo3.getProperty(\"str\").toString()", + "line": 21, "column": 19, - "endLine": 22, + "endLine": 21, "endColumn": 38 } ], @@ -160,19 +160,19 @@ "severity": "ERROR" }, { - "line": 22, + "line": 21, "column": 19, - "endLine": 22, + "endLine": 21, "endColumn": 27, "problem": "InteropObjectProperty", "autofix": [ { - "start": 853, - "end": 861, - "replacementText": "foo3.getPropertyByName(\"str\")", - "line": 22, + "start": 840, + "end": 848, + "replacementText": "foo3.getProperty(\"str\")", + "line": 21, "column": 19, - "endLine": 22, + "endLine": 21, "endColumn": 27 } ], @@ -181,19 +181,19 @@ "severity": "ERROR" }, { - "line": 23, + "line": 22, "column": 19, - "endLine": 23, + "endLine": 22, "endColumn": 38, "problem": "InterOpConvertImport", "autofix": [ { - "start": 892, - "end": 911, - "replacementText": "foo4.getPropertyByName(\"big\").toBigInt()", - "line": 23, + "start": 879, + "end": 898, + "replacementText": "foo4.getProperty(\"big\").toBigInt()", + "line": 22, "column": 19, - "endLine": 23, + "endLine": 22, "endColumn": 38 } ], @@ -202,19 +202,19 @@ "severity": "ERROR" }, { - "line": 23, + "line": 22, "column": 19, - "endLine": 23, + "endLine": 22, "endColumn": 27, "problem": "InteropObjectProperty", "autofix": [ { - "start": 892, - "end": 900, - "replacementText": "foo4.getPropertyByName(\"big\")", - "line": 23, + "start": 879, + "end": 887, + "replacementText": "foo4.getProperty(\"big\")", + "line": 22, "column": 19, - "endLine": 23, + "endLine": 22, "endColumn": 27 } ], @@ -223,9 +223,9 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 9, - "endLine": 26, + "endLine": 25, "endColumn": 27, "problem": "InterOpConvertImport", "suggest": "", @@ -233,9 +233,9 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 44, - "endLine": 26, + "endLine": 25, "endColumn": 62, "problem": "GenericCallNoTypeArgs", "suggest": "", @@ -243,19 +243,19 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 54, - "endLine": 26, + "endLine": 25, "endColumn": 55, "problem": "NumericSemantics", "autofix": [ { - "start": 994, - "end": 995, + "start": 981, + "end": 982, "replacementText": "1.0", - "line": 26, + "line": 25, "column": 54, - "endLine": 26, + "endLine": 25, "endColumn": 55 } ], @@ -264,19 +264,19 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 57, - "endLine": 26, + "endLine": 25, "endColumn": 58, "problem": "NumericSemantics", "autofix": [ { - "start": 997, - "end": 998, + "start": 984, + "end": 985, "replacementText": "2.0", - "line": 26, + "line": 25, "column": 57, - "endLine": 26, + "endLine": 25, "endColumn": 58 } ], @@ -285,19 +285,19 @@ "severity": "ERROR" }, { - "line": 26, + "line": 25, "column": 60, - "endLine": 26, + "endLine": 25, "endColumn": 61, "problem": "NumericSemantics", "autofix": [ { - "start": 1000, - "end": 1001, + "start": 987, + "end": 988, "replacementText": "3.0", - "line": 26, + "line": 25, "column": 60, - "endLine": 26, + "endLine": 25, "endColumn": 61 } ], @@ -306,9 +306,9 @@ "severity": "ERROR" }, { - "line": 31, + "line": 30, "column": 9, - "endLine": 31, + "endLine": 30, "endColumn": 30, "problem": "InterOpConvertImport", "suggest": "", @@ -316,19 +316,19 @@ "severity": "ERROR" }, { - "line": 31, + "line": 30, "column": 48, - "endLine": 31, + "endLine": 30, "endColumn": 49, "problem": "NumericSemantics", "autofix": [ { - "start": 1208, - "end": 1209, + "start": 1195, + "end": 1196, "replacementText": "1.0", - "line": 31, + "line": 30, "column": 48, - "endLine": 31, + "endLine": 30, "endColumn": 49 } ], @@ -337,19 +337,19 @@ "severity": "ERROR" }, { - "line": 31, + "line": 30, "column": 50, - "endLine": 31, + "endLine": 30, "endColumn": 51, "problem": "NumericSemantics", "autofix": [ { - "start": 1210, - "end": 1211, + "start": 1197, + "end": 1198, "replacementText": "2.0", - "line": 31, + "line": 30, "column": 50, - "endLine": 31, + "endLine": 30, "endColumn": 51 } ], @@ -358,19 +358,19 @@ "severity": "ERROR" }, { - "line": 31, + "line": 30, "column": 52, - "endLine": 31, + "endLine": 30, "endColumn": 53, "problem": "NumericSemantics", "autofix": [ { - "start": 1212, - "end": 1213, + "start": 1199, + "end": 1200, "replacementText": "3.0", - "line": 31, + "line": 30, "column": 52, - "endLine": 31, + "endLine": 30, "endColumn": 53 } ], @@ -379,9 +379,9 @@ "severity": "ERROR" }, { - "line": 36, + "line": 35, "column": 8, - "endLine": 36, + "endLine": 35, "endColumn": 24, "problem": "InterOpConvertImport", "suggest": "", @@ -389,9 +389,9 @@ "severity": "ERROR" }, { - "line": 41, + "line": 40, "column": 8, - "endLine": 41, + "endLine": 40, "endColumn": 34, "problem": "InterOpConvertImport", "suggest": "", diff --git a/ets2panda/linter/test/interop/interop_convert_import.ets.json b/ets2panda/linter/test/interop/interop_convert_import.ets.json index 5a3f5938e4936b27eb26b147f0b5c49254d3902a..98f171cc3203712fa3d9467dd6c831dca2dcd64a 100755 --- a/ets2panda/linter/test/interop/interop_convert_import.ets.json +++ b/ets2panda/linter/test/interop/interop_convert_import.ets.json @@ -15,9 +15,9 @@ ], "result": [ { - "line": 18, + "line": 17, "column": 2, - "endLine": 18, + "endLine": 17, "endColumn": 106, "problem": "ImportAfterStatement", "suggest": "", diff --git a/ets2panda/linter/test/interop/interop_convert_import.ets.migrate.ets b/ets2panda/linter/test/interop/interop_convert_import.ets.migrate.ets index 1e107cf338e0678a330243f31895744ea396b428..2c49f3dc58588df1ac4e9d19193f72806db3c1b4 100644 --- a/ets2panda/linter/test/interop/interop_convert_import.ets.migrate.ets +++ b/ets2panda/linter/test/interop/interop_convert_import.ets.migrate.ets @@ -1,4 +1,3 @@ -<<<<<<< HEAD /* * Copyright (c) 2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,20 +14,20 @@ */ 'use static' - let GeneratedImportVar_1 = ESValue.load('./interop_convert_import_js.js'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); -let foo2 = GeneratedImportVar_1.getPropertyByName('foo2'); -let foo3 = GeneratedImportVar_1.getPropertyByName('foo3'); -let foo4 = GeneratedImportVar_1.getPropertyByName('foo4'); -let array_val = GeneratedImportVar_1.getPropertyByName('array_val'); -let null_val = GeneratedImportVar_1.getPropertyByName('null_val'); -let undefined_val = GeneratedImportVar_1.getPropertyByName('undefined_val'); + let GeneratedImportVar_1 = ESValue.load('./interop_convert_import_js.js'); +let foo = GeneratedImportVar_1.getProperty('foo'); +let foo2 = GeneratedImportVar_1.getProperty('foo2'); +let foo3 = GeneratedImportVar_1.getProperty('foo3'); +let foo4 = GeneratedImportVar_1.getProperty('foo4'); +let array_val = GeneratedImportVar_1.getProperty('array_val'); +let null_val = GeneratedImportVar_1.getProperty('null_val'); +let undefined_val = GeneratedImportVar_1.getProperty('undefined_val'); - let a: number = foo.getPropertyByName("num").toNumber() - let a1: boolean = foo2.getPropertyByName("bool").toBoolean() - let a2: string = foo3.getPropertyByName("str").toString() - let a3: bigint = foo4.getPropertyByName("big").toBigInt() + let a: number = foo.getProperty("num").toNumber() + let a1: boolean = foo2.getProperty("bool").toBoolean() + let a2: string = foo3.getProperty("str").toString() + let a3: bigint = foo4.getProperty("big").toBigInt() test_helper.test(() => { return (array_val as Array).toString() === new Array(1.0, 2.0, 3.0).toString();// 扫描出 arkts-interop-js2s-convert-js-type - no pass @@ -47,27 +46,4 @@ return null_val as null === null;// 扫描出 arkts-interop-js2s-convert-js-type // convert type - undefined test_helper.test(() => { return undefined_val as undefined === undefined; // 扫描出 arkts-interop-js2s-convert-js-type - no pass -}, "undefined_val as undefined === undefined"); -======= -/* - * Copyright (c) 2025 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - import {foo, foo2, foo3, foo4} from "./interop_convert_import_js.js" - - let a: number = foo.num as number - let a: boolean = foo2.bool as boolean - let a: string = foo3.str as string - let a: bigint = foo4.big as bigint" ->>>>>>> efeb0a81e (modify use static spec) +}, "undefined_val as undefined === undefined"); diff --git a/ets2panda/linter/test/interop/interop_convert_import.ets.migrate.json b/ets2panda/linter/test/interop/interop_convert_import.ets.migrate.json index a49b70a95279536d6b68fb9d7385dd46c5986998..52e07c8a2b2155cbfa4823987cec21f7ebc72a28 100644 --- a/ets2panda/linter/test/interop/interop_convert_import.ets.migrate.json +++ b/ets2panda/linter/test/interop/interop_convert_import.ets.migrate.json @@ -15,20 +15,30 @@ ], "result": [ { - "line": 18, + "line": 17, "column": 6, - "endLine": 18, + "endLine": 17, "endColumn": 75, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", "severity": "ERROR" }, + { + "line": 18, + "column": 5, + "endLine": 18, + "endColumn": 50, + "problem": "AnyType", + "suggest": "", + "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", + "severity": "ERROR" + }, { "line": 19, "column": 5, "endLine": 19, - "endColumn": 56, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +48,7 @@ "line": 20, "column": 5, "endLine": 20, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -48,7 +58,7 @@ "line": 21, "column": 5, "endLine": 21, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -58,7 +68,7 @@ "line": 22, "column": 5, "endLine": 22, - "endColumn": 58, + "endColumn": 62, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +78,7 @@ "line": 23, "column": 5, "endLine": 23, - "endColumn": 68, + "endColumn": 60, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -78,26 +88,16 @@ "line": 24, "column": 5, "endLine": 24, - "endColumn": 66, - "problem": "AnyType", - "suggest": "", - "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", - "severity": "ERROR" - }, - { - "line": 25, - "column": 5, - "endLine": 25, - "endColumn": 76, + "endColumn": 70, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", "severity": "ERROR" }, { - "line": 34, + "line": 33, "column": 44, - "endLine": 34, + "endLine": 33, "endColumn": 68, "problem": "GenericCallNoTypeArgs", "suggest": "", @@ -105,9 +105,9 @@ "severity": "ERROR" }, { - "line": 44, + "line": 43, "column": 8, - "endLine": 44, + "endLine": 43, "endColumn": 24, "problem": "InterOpConvertImport", "suggest": "", diff --git a/ets2panda/linter/test/interop/interop_equality_judgment.ets.autofix.json b/ets2panda/linter/test/interop/interop_equality_judgment.ets.autofix.json index 7145a50507beed4836a0eebfd568eacf2a450d36..3f22cfc7bfc5c977002c7020265fcc1d1d2244d1 100644 --- a/ets2panda/linter/test/interop/interop_equality_judgment.ets.autofix.json +++ b/ets2panda/linter/test/interop/interop_equality_judgment.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 656, "end": 656, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_equality_judgment_js');\nlet a = GeneratedImportVar_1.getPropertyByName('a');\nlet b = GeneratedImportVar_1.getPropertyByName('b');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_equality_judgment_js');\nlet a = GeneratedImportVar_1.getProperty('a');\nlet b = GeneratedImportVar_1.getProperty('b');\n", "line": 16, "column": 1, "endLine": 16, diff --git a/ets2panda/linter/test/interop/interop_equality_judgment.ets.migrate.ets b/ets2panda/linter/test/interop/interop_equality_judgment.ets.migrate.ets index 796cf7f898e1eab3f91e4b33bfa2bc582fe3a560..9a2c6e2cab1b6e41bfb576c33ace3cc323d60070 100644 --- a/ets2panda/linter/test/interop/interop_equality_judgment.ets.migrate.ets +++ b/ets2panda/linter/test/interop/interop_equality_judgment.ets.migrate.ets @@ -14,8 +14,8 @@ */ let GeneratedImportVar_1 = ESValue.load('./interop_equality_judgment_js'); -let a = GeneratedImportVar_1.getPropertyByName('a'); -let b = GeneratedImportVar_1.getPropertyByName('b'); +let a = GeneratedImportVar_1.getProperty('a'); +let b = GeneratedImportVar_1.getProperty('b'); a.areEqual(b) !a.areEqual(b) diff --git a/ets2panda/linter/test/interop/interop_equality_judgment.ets.migrate.json b/ets2panda/linter/test/interop/interop_equality_judgment.ets.migrate.json index c3d33e531ccd89abf012408dcd79eff047a1c31a..38e88ae0b6d395013b306d4101a0548f68fe6f3b 100644 --- a/ets2panda/linter/test/interop/interop_equality_judgment.ets.migrate.json +++ b/ets2panda/linter/test/interop/interop_equality_judgment.ets.migrate.json @@ -28,7 +28,7 @@ "line": 17, "column": 5, "endLine": 17, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 18, "column": 5, "endLine": 18, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/interop_export_js_rules.ets b/ets2panda/linter/test/interop/interop_export_js_rules.ets index e729a7c2c33e0c93df578af5602395f62ff99b07..3ab29fe81d60c2c7ec9f7526c8a5a1cc9ec24a8a 100644 --- a/ets2panda/linter/test/interop/interop_export_js_rules.ets +++ b/ets2panda/linter/test/interop/interop_export_js_rules.ets @@ -19,10 +19,6 @@ export {ff1} // imported from js. Error is shown export { ff2 } from "./interop_import_js_rules_js" // ff2 is imported from js. Error is shown -export { MyDecorator } from "./oh_modules/ets_decorator" // MyDecorator is imported from arkts1. Error is shown - export { foo as bar } from "./oh_modules/reflect_export" // foo is imported from arkts1.2. No error. -export * as namespace1 from "./oh_modules/ets_decorator" - export * as namespace2 from "./interop_import_js_rules_js" diff --git a/ets2panda/linter/test/interop/interop_export_js_rules.ets.arkts2.json b/ets2panda/linter/test/interop/interop_export_js_rules.ets.arkts2.json index 1f92c538cd5688b2fadd03034e6f073f0b789851..827762e0bfdba111f7f6cec42ebcce46dea84cef 100644 --- a/ets2panda/linter/test/interop/interop_export_js_rules.ets.arkts2.json +++ b/ets2panda/linter/test/interop/interop_export_js_rules.ets.arkts2.json @@ -1,88 +1,58 @@ { - "copyright": [ - "Copyright (c) 2025 Huawei Device Co., Ltd.", - "Licensed under the Apache License, Version 2.0 (the 'License');", - "you may not use this file except in compliance with the License.", - "You may obtain a copy of the License at", - "", - "http://www.apache.org/licenses/LICENSE-2.0", - "", - "Unless required by applicable law or agreed to in writing, software", - "distributed under the License is distributed on an 'AS IS' BASIS,", - "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", - "See the License for the specific language governing permissions and", - "limitations under the License." - ], - "result": [ - { - "line": 16, - "column": 1, - "endLine": 16, - "endColumn": 51, - "problem": "InterOpImportJs", - "suggest": "", - "rule": "Importing directly from \"JS\" module is not supported (arkts-interop-js2s-import-js)", - "severity": "ERROR" - }, - { - "line": 18, - "column": 1, - "endLine": 18, - "endColumn": 13, - "problem": "InteropJsObjectExport", - "suggest": "", - "rule": "Direct export of interop JS objects is not supported (arkts-interop-js2s-export-js)", - "severity": "ERROR" - }, - { - "line": 20, - "column": 1, - "endLine": 20, - "endColumn": 51, - "problem": "InteropJsObjectExport", - "suggest": "", - "rule": "Direct export of interop JS objects is not supported (arkts-interop-js2s-export-js)", - "severity": "ERROR" - }, - { - "line": 22, - "column": 1, - "endLine": 22, - "endColumn": 57, - "problem": "InteropArkTs1ObjectExport", - "suggest": "", - "rule": "Direct export of interop ArkTS1.0 objects is not supported (arkts-interop-d2s-export-entity)", - "severity": "ERROR" - }, - { - "line": 24, - "column": 1, - "endLine": 24, - "endColumn": 57, - "problem": "InteropArkTs1ObjectExport", - "suggest": "", - "rule": "Direct export of interop ArkTS1.0 objects is not supported (arkts-interop-d2s-export-entity)", - "severity": "ERROR" - }, - { - "line": 26, - "column": 1, - "endLine": 26, - "endColumn": 57, - "problem": "InteropArkTs1ObjectExport", - "suggest": "", - "rule": "Direct export of interop ArkTS1.0 objects is not supported (arkts-interop-d2s-export-entity)", - "severity": "ERROR" - }, - { - "line": 28, - "column": 1, - "endLine": 28, - "endColumn": 59, - "problem": "InteropJsObjectExport", - "suggest": "", - "rule": "Direct export of interop JS objects is not supported (arkts-interop-js2s-export-js)", - "severity": "ERROR" - } - ] -} \ No newline at end of file + "copyright": [ + "Copyright (c) 2025 Huawei Device Co., Ltd.", + "Licensed under the Apache License, Version 2.0 (the 'License');", + "you may not use this file except in compliance with the License.", + "You may obtain a copy of the License at", + "", + "http://www.apache.org/licenses/LICENSE-2.0", + "", + "Unless required by applicable law or agreed to in writing, software", + "distributed under the License is distributed on an 'AS IS' BASIS,", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", + "See the License for the specific language governing permissions and", + "limitations under the License." + ], + "result": [ + { + "line": 16, + "column": 1, + "endLine": 16, + "endColumn": 51, + "problem": "InterOpImportJs", + "suggest": "", + "rule": "Importing directly from \"JS\" module is not supported (arkts-interop-js2s-import-js)", + "severity": "ERROR" + }, + { + "line": 18, + "column": 1, + "endLine": 18, + "endColumn": 13, + "problem": "InteropJsObjectExport", + "suggest": "", + "rule": "Direct export of interop JS objects is not supported (arkts-interop-js2s-export-js)", + "severity": "ERROR" + }, + { + "line": 20, + "column": 1, + "endLine": 20, + "endColumn": 51, + "problem": "InteropJsObjectExport", + "suggest": "", + "rule": "Direct export of interop JS objects is not supported (arkts-interop-js2s-export-js)", + "severity": "ERROR" + }, + { + "line": 24, + "column": 1, + "endLine": 24, + "endColumn": 59, + "problem": "InteropJsObjectExport", + "suggest": "", + "rule": "Direct export of interop JS objects is not supported (arkts-interop-js2s-export-js)", + "severity": "ERROR" + } + ] +} diff --git a/ets2panda/linter/test/interop/interop_import_js.ets.autofix.json b/ets2panda/linter/test/interop/interop_import_js.ets.autofix.json index bda0908dba95e9ecf61d0584931495ee7fa10762..2a3dec941aebfc7bfe13fa7c356e788e082c5b99 100755 --- a/ets2panda/linter/test/interop/interop_import_js.ets.autofix.json +++ b/ets2panda/linter/test/interop/interop_import_js.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 958, "end": 958, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('../main/js_lib');\nlet Cjs = GeneratedImportVar_1.getPropertyByName('Cjs');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('../main/js_lib');\nlet Cjs = GeneratedImportVar_1.getProperty('Cjs');\n", "line": 16, "column": 1, "endLine": 16, @@ -63,7 +63,7 @@ { "start": 958, "end": 958, - "replacementText": "let GeneratedImportVar_2 = ESValue.load('../main/js_lib');\nlet fjs = GeneratedImportVar_2.getPropertyByName('fjs');\n", + "replacementText": "let GeneratedImportVar_2 = ESValue.load('../main/js_lib');\nlet fjs = GeneratedImportVar_2.getProperty('fjs');\n", "line": 17, "column": 1, "endLine": 17, @@ -93,7 +93,7 @@ { "start": 958, "end": 958, - "replacementText": "let GeneratedImportVar_3 = ESValue.load('./jsfiles/preview_import_js');\nlet CPreview = GeneratedImportVar_3.getPropertyByName('CPreview');\nlet bar = GeneratedImportVar_3.getPropertyByName('bar');\nlet foo = GeneratedImportVar_3.getPropertyByName('foo');\n", + "replacementText": "let GeneratedImportVar_3 = ESValue.load('./jsfiles/preview_import_js');\nlet CPreview = GeneratedImportVar_3.getProperty('CPreview');\nlet bar = GeneratedImportVar_3.getProperty('bar');\nlet foo = GeneratedImportVar_3.getProperty('foo');\n", "line": 18, "column": 1, "endLine": 18, @@ -123,7 +123,7 @@ { "start": 958, "end": 958, - "replacementText": "let GeneratedImportVar_4 = ESValue.load('./interop_import_js_js');\nlet myAaa = GeneratedImportVar_4.getPropertyByName('aaa');\n", + "replacementText": "let GeneratedImportVar_4 = ESValue.load('./interop_import_js_js');\nlet myAaa = GeneratedImportVar_4.getProperty('aaa');\n", "line": 19, "column": 1, "endLine": 19, @@ -153,7 +153,7 @@ { "start": 958, "end": 958, - "replacementText": "let GeneratedImportVar_5 = ESValue.load('./interop_import_js_js');\nlet myAaa = GeneratedImportVar_5.getPropertyByName('aaa');\nlet ClassA = GeneratedImportVar_5.getPropertyByName('ClassA');\nlet Dog = GeneratedImportVar_5.getPropertyByName('Dog');\n", + "replacementText": "let GeneratedImportVar_5 = ESValue.load('./interop_import_js_js');\nlet myAaa = GeneratedImportVar_5.getProperty('aaa');\nlet ClassA = GeneratedImportVar_5.getProperty('ClassA');\nlet Dog = GeneratedImportVar_5.getProperty('Dog');\n", "line": 20, "column": 1, "endLine": 20, @@ -213,7 +213,7 @@ { "start": 958, "end": 958, - "replacementText": "let GeneratedImportVar_7 = ESValue.load('./interop_import_js_js');\nlet Wiki = GeneratedImportVar_7.getPropertyByName('Wiki');\nlet Doge = GeneratedImportVar_7.getPropertyByName('Dog');\n", + "replacementText": "let GeneratedImportVar_7 = ESValue.load('./interop_import_js_js');\nlet Wiki = GeneratedImportVar_7.getProperty('Wiki');\nlet Doge = GeneratedImportVar_7.getProperty('Dog');\n", "line": 22, "column": 1, "endLine": 22, diff --git a/ets2panda/linter/test/interop/interop_import_js.ets.migrate.ets b/ets2panda/linter/test/interop/interop_import_js.ets.migrate.ets index 80f88726e3970aa7134f5f3cd8df012624cb6668..851b32fdc091ffac6f98ed97248f610c924736d5 100644 --- a/ets2panda/linter/test/interop/interop_import_js.ets.migrate.ets +++ b/ets2panda/linter/test/interop/interop_import_js.ets.migrate.ets @@ -20,20 +20,20 @@ let GeneratedImportVar_7 = ESValue.load('./interop_import_js_js'); -let Wiki = GeneratedImportVar_7.getPropertyByName('Wiki'); -let Doge = GeneratedImportVar_7.getPropertyByName('Dog'); +let Wiki = GeneratedImportVar_7.getProperty('Wiki'); +let Doge = GeneratedImportVar_7.getProperty('Dog'); let GeneratedImportVar_6 = ESValue.load('./interop_import_js_js'); let GeneratedImportVar_5 = ESValue.load('./interop_import_js_js'); -let myAaa = GeneratedImportVar_5.getPropertyByName('aaa'); -let ClassA = GeneratedImportVar_5.getPropertyByName('ClassA'); -let Dog = GeneratedImportVar_5.getPropertyByName('Dog'); +let myAaa = GeneratedImportVar_5.getProperty('aaa'); +let ClassA = GeneratedImportVar_5.getProperty('ClassA'); +let Dog = GeneratedImportVar_5.getProperty('Dog'); let GeneratedImportVar_4 = ESValue.load('./interop_import_js_js'); -let myAaa = GeneratedImportVar_4.getPropertyByName('aaa'); +let myAaa = GeneratedImportVar_4.getProperty('aaa'); let GeneratedImportVar_3 = ESValue.load('./jsfiles/preview_import_js'); -let CPreview = GeneratedImportVar_3.getPropertyByName('CPreview'); -let bar = GeneratedImportVar_3.getPropertyByName('bar'); -let foo = GeneratedImportVar_3.getPropertyByName('foo'); +let CPreview = GeneratedImportVar_3.getProperty('CPreview'); +let bar = GeneratedImportVar_3.getProperty('bar'); +let foo = GeneratedImportVar_3.getProperty('foo'); let GeneratedImportVar_2 = ESValue.load('../main/js_lib'); -let fjs = GeneratedImportVar_2.getPropertyByName('fjs'); +let fjs = GeneratedImportVar_2.getProperty('fjs'); let GeneratedImportVar_1 = ESValue.load('../main/js_lib'); -let Cjs = GeneratedImportVar_1.getPropertyByName('Cjs'); +let Cjs = GeneratedImportVar_1.getProperty('Cjs'); diff --git a/ets2panda/linter/test/interop/interop_import_js.ets.migrate.json b/ets2panda/linter/test/interop/interop_import_js.ets.migrate.json index c422eb1668d691782bb71b25d6c92490f9d6ce38..d46fff44eed9303ef9110bdcacdb9a2ff61a0684 100644 --- a/ets2panda/linter/test/interop/interop_import_js.ets.migrate.json +++ b/ets2panda/linter/test/interop/interop_import_js.ets.migrate.json @@ -28,7 +28,7 @@ "line": 23, "column": 5, "endLine": 23, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 24, "column": 5, "endLine": 24, - "endColumn": 57, + "endColumn": 51, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +68,7 @@ "line": 27, "column": 5, "endLine": 27, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -78,7 +78,7 @@ "line": 28, "column": 5, "endLine": 28, - "endColumn": 62, + "endColumn": 56, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -88,7 +88,7 @@ "line": 29, "column": 5, "endLine": 29, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -108,7 +108,7 @@ "line": 31, "column": 5, "endLine": 31, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -128,7 +128,7 @@ "line": 33, "column": 5, "endLine": 33, - "endColumn": 66, + "endColumn": 60, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -138,7 +138,7 @@ "line": 34, "column": 5, "endLine": 34, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -148,7 +148,7 @@ "line": 35, "column": 5, "endLine": 35, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -168,7 +168,7 @@ "line": 37, "column": 5, "endLine": 37, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -188,7 +188,7 @@ "line": 39, "column": 5, "endLine": 39, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/interop_import_js_compare.ets.autofix.json b/ets2panda/linter/test/interop/interop_import_js_compare.ets.autofix.json index 2b90e5d9f02599b8a3707341f813b61aef70870f..baf465561b539d1b6bd2bd6ca6ff850e97c933ef 100644 --- a/ets2panda/linter/test/interop/interop_import_js_compare.ets.autofix.json +++ b/ets2panda/linter/test/interop/interop_import_js_compare.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 663, "end": 663, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_import_js_compare_js');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\nlet m = GeneratedImportVar_1.getPropertyByName('m');\nlet n = GeneratedImportVar_1.getPropertyByName('n');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_import_js_compare_js');\nlet foo = GeneratedImportVar_1.getProperty('foo');\nlet m = GeneratedImportVar_1.getProperty('m');\nlet n = GeneratedImportVar_1.getProperty('n');\n", "line": 17, "column": 1, "endLine": 17, @@ -54,7 +54,7 @@ { "start": 672, "end": 677, - "replacementText": "foo.getPropertyByName(\"a\")", + "replacementText": "foo.getProperty(\"a\")", "line": 18, "column": 9, "endLine": 18, @@ -75,7 +75,7 @@ { "start": 686, "end": 691, - "replacementText": "foo.getPropertyByName(\"b\")", + "replacementText": "foo.getProperty(\"b\")", "line": 19, "column": 9, "endLine": 19, @@ -96,7 +96,7 @@ { "start": 672, "end": 677, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 20, "column": 1, "endLine": 20, @@ -117,7 +117,7 @@ { "start": 686, "end": 691, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 20, "column": 5, "endLine": 20, @@ -138,7 +138,7 @@ { "start": 672, "end": 677, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 21, "column": 1, "endLine": 21, @@ -159,7 +159,7 @@ { "start": 686, "end": 691, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 21, "column": 5, "endLine": 21, @@ -180,7 +180,7 @@ { "start": 672, "end": 677, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 22, "column": 1, "endLine": 22, @@ -201,7 +201,7 @@ { "start": 686, "end": 691, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 22, "column": 6, "endLine": 22, @@ -222,7 +222,7 @@ { "start": 672, "end": 677, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 23, "column": 1, "endLine": 23, @@ -243,7 +243,7 @@ { "start": 686, "end": 691, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 23, "column": 6, "endLine": 23, @@ -546,7 +546,7 @@ { "start": 881, "end": 886, - "replacementText": "foo.getPropertyByName(\"a\").toNumber()", + "replacementText": "foo.getProperty(\"a\").toNumber()", "line": 43, "column": 1, "endLine": 43, @@ -567,7 +567,7 @@ { "start": 889, "end": 894, - "replacementText": "foo.getPropertyByName(\"b\").toNumber()", + "replacementText": "foo.getProperty(\"b\").toNumber()", "line": 43, "column": 9, "endLine": 43, @@ -588,7 +588,7 @@ { "start": 881, "end": 886, - "replacementText": "foo.getPropertyByName(\"a\")", + "replacementText": "foo.getProperty(\"a\")", "line": 43, "column": 1, "endLine": 43, @@ -609,7 +609,7 @@ { "start": 889, "end": 894, - "replacementText": "foo.getPropertyByName(\"b\")", + "replacementText": "foo.getProperty(\"b\")", "line": 43, "column": 9, "endLine": 43, diff --git a/ets2panda/linter/test/interop/interop_import_js_compare.ets.migrate.ets b/ets2panda/linter/test/interop/interop_import_js_compare.ets.migrate.ets index 76633c942c13423af8c35e3e8fc2b0ff3cf00257..3e99265ba814b5f1d3cfddda1175c672fd65a5d0 100644 --- a/ets2panda/linter/test/interop/interop_import_js_compare.ets.migrate.ets +++ b/ets2panda/linter/test/interop/interop_import_js_compare.ets.migrate.ets @@ -15,12 +15,12 @@ let GeneratedImportVar_1 = ESValue.load('./interop_import_js_compare_js'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); -let m = GeneratedImportVar_1.getPropertyByName('m'); -let n = GeneratedImportVar_1.getPropertyByName('n'); +let foo = GeneratedImportVar_1.getProperty('foo'); +let m = GeneratedImportVar_1.getProperty('m'); +let n = GeneratedImportVar_1.getProperty('n'); -let a = foo.getPropertyByName("a") -let b = foo.getPropertyByName("b") +let a = foo.getProperty("a") +let b = foo.getProperty("b") a > b a < b a >= b @@ -48,4 +48,4 @@ x2 < y2; x2 >= y2; x2 <= y2; -foo.getPropertyByName("a").toNumber() > foo.getPropertyByName("b").toNumber(); \ No newline at end of file +foo.getProperty("a").toNumber() > foo.getProperty("b").toNumber(); \ No newline at end of file diff --git a/ets2panda/linter/test/interop/interop_import_js_compare.ets.migrate.json b/ets2panda/linter/test/interop/interop_import_js_compare.ets.migrate.json index 0ccdec1005fc3e20d0bdcd40db886bc6f12e3e3a..680e681f8883502ebd575b0812d7d0ebd96057b7 100644 --- a/ets2panda/linter/test/interop/interop_import_js_compare.ets.migrate.json +++ b/ets2panda/linter/test/interop/interop_import_js_compare.ets.migrate.json @@ -28,7 +28,7 @@ "line": 18, "column": 5, "endLine": 18, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 19, "column": 5, "endLine": 19, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -48,7 +48,7 @@ "line": 20, "column": 5, "endLine": 20, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -58,7 +58,7 @@ "line": 22, "column": 5, "endLine": 22, - "endColumn": 35, + "endColumn": 29, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +68,7 @@ "line": 23, "column": 5, "endLine": 23, - "endColumn": 35, + "endColumn": 29, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/interop_import_js_index.ets.autofix.json b/ets2panda/linter/test/interop/interop_import_js_index.ets.autofix.json index c9d2b8aee79942e93a8c7a095915ecaf9ad973b2..7e7407ab2d8666a49b0be63baf97f3151ab08bba 100644 --- a/ets2panda/linter/test/interop/interop_import_js_index.ets.autofix.json +++ b/ets2panda/linter/test/interop/interop_import_js_index.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 703, "end": 703, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_import_js_rules_js');\nlet ff3 = GeneratedImportVar_1.getPropertyByName('ff3');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_import_js_rules_js');\nlet ff3 = GeneratedImportVar_1.getProperty('ff3');\n", "line": 15, "column": 1, "endLine": 15, @@ -63,7 +63,7 @@ { "start": 703, "end": 703, - "replacementText": "let GeneratedImportVar_2 = ESValue.load('./interop_import_js_index_js');\nlet foo = GeneratedImportVar_2.getPropertyByName('foo');\n", + "replacementText": "let GeneratedImportVar_2 = ESValue.load('./interop_import_js_index_js');\nlet foo = GeneratedImportVar_2.getProperty('foo');\n", "line": 16, "column": 1, "endLine": 16, @@ -84,7 +84,7 @@ { "start": 714, "end": 721, - "replacementText": "foo.getPropertyByName(\"arr\")", + "replacementText": "foo.getProperty(\"arr\")", "line": 17, "column": 11, "endLine": 17, @@ -115,7 +115,7 @@ { "start": 722, "end": 728, - "replacementText": "arr.getPropertyByIndex(1)", + "replacementText": "arr.getProperty(1)", "line": 18, "column": 1, "endLine": 18, @@ -146,7 +146,7 @@ { "start": 729, "end": 739, - "replacementText": "arr.setPropertyByIndex(3, ESValue.wrap(4))", + "replacementText": "arr.setProperty(3, ESValue.wrap(4))", "line": 19, "column": 1, "endLine": 19, @@ -188,7 +188,7 @@ { "start": 752, "end": 759, - "replacementText": "ff3.getPropertyByName(\"arr\")", + "replacementText": "ff3.getProperty(\"arr\")", "line": 21, "column": 12, "endLine": 21, @@ -209,7 +209,7 @@ { "start": 770, "end": 781, - "replacementText": "arr1.getPropertyByName(\"length\")", + "replacementText": "arr1.getProperty(\"length\")", "line": 22, "column": 11, "endLine": 22, @@ -272,7 +272,7 @@ { "start": 812, "end": 823, - "replacementText": "arr1.getPropertyByName(\"length\")", + "replacementText": "arr1.getProperty(\"length\")", "line": 23, "column": 21, "endLine": 23, @@ -291,7 +291,7 @@ "problem": "InteropJsObjectTraverseJsInstance", "autofix": [ { - "replacementText": "arr1.getPropertyByIndex(i).toNumber()", + "replacementText": "arr1.getProperty(i).toNumber()", "start": 848, "end": 855, "line": 24, @@ -314,7 +314,7 @@ { "start": 848, "end": 855, - "replacementText": "arr1.getPropertyByIndex(i)", + "replacementText": "arr1.getProperty(i)", "line": 24, "column": 17, "endLine": 24, @@ -333,7 +333,7 @@ "problem": "InteropJsObjectTraverseJsInstance", "autofix": [ { - "replacementText": "arr1.getPropertyByIndex(i).toNumber()", + "replacementText": "arr1.getProperty(i).toNumber()", "start": 882, "end": 889, "line": 25, @@ -356,7 +356,7 @@ { "start": 882, "end": 889, - "replacementText": "arr1.getPropertyByIndex(i)", + "replacementText": "arr1.getProperty(i)", "line": 25, "column": 13, "endLine": 25, @@ -375,7 +375,7 @@ "problem": "InteropJsObjectTraverseJsInstance", "autofix": [ { - "replacementText": "arr1.setPropertyByIndex(i, ESValue.wrap(0 //error\n))", + "replacementText": "arr1.setProperty(i, ESValue.wrap(0 //error\n))", "start": 903, "end": 914, "line": 26, @@ -398,7 +398,7 @@ { "start": 903, "end": 914, - "replacementText": "arr1.setPropertyByIndex(i, ESValue.wrap(0))", + "replacementText": "arr1.setProperty(i, ESValue.wrap(0))", "line": 26, "column": 5, "endLine": 26, @@ -438,7 +438,7 @@ "problem": "InteropJsObjectTraverseJsInstance", "autofix": [ { - "replacementText": "arr1.getPropertyByIndex(i).toNumber()", + "replacementText": "arr1.getProperty(i).toNumber()", "start": 940, "end": 947, "line": 27, @@ -461,7 +461,7 @@ { "start": 940, "end": 947, - "replacementText": "arr1.getPropertyByIndex(i)", + "replacementText": "arr1.getProperty(i)", "line": 27, "column": 17, "endLine": 27, diff --git a/ets2panda/linter/test/interop/interop_import_js_index.ets.migrate.ets b/ets2panda/linter/test/interop/interop_import_js_index.ets.migrate.ets index 8e707c2f6752b0f9a58a59b51ed9fbed9d7bb213..d26adb726fa91f8068bd8e47e7a2d48b8328b3d4 100644 --- a/ets2panda/linter/test/interop/interop_import_js_index.ets.migrate.ets +++ b/ets2panda/linter/test/interop/interop_import_js_index.ets.migrate.ets @@ -14,22 +14,22 @@ */ let GeneratedImportVar_2 = ESValue.load('./interop_import_js_index_js'); -let foo = GeneratedImportVar_2.getPropertyByName('foo'); +let foo = GeneratedImportVar_2.getProperty('foo'); let GeneratedImportVar_1 = ESValue.load('./interop_import_js_rules_js'); -let ff3 = GeneratedImportVar_1.getPropertyByName('ff3'); +let ff3 = GeneratedImportVar_1.getProperty('ff3'); -let arr = foo.getPropertyByName("arr") -arr.getPropertyByIndex(1.0) -arr.setPropertyByIndex(3.0, ESValue.wrap(4.0)) +let arr = foo.getProperty("arr") +arr.getProperty(1.0) +arr.setProperty(3.0, ESValue.wrap(4.0)) -let arr1 = ff3.getPropertyByName("arr") -let len: number = arr1.getPropertyByName("length") as number -for (let i: number = 0.0; i < arr1.getPropertyByName("length"); ++i) { - console.log(arr1.getPropertyByIndex(i).toNumber()+''); //error - let x = arr1.getPropertyByIndex(i).toNumber() //error - arr1.setPropertyByIndex(i, ESValue.wrap(0.0 //error +let arr1 = ff3.getProperty("arr") +let len: number = arr1.getProperty("length") as number +for (let i: number = 0.0; i < arr1.getProperty("length"); ++i) { + console.log(arr1.getProperty(i).toNumber()+''); //error + let x = arr1.getProperty(i).toNumber() //error + arr1.setProperty(i, ESValue.wrap(0.0 //error )) //error - console.log(arr1.getPropertyByIndex(i).toNumber()+''); //error + console.log(arr1.getProperty(i).toNumber()+''); //error } for (let element of arr1) { //error diff --git a/ets2panda/linter/test/interop/interop_import_js_index.ets.migrate.json b/ets2panda/linter/test/interop/interop_import_js_index.ets.migrate.json index 526bcedf9d7fab22fb5c38dc894a9f7d71e6da16..f816c83809d067482f730fe1a6e8f213f631445e 100644 --- a/ets2panda/linter/test/interop/interop_import_js_index.ets.migrate.json +++ b/ets2panda/linter/test/interop/interop_import_js_index.ets.migrate.json @@ -28,7 +28,7 @@ "line": 17, "column": 5, "endLine": 17, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -48,7 +48,7 @@ "line": 19, "column": 5, "endLine": 19, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -58,7 +58,7 @@ "line": 21, "column": 5, "endLine": 21, - "endColumn": 39, + "endColumn": 33, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +68,7 @@ "line": 25, "column": 5, "endLine": 25, - "endColumn": 40, + "endColumn": 34, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -78,7 +78,7 @@ "line": 29, "column": 9, "endLine": 29, - "endColumn": 50, + "endColumn": 43, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/interop_import_js_rules.ets.autofix.json b/ets2panda/linter/test/interop/interop_import_js_rules.ets.autofix.json index b44bc6c370bb96f878c98831d18e2206a3150a08..58320d2ba512dc7e92878880a09d11690ff59917 100644 --- a/ets2panda/linter/test/interop/interop_import_js_rules.ets.autofix.json +++ b/ets2panda/linter/test/interop/interop_import_js_rules.ets.autofix.json @@ -43,7 +43,7 @@ { "start": 1092, "end": 1092, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_import_js_rules_js');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_import_js_rules_js');\nlet foo = GeneratedImportVar_1.getProperty('foo');\n", "line": 17, "column": 1, "endLine": 17, @@ -83,7 +83,7 @@ { "start": 1092, "end": 1092, - "replacementText": "let GeneratedImportVar_2 = ESValue.load('./interop_import_js_rules_js');\nlet ff1 = GeneratedImportVar_2.getPropertyByName('ff1');\nlet ff2 = GeneratedImportVar_2.getPropertyByName('ff2');\n", + "replacementText": "let GeneratedImportVar_2 = ESValue.load('./interop_import_js_rules_js');\nlet ff1 = GeneratedImportVar_2.getProperty('ff1');\nlet ff2 = GeneratedImportVar_2.getProperty('ff2');\n", "line": 18, "column": 1, "endLine": 18, @@ -123,7 +123,7 @@ { "start": 1092, "end": 1092, - "replacementText": "let GeneratedImportVar_3 = ESValue.load('./interop_import_js_rules_js');\nlet A = GeneratedImportVar_3.getPropertyByName('A');\n", + "replacementText": "let GeneratedImportVar_3 = ESValue.load('./interop_import_js_rules_js');\nlet A = GeneratedImportVar_3.getProperty('A');\n", "line": 20, "column": 1, "endLine": 20, @@ -163,7 +163,7 @@ { "start": 1092, "end": 1092, - "replacementText": "let GeneratedImportVar_4 = ESValue.load('./interop_import_js_rules_js');\nlet C = GeneratedImportVar_4.getPropertyByName('C');\n", + "replacementText": "let GeneratedImportVar_4 = ESValue.load('./interop_import_js_rules_js');\nlet C = GeneratedImportVar_4.getProperty('C');\n", "line": 21, "column": 1, "endLine": 21, @@ -203,7 +203,7 @@ { "start": 1092, "end": 1092, - "replacementText": "let GeneratedImportVar_5 = ESValue.load('./interop_import_js_rules_js');\nlet ff3 = GeneratedImportVar_5.getPropertyByName('ff3');\n", + "replacementText": "let GeneratedImportVar_5 = ESValue.load('./interop_import_js_rules_js');\nlet ff3 = GeneratedImportVar_5.getProperty('ff3');\n", "line": 23, "column": 1, "endLine": 23, @@ -243,7 +243,7 @@ { "start": 1092, "end": 1092, - "replacementText": "let GeneratedImportVar_6 = ESValue.load('./interop_import_js_rules_js');\nlet ff4 = GeneratedImportVar_6.getPropertyByName('ff4');\n", + "replacementText": "let GeneratedImportVar_6 = ESValue.load('./interop_import_js_rules_js');\nlet ff4 = GeneratedImportVar_6.getProperty('ff4');\n", "line": 25, "column": 1, "endLine": 25, @@ -283,7 +283,7 @@ { "start": 1092, "end": 1092, - "replacementText": "let GeneratedImportVar_7 = ESValue.load('./interop_import_js_rules_js');\nlet handle = GeneratedImportVar_7.getPropertyByName('handle');\n", + "replacementText": "let GeneratedImportVar_7 = ESValue.load('./interop_import_js_rules_js');\nlet handle = GeneratedImportVar_7.getProperty('handle');\n", "line": 27, "column": 1, "endLine": 27, @@ -323,7 +323,7 @@ { "start": 1092, "end": 1092, - "replacementText": "let GeneratedImportVar_8 = ESValue.load('./interop_import_js_rules_js');\nlet expand = GeneratedImportVar_8.getPropertyByName('expand');\n", + "replacementText": "let GeneratedImportVar_8 = ESValue.load('./interop_import_js_rules_js');\nlet expand = GeneratedImportVar_8.getProperty('expand');\n", "line": 29, "column": 1, "endLine": 29, @@ -363,7 +363,7 @@ { "start": 1092, "end": 1092, - "replacementText": "let GeneratedImportVar_9 = ESValue.load('./interop_import_js_rules_js');\nlet orange = GeneratedImportVar_9.getPropertyByName('orange');\n", + "replacementText": "let GeneratedImportVar_9 = ESValue.load('./interop_import_js_rules_js');\nlet orange = GeneratedImportVar_9.getProperty('orange');\n", "line": 30, "column": 1, "endLine": 30, @@ -384,7 +384,7 @@ { "start": 1098, "end": 1108, - "replacementText": "foo.getPropertyByName(\"isGood\")", + "replacementText": "foo.getProperty(\"isGood\")", "line": 32, "column": 5, "endLine": 32, @@ -403,7 +403,7 @@ "problem": "InteropJsObjectConditionJudgment", "autofix": [ { - "replacementText": "foo.getPropertyByName('isGood').toBoolean()", + "replacementText": "foo.getProperty('isGood').toBoolean()", "start": 1098, "end": 1108, "line": 32, @@ -426,7 +426,7 @@ { "start": 1118, "end": 1124, - "replacementText": "ff1.getPropertyByName(\"f1\").toNumber()", + "replacementText": "ff1.getProperty(\"f1\").toNumber()", "line": 34, "column": 5, "endLine": 34, @@ -447,7 +447,7 @@ { "start": 1118, "end": 1124, - "replacementText": "ff1.getPropertyByName(\"f1\")", + "replacementText": "ff1.getProperty(\"f1\")", "line": 34, "column": 5, "endLine": 34, @@ -466,7 +466,7 @@ "problem": "InteropJsObjectConditionJudgment", "autofix": [ { - "replacementText": "ff1.getPropertyByName('f1').toNumber()", + "replacementText": "ff1.getProperty('f1').toNumber()", "start": 1118, "end": 1124, "line": 34, @@ -561,7 +561,7 @@ { "start": 1344, "end": 1351, - "replacementText": "ff3.getPropertyByName(\"arr\")", + "replacementText": "ff3.getProperty(\"arr\")", "line": 50, "column": 11, "endLine": 50, @@ -582,7 +582,7 @@ { "start": 1362, "end": 1372, - "replacementText": "arr.getPropertyByName(\"length\")", + "replacementText": "arr.getProperty(\"length\")", "line": 51, "column": 11, "endLine": 51, @@ -653,7 +653,7 @@ "problem": "InteropJsObjectTraverseJsInstance", "autofix": [ { - "replacementText": "arr.getPropertyByIndex(i).toNumber()", + "replacementText": "arr.getProperty(i).toNumber()", "start": 1425, "end": 1431, "line": 53, @@ -676,7 +676,7 @@ { "start": 1425, "end": 1431, - "replacementText": "arr.getPropertyByIndex(i)", + "replacementText": "arr.getProperty(i)", "line": 53, "column": 11, "endLine": 53, @@ -705,7 +705,7 @@ "problem": "InteropJsObjectTraverseJsInstance", "autofix": [ { - "replacementText": "arr.setPropertyByIndex(i, ESValue.wrap(0))", + "replacementText": "arr.setProperty(i, ESValue.wrap(0))", "start": 1434, "end": 1444, "line": 54, @@ -728,7 +728,7 @@ { "start": 1434, "end": 1444, - "replacementText": "arr.setPropertyByIndex(i, ESValue.wrap(0))", + "replacementText": "arr.setProperty(i, ESValue.wrap(0))", "line": 54, "column": 3, "endLine": 54, @@ -1072,7 +1072,7 @@ { "start": 1831, "end": 1850, - "replacementText": "orange.getPropertyByName(\"isVegetable1\")", + "replacementText": "orange.getProperty(\"isVegetable1\")", "line": 84, "column": 5, "endLine": 84, diff --git a/ets2panda/linter/test/interop/interop_import_typeof_js.ets.autofix.json b/ets2panda/linter/test/interop/interop_import_typeof_js.ets.autofix.json index a080a8877dd435a10899ad762d2ee6ab0862b41b..9481ffc18afd1228da236ac44066200edc7f80a7 100644 --- a/ets2panda/linter/test/interop/interop_import_typeof_js.ets.autofix.json +++ b/ets2panda/linter/test/interop/interop_import_typeof_js.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 783, "end": 783, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_import_js_js');\nlet myAaa = GeneratedImportVar_1.getPropertyByName('aaa');\nlet ClassA = GeneratedImportVar_1.getPropertyByName('ClassA');\nlet Dog = GeneratedImportVar_1.getPropertyByName('Dog');\nlet Person = GeneratedImportVar_1.getPropertyByName('Person');\nlet Wiki = GeneratedImportVar_1.getPropertyByName('Wiki');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_import_js_js');\nlet myAaa = GeneratedImportVar_1.getProperty('aaa');\nlet ClassA = GeneratedImportVar_1.getProperty('ClassA');\nlet Dog = GeneratedImportVar_1.getProperty('Dog');\nlet Person = GeneratedImportVar_1.getProperty('Person');\nlet Wiki = GeneratedImportVar_1.getProperty('Wiki');\n", "line": 16, "column": 1, "endLine": 16, @@ -63,7 +63,7 @@ { "start": 783, "end": 783, - "replacementText": "let GeneratedImportVar_2 = ESValue.load('./interop_import_js_js');\nlet Doge = GeneratedImportVar_2.getPropertyByName('Dog');\n", + "replacementText": "let GeneratedImportVar_2 = ESValue.load('./interop_import_js_js');\nlet Doge = GeneratedImportVar_2.getProperty('Dog');\n", "line": 17, "column": 1, "endLine": 17, @@ -93,7 +93,7 @@ { "start": 783, "end": 783, - "replacementText": "let GeneratedImportVar_3 = ESValue.load('./interop_import_js_js');\nlet wiki = GeneratedImportVar_3.getPropertyByName('Wiki');\n", + "replacementText": "let GeneratedImportVar_3 = ESValue.load('./interop_import_js_js');\nlet wiki = GeneratedImportVar_3.getProperty('Wiki');\n", "line": 18, "column": 1, "endLine": 18, @@ -260,7 +260,7 @@ { "start": 937, "end": 953, - "replacementText": "Wiki.getPropertyByName('name').typeOf()", + "replacementText": "Wiki.getProperty('name').typeOf()", "line": 27, "column": 1, "endLine": 27, @@ -281,7 +281,7 @@ { "start": 944, "end": 953, - "replacementText": "Wiki.getPropertyByName(\"name\")", + "replacementText": "Wiki.getProperty(\"name\")", "line": 27, "column": 8, "endLine": 27, @@ -323,7 +323,7 @@ { "start": 992, "end": 1001, - "replacementText": "wiki.getPropertyByName(\"name\")", + "replacementText": "wiki.getProperty(\"name\")", "line": 29, "column": 11, "endLine": 29, @@ -428,7 +428,7 @@ { "start": 1136, "end": 1147, - "replacementText": "person.getPropertyByName(\"name\")", + "replacementText": "person.getProperty(\"name\")", "line": 35, "column": 11, "endLine": 35, @@ -584,7 +584,7 @@ { "start": 1701, "end": 1717, - "replacementText": "wiki.getPropertyByName('name').typeOf()", + "replacementText": "wiki.getProperty('name').typeOf()", "line": 61, "column": 5, "endLine": 61, @@ -605,7 +605,7 @@ { "start": 1708, "end": 1717, - "replacementText": "wiki.getPropertyByName(\"name\")", + "replacementText": "wiki.getProperty(\"name\")", "line": 61, "column": 12, "endLine": 61, @@ -689,7 +689,7 @@ { "start": 1868, "end": 1892, - "replacementText": "Person.instantiate().getPropertyByName('name').typeOf()", + "replacementText": "Person.instantiate().getProperty('name').typeOf()", "line": 70, "column": 1, "endLine": 70, @@ -710,7 +710,7 @@ { "start": 1875, "end": 1892, - "replacementText": "new Person().getPropertyByName(\"name\")", + "replacementText": "new Person().getProperty(\"name\")", "line": 70, "column": 8, "endLine": 70, diff --git a/ets2panda/linter/test/interop/interop_import_typeof_js.ets.migrate.ets b/ets2panda/linter/test/interop/interop_import_typeof_js.ets.migrate.ets index 197a8577ce7a248131c910ab0d674dd4d640243e..ec79bd0e7e86af7ce0f1f796f5b5bca1b38ae1bd 100644 --- a/ets2panda/linter/test/interop/interop_import_typeof_js.ets.migrate.ets +++ b/ets2panda/linter/test/interop/interop_import_typeof_js.ets.migrate.ets @@ -16,15 +16,15 @@ let GeneratedImportVar_3 = ESValue.load('./interop_import_js_js'); -let wiki = GeneratedImportVar_3.getPropertyByName('Wiki'); +let wiki = GeneratedImportVar_3.getProperty('Wiki'); let GeneratedImportVar_2 = ESValue.load('./interop_import_js_js'); -let Doge = GeneratedImportVar_2.getPropertyByName('Dog'); +let Doge = GeneratedImportVar_2.getProperty('Dog'); let GeneratedImportVar_1 = ESValue.load('./interop_import_js_js'); -let myAaa = GeneratedImportVar_1.getPropertyByName('aaa'); -let ClassA = GeneratedImportVar_1.getPropertyByName('ClassA'); -let Dog = GeneratedImportVar_1.getPropertyByName('Dog'); -let Person = GeneratedImportVar_1.getPropertyByName('Person'); -let Wiki = GeneratedImportVar_1.getPropertyByName('Wiki'); +let myAaa = GeneratedImportVar_1.getProperty('aaa'); +let ClassA = GeneratedImportVar_1.getProperty('ClassA'); +let Dog = GeneratedImportVar_1.getProperty('Dog'); +let Person = GeneratedImportVar_1.getProperty('Person'); +let Wiki = GeneratedImportVar_1.getProperty('Wiki'); myAaa.invoke().typeOf(); //error @@ -34,15 +34,15 @@ Dog.typeOf(); //error Dog.invoke(ESValue.wrap('doge')).typeOf(); //error Doge.invoke(ESValue.wrap('doge')).typeOf(); //error Wiki.typeOf() //error -Wiki.getPropertyByName('name').typeOf() //error +Wiki.getProperty('name').typeOf() //error wiki.typeOf() //error -let val = wiki.getPropertyByName("name") +let val = wiki.getProperty("name") typeof val; const aClass:ClassA = ClassA.instantiate() ClassA.instantiate().typeOf() //error typeof aClass; let person:Person = Person.instantiate(); -let name =person.getPropertyByName("name") +let name =person.getProperty("name") let name2 =person.invokeMethod("getName") function getPersonInfo(){ typeof person; @@ -68,7 +68,7 @@ class Object { typeof location; } tips(){ - wiki.getPropertyByName('name').typeOf(); //error + wiki.getProperty('name').typeOf(); //error typeof age; typeof person2; typeof fun; @@ -77,6 +77,6 @@ class Object { } myAaa.typeOf(); //error -Person.instantiate().getPropertyByName('name').typeOf() //error +Person.instantiate().getProperty('name').typeOf() //error Person.instantiate().invokeMethod("getName").typeOf() //error Person.instantiate().invokeMethod("setAge", ESValue.wrap(22.0)).typeOf() //error diff --git a/ets2panda/linter/test/interop/interop_import_typeof_js.ets.migrate.json b/ets2panda/linter/test/interop/interop_import_typeof_js.ets.migrate.json index f709470eefd49c7d1de7697c2a05ece3775d7779..af67e13229a87bffab292ff2617cf434410703a5 100644 --- a/ets2panda/linter/test/interop/interop_import_typeof_js.ets.migrate.json +++ b/ets2panda/linter/test/interop/interop_import_typeof_js.ets.migrate.json @@ -28,7 +28,7 @@ "line": 19, "column": 5, "endLine": 19, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -48,7 +48,7 @@ "line": 21, "column": 5, "endLine": 21, - "endColumn": 57, + "endColumn": 51, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +68,7 @@ "line": 23, "column": 5, "endLine": 23, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -78,7 +78,7 @@ "line": 24, "column": 5, "endLine": 24, - "endColumn": 62, + "endColumn": 56, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -88,7 +88,7 @@ "line": 25, "column": 5, "endLine": 25, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -98,7 +98,7 @@ "line": 26, "column": 5, "endLine": 26, - "endColumn": 62, + "endColumn": 56, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -108,7 +108,7 @@ "line": 27, "column": 5, "endLine": 27, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -128,7 +128,7 @@ "line": 39, "column": 5, "endLine": 39, - "endColumn": 41, + "endColumn": 35, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -138,7 +138,7 @@ "line": 45, "column": 5, "endLine": 45, - "endColumn": 43, + "endColumn": 37, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.autofix.json b/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.autofix.json index d66995a3c66e2ece5eb31247a9916ca8ce6bf5c4..f2e4507626e53be1c3f4253b95f4c5e13c3916f2 100644 --- a/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.autofix.json +++ b/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.autofix.json @@ -43,7 +43,7 @@ { "start": 723, "end": 723, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_not_have_property_js');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\nlet person = GeneratedImportVar_1.getPropertyByName('person');\nlet TestHelper = GeneratedImportVar_1.getPropertyByName('TestHelper');\nlet Machine = GeneratedImportVar_1.getPropertyByName('Machine');\nlet User = GeneratedImportVar_1.getPropertyByName('User');\nlet Person = GeneratedImportVar_1.getPropertyByName('Person');\nlet Employee = GeneratedImportVar_1.getPropertyByName('Employee');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_not_have_property_js');\nlet foo = GeneratedImportVar_1.getProperty('foo');\nlet person = GeneratedImportVar_1.getProperty('person');\nlet TestHelper = GeneratedImportVar_1.getProperty('TestHelper');\nlet Machine = GeneratedImportVar_1.getProperty('Machine');\nlet User = GeneratedImportVar_1.getProperty('User');\nlet Person = GeneratedImportVar_1.getProperty('Person');\nlet Employee = GeneratedImportVar_1.getProperty('Employee');\n", "line": 17, "column": 1, "endLine": 17, @@ -64,7 +64,7 @@ { "start": 725, "end": 733, - "replacementText": "foo.getPropertyByName(\"name\")", + "replacementText": "foo.getProperty(\"name\")", "line": 19, "column": 1, "endLine": 19, @@ -85,7 +85,7 @@ { "start": 734, "end": 750, - "replacementText": "foo.setPropertyByName(\"name\", ESValue.wrap(\"456\"))", + "replacementText": "foo.setProperty(\"name\", ESValue.wrap(\"456\"))", "line": 20, "column": 1, "endLine": 20, @@ -106,7 +106,7 @@ { "start": 751, "end": 766, - "replacementText": "person.setPropertyByName(\"age\", ESValue.wrap(23))", + "replacementText": "person.setProperty(\"age\", ESValue.wrap(23))", "line": 21, "column": 1, "endLine": 21, @@ -148,7 +148,7 @@ { "start": 767, "end": 787, - "replacementText": "person.setPropertyByName(\"male\", ESValue.wrap([2, 3]))", + "replacementText": "person.setProperty(\"male\", ESValue.wrap([2, 3]))", "line": 22, "column": 1, "endLine": 22, @@ -211,7 +211,7 @@ { "start": 788, "end": 800, - "replacementText": "foo.setPropertyByName(\"age\", ESValue.wrap(12))", + "replacementText": "foo.setProperty(\"age\", ESValue.wrap(12))", "line": 23, "column": 1, "endLine": 23, @@ -253,7 +253,7 @@ { "start": 805, "end": 821, - "replacementText": "foo.setPropertyByName(\"name\", ESValue.wrap(\"456\"))", + "replacementText": "foo.setProperty(\"name\", ESValue.wrap(\"456\"))", "line": 24, "column": 5, "endLine": 24, @@ -272,7 +272,7 @@ "problem": "InteropJsObjectConditionJudgment", "autofix": [ { - "replacementText": "foo.getPropertyByName('name').toString()", + "replacementText": "foo.getProperty('name').toString()", "start": 805, "end": 813, "line": 24, @@ -326,7 +326,7 @@ { "start": 860, "end": 870, - "replacementText": "a.setPropertyByName(\"age\", ESValue.wrap(12))", + "replacementText": "a.setProperty(\"age\", ESValue.wrap(12))", "line": 27, "column": 1, "endLine": 27, @@ -452,7 +452,7 @@ { "start": 1005, "end": 1017, - "replacementText": "machine.getPropertyByName(\"name\")", + "replacementText": "machine.getProperty(\"name\")", "line": 32, "column": 12, "endLine": 32, @@ -536,7 +536,7 @@ { "start": 1173, "end": 1180, - "replacementText": "user.getPropertyByName(\"id\")", + "replacementText": "user.getProperty(\"id\")", "line": 37, "column": 12, "endLine": 37, @@ -641,7 +641,7 @@ { "start": 1312, "end": 1319, - "replacementText": "user.getPropertyByName(\"id\")", + "replacementText": "user.getProperty(\"id\")", "line": 42, "column": 8, "endLine": 42, @@ -746,7 +746,7 @@ { "start": 1454, "end": 1461, - "replacementText": "user.getPropertyByName(\"id\")", + "replacementText": "user.getProperty(\"id\")", "line": 47, "column": 12, "endLine": 47, @@ -830,7 +830,7 @@ { "start": 1601, "end": 1608, - "replacementText": "user.getPropertyByName(\"id\")", + "replacementText": "user.getProperty(\"id\")", "line": 52, "column": 12, "endLine": 52, @@ -935,7 +935,7 @@ { "start": 1758, "end": 1770, - "replacementText": "machine.getPropertyByName(\"name\")", + "replacementText": "machine.getProperty(\"name\")", "line": 57, "column": 12, "endLine": 57, @@ -1019,7 +1019,7 @@ { "start": 1929, "end": 1942, - "replacementText": "employee.getPropertyByName(\"name\")", + "replacementText": "employee.getProperty(\"name\")", "line": 62, "column": 12, "endLine": 62, diff --git a/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.migrate.ets b/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.migrate.ets index b5185b29e459cd193a63b971d694af9e248ef987..ff4cf81936ebdd39e59dd966a33d10b676111432 100644 --- a/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.migrate.ets +++ b/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.migrate.ets @@ -15,24 +15,24 @@ 'use static' let GeneratedImportVar_1 = ESValue.load('./interop_not_have_property_js'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); -let person = GeneratedImportVar_1.getPropertyByName('person'); -let TestHelper = GeneratedImportVar_1.getPropertyByName('TestHelper'); -let Machine = GeneratedImportVar_1.getPropertyByName('Machine'); -let User = GeneratedImportVar_1.getPropertyByName('User'); -let Person = GeneratedImportVar_1.getPropertyByName('Person'); -let Employee = GeneratedImportVar_1.getPropertyByName('Employee'); +let foo = GeneratedImportVar_1.getProperty('foo'); +let person = GeneratedImportVar_1.getProperty('person'); +let TestHelper = GeneratedImportVar_1.getProperty('TestHelper'); +let Machine = GeneratedImportVar_1.getProperty('Machine'); +let User = GeneratedImportVar_1.getProperty('User'); +let Person = GeneratedImportVar_1.getProperty('Person'); +let Employee = GeneratedImportVar_1.getProperty('Employee'); -foo.getPropertyByName("name") -foo.setPropertyByName("name", ESValue.wrap("456")) -person.setPropertyByName("age", ESValue.wrap(23.0)) -person.setPropertyByName("male", ESValue.wrap([2.0, 3.0])) -foo.setPropertyByName("age", ESValue.wrap(12.0)) -if (foo.setPropertyByName("name", ESValue.wrap("456"))) { print("true") } +foo.getProperty("name") +foo.setProperty("name", ESValue.wrap("456")) +person.setProperty("age", ESValue.wrap(23.0)) +person.setProperty("male", ESValue.wrap([2.0, 3.0])) +foo.setProperty("age", ESValue.wrap(12.0)) +if (foo.setProperty("name", ESValue.wrap("456"))) { print("true") } let a = foo.instantiate() -a.setPropertyByName("age", ESValue.wrap(12.0)) +a.setProperty("age", ESValue.wrap(12.0)) let test_helper = TestHelper.instantiate(ESValue.wrap("TEST_INSTANTIATE_JS_OBJECT")); test_helper.invokeMethod("test", ESValue.wrap(() => { diff --git a/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.migrate.json b/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.migrate.json index 540b5557d45cc7365dc242397e5fad526524d7bd..258a8601a043792f7922dfed5652c009e0c0fd43 100644 --- a/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.migrate.json +++ b/ets2panda/linter/test/interop/interop_not_have_property_arkts2.ets.migrate.json @@ -28,7 +28,7 @@ "line": 18, "column": 5, "endLine": 18, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 19, "column": 5, "endLine": 19, - "endColumn": 62, + "endColumn": 56, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -48,7 +48,7 @@ "line": 20, "column": 5, "endLine": 20, - "endColumn": 70, + "endColumn": 64, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -58,7 +58,7 @@ "line": 21, "column": 5, "endLine": 21, - "endColumn": 64, + "endColumn": 58, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +68,7 @@ "line": 22, "column": 5, "endLine": 22, - "endColumn": 58, + "endColumn": 52, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -78,7 +78,7 @@ "line": 23, "column": 5, "endLine": 23, - "endColumn": 62, + "endColumn": 56, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -88,7 +88,7 @@ "line": 24, "column": 5, "endLine": 24, - "endColumn": 66, + "endColumn": 60, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.autofix.json b/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.autofix.json index c638dec23eb3a73a32118f3b47305f1a70ee4777..402aa07005ff9d15b19ea0c1f4ba183637bcbf70 100644 --- a/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.autofix.json +++ b/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 650, "end": 650, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_property_num_js');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./interop_property_num_js');\nlet foo = GeneratedImportVar_1.getProperty('foo');\n", "line": 16, "column": 1, "endLine": 16, @@ -54,7 +54,7 @@ { "start": 653, "end": 660, - "replacementText": "foo.getPropertyByName(\"num\").toNumber()", + "replacementText": "foo.getProperty(\"num\").toNumber()", "line": 18, "column": 1, "endLine": 18, @@ -75,7 +75,7 @@ { "start": 653, "end": 660, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 18, "column": 2, "endLine": 18, @@ -96,7 +96,7 @@ { "start": 663, "end": 670, - "replacementText": "foo.getPropertyByName(\"num\").toNumber()", + "replacementText": "foo.getProperty(\"num\").toNumber()", "line": 19, "column": 1, "endLine": 19, @@ -117,7 +117,7 @@ { "start": 663, "end": 670, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 19, "column": 2, "endLine": 19, @@ -138,7 +138,7 @@ { "start": 673, "end": 680, - "replacementText": "foo.getPropertyByName(\"num\").toNumber()", + "replacementText": "foo.getProperty(\"num\").toNumber()", "line": 20, "column": 1, "endLine": 20, @@ -159,7 +159,7 @@ { "start": 673, "end": 680, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 20, "column": 2, "endLine": 20, @@ -180,7 +180,7 @@ { "start": 683, "end": 690, - "replacementText": "foo.getPropertyByName(\"num\").toNumber()", + "replacementText": "foo.getProperty(\"num\").toNumber()", "line": 21, "column": 1, "endLine": 21, @@ -201,7 +201,7 @@ { "start": 683, "end": 690, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 21, "column": 2, "endLine": 21, @@ -222,7 +222,7 @@ { "start": 693, "end": 702, - "replacementText": "(foo.getPropertyByName(\"num\").toNumber())", + "replacementText": "(foo.getProperty(\"num\").toNumber())", "line": 22, "column": 1, "endLine": 22, @@ -243,7 +243,7 @@ { "start": 694, "end": 701, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 22, "column": 3, "endLine": 22, @@ -264,7 +264,7 @@ { "start": 705, "end": 714, - "replacementText": "(foo.getPropertyByName(\"num\").toNumber())", + "replacementText": "(foo.getProperty(\"num\").toNumber())", "line": 23, "column": 1, "endLine": 23, @@ -285,7 +285,7 @@ { "start": 706, "end": 713, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 23, "column": 3, "endLine": 23, @@ -306,7 +306,7 @@ { "start": 717, "end": 726, - "replacementText": "(foo.getPropertyByName(\"num\").toNumber())", + "replacementText": "(foo.getProperty(\"num\").toNumber())", "line": 24, "column": 1, "endLine": 24, @@ -327,7 +327,7 @@ { "start": 718, "end": 725, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 24, "column": 3, "endLine": 24, @@ -348,7 +348,7 @@ { "start": 729, "end": 738, - "replacementText": "(foo.getPropertyByName(\"num\").toNumber())", + "replacementText": "(foo.getProperty(\"num\").toNumber())", "line": 25, "column": 1, "endLine": 25, @@ -369,7 +369,7 @@ { "start": 730, "end": 737, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 25, "column": 3, "endLine": 25, diff --git a/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.migrate.ets b/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.migrate.ets index 09086d9892f81603449fdd0498a3b3ce220b336c..97d25fc2388df29ee0d3c7380ff33cd343a10cb5 100644 --- a/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.migrate.ets +++ b/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.migrate.ets @@ -14,14 +14,14 @@ */ let GeneratedImportVar_1 = ESValue.load('./interop_property_num_js'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); +let foo = GeneratedImportVar_1.getProperty('foo'); -+foo.getPropertyByName("num").toNumber(); --foo.getPropertyByName("num").toNumber(); -!foo.getPropertyByName("num").toNumber(); -~foo.getPropertyByName("num").toNumber(); -+(foo.getPropertyByName("num").toNumber()); --(foo.getPropertyByName("num").toNumber()); -!(foo.getPropertyByName("num").toNumber()); -~(foo.getPropertyByName("num").toNumber()); \ No newline at end of file ++foo.getProperty("num").toNumber(); +-foo.getProperty("num").toNumber(); +!foo.getProperty("num").toNumber(); +~foo.getProperty("num").toNumber(); ++(foo.getProperty("num").toNumber()); +-(foo.getProperty("num").toNumber()); +!(foo.getProperty("num").toNumber()); +~(foo.getProperty("num").toNumber()); \ No newline at end of file diff --git a/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.migrate.json b/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.migrate.json index ef4a1a04e1196434b864ff249bcd12d37a9d92b8..9ada1a9ba2be361f5a43b0e4103448d741b96a95 100644 --- a/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.migrate.json +++ b/ets2panda/linter/test/interop/interop_not_have_property_num_arkts2.ets.migrate.json @@ -28,7 +28,7 @@ "line": 17, "column": 5, "endLine": 17, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 20, "column": 1, "endLine": 20, - "endColumn": 41, + "endColumn": 35, "problem": "UnaryArithmNotNumber", "suggest": "", "rule": "Unary operators \"+\", \"-\" and \"~\" work only on numbers (arkts-no-polymorphic-unops)", @@ -48,7 +48,7 @@ "line": 21, "column": 1, "endLine": 21, - "endColumn": 41, + "endColumn": 35, "problem": "UnaryArithmNotNumber", "suggest": "", "rule": "Unary operators \"+\", \"-\" and \"~\" work only on numbers (arkts-no-polymorphic-unops)", @@ -58,7 +58,7 @@ "line": 23, "column": 1, "endLine": 23, - "endColumn": 41, + "endColumn": 35, "problem": "UnaryArithmNotNumber", "suggest": "", "rule": "Unary operators \"+\", \"-\" and \"~\" work only on numbers (arkts-no-polymorphic-unops)", @@ -68,7 +68,7 @@ "line": 24, "column": 1, "endLine": 24, - "endColumn": 43, + "endColumn": 37, "problem": "UnaryArithmNotNumber", "suggest": "", "rule": "Unary operators \"+\", \"-\" and \"~\" work only on numbers (arkts-no-polymorphic-unops)", @@ -78,7 +78,7 @@ "line": 25, "column": 1, "endLine": 25, - "endColumn": 43, + "endColumn": 37, "problem": "UnaryArithmNotNumber", "suggest": "", "rule": "Unary operators \"+\", \"-\" and \"~\" work only on numbers (arkts-no-polymorphic-unops)", @@ -88,7 +88,7 @@ "line": 27, "column": 1, "endLine": 27, - "endColumn": 43, + "endColumn": 37, "problem": "UnaryArithmNotNumber", "suggest": "", "rule": "Unary operators \"+\", \"-\" and \"~\" work only on numbers (arkts-no-polymorphic-unops)", diff --git a/ets2panda/linter/test/interop/no_await_js_promise.ets.autofix.json b/ets2panda/linter/test/interop/no_await_js_promise.ets.autofix.json index 5254337c77defbb125385c93025cd3cba914a1f2..3803d40f1aa0a14150b68e0abda2f8cc2ab47d82 100644 --- a/ets2panda/linter/test/interop/no_await_js_promise.ets.autofix.json +++ b/ets2panda/linter/test/interop/no_await_js_promise.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 693, "end": 693, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./no_await_js_promise_export');\nlet p = GeneratedImportVar_1.getPropertyByName('p');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\nlet pFuncCall = GeneratedImportVar_1.getPropertyByName('pFuncCall');\nlet arrowFunc = GeneratedImportVar_1.getPropertyByName('arrowFunc');\nlet pArrowCall = GeneratedImportVar_1.getPropertyByName('pArrowCall');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./no_await_js_promise_export');\nlet p = GeneratedImportVar_1.getProperty('p');\nlet foo = GeneratedImportVar_1.getProperty('foo');\nlet pFuncCall = GeneratedImportVar_1.getProperty('pFuncCall');\nlet arrowFunc = GeneratedImportVar_1.getProperty('arrowFunc');\nlet pArrowCall = GeneratedImportVar_1.getProperty('pArrowCall');\n", "line": 16, "column": 1, "endLine": 16, diff --git a/ets2panda/linter/test/interop/no_await_js_promise.ets.migrate.ets b/ets2panda/linter/test/interop/no_await_js_promise.ets.migrate.ets index a89d3e58d376f0943d007c87f0d69510a8f00e0a..a1e4ff667cb9045b9cb98514836430c9ec8c07d9 100644 --- a/ets2panda/linter/test/interop/no_await_js_promise.ets.migrate.ets +++ b/ets2panda/linter/test/interop/no_await_js_promise.ets.migrate.ets @@ -14,11 +14,11 @@ */ let GeneratedImportVar_1 = ESValue.load('./no_await_js_promise_export'); -let p = GeneratedImportVar_1.getPropertyByName('p'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); -let pFuncCall = GeneratedImportVar_1.getPropertyByName('pFuncCall'); -let arrowFunc = GeneratedImportVar_1.getPropertyByName('arrowFunc'); -let pArrowCall = GeneratedImportVar_1.getPropertyByName('pArrowCall'); +let p = GeneratedImportVar_1.getProperty('p'); +let foo = GeneratedImportVar_1.getProperty('foo'); +let pFuncCall = GeneratedImportVar_1.getProperty('pFuncCall'); +let arrowFunc = GeneratedImportVar_1.getProperty('arrowFunc'); +let pArrowCall = GeneratedImportVar_1.getProperty('pArrowCall'); async function awaitPromise() { diff --git a/ets2panda/linter/test/interop/no_await_js_promise.ets.migrate.json b/ets2panda/linter/test/interop/no_await_js_promise.ets.migrate.json index 5d4c781348cc18bbed693d732d73a9621736bf9e..4aebfd2473d2a4e49ba14ac9827cf14d869e4987 100644 --- a/ets2panda/linter/test/interop/no_await_js_promise.ets.migrate.json +++ b/ets2panda/linter/test/interop/no_await_js_promise.ets.migrate.json @@ -28,7 +28,7 @@ "line": 17, "column": 5, "endLine": 17, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 18, "column": 5, "endLine": 18, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -48,7 +48,7 @@ "line": 19, "column": 5, "endLine": 19, - "endColumn": 68, + "endColumn": 62, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -58,7 +58,7 @@ "line": 20, "column": 5, "endLine": 20, - "endColumn": 68, + "endColumn": 62, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +68,7 @@ "line": 21, "column": 5, "endLine": 21, - "endColumn": 70, + "endColumn": 64, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", diff --git a/ets2panda/linter/test/interop/no_js_instanceof.ets.autofix.json b/ets2panda/linter/test/interop/no_js_instanceof.ets.autofix.json index 8b4189586e0b1125edaff37961ec27611be6773f..bf8dcb076db649446070bb78539ab6a3d9d971c5 100644 --- a/ets2panda/linter/test/interop/no_js_instanceof.ets.autofix.json +++ b/ets2panda/linter/test/interop/no_js_instanceof.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 692, "end": 692, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./no_js_instanceof_file.js');\nlet Foo = GeneratedImportVar_1.getPropertyByName('Foo');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\nlet CreatePerson = GeneratedImportVar_1.getPropertyByName('CreatePerson');\nlet a = GeneratedImportVar_1.getPropertyByName('a');\nlet b = GeneratedImportVar_1.getPropertyByName('b');\nlet MyNamespace = GeneratedImportVar_1.getPropertyByName('MyNamespace');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./no_js_instanceof_file.js');\nlet Foo = GeneratedImportVar_1.getProperty('Foo');\nlet foo = GeneratedImportVar_1.getProperty('foo');\nlet CreatePerson = GeneratedImportVar_1.getProperty('CreatePerson');\nlet a = GeneratedImportVar_1.getProperty('a');\nlet b = GeneratedImportVar_1.getProperty('b');\nlet MyNamespace = GeneratedImportVar_1.getProperty('MyNamespace');\n", "line": 16, "column": 1, "endLine": 16, @@ -316,7 +316,7 @@ { "start": 1296, "end": 1311, - "replacementText": "MyNamespace.getPropertyByName(\"Dog\")", + "replacementText": "MyNamespace.getProperty(\"Dog\")", "line": 72, "column": 36, "endLine": 72, @@ -358,7 +358,7 @@ { "start": 1344, "end": 1359, - "replacementText": "MyNamespace.getPropertyByName(\"Dog\")", + "replacementText": "MyNamespace.getProperty(\"Dog\")", "line": 74, "column": 22, "endLine": 74, @@ -377,7 +377,7 @@ "problem": "InteropJsObjectConditionJudgment", "autofix": [ { - "replacementText": "MyNamespace.getPropertyByName('Dog')", + "replacementText": "MyNamespace.getProperty('Dog')", "start": 1344, "end": 1359, "line": 74, diff --git a/ets2panda/linter/test/interop/no_js_instanceof.ets.migrate.ets b/ets2panda/linter/test/interop/no_js_instanceof.ets.migrate.ets index b71a99dcc06a6df1d775598ef974668c47b22515..89f487d233c9b2f73dc37c03c42c3598840dfa89 100644 --- a/ets2panda/linter/test/interop/no_js_instanceof.ets.migrate.ets +++ b/ets2panda/linter/test/interop/no_js_instanceof.ets.migrate.ets @@ -14,12 +14,12 @@ */ let GeneratedImportVar_1 = ESValue.load('./no_js_instanceof_file.js'); -let Foo = GeneratedImportVar_1.getPropertyByName('Foo'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); -let CreatePerson = GeneratedImportVar_1.getPropertyByName('CreatePerson'); -let a = GeneratedImportVar_1.getPropertyByName('a'); -let b = GeneratedImportVar_1.getPropertyByName('b'); -let MyNamespace = GeneratedImportVar_1.getPropertyByName('MyNamespace'); +let Foo = GeneratedImportVar_1.getProperty('Foo'); +let foo = GeneratedImportVar_1.getProperty('foo'); +let CreatePerson = GeneratedImportVar_1.getProperty('CreatePerson'); +let a = GeneratedImportVar_1.getProperty('a'); +let b = GeneratedImportVar_1.getProperty('b'); +let MyNamespace = GeneratedImportVar_1.getProperty('MyNamespace'); class Foo1 {} @@ -76,7 +76,7 @@ if(b().isInstanceOf(Array)) { } -const myDog: MyNamespace.Dog = new MyNamespace.getPropertyByName("Dog")('Buddy'); +const myDog: MyNamespace.Dog = new MyNamespace.getProperty("Dog")('Buddy'); if (myDog.isInstanceOf(MyNamespace.Dog)) { console.log("This is a Dog!"); diff --git a/ets2panda/linter/test/interop/no_js_instanceof.ets.migrate.json b/ets2panda/linter/test/interop/no_js_instanceof.ets.migrate.json index 63aabda70294bfb97625479c42d6e0484f4acc62..4a61cb89de2f281130496aa8ca549b14447de3f7 100644 --- a/ets2panda/linter/test/interop/no_js_instanceof.ets.migrate.json +++ b/ets2panda/linter/test/interop/no_js_instanceof.ets.migrate.json @@ -28,7 +28,7 @@ "line": 17, "column": 5, "endLine": 17, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 18, "column": 5, "endLine": 18, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -48,7 +48,7 @@ "line": 19, "column": 5, "endLine": 19, - "endColumn": 74, + "endColumn": 68, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -58,7 +58,7 @@ "line": 20, "column": 5, "endLine": 20, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -68,7 +68,7 @@ "line": 21, "column": 5, "endLine": 21, - "endColumn": 52, + "endColumn": 46, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -78,7 +78,7 @@ "line": 22, "column": 5, "endLine": 22, - "endColumn": 72, + "endColumn": 66, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -108,7 +108,7 @@ "line": 79, "column": 36, "endLine": 79, - "endColumn": 65, + "endColumn": 59, "problem": "DynamicCtorCall", "suggest": "", "rule": "\"new\" expression with dynamic constructor type is not supported (arkts-no-dynamic-ctor-call)", diff --git a/ets2panda/linter/test/interop/object_built_in.ets b/ets2panda/linter/test/interop/object_built_in.ets index 3170f3f087929ed9725c116545ec115437d88e83..3b9dceea070850349fa8069ac8cbd14471aa78c6 100644 --- a/ets2panda/linter/test/interop/object_built_in.ets +++ b/ets2panda/linter/test/interop/object_built_in.ets @@ -25,3 +25,11 @@ export function foo(prx: Object) { } foo(new X()); // Illegal + +export function shouldPass() { + const bar = JSON.parse('{}'); + console.log(Object.keys(bar).length); +} + +shouldPass() + diff --git a/ets2panda/linter/test/interop/object_built_in.ets.arkts2.json b/ets2panda/linter/test/interop/object_built_in.ets.arkts2.json index d9cadcd5d49e623871668199b128d069f02e845d..41a2db7981e1f81b39c3f920c0609d5da79b198b 100644 --- a/ets2panda/linter/test/interop/object_built_in.ets.arkts2.json +++ b/ets2panda/linter/test/interop/object_built_in.ets.arkts2.json @@ -55,14 +55,14 @@ "severity": "ERROR" }, { - "line": 27, - "column": 1, - "endLine": 27, - "endColumn": 14, - "problem": "InteropCallObjectParam", + "line": 30, + "column": 11, + "endLine": 30, + "endColumn": 33, + "problem": "AnyType", "suggest": "", - "rule": "Class type is not compatible with \"Object\" parameter in interop call (arkts-interop-d2s-static-object-on-dynamic-instance)", + "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", "severity": "ERROR" } ] -} \ No newline at end of file +} diff --git a/ets2panda/linter/test/interop/object_built_in.ets.json b/ets2panda/linter/test/interop/object_built_in.ets.json index d2adea10e51a874fd0c51386e85d2b4552fbecd7..1918dfda6716ab4f49dc866eb6b247a24a5ee221 100644 --- a/ets2panda/linter/test/interop/object_built_in.ets.json +++ b/ets2panda/linter/test/interop/object_built_in.ets.json @@ -45,14 +45,14 @@ "severity": "ERROR" }, { - "line": 27, - "column": 1, - "endLine": 27, - "endColumn": 14, - "problem": "InteropCallObjectParam", + "line": 30, + "column": 11, + "endLine": 30, + "endColumn": 33, + "problem": "AnyType", "suggest": "", - "rule": "Class type is not compatible with \"Object\" parameter in interop call (arkts-interop-d2s-static-object-on-dynamic-instance)", + "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", "severity": "ERROR" } ] -} \ No newline at end of file +} diff --git a/ets2panda/linter/test/interop/reflect_built_in.ets.arkts2.json b/ets2panda/linter/test/interop/reflect_built_in.ets.arkts2.json index 1dd3014588321927823c43ed04ac101322efcd1e..c76a12de83ce4d962372a140309212632aa9a21d 100644 --- a/ets2panda/linter/test/interop/reflect_built_in.ets.arkts2.json +++ b/ets2panda/linter/test/interop/reflect_built_in.ets.arkts2.json @@ -64,26 +64,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 27, - "column": 1, - "endLine": 27, - "endColumn": 14, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, - { - "line": 29, - "column": 1, - "endLine": 29, - "endColumn": 14, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 29, "column": 1, @@ -164,16 +144,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 41, - "column": 1, - "endLine": 41, - "endColumn": 33, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 42, "column": 1, @@ -214,16 +184,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 46, - "column": 1, - "endLine": 46, - "endColumn": 22, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 47, "column": 1, @@ -264,16 +224,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 51, - "column": 1, - "endLine": 51, - "endColumn": 31, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 52, "column": 1, @@ -314,16 +264,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 56, - "column": 1, - "endLine": 56, - "endColumn": 27, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 57, "column": 1, @@ -355,4 +295,4 @@ "severity": "ERROR" } ] -} \ No newline at end of file +} diff --git a/ets2panda/linter/test/interop/reflect_built_in.ets.json b/ets2panda/linter/test/interop/reflect_built_in.ets.json index eb39c3a62eade80d254e29b2184277b8f560519d..ef3d440bfb53a748252176bfbf1bb6926a8b1fc4 100644 --- a/ets2panda/linter/test/interop/reflect_built_in.ets.json +++ b/ets2panda/linter/test/interop/reflect_built_in.ets.json @@ -54,26 +54,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 27, - "column": 1, - "endLine": 27, - "endColumn": 14, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, - { - "line": 29, - "column": 1, - "endLine": 29, - "endColumn": 14, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 31, "column": 1, @@ -134,16 +114,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 41, - "column": 1, - "endLine": 41, - "endColumn": 33, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 42, "column": 1, @@ -174,16 +144,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 46, - "column": 1, - "endLine": 46, - "endColumn": 22, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 47, "column": 1, @@ -214,16 +174,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 51, - "column": 1, - "endLine": 51, - "endColumn": 31, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 52, "column": 1, @@ -254,16 +204,6 @@ "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", "severity": "ERROR" }, - { - "line": 56, - "column": 1, - "endLine": 56, - "endColumn": 27, - "problem": "InteropCallReflect", - "suggest": "", - "rule": "Reflect API usage is not allowed in interop calls when an \"Object\" parameter receives a class instance (arkts-interop-d2s-static-reflect-on-dynamic-instance)", - "severity": "ERROR" - }, { "line": 57, "column": 1, @@ -295,4 +235,4 @@ "severity": "ERROR" } ] -} \ No newline at end of file +} diff --git a/ets2panda/linter/test/interop/unary_operation_js_obj.ets.autofix.json b/ets2panda/linter/test/interop/unary_operation_js_obj.ets.autofix.json index 07cb92eb1a8bc087eb8a4dbbc0cf08eda485a176..b3d6f3508f100fd5f64015b32f9a3110d4964fee 100644 --- a/ets2panda/linter/test/interop/unary_operation_js_obj.ets.autofix.json +++ b/ets2panda/linter/test/interop/unary_operation_js_obj.ets.autofix.json @@ -33,7 +33,7 @@ { "start": 654, "end": 654, - "replacementText": "let GeneratedImportVar_1 = ESValue.load('./unary_operation_js_obj_js.js');\nlet foo = GeneratedImportVar_1.getPropertyByName('foo');\n", + "replacementText": "let GeneratedImportVar_1 = ESValue.load('./unary_operation_js_obj_js.js');\nlet foo = GeneratedImportVar_1.getProperty('foo');\n", "line": 15, "column": 1, "endLine": 15, @@ -54,7 +54,7 @@ { "start": 657, "end": 664, - "replacementText": "foo.getPropertyByName(\"num\").toNumber()", + "replacementText": "foo.getProperty(\"num\").toNumber()", "line": 17, "column": 1, "endLine": 17, @@ -75,7 +75,7 @@ { "start": 657, "end": 664, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 17, "column": 2, "endLine": 17, @@ -96,7 +96,7 @@ { "start": 667, "end": 674, - "replacementText": "foo.getPropertyByName(\"num\").toNumber()", + "replacementText": "foo.getProperty(\"num\").toNumber()", "line": 18, "column": 1, "endLine": 18, @@ -117,7 +117,7 @@ { "start": 667, "end": 674, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 18, "column": 2, "endLine": 18, @@ -138,7 +138,7 @@ { "start": 677, "end": 684, - "replacementText": "foo.getPropertyByName(\"num\").toNumber()", + "replacementText": "foo.getProperty(\"num\").toNumber()", "line": 19, "column": 1, "endLine": 19, @@ -159,7 +159,7 @@ { "start": 677, "end": 684, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 19, "column": 2, "endLine": 19, @@ -180,7 +180,7 @@ { "start": 687, "end": 694, - "replacementText": "foo.getPropertyByName(\"num\").toNumber()", + "replacementText": "foo.getProperty(\"num\").toNumber()", "line": 20, "column": 1, "endLine": 20, @@ -201,7 +201,7 @@ { "start": 687, "end": 694, - "replacementText": "foo.getPropertyByName(\"num\")", + "replacementText": "foo.getProperty(\"num\")", "line": 20, "column": 2, "endLine": 20, diff --git a/ets2panda/linter/test/interop/unary_operation_js_obj.ets.migrate.ets b/ets2panda/linter/test/interop/unary_operation_js_obj.ets.migrate.ets index 5448d6f5f0aab231985e877f6d12ed9a37b69299..d0a648c942aab4bb54bab28ba519e595b173ab4d 100644 --- a/ets2panda/linter/test/interop/unary_operation_js_obj.ets.migrate.ets +++ b/ets2panda/linter/test/interop/unary_operation_js_obj.ets.migrate.ets @@ -13,10 +13,10 @@ * limitations under the License. */ let GeneratedImportVar_1 = ESValue.load('./unary_operation_js_obj_js.js'); -let foo = GeneratedImportVar_1.getPropertyByName('foo'); +let foo = GeneratedImportVar_1.getProperty('foo'); -+foo.getPropertyByName("num").toNumber(); --foo.getPropertyByName("num").toNumber(); -!foo.getPropertyByName("num").toNumber(); -~foo.getPropertyByName("num").toNumber(); \ No newline at end of file ++foo.getProperty("num").toNumber(); +-foo.getProperty("num").toNumber(); +!foo.getProperty("num").toNumber(); +~foo.getProperty("num").toNumber(); \ No newline at end of file diff --git a/ets2panda/linter/test/interop/unary_operation_js_obj.ets.migrate.json b/ets2panda/linter/test/interop/unary_operation_js_obj.ets.migrate.json index 4d448e180c8d4e4bb1569a75f3db5f5f85ffb1c2..8fbd5964c45c2a91433eeca3b4174df58eeda273 100644 --- a/ets2panda/linter/test/interop/unary_operation_js_obj.ets.migrate.json +++ b/ets2panda/linter/test/interop/unary_operation_js_obj.ets.migrate.json @@ -28,7 +28,7 @@ "line": 16, "column": 5, "endLine": 16, - "endColumn": 56, + "endColumn": 50, "problem": "AnyType", "suggest": "", "rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)", @@ -38,7 +38,7 @@ "line": 19, "column": 1, "endLine": 19, - "endColumn": 41, + "endColumn": 35, "problem": "UnaryArithmNotNumber", "suggest": "", "rule": "Unary operators \"+\", \"-\" and \"~\" work only on numbers (arkts-no-polymorphic-unops)", @@ -48,7 +48,7 @@ "line": 20, "column": 1, "endLine": 20, - "endColumn": 41, + "endColumn": 35, "problem": "UnaryArithmNotNumber", "suggest": "", "rule": "Unary operators \"+\", \"-\" and \"~\" work only on numbers (arkts-no-polymorphic-unops)", @@ -58,7 +58,7 @@ "line": 22, "column": 1, "endLine": 22, - "endColumn": 41, + "endColumn": 35, "problem": "UnaryArithmNotNumber", "suggest": "", "rule": "Unary operators \"+\", \"-\" and \"~\" work only on numbers (arkts-no-polymorphic-unops)", diff --git a/ets2panda/linter/test/interop/unique_types.ets.autofix.json b/ets2panda/linter/test/interop/unique_types.ets.autofix.json index a6deb3a499e02abb2ae1613ccd00de7a54fe9c5a..3bd21d1617275ca59e0eb968de338370ab05b886 100644 --- a/ets2panda/linter/test/interop/unique_types.ets.autofix.json +++ b/ets2panda/linter/test/interop/unique_types.ets.autofix.json @@ -24,7 +24,7 @@ { "start": 731, "end": 762, - "replacementText": "objectLiteralType.setPropertyByName('name',ESValue.wrap(\"test\"))", + "replacementText": "objectLiteralType.setProperty('name',ESValue.wrap(\"test\"))", "line": 24, "column": 1, "endLine": 24, @@ -45,7 +45,7 @@ { "start": 764, "end": 794, - "replacementText": "intersectionType.setPropertyByName('name',ESValue.wrap(\"test\"))", + "replacementText": "intersectionType.setProperty('name',ESValue.wrap(\"test\"))", "line": 26, "column": 1, "endLine": 26, diff --git a/ets2panda/linter/test/interop/unique_types.ets.migrate.ets b/ets2panda/linter/test/interop/unique_types.ets.migrate.ets index 884003da2478dc331ef9a4f6dde7bcee9fda2c4c..568c171d5175866d3254d7835d33ca0424a36673 100644 --- a/ets2panda/linter/test/interop/unique_types.ets.migrate.ets +++ b/ets2panda/linter/test/interop/unique_types.ets.migrate.ets @@ -21,9 +21,9 @@ import { enumType } from "./ignore_files/unique_types"; -objectLiteralType.setPropertyByName('name',ESValue.wrap("test")) +objectLiteralType.setProperty('name',ESValue.wrap("test")) -intersectionType.setPropertyByName('name',ESValue.wrap("test")); +intersectionType.setProperty('name',ESValue.wrap("test")); try { tsFunction(); diff --git a/ets2panda/linter/test/main/dynamic_ctor_call.ets.arkts2.json b/ets2panda/linter/test/main/dynamic_ctor_call.ets.arkts2.json index b4ee74500e610e14150f1907769481521dccf99e..0ef26c352d653b6c6e8fd73f0070ea28f6847bbe 100644 --- a/ets2panda/linter/test/main/dynamic_ctor_call.ets.arkts2.json +++ b/ets2panda/linter/test/main/dynamic_ctor_call.ets.arkts2.json @@ -124,16 +124,6 @@ "rule": "Construct signatures are not supported in interfaces (arkts-no-ctor-signatures-iface)", "severity": "ERROR" }, - { - "line": 39, - "column": 14, - "endLine": 39, - "endColumn": 18, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 39, "column": 14, diff --git a/ets2panda/linter/test/main/func_inferred_type_args_2.ets b/ets2panda/linter/test/main/func_inferred_type_args_2.ets index 0d7b3467d126b8e6bea4fc6beeba0dce2da29187..5a79d6f48059be3b840bd34a2de7f06f555218b3 100644 --- a/ets2panda/linter/test/main/func_inferred_type_args_2.ets +++ b/ets2panda/linter/test/main/func_inferred_type_args_2.ets @@ -94,3 +94,7 @@ class A { } } new A(new C()) +let a: Array | undefined = new Array(); +let aa: Array | Set | undefined = new Array(); +let b: Array | Array | undefined = new Array(); +let test: string[] = new Array(); \ No newline at end of file diff --git a/ets2panda/linter/test/main/func_inferred_type_args_2.ets.arkts2.json b/ets2panda/linter/test/main/func_inferred_type_args_2.ets.arkts2.json index bc1cd482a41b7487c1b342d0bf71524cb06befd0..81e3df826f6e04c15525ac0d1e1e403821d2945d 100644 --- a/ets2panda/linter/test/main/func_inferred_type_args_2.ets.arkts2.json +++ b/ets2panda/linter/test/main/func_inferred_type_args_2.ets.arkts2.json @@ -254,16 +254,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 44, - "column": 14, - "endLine": 44, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 44, "column": 10, @@ -274,16 +264,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 48, - "column": 14, - "endLine": 48, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 48, "column": 10, @@ -304,16 +284,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 52, - "column": 14, - "endLine": 52, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 52, "column": 10, @@ -334,16 +304,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 56, - "column": 14, - "endLine": 56, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 56, "column": 10, @@ -354,16 +314,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 61, - "column": 16, - "endLine": 61, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 61, "column": 12, @@ -374,16 +324,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 65, - "column": 16, - "endLine": 65, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 65, "column": 12, @@ -404,16 +344,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 69, - "column": 16, - "endLine": 69, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 69, "column": 12, @@ -434,16 +364,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 73, - "column": 16, - "endLine": 73, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 73, "column": 12, @@ -514,6 +434,46 @@ "rule": "\"new\" expression with dynamic constructor type is not supported (arkts-no-dynamic-ctor-call)", "severity": "ERROR" }, + { + "line": 97, + "column": 36, + "endLine": 97, + "endColumn": 47, + "problem": "GenericCallNoTypeArgs", + "suggest": "", + "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", + "severity": "ERROR" + }, + { + "line": 98, + "column": 51, + "endLine": 98, + "endColumn": 62, + "problem": "GenericCallNoTypeArgs", + "suggest": "", + "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", + "severity": "ERROR" + }, + { + "line": 99, + "column": 52, + "endLine": 99, + "endColumn": 63, + "problem": "GenericCallNoTypeArgs", + "suggest": "", + "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", + "severity": "ERROR" + }, + { + "line": 100, + "column": 22, + "endLine": 100, + "endColumn": 33, + "problem": "GenericCallNoTypeArgs", + "suggest": "", + "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", + "severity": "ERROR" + }, { "line": 84, "column": 2, diff --git a/ets2panda/linter/test/main/func_inferred_type_args_2.ets.autofix.json b/ets2panda/linter/test/main/func_inferred_type_args_2.ets.autofix.json index 01ba1f614fd4f69485ed44ba4730f297ee1ad343..202b0cc81c3e06d808bf74a138fdc5d8972386ac 100644 --- a/ets2panda/linter/test/main/func_inferred_type_args_2.ets.autofix.json +++ b/ets2panda/linter/test/main/func_inferred_type_args_2.ets.autofix.json @@ -375,16 +375,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 44, - "column": 14, - "endLine": 44, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 44, "column": 10, @@ -406,16 +396,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 48, - "column": 14, - "endLine": 48, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 48, "column": 10, @@ -447,16 +427,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 52, - "column": 14, - "endLine": 52, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 52, "column": 10, @@ -477,16 +447,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 56, - "column": 14, - "endLine": 56, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 56, "column": 10, @@ -497,16 +457,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 61, - "column": 16, - "endLine": 61, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 61, "column": 12, @@ -528,16 +478,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 65, - "column": 16, - "endLine": 65, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 65, "column": 12, @@ -569,16 +509,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 69, - "column": 16, - "endLine": 69, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 69, "column": 12, @@ -599,16 +529,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 73, - "column": 16, - "endLine": 73, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 73, "column": 12, @@ -734,6 +654,79 @@ "rule": "\"new\" expression with dynamic constructor type is not supported (arkts-no-dynamic-ctor-call)", "severity": "ERROR" }, + { + "line": 97, + "column": 36, + "endLine": 97, + "endColumn": 47, + "problem": "GenericCallNoTypeArgs", + "autofix": [ + { + "start": 2592, + "end": 2592, + "replacementText": "", + "line": 97, + "column": 36, + "endLine": 97, + "endColumn": 47 + } + ], + "suggest": "", + "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", + "severity": "ERROR" + }, + { + "line": 98, + "column": 51, + "endLine": 98, + "endColumn": 62, + "problem": "GenericCallNoTypeArgs", + "autofix": [ + { + "start": 2655, + "end": 2655, + "replacementText": "", + "line": 98, + "column": 51, + "endLine": 98, + "endColumn": 62 + } + ], + "suggest": "", + "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", + "severity": "ERROR" + }, + { + "line": 99, + "column": 52, + "endLine": 99, + "endColumn": 63, + "problem": "GenericCallNoTypeArgs", + "suggest": "", + "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", + "severity": "ERROR" + }, + { + "line": 100, + "column": 22, + "endLine": 100, + "endColumn": 33, + "problem": "GenericCallNoTypeArgs", + "autofix": [ + { + "start": 2753, + "end": 2753, + "replacementText": "", + "line": 100, + "column": 22, + "endLine": 100, + "endColumn": 33 + } + ], + "suggest": "", + "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", + "severity": "ERROR" + }, { "line": 84, "column": 2, diff --git a/ets2panda/linter/test/main/func_inferred_type_args_2.ets.migrate.ets b/ets2panda/linter/test/main/func_inferred_type_args_2.ets.migrate.ets index 044a417e72bcdb224ab726d01d93b0f363965a07..bdd57c5703a22d7da7870c58acf28c54bd9d4895 100644 --- a/ets2panda/linter/test/main/func_inferred_type_args_2.ets.migrate.ets +++ b/ets2panda/linter/test/main/func_inferred_type_args_2.ets.migrate.ets @@ -101,3 +101,7 @@ class A { } } new A(new C()) +let a: Array | undefined = new Array(); +let aa: Array | Set | undefined = new Array(); +let b: Array | Array | undefined = new Array(); +let test: string[] = new Array(); \ No newline at end of file diff --git a/ets2panda/linter/test/main/func_inferred_type_args_2.ets.migrate.json b/ets2panda/linter/test/main/func_inferred_type_args_2.ets.migrate.json index 90f99e9274ae43994be82c2f364c0d9abec37344..620729cb92bfe0d9006df2b3d38e1ef3fb11aa44 100644 --- a/ets2panda/linter/test/main/func_inferred_type_args_2.ets.migrate.json +++ b/ets2panda/linter/test/main/func_inferred_type_args_2.ets.migrate.json @@ -144,26 +144,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 51, - "column": 14, - "endLine": 51, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, - { - "line": 55, - "column": 14, - "endLine": 55, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 59, "column": 10, @@ -174,16 +154,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 59, - "column": 14, - "endLine": 59, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 59, "column": 10, @@ -204,16 +174,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 63, - "column": 14, - "endLine": 63, - "endColumn": 17, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 63, "column": 10, @@ -224,26 +184,6 @@ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", "severity": "ERROR" }, - { - "line": 68, - "column": 16, - "endLine": 68, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, - { - "line": 72, - "column": 16, - "endLine": 72, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 76, "column": 12, @@ -254,16 +194,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 76, - "column": 16, - "endLine": 76, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 76, "column": 12, @@ -284,16 +214,6 @@ "rule": "Structural typing is not supported (arkts-no-structural-typing)", "severity": "ERROR" }, - { - "line": 80, - "column": 16, - "endLine": 80, - "endColumn": 19, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 80, "column": 12, @@ -313,6 +233,16 @@ "suggest": "", "rule": "\"new\" expression with dynamic constructor type is not supported (arkts-no-dynamic-ctor-call)", "severity": "ERROR" + }, + { + "line": 106, + "column": 52, + "endLine": 106, + "endColumn": 63, + "problem": "GenericCallNoTypeArgs", + "suggest": "", + "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)", + "severity": "ERROR" } ] } \ No newline at end of file diff --git a/ets2panda/linter/test/main/index_access_static_and_class_instance.ets b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets new file mode 100644 index 0000000000000000000000000000000000000000..942125e00d666c37a2b292b1aae9b0d2f6a8710d --- /dev/null +++ b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +class A { + static foo1(){} + foo2(){} +} + +let a = new A(); +(a as object)["foo2"]; //arkts-no-ops-by-index autofix is right + +(A as object)["foo1"]; // arkts-no-classes-as-obj autofix is right diff --git a/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.args.json b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.args.json new file mode 100755 index 0000000000000000000000000000000000000000..6958168fef2a70000342107f7d5f2b5805c14fae --- /dev/null +++ b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.args.json @@ -0,0 +1,21 @@ +{ + "copyright": [ + "Copyright (c) 2025 Huawei Device Co., Ltd.", + "Licensed under the Apache License, Version 2.0 (the 'License');", + "you may not use this file except in compliance with the License.", + "You may obtain a copy of the License at", + "", + "http://www.apache.org/licenses/LICENSE-2.0", + "", + "Unless required by applicable law or agreed to in writing, software", + "distributed under the License is distributed on an 'AS IS' BASIS,", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", + "See the License for the specific language governing permissions and", + "limitations under the License." + ], + "mode": { + "arkts2": "", + "autofix": "--arkts-2", + "migrate": "--arkts-2" + } +} diff --git a/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.arkts2.json b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.arkts2.json new file mode 100644 index 0000000000000000000000000000000000000000..21e2ed90d00cef1fa05cbfc7a3d85621713be4f6 --- /dev/null +++ b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.arkts2.json @@ -0,0 +1,38 @@ +{ + "copyright": [ + "Copyright (c) 2025 Huawei Device Co., Ltd.", + "Licensed under the Apache License, Version 2.0 (the 'License');", + "you may not use this file except in compliance with the License.", + "You may obtain a copy of the License at", + "", + "http://www.apache.org/licenses/LICENSE-2.0", + "", + "Unless required by applicable law or agreed to in writing, software", + "distributed under the License is distributed on an 'AS IS' BASIS,", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", + "See the License for the specific language governing permissions and", + "limitations under the License." + ], + "result": [ + { + "line": 22, + "column": 1, + "endLine": 22, + "endColumn": 22, + "problem": "PropertyAccessByIndex", + "suggest": "", + "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)", + "severity": "ERROR" + }, + { + "line": 24, + "column": 2, + "endLine": 24, + "endColumn": 3, + "problem": "ClassAsObjectError", + "suggest": "", + "rule": "Classes cannot be used as objects (arkts-no-classes-as-obj)", + "severity": "ERROR" + } + ] +} diff --git a/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.autofix.json b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.autofix.json new file mode 100644 index 0000000000000000000000000000000000000000..827a118edf5e71fecb17e1339f81294be6e9b8d2 --- /dev/null +++ b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.autofix.json @@ -0,0 +1,60 @@ +{ + "copyright": [ + "Copyright (c) 2025 Huawei Device Co., Ltd.", + "Licensed under the Apache License, Version 2.0 (the 'License');", + "you may not use this file except in compliance with the License.", + "You may obtain a copy of the License at", + "", + "http://www.apache.org/licenses/LICENSE-2.0", + "", + "Unless required by applicable law or agreed to in writing, software", + "distributed under the License is distributed on an 'AS IS' BASIS,", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", + "See the License for the specific language governing permissions and", + "limitations under the License." + ], + "result": [ + { + "line": 22, + "column": 1, + "endLine": 22, + "endColumn": 22, + "problem": "PropertyAccessByIndex", + "autofix": [ + { + "replacementText": "a.foo2", + "start": 664, + "end": 685, + "line": 22, + "column": 1, + "endLine": 22, + "endColumn": 22 + } + ], + "suggest": "", + "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)", + "severity": "ERROR" + }, + { + "line": 24, + "column": 2, + "endLine": 24, + "endColumn": 3, + "problem": "ClassAsObjectError", + "autofix": [ + { + "replacementText": "A.foo1", + "start": 729, + "end": 750, + "line": 24, + "column": 2, + "endLine": 24, + "endColumn": 3 + } + ], + "suggest": "", + "rule": "Classes cannot be used as objects (arkts-no-classes-as-obj)", + "severity": "ERROR" + } + ] +} diff --git a/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.json b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.json new file mode 100644 index 0000000000000000000000000000000000000000..9493d7285d0e82274585ee08fc756e723f4e5ba2 --- /dev/null +++ b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.json @@ -0,0 +1,28 @@ +{ + "copyright": [ + "Copyright (c) 2025 Huawei Device Co., Ltd.", + "Licensed under the Apache License, Version 2.0 (the 'License');", + "you may not use this file except in compliance with the License.", + "You may obtain a copy of the License at", + "", + "http://www.apache.org/licenses/LICENSE-2.0", + "", + "Unless required by applicable law or agreed to in writing, software", + "distributed under the License is distributed on an 'AS IS' BASIS,", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", + "See the License for the specific language governing permissions and", + "limitations under the License." + ], + "result": [ + { + "line": 24, + "column": 2, + "endLine": 24, + "endColumn": 3, + "problem": "ClassAsObject", + "suggest": "", + "rule": "Classes cannot be used as objects (arkts-no-classes-as-obj)", + "severity": "WARNING" + } + ] +} diff --git a/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.migrate.ets b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.migrate.ets new file mode 100644 index 0000000000000000000000000000000000000000..eb806649469d5af1b9349ac34044152f2637cf6e --- /dev/null +++ b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.migrate.ets @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +class A { + static foo1(){} + foo2(){} +} + +let a = new A(); +a.foo2; //arkts-no-ops-by-index autofix is right + +A.foo1; // arkts-no-classes-as-obj autofix is right diff --git a/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.migrate.json b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.migrate.json new file mode 100644 index 0000000000000000000000000000000000000000..dd03fcf5442488620bcd4b3447f0fcdd89e1905b --- /dev/null +++ b/ets2panda/linter/test/main/index_access_static_and_class_instance.ets.migrate.json @@ -0,0 +1,17 @@ +{ + "copyright": [ + "Copyright (c) 2025 Huawei Device Co., Ltd.", + "Licensed under the Apache License, Version 2.0 (the 'License');", + "you may not use this file except in compliance with the License.", + "You may obtain a copy of the License at", + "", + "http://www.apache.org/licenses/LICENSE-2.0", + "", + "Unless required by applicable law or agreed to in writing, software", + "distributed under the License is distributed on an 'AS IS' BASIS,", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", + "See the License for the specific language governing permissions and", + "limitations under the License." + ], + "result": [] +} diff --git a/ets2panda/linter/test/main/no_sparse_array.ets b/ets2panda/linter/test/main/no_sparse_array.ets index a543274d466b525ae165219b1de0854029e9d509..eb1ba59ca11454ea17d5829317cdb6754aa39e77 100644 --- a/ets2panda/linter/test/main/no_sparse_array.ets +++ b/ets2panda/linter/test/main/no_sparse_array.ets @@ -15,4 +15,28 @@ let a = [1, , , 3]; let b = []; -let c:number[] = []; \ No newline at end of file +let c: number[] = []; + +let d = Promise.race([]); +let e = Promise.all([]); +let f = Promise.allSettled([]); +let g = Promise.any([]); +let h = Promise.resolve([]); + +let d1 = Promise.race([]); +let e1 = Promise.all([]); +let f1 = Promise.allSettled([]); +let g1 = Promise.any([]); +let h1 = Promise.resolve([]); + +let i = Promise.race([1.0]); +let j = Promise.all([2.0]); +let k = Promise.allSettled([3.0]); +let l = Promise.any([4.0]); +let m = Promise.resolve([5.0]); + +let i1 = Promise.race([1]); +let j1 = Promise.all([2]); +let k1 = Promise.allSettled([3]); +let l1 = Promise.any([4]); +let m1 = Promise.resolve([5]); \ No newline at end of file diff --git a/ets2panda/linter/test/main/no_sparse_array.ets.arkts2.json b/ets2panda/linter/test/main/no_sparse_array.ets.arkts2.json index edf83e80e8b144d97924fa06509c4daebdb5aa35..103a56a139b1fc3b60a0049ed412df433e444a0a 100644 --- a/ets2panda/linter/test/main/no_sparse_array.ets.arkts2.json +++ b/ets2panda/linter/test/main/no_sparse_array.ets.arkts2.json @@ -63,6 +63,156 @@ "suggest": "", "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", "severity": "ERROR" + }, + { + "line": 20, + "column": 30, + "endLine": 20, + "endColumn": 32, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 21, + "column": 29, + "endLine": 21, + "endColumn": 31, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 22, + "column": 36, + "endLine": 22, + "endColumn": 38, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 23, + "column": 29, + "endLine": 23, + "endColumn": 31, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 24, + "column": 35, + "endLine": 24, + "endColumn": 37, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 26, + "column": 23, + "endLine": 26, + "endColumn": 25, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 27, + "column": 22, + "endLine": 27, + "endColumn": 24, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 28, + "column": 29, + "endLine": 28, + "endColumn": 31, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 29, + "column": 22, + "endLine": 29, + "endColumn": 24, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 30, + "column": 26, + "endLine": 30, + "endColumn": 28, + "problem": "NosparseArray", + "suggest": "", + "rule": "Sparse array is not supported in ArkTS1.2 (arkts-no-sparse-array)", + "severity": "ERROR" + }, + { + "line": 38, + "column": 24, + "endLine": 38, + "endColumn": 25, + "problem": "NumericSemantics", + "suggest": "", + "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", + "severity": "ERROR" + }, + { + "line": 39, + "column": 23, + "endLine": 39, + "endColumn": 24, + "problem": "NumericSemantics", + "suggest": "", + "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", + "severity": "ERROR" + }, + { + "line": 40, + "column": 30, + "endLine": 40, + "endColumn": 31, + "problem": "NumericSemantics", + "suggest": "", + "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", + "severity": "ERROR" + }, + { + "line": 41, + "column": 23, + "endLine": 41, + "endColumn": 24, + "problem": "NumericSemantics", + "suggest": "", + "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", + "severity": "ERROR" + }, + { + "line": 42, + "column": 27, + "endLine": 42, + "endColumn": 28, + "problem": "NumericSemantics", + "suggest": "", + "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", + "severity": "ERROR" } ] } \ No newline at end of file diff --git a/ets2panda/linter/test/main/object_literals_properties.ets b/ets2panda/linter/test/main/object_literals_properties.ets index 84c1d5db860e0f4e0d5f200b21e71e7b7b8741d0..1944ed2ef90d437ad280ef9b5227a5a026087bb3 100644 --- a/ets2panda/linter/test/main/object_literals_properties.ets +++ b/ets2panda/linter/test/main/object_literals_properties.ets @@ -264,22 +264,34 @@ namespace X { console.log("C - 1"); } } - + export interface I { m(a: number, b: string): void; } } - + function test() { let c: X.C = { m() { console.log("C - 2"); } } - + let i: X.I = { m(): void { console.log("I"); } } -} \ No newline at end of file +} + +class FooBarBaz { + foo?: Map + bar?: string +} + +function baz(fooBar: Map) { + baz2({fooBar}); +} + +function baz2(fooBarBaz: FooBarBaz) { +} diff --git a/ets2panda/linter/test/main/object_literals_properties.ets.args.json b/ets2panda/linter/test/main/object_literals_properties.ets.args.json index f9fc1047e86a36642e6e262c41779a581f640a7f..0b296788ca915485ba49fbc6dc37c45e1c5a1cc8 100644 --- a/ets2panda/linter/test/main/object_literals_properties.ets.args.json +++ b/ets2panda/linter/test/main/object_literals_properties.ets.args.json @@ -1,21 +1,21 @@ { - "copyright": [ - "Copyright (c) 2023-2025 Huawei Device Co., Ltd.", - "Licensed under the Apache License, Version 2.0 (the 'License');", - "you may not use this file except in compliance with the License.", - "You may obtain a copy of the License at", - "", - "http://www.apache.org/licenses/LICENSE-2.0", - "", - "Unless required by applicable law or agreed to in writing, software", - "distributed under the License is distributed on an 'AS IS' BASIS,", - "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", - "See the License for the specific language governing permissions and", - "limitations under the License." - ], - "mode": { - "arkts2": "", - "autofix": "--arkts-2", - "migrate": "--arkts-2" - } + "copyright": [ + "Copyright (c) 2023-2025 Huawei Device Co., Ltd.", + "Licensed under the Apache License, Version 2.0 (the 'License');", + "you may not use this file except in compliance with the License.", + "You may obtain a copy of the License at", + "", + "http://www.apache.org/licenses/LICENSE-2.0", + "", + "Unless required by applicable law or agreed to in writing, software", + "distributed under the License is distributed on an 'AS IS' BASIS,", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", + "See the License for the specific language governing permissions and", + "limitations under the License." + ], + "mode": { + "arkts2": "", + "autofix": "--arkts-2", + "migrate": "--arkts-2" + } } diff --git a/ets2panda/linter/test/main/object_literals_properties.ets.arkts2.json b/ets2panda/linter/test/main/object_literals_properties.ets.arkts2.json index 4f42a0f593f239b67d468925e2630974976a6fc9..b72ff900ba7ccd4a3199f642e70b74ee16525763 100644 --- a/ets2panda/linter/test/main/object_literals_properties.ets.arkts2.json +++ b/ets2panda/linter/test/main/object_literals_properties.ets.arkts2.json @@ -1,6 +1,6 @@ { "copyright": [ - "Copyright (c) 2023-2024 Huawei Device Co., Ltd.", + "Copyright (c) 2023-2025 Huawei Device Co., Ltd.", "Licensed under the Apache License, Version 2.0 (the 'License');", "you may not use this file except in compliance with the License.", "You may obtain a copy of the License at", @@ -1345,4 +1345,4 @@ "severity": "ERROR" } ] -} \ No newline at end of file +} diff --git a/ets2panda/linter/test/main/object_literals_properties.ets.autofix.json b/ets2panda/linter/test/main/object_literals_properties.ets.autofix.json index 04eed5c40725e7ae3e575caa83ea8b14ab9a98fc..ccf6076bdc6c00243b5abe01469d556165d4bf23 100644 --- a/ets2panda/linter/test/main/object_literals_properties.ets.autofix.json +++ b/ets2panda/linter/test/main/object_literals_properties.ets.autofix.json @@ -1,6 +1,6 @@ { "copyright": [ - "Copyright (c) 2025 Huawei Device Co., Ltd.", + "Copyright (c) 2023-2025 Huawei Device Co., Ltd.", "Licensed under the Apache License, Version 2.0 (the 'License');", "you may not use this file except in compliance with the License.", "You may obtain a copy of the License at", @@ -2326,8 +2326,8 @@ "problem": "ObjectLiteralProperty", "autofix": [ { - "start": 4958, - "end": 4958, + "start": 4956, + "end": 4956, "replacementText": "class GeneratedObjectLiteralClass_11 extends X.C {\n m() {\n console.log(\"C - 2\");\n }\n}\n\n", "line": 275, "column": 5, @@ -2335,8 +2335,8 @@ "endColumn": 6 }, { - "start": 4991, - "end": 5040, + "start": 4989, + "end": 5038, "replacementText": "new GeneratedObjectLiteralClass_11()", "line": 275, "column": 5, @@ -2366,8 +2366,8 @@ "problem": "ObjectLiteralProperty", "autofix": [ { - "start": 4958, - "end": 4958, + "start": 4956, + "end": 4956, "replacementText": "class GeneratedObjectLiteralClass_12 implements X.I {\n m(): void {\n console.log(\"I\");\n }\n}\n\n", "line": 281, "column": 5, @@ -2375,8 +2375,8 @@ "endColumn": 6 }, { - "start": 5058, - "end": 5109, + "start": 5055, + "end": 5106, "replacementText": "new GeneratedObjectLiteralClass_12()", "line": 281, "column": 5, @@ -2399,4 +2399,4 @@ "severity": "ERROR" } ] -} \ No newline at end of file +} diff --git a/ets2panda/linter/test/main/object_literals_properties.ets.migrate.ets b/ets2panda/linter/test/main/object_literals_properties.ets.migrate.ets index c2c24296503bfb2c9c06af0882c3e9dd3ea8e123..ef4628d62ad4102230155207f7d93a7427f70fdf 100644 --- a/ets2panda/linter/test/main/object_literals_properties.ets.migrate.ets +++ b/ets2panda/linter/test/main/object_literals_properties.ets.migrate.ets @@ -326,12 +326,12 @@ namespace X { console.log("C - 1"); } } - + export interface I { m(a: number, b: string): void; } } - + class GeneratedObjectLiteralClass_11 extends X.C { m() { console.log("C - 2"); @@ -346,6 +346,18 @@ class GeneratedObjectLiteralClass_12 implements X.I { function test() { let c: X.C = new GeneratedObjectLiteralClass_11() - + let i: X.I = new GeneratedObjectLiteralClass_12() -} \ No newline at end of file +} + +class FooBarBaz { + foo?: Map + bar?: string +} + +function baz(fooBar: Map) { + baz2({fooBar}); +} + +function baz2(fooBarBaz: FooBarBaz) { +} diff --git a/ets2panda/linter/test/main/object_literals_properties.ets.migrate.json b/ets2panda/linter/test/main/object_literals_properties.ets.migrate.json index b652f8984b042e4ff3b80b0521adea79db14aef4..cb4957616222487070cf53339fedcabe2157fecb 100644 --- a/ets2panda/linter/test/main/object_literals_properties.ets.migrate.json +++ b/ets2panda/linter/test/main/object_literals_properties.ets.migrate.json @@ -1,6 +1,6 @@ { "copyright": [ - "Copyright (c) 2025 Huawei Device Co., Ltd.", + "Copyright (c) 2023-2025 Huawei Device Co., Ltd.", "Licensed under the Apache License, Version 2.0 (the 'License');", "you may not use this file except in compliance with the License.", "You may obtain a copy of the License at", @@ -335,4 +335,4 @@ "severity": "ERROR" } ] -} \ No newline at end of file +} diff --git a/ets2panda/linter/test/main/structural_identity.ets.arkts2.json b/ets2panda/linter/test/main/structural_identity.ets.arkts2.json index 89cd070221de4abd16abf56e37ba1cec76a7c1be..d621318a9c870f74a3c2588d51b5d9c60233f8e3 100644 --- a/ets2panda/linter/test/main/structural_identity.ets.arkts2.json +++ b/ets2panda/linter/test/main/structural_identity.ets.arkts2.json @@ -1613,16 +1613,6 @@ "suggest": "", "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", "severity": "ERROR" - }, - { - "line": 699, - "column": 14, - "endLine": 699, - "endColumn": 21, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" } ] } \ No newline at end of file diff --git a/ets2panda/linter/test/main/ts_overload.ets.arkts2.json b/ets2panda/linter/test/main/ts_overload.ets.arkts2.json index 625ed5b8331918d9b2851ec2693750f323c1c975..cf5dc0b7d075724669746d259f56779074c10c3d 100644 --- a/ets2panda/linter/test/main/ts_overload.ets.arkts2.json +++ b/ets2panda/linter/test/main/ts_overload.ets.arkts2.json @@ -44,26 +44,6 @@ "rule": "Class TS overloading is not supported(arkts-no-ts-overload)", "severity": "ERROR" }, - { - "line": 20, - "column": 16, - "endLine": 20, - "endColumn": 20, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, - { - "line": 22, - "column": 16, - "endLine": 22, - "endColumn": 20, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 25, "column": 21, diff --git a/ets2panda/linter/test/rules/rule37.ets.migrate.json b/ets2panda/linter/test/rules/rule37.ets.migrate.json index 0a1c7ec09788dc01f74297d811e3c342a1e47d88..ca88f857e960b437dcf767c0ac40be998c8f1236 100644 --- a/ets2panda/linter/test/rules/rule37.ets.migrate.json +++ b/ets2panda/linter/test/rules/rule37.ets.migrate.json @@ -13,16 +13,5 @@ "See the License for the specific language governing permissions and", "limitations under the License." ], - "result": [ - { - "line": 59, - "column": 21, - "endLine": 59, - "endColumn": 27, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - } - ] + "result": [] } \ No newline at end of file diff --git a/ets2panda/linter/test/sdkwhite/return_new_interface.ets.arkts2.json b/ets2panda/linter/test/sdkwhite/return_new_interface.ets.arkts2.json index 7b974d3450d22c88c7a7dedab6df6e5722470b8d..9245dba0a11bbaf806692701835f36a58b3f051b 100644 --- a/ets2panda/linter/test/sdkwhite/return_new_interface.ets.arkts2.json +++ b/ets2panda/linter/test/sdkwhite/return_new_interface.ets.arkts2.json @@ -44,16 +44,6 @@ "rule": "Function return type inference is limited (arkts-no-implicit-return-types)", "severity": "ERROR" }, - { - "line": 26, - "column": 14, - "endLine": 26, - "endColumn": 15, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 26, "column": 14, @@ -74,16 +64,6 @@ "rule": "Function return type inference is limited (arkts-no-implicit-return-types)", "severity": "ERROR" }, - { - "line": 30, - "column": 14, - "endLine": 30, - "endColumn": 15, - "problem": "ConstructorIfaceFromSdk", - "suggest": "", - "rule": "Construct signatures are not supported in interfaces.(sdk-ctor-signatures-iface)", - "severity": "ERROR" - }, { "line": 30, "column": 14,