diff --git a/ets2panda/linter/src/lib/autofixes/Autofixer.ts b/ets2panda/linter/src/lib/autofixes/Autofixer.ts
index bfeb543cd969894bb80f546fe2c1b46b411d7645..4ae5c879821774aeb3227d627adc77c4a51a738c 100644
--- a/ets2panda/linter/src/lib/autofixes/Autofixer.ts
+++ b/ets2panda/linter/src/lib/autofixes/Autofixer.ts
@@ -975,7 +975,43 @@ export class Autofixer {
return this.renameSymbolAsIdentifier(symbol, enumMember);
}
+ renameAsObjectElementAccessExpression(node: ts.ElementAccessExpression): Autofix[] | undefined {
+ const parenExpr = ts.isParenthesizedExpression(node.expression) ? node.expression : undefined;
+ const asExpr = parenExpr && ts.isAsExpression(parenExpr.expression) ? parenExpr.expression : undefined;
+ if (!asExpr) {
+ return undefined;
+ }
+
+ const argument = node.argumentExpression;
+ const propertyName = ts.isStringLiteral(argument) ? argument.text : undefined;
+ if (!propertyName) {
+ return undefined;
+ }
+
+ const realObj = asExpr.expression;
+ const type = this.typeChecker.getTypeAtLocation(realObj);
+ const property = this.typeChecker.getPropertyOfType(type, propertyName);
+ if (!property) {
+ return undefined;
+ }
+
+ return [
+ {
+ replacementText: realObj.getText() + '.' + propertyName,
+ start: node.getStart(),
+ end: node.getEnd()
+ }
+ ];
+ }
+
fixPropertyAccessByIndex(node: ts.ElementAccessExpression): Autofix[] | undefined {
+ if (ts.isParenthesizedExpression(node.expression) && ts.isAsExpression(node.expression.expression)) {
+ const assertedType = this.typeChecker.getTypeAtLocation(node.expression.expression.type);
+ if (this.typeChecker.typeToString(assertedType) === 'object') {
+ return this.renameAsObjectElementAccessExpression(node);
+ }
+ }
+
const symbol = this.typeChecker.getSymbolAtLocation(node.argumentExpression);
if (symbol === undefined) {
return undefined;
diff --git a/ets2panda/linter/test/main/property_access_by_index.ets b/ets2panda/linter/test/main/property_access_by_index.ets
index a19d0154802a6a02c685d077909c66a95a19c687..6424bdfec86f3cf4c1a962d3c841a9f8de416604 100644
--- a/ets2panda/linter/test/main/property_access_by_index.ets
+++ b/ets2panda/linter/test/main/property_access_by_index.ets
@@ -182,3 +182,15 @@ class MyClass extends collections.BitVector {
}
}
}
+
+class AA {
+ i: number = 1.0;
+ func(b: number) {}
+}
+let a: object = new AA();
+let b: AA = new AA();
+b[i] = 1.0;
+a["i"] = 2.0;
+(b as object)["i"] = 2.0;
+(b as object)["func"](1.0);
+(b as object)["func1"](1.0);
diff --git a/ets2panda/linter/test/main/property_access_by_index.ets.args.json b/ets2panda/linter/test/main/property_access_by_index.ets.args.json
index 7341e330faa243cfdd4795226601488b62c2f729..25a9f93078835dbe3acbe3159154fe49f5a70b35 100644
--- a/ets2panda/linter/test/main/property_access_by_index.ets.args.json
+++ b/ets2panda/linter/test/main/property_access_by_index.ets.args.json
@@ -14,8 +14,8 @@
"limitations under the License."
],
"mode": {
- "autofix": "",
+ "autofix": "--arkts-2",
"arkts2": "",
- "migrate": ""
+ "migrate": "--arkts-2"
}
}
diff --git a/ets2panda/linter/test/main/property_access_by_index.ets.arkts2.json b/ets2panda/linter/test/main/property_access_by_index.ets.arkts2.json
index 2a1abb34901f25ae0d08bf050bffe8a5ad58b166..f04269d5b686b90edb6030ec0056e6266c8d7927 100644
--- a/ets2panda/linter/test/main/property_access_by_index.ets.arkts2.json
+++ b/ets2panda/linter/test/main/property_access_by_index.ets.arkts2.json
@@ -953,6 +953,56 @@
"suggest": "",
"rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
"severity": "ERROR"
+ },
+ {
+ "line": 192,
+ "column": 1,
+ "endLine": 192,
+ "endColumn": 5,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 193,
+ "column": 1,
+ "endLine": 193,
+ "endColumn": 7,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 194,
+ "column": 1,
+ "endLine": 194,
+ "endColumn": 19,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 195,
+ "column": 1,
+ "endLine": 195,
+ "endColumn": 22,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 196,
+ "column": 1,
+ "endLine": 196,
+ "endColumn": 23,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
}
]
}
\ No newline at end of file
diff --git a/ets2panda/linter/test/main/property_access_by_index.ets.autofix.json b/ets2panda/linter/test/main/property_access_by_index.ets.autofix.json
index f1ca92fec988d00ac08f6046bf68933a27b0ca0a..5c1a5ed91bdc1bccc97a2ad5b14416a8077f1bb4 100644
--- a/ets2panda/linter/test/main/property_access_by_index.ets.autofix.json
+++ b/ets2panda/linter/test/main/property_access_by_index.ets.autofix.json
@@ -14,6 +14,27 @@
"limitations under the License."
],
"result": [
+ {
+ "line": 16,
+ "column": 10,
+ "endLine": 16,
+ "endColumn": 21,
+ "problem": "NoNeedStdLibSendableContainer",
+ "autofix": [
+ {
+ "start": 662,
+ "end": 713,
+ "replacementText": "",
+ "line": 16,
+ "column": 10,
+ "endLine": 16,
+ "endColumn": 21
+ }
+ ],
+ "suggest": "",
+ "rule": "Sendable containers are not supported (arkts-no-need-stdlib-sendable-containers)",
+ "severity": "ERROR"
+ },
{
"line": 22,
"column": 3,
@@ -34,6 +55,256 @@
"rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
"severity": "ERROR"
},
+ {
+ "line": 33,
+ "column": 5,
+ "endLine": 33,
+ "endColumn": 23,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1158,
+ "end": 1176,
+ "replacementText": "ar1: number[] = [1, 2, 3, 4]",
+ "line": 33,
+ "column": 5,
+ "endLine": 33,
+ "endColumn": 23
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 33,
+ "column": 12,
+ "endLine": 33,
+ "endColumn": 13,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1165,
+ "end": 1166,
+ "replacementText": "1.0",
+ "line": 33,
+ "column": 12,
+ "endLine": 33,
+ "endColumn": 13
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 33,
+ "column": 15,
+ "endLine": 33,
+ "endColumn": 16,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1168,
+ "end": 1169,
+ "replacementText": "2.0",
+ "line": 33,
+ "column": 15,
+ "endLine": 33,
+ "endColumn": 16
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 33,
+ "column": 18,
+ "endLine": 33,
+ "endColumn": 19,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1171,
+ "end": 1172,
+ "replacementText": "3.0",
+ "line": 33,
+ "column": 18,
+ "endLine": 33,
+ "endColumn": 19
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 33,
+ "column": 21,
+ "endLine": 33,
+ "endColumn": 22,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1174,
+ "end": 1175,
+ "replacementText": "4.0",
+ "line": 33,
+ "column": 21,
+ "endLine": 33,
+ "endColumn": 22
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 34,
+ "column": 12,
+ "endLine": 34,
+ "endColumn": 13,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1189,
+ "end": 1190,
+ "replacementText": "1.0",
+ "line": 34,
+ "column": 12,
+ "endLine": 34,
+ "endColumn": 13
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 34,
+ "column": 20,
+ "endLine": 34,
+ "endColumn": 21,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1197,
+ "end": 1198,
+ "replacementText": "3.0",
+ "line": 34,
+ "column": 20,
+ "endLine": 34,
+ "endColumn": 21
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 34,
+ "column": 23,
+ "endLine": 34,
+ "endColumn": 24,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1200,
+ "end": 1201,
+ "replacementText": "4.0",
+ "line": 34,
+ "column": 23,
+ "endLine": 34,
+ "endColumn": 24
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 37,
+ "column": 1,
+ "endLine": 37,
+ "endColumn": 7,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 38,
+ "column": 1,
+ "endLine": 38,
+ "endColumn": 7,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 39,
+ "column": 1,
+ "endLine": 39,
+ "endColumn": 7,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 41,
+ "column": 7,
+ "endLine": 41,
+ "endColumn": 24,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1260,
+ "end": 1277,
+ "replacementText": "r0: number = [1, 2, 3][1]",
+ "line": 41,
+ "column": 7,
+ "endLine": 41,
+ "endColumn": 24
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 42,
+ "column": 5,
+ "endLine": 42,
+ "endColumn": 25,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1283,
+ "end": 1303,
+ "replacementText": "r1: number = [1, 2, 3, 4][0]",
+ "line": 42,
+ "column": 5,
+ "endLine": 42,
+ "endColumn": 25
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 46,
+ "column": 3,
+ "endLine": 46,
+ "endColumn": 9,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
{
"line": 50,
"column": 3,
@@ -44,6 +315,405 @@
"rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
"severity": "ERROR"
},
+ {
+ "line": 53,
+ "column": 5,
+ "endLine": 53,
+ "endColumn": 19,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1422,
+ "end": 1436,
+ "replacementText": "array1: number[] = [0, 1]",
+ "line": 53,
+ "column": 5,
+ "endLine": 53,
+ "endColumn": 19
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 53,
+ "column": 15,
+ "endLine": 53,
+ "endColumn": 16,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1432,
+ "end": 1433,
+ "replacementText": "0.0",
+ "line": 53,
+ "column": 15,
+ "endLine": 53,
+ "endColumn": 16
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 53,
+ "column": 17,
+ "endLine": 53,
+ "endColumn": 18,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1434,
+ "end": 1435,
+ "replacementText": "1.0",
+ "line": 53,
+ "column": 17,
+ "endLine": 53,
+ "endColumn": 18
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 54,
+ "column": 5,
+ "endLine": 54,
+ "endColumn": 25,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1441,
+ "end": 1461,
+ "replacementText": "array2: number[] = [1, 2, 3, 4, 5]",
+ "line": 54,
+ "column": 5,
+ "endLine": 54,
+ "endColumn": 25
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 54,
+ "column": 15,
+ "endLine": 54,
+ "endColumn": 16,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1451,
+ "end": 1452,
+ "replacementText": "1.0",
+ "line": 54,
+ "column": 15,
+ "endLine": 54,
+ "endColumn": 16
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 54,
+ "column": 17,
+ "endLine": 54,
+ "endColumn": 18,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1453,
+ "end": 1454,
+ "replacementText": "2.0",
+ "line": 54,
+ "column": 17,
+ "endLine": 54,
+ "endColumn": 18
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 54,
+ "column": 19,
+ "endLine": 54,
+ "endColumn": 20,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1455,
+ "end": 1456,
+ "replacementText": "3.0",
+ "line": 54,
+ "column": 19,
+ "endLine": 54,
+ "endColumn": 20
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 54,
+ "column": 21,
+ "endLine": 54,
+ "endColumn": 22,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1457,
+ "end": 1458,
+ "replacementText": "4.0",
+ "line": 54,
+ "column": 21,
+ "endLine": 54,
+ "endColumn": 22
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 54,
+ "column": 23,
+ "endLine": 54,
+ "endColumn": 24,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1459,
+ "end": 1460,
+ "replacementText": "5.0",
+ "line": 54,
+ "column": 23,
+ "endLine": 54,
+ "endColumn": 24
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 55,
+ "column": 25,
+ "endLine": 55,
+ "endColumn": 26,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1486,
+ "end": 1487,
+ "replacementText": "1.0",
+ "line": 55,
+ "column": 25,
+ "endLine": 55,
+ "endColumn": 26
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 55,
+ "column": 27,
+ "endLine": 55,
+ "endColumn": 28,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1488,
+ "end": 1489,
+ "replacementText": "2.0",
+ "line": 55,
+ "column": 27,
+ "endLine": 55,
+ "endColumn": 28
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 55,
+ "column": 29,
+ "endLine": 55,
+ "endColumn": 30,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1490,
+ "end": 1491,
+ "replacementText": "3.0",
+ "line": 55,
+ "column": 29,
+ "endLine": 55,
+ "endColumn": 30
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 55,
+ "column": 31,
+ "endLine": 55,
+ "endColumn": 32,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1492,
+ "end": 1493,
+ "replacementText": "4.0",
+ "line": 55,
+ "column": 31,
+ "endLine": 55,
+ "endColumn": 32
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 55,
+ "column": 33,
+ "endLine": 55,
+ "endColumn": 34,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1494,
+ "end": 1495,
+ "replacementText": "5.0",
+ "line": 55,
+ "column": 33,
+ "endLine": 55,
+ "endColumn": 34
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 56,
+ "column": 30,
+ "endLine": 56,
+ "endColumn": 31,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1526,
+ "end": 1527,
+ "replacementText": "1.0",
+ "line": 56,
+ "column": 30,
+ "endLine": 56,
+ "endColumn": 31
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 56,
+ "column": 32,
+ "endLine": 56,
+ "endColumn": 33,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1528,
+ "end": 1529,
+ "replacementText": "2.0",
+ "line": 56,
+ "column": 32,
+ "endLine": 56,
+ "endColumn": 33
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 56,
+ "column": 34,
+ "endLine": 56,
+ "endColumn": 35,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1530,
+ "end": 1531,
+ "replacementText": "3.0",
+ "line": 56,
+ "column": 34,
+ "endLine": 56,
+ "endColumn": 35
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 56,
+ "column": 36,
+ "endLine": 56,
+ "endColumn": 37,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1532,
+ "end": 1533,
+ "replacementText": "4.0",
+ "line": 56,
+ "column": 36,
+ "endLine": 56,
+ "endColumn": 37
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 56,
+ "column": 38,
+ "endLine": 56,
+ "endColumn": 39,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1534,
+ "end": 1535,
+ "replacementText": "5.0",
+ "line": 56,
+ "column": 38,
+ "endLine": 56,
+ "endColumn": 39
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
{
"line": 57,
"column": 5,
@@ -54,6 +724,541 @@
"rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)",
"severity": "ERROR"
},
+ {
+ "line": 57,
+ "column": 14,
+ "endLine": 57,
+ "endColumn": 27,
+ "problem": "GenericCallNoTypeArgs",
+ "suggest": "",
+ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 57,
+ "column": 24,
+ "endLine": 57,
+ "endColumn": 26,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1560,
+ "end": 1562,
+ "replacementText": "10.0",
+ "line": 57,
+ "column": 24,
+ "endLine": 57,
+ "endColumn": 26
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 58,
+ "column": 28,
+ "endLine": 58,
+ "endColumn": 30,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1591,
+ "end": 1593,
+ "replacementText": "10.0",
+ "line": 58,
+ "column": 28,
+ "endLine": 58,
+ "endColumn": 30
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 59,
+ "column": 29,
+ "endLine": 59,
+ "endColumn": 31,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1623,
+ "end": 1625,
+ "replacementText": "10.0",
+ "line": 59,
+ "column": 29,
+ "endLine": 59,
+ "endColumn": 31
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 60,
+ "column": 36,
+ "endLine": 60,
+ "endColumn": 38,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1662,
+ "end": 1664,
+ "replacementText": "10.0",
+ "line": 60,
+ "column": 36,
+ "endLine": 60,
+ "endColumn": 38
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 61,
+ "column": 29,
+ "endLine": 61,
+ "endColumn": 31,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1694,
+ "end": 1696,
+ "replacementText": "10.0",
+ "line": 61,
+ "column": 29,
+ "endLine": 61,
+ "endColumn": 31
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 62,
+ "column": 31,
+ "endLine": 62,
+ "endColumn": 33,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1728,
+ "end": 1730,
+ "replacementText": "10.0",
+ "line": 62,
+ "column": 31,
+ "endLine": 62,
+ "endColumn": 33
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 63,
+ "column": 30,
+ "endLine": 63,
+ "endColumn": 32,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1761,
+ "end": 1763,
+ "replacementText": "10.0",
+ "line": 63,
+ "column": 30,
+ "endLine": 63,
+ "endColumn": 32
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 64,
+ "column": 31,
+ "endLine": 64,
+ "endColumn": 33,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1795,
+ "end": 1797,
+ "replacementText": "10.0",
+ "line": 64,
+ "column": 31,
+ "endLine": 64,
+ "endColumn": 33
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 65,
+ "column": 32,
+ "endLine": 65,
+ "endColumn": 34,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1830,
+ "end": 1832,
+ "replacementText": "10.0",
+ "line": 65,
+ "column": 32,
+ "endLine": 65,
+ "endColumn": 34
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 66,
+ "column": 32,
+ "endLine": 66,
+ "endColumn": 34,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1865,
+ "end": 1867,
+ "replacementText": "10.0",
+ "line": 66,
+ "column": 32,
+ "endLine": 66,
+ "endColumn": 34
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 67,
+ "column": 33,
+ "endLine": 67,
+ "endColumn": 35,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1901,
+ "end": 1903,
+ "replacementText": "10.0",
+ "line": 67,
+ "column": 33,
+ "endLine": 67,
+ "endColumn": 35
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 68,
+ "column": 34,
+ "endLine": 68,
+ "endColumn": 36,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 1938,
+ "end": 1940,
+ "replacementText": "10.0",
+ "line": 68,
+ "column": 34,
+ "endLine": 68,
+ "endColumn": 36
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 70,
+ "column": 1,
+ "endLine": 70,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 71,
+ "column": 1,
+ "endLine": 71,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 72,
+ "column": 1,
+ "endLine": 72,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 73,
+ "column": 1,
+ "endLine": 73,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 74,
+ "column": 1,
+ "endLine": 74,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 75,
+ "column": 1,
+ "endLine": 75,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 76,
+ "column": 1,
+ "endLine": 76,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 77,
+ "column": 1,
+ "endLine": 77,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 78,
+ "column": 1,
+ "endLine": 78,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 79,
+ "column": 1,
+ "endLine": 79,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 80,
+ "column": 1,
+ "endLine": 80,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 81,
+ "column": 1,
+ "endLine": 81,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 82,
+ "column": 1,
+ "endLine": 82,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 83,
+ "column": 1,
+ "endLine": 83,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 84,
+ "column": 1,
+ "endLine": 84,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 85,
+ "column": 1,
+ "endLine": 85,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 97,
+ "column": 1,
+ "endLine": 97,
+ "endColumn": 18,
+ "problem": "UnsupportPropNameFromValue",
+ "suggest": "",
+ "rule": "Enum cannot get member name by member value (arkts-unsupport-prop-name-from-value)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 98,
+ "column": 1,
+ "endLine": 98,
+ "endColumn": 17,
+ "problem": "UnsupportPropNameFromValue",
+ "suggest": "",
+ "rule": "Enum cannot get member name by member value (arkts-unsupport-prop-name-from-value)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 99,
+ "column": 1,
+ "endLine": 99,
+ "endColumn": 17,
+ "problem": "UnsupportPropNameFromValue",
+ "suggest": "",
+ "rule": "Enum cannot get member name by member value (arkts-unsupport-prop-name-from-value)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 105,
+ "column": 31,
+ "endLine": 105,
+ "endColumn": 32,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 2388,
+ "end": 2389,
+ "replacementText": "1.0",
+ "line": 105,
+ "column": 31,
+ "endLine": 105,
+ "endColumn": 32
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 105,
+ "column": 33,
+ "endLine": 105,
+ "endColumn": 34,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 2390,
+ "end": 2391,
+ "replacementText": "2.0",
+ "line": 105,
+ "column": 33,
+ "endLine": 105,
+ "endColumn": 34
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 105,
+ "column": 35,
+ "endLine": 105,
+ "endColumn": 36,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 2392,
+ "end": 2393,
+ "replacementText": "3.0",
+ "line": 105,
+ "column": 35,
+ "endLine": 105,
+ "endColumn": 36
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 107,
+ "column": 24,
+ "endLine": 107,
+ "endColumn": 39,
+ "problem": "ArrayIndexExprType",
+ "suggest": "",
+ "rule": "The index expression must be of a numeric type (arkts-array-index-expr-type)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 107,
+ "column": 24,
+ "endLine": 107,
+ "endColumn": 39,
+ "problem": "BuiltinSymbolIterator",
+ "suggest": "",
+ "rule": "Using \"Symbol.iterator\" is not allowed in this API (arkts-builtin-symbol-iterator)",
+ "severity": "ERROR"
+ },
{
"line": 108,
"column": 5,
@@ -64,6 +1269,46 @@
"rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)",
"severity": "ERROR"
},
+ {
+ "line": 108,
+ "column": 17,
+ "endLine": 108,
+ "endColumn": 40,
+ "problem": "AvoidUnionTypes",
+ "suggest": "",
+ "rule": "Avoid using union types (arkts-common-union-member-access)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 112,
+ "column": 15,
+ "endLine": 112,
+ "endColumn": 38,
+ "problem": "AvoidUnionTypes",
+ "suggest": "",
+ "rule": "Avoid using union types (arkts-common-union-member-access)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 117,
+ "column": 20,
+ "endLine": 117,
+ "endColumn": 35,
+ "problem": "ArrayIndexExprType",
+ "suggest": "",
+ "rule": "The index expression must be of a numeric type (arkts-array-index-expr-type)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 117,
+ "column": 20,
+ "endLine": 117,
+ "endColumn": 35,
+ "problem": "BuiltinSymbolIterator",
+ "suggest": "",
+ "rule": "Using \"Symbol.iterator\" is not allowed in this API (arkts-builtin-symbol-iterator)",
+ "severity": "ERROR"
+ },
{
"line": 118,
"column": 5,
@@ -74,6 +1319,36 @@
"rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)",
"severity": "ERROR"
},
+ {
+ "line": 118,
+ "column": 15,
+ "endLine": 118,
+ "endColumn": 36,
+ "problem": "AvoidUnionTypes",
+ "suggest": "",
+ "rule": "Avoid using union types (arkts-common-union-member-access)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 121,
+ "column": 13,
+ "endLine": 121,
+ "endColumn": 34,
+ "problem": "AvoidUnionTypes",
+ "suggest": "",
+ "rule": "Avoid using union types (arkts-common-union-member-access)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 139,
+ "column": 12,
+ "endLine": 139,
+ "endColumn": 31,
+ "problem": "CreatingPrimitiveTypes",
+ "suggest": "",
+ "rule": "Primitive types are normalized with their boxed type (arkts-primitive-type-normalization)",
+ "severity": "ERROR"
+ },
{
"line": 159,
"column": 3,
@@ -83,6 +1358,234 @@
"suggest": "",
"rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
"severity": "ERROR"
+ },
+ {
+ "line": 172,
+ "column": 1,
+ "endLine": 172,
+ "endColumn": 9,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 173,
+ "column": 1,
+ "endLine": 173,
+ "endColumn": 13,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 174,
+ "column": 1,
+ "endLine": 174,
+ "endColumn": 13,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 176,
+ "column": 1,
+ "endLine": 176,
+ "endColumn": 10,
+ "problem": "LimitedStdLibNoSendableDecorator",
+ "autofix": [
+ {
+ "start": 3701,
+ "end": 3710,
+ "replacementText": "",
+ "line": 176,
+ "column": 1,
+ "endLine": 176,
+ "endColumn": 10
+ }
+ ],
+ "suggest": "",
+ "rule": "Usage of standard library is restricted(arkts-limited-stdlib-no-sendable-decorator)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 177,
+ "column": 23,
+ "endLine": 177,
+ "endColumn": 34,
+ "problem": "NoNeedStdLibSendableContainer",
+ "autofix": [
+ {
+ "start": 3733,
+ "end": 3754,
+ "replacementText": "BitVector",
+ "line": 177,
+ "column": 23,
+ "endLine": 177,
+ "endColumn": 34
+ }
+ ],
+ "suggest": "",
+ "rule": "Sendable containers are not supported (arkts-no-need-stdlib-sendable-containers)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 179,
+ "column": 11,
+ "endLine": 179,
+ "endColumn": 12,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 3785,
+ "end": 3786,
+ "replacementText": "0.0",
+ "line": 179,
+ "column": 11,
+ "endLine": 179,
+ "endColumn": 12
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 180,
+ "column": 14,
+ "endLine": 180,
+ "endColumn": 19,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 3802,
+ "end": 3807,
+ "replacementText": "i: number = 0",
+ "line": 180,
+ "column": 14,
+ "endLine": 180,
+ "endColumn": 19
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 180,
+ "column": 18,
+ "endLine": 180,
+ "endColumn": 19,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 3806,
+ "end": 3807,
+ "replacementText": "0.0",
+ "line": 180,
+ "column": 18,
+ "endLine": 180,
+ "endColumn": 19
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 181,
+ "column": 17,
+ "endLine": 181,
+ "endColumn": 18,
+ "problem": "NumericSemantics",
+ "autofix": [
+ {
+ "start": 3849,
+ "end": 3850,
+ "replacementText": "1.0",
+ "line": 181,
+ "column": 17,
+ "endLine": 181,
+ "endColumn": 18
+ }
+ ],
+ "suggest": "",
+ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 192,
+ "column": 1,
+ "endLine": 192,
+ "endColumn": 5,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 193,
+ "column": 1,
+ "endLine": 193,
+ "endColumn": 7,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 194,
+ "column": 1,
+ "endLine": 194,
+ "endColumn": 19,
+ "problem": "PropertyAccessByIndex",
+ "autofix": [
+ {
+ "replacementText": "b.i",
+ "start": 3992,
+ "end": 4010,
+ "line": 194,
+ "column": 1,
+ "endLine": 194,
+ "endColumn": 19
+ }
+ ],
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 195,
+ "column": 1,
+ "endLine": 195,
+ "endColumn": 22,
+ "problem": "PropertyAccessByIndex",
+ "autofix": [
+ {
+ "replacementText": "b.func",
+ "start": 4018,
+ "end": 4039,
+ "line": 195,
+ "column": 1,
+ "endLine": 195,
+ "endColumn": 22
+ }
+ ],
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 196,
+ "column": 1,
+ "endLine": 196,
+ "endColumn": 23,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
}
]
}
\ No newline at end of file
diff --git a/ets2panda/linter/test/main/property_access_by_index.ets.json b/ets2panda/linter/test/main/property_access_by_index.ets.json
index f1ca92fec988d00ac08f6046bf68933a27b0ca0a..18153ecebacd4a6737b2d4af02623fe7c41582df 100644
--- a/ets2panda/linter/test/main/property_access_by_index.ets.json
+++ b/ets2panda/linter/test/main/property_access_by_index.ets.json
@@ -83,6 +83,16 @@
"suggest": "",
"rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
"severity": "ERROR"
+ },
+ {
+ "line": 192,
+ "column": 1,
+ "endLine": 192,
+ "endColumn": 5,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
}
]
}
\ No newline at end of file
diff --git a/ets2panda/linter/test/main/property_access_by_index.ets.migrate.ets b/ets2panda/linter/test/main/property_access_by_index.ets.migrate.ets
index a19d0154802a6a02c685d077909c66a95a19c687..6d696292479ae1de787de6f538bcd47e72cf3c4b 100644
--- a/ets2panda/linter/test/main/property_access_by_index.ets.migrate.ets
+++ b/ets2panda/linter/test/main/property_access_by_index.ets.migrate.ets
@@ -13,7 +13,7 @@
* limitations under the License.
*/
import {OhosInterface} from './oh_modules/ohos_lib';
-import { collections } from './@arkts.collections';
+
// #14071
class A {
v: string = '';
@@ -30,16 +30,16 @@ function test() {
return GetProperty(a, 'v') + GetProperty(a, 'u');
}
-let ar1 = [1, 2, 3, 4];
-let ar2 = [1, '2', 3, 4];
+let ar1: number[] = [1.0, 2.0, 3.0, 4.0];
+let ar2 = [1.0, '2', 3.0, 4.0];
let ar3: number[] = [];
ar1[2];
ar2[2];
ar3[2];
-const r0 = [1, 2, 3][1];
-let r1 = [1, 2, 3, 4][0]
+const r0: number = [1, 2, 3][1];
+let r1: number = [1, 2, 3, 4][0]
let r2 = [1, '2', 3, 4][0]
function fobject1(o: object) {
@@ -50,22 +50,22 @@ function fobject2(o: Object) {
o['k']
}
-let array1 = [0,1]
-let array2 = [1,2,3,4,5]
-let array3: number[] = [1,2,3,4,5]
-let array4: Array = [1,2,3,4,5]
-let array5 = new Array(10)
-let array6 = new Int8Array(10)
-let array7 = new Uint8Array(10)
-let array8 = new Uint8ClampedArray(10)
-let array9 = new Int16Array(10)
-let array10 = new Uint16Array(10)
-let array11 = new Int32Array(10)
-let array12 = new Uint32Array(10)
-let array13 = new Float32Array(10)
-let array14 = new Float64Array(10)
-let array15 = new BigInt64Array(10)
-let array16 = new BigUint64Array(10)
+let array1: number[] = [0.0, 1.0]
+let array2: number[] = [1.0, 2.0, 3.0, 4.0, 5.0]
+let array3: number[] = [1.0,2.0,3.0,4.0,5.0]
+let array4: Array = [1.0,2.0,3.0,4.0,5.0]
+let array5 = new Array(10.0)
+let array6 = new Int8Array(10.0)
+let array7 = new Uint8Array(10.0)
+let array8 = new Uint8ClampedArray(10.0)
+let array9 = new Int16Array(10.0)
+let array10 = new Uint16Array(10.0)
+let array11 = new Int32Array(10.0)
+let array12 = new Uint32Array(10.0)
+let array13 = new Float32Array(10.0)
+let array14 = new Float64Array(10.0)
+let array15 = new BigInt64Array(10.0)
+let array16 = new BigUint64Array(10.0)
array1[0];
array2[0];
@@ -102,7 +102,7 @@ CCCCCCCCC[CCCCCCCCC.KATE]
CCCCCCCCC[CCCCCCCCC.BOB]
CCCCCCCCC[CCCCCCCCC.ROB]
-let arr32 = new Float32Array([1,2,3])
+let arr32 = new Float32Array([1.0,2.0,3.0])
let iter_arr32 = arr32[Symbol.iterator]()
let tmp_arr32 = iter_arr32.next().value;
@@ -173,12 +173,24 @@ mmap1[1];
mmap2['222'];
mmap3["kkr"];
-@Sendable
-class MyClass extends collections.BitVector {
+
+class MyClass extends BitVector {
constructor() {
- super(0);
- for (let i = 0; i < this.length; i++) {
- this[i] = 1;
+ super(0.0);
+ for (let i: number = 0.0; i < this.length; i++) {
+ this[i] = 1.0;
}
}
}
+
+class AA {
+ i: number = 1.0;
+ func(b: number) {}
+}
+let a: object = new AA();
+let b: AA = new AA();
+b[i] = 1.0;
+a["i"] = 2.0;
+b.i = 2.0;
+b.func(1.0);
+(b as object)["func1"](1.0);
diff --git a/ets2panda/linter/test/main/property_access_by_index.ets.migrate.json b/ets2panda/linter/test/main/property_access_by_index.ets.migrate.json
index e700885404cdb3909d85aea7ff974569658ce43f..729a3b75ebb00fb7a3e31695d6ecdf5619c45801 100644
--- a/ets2panda/linter/test/main/property_access_by_index.ets.migrate.json
+++ b/ets2panda/linter/test/main/property_access_by_index.ets.migrate.json
@@ -34,6 +34,46 @@
"rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
"severity": "ERROR"
},
+ {
+ "line": 37,
+ "column": 1,
+ "endLine": 37,
+ "endColumn": 7,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 38,
+ "column": 1,
+ "endLine": 38,
+ "endColumn": 7,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 39,
+ "column": 1,
+ "endLine": 39,
+ "endColumn": 7,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 46,
+ "column": 3,
+ "endLine": 46,
+ "endColumn": 9,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
{
"line": 50,
"column": 3,
@@ -48,12 +88,232 @@
"line": 57,
"column": 5,
"endLine": 57,
- "endColumn": 27,
+ "endColumn": 29,
"problem": "AnyType",
"suggest": "",
"rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)",
"severity": "ERROR"
},
+ {
+ "line": 57,
+ "column": 14,
+ "endLine": 57,
+ "endColumn": 29,
+ "problem": "GenericCallNoTypeArgs",
+ "suggest": "",
+ "rule": "Type inference in case of generic function calls is limited (arkts-no-inferred-generic-params)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 70,
+ "column": 1,
+ "endLine": 70,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 71,
+ "column": 1,
+ "endLine": 71,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 72,
+ "column": 1,
+ "endLine": 72,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 73,
+ "column": 1,
+ "endLine": 73,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 74,
+ "column": 1,
+ "endLine": 74,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 75,
+ "column": 1,
+ "endLine": 75,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 76,
+ "column": 1,
+ "endLine": 76,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 77,
+ "column": 1,
+ "endLine": 77,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 78,
+ "column": 1,
+ "endLine": 78,
+ "endColumn": 10,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 79,
+ "column": 1,
+ "endLine": 79,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 80,
+ "column": 1,
+ "endLine": 80,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 81,
+ "column": 1,
+ "endLine": 81,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 82,
+ "column": 1,
+ "endLine": 82,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 83,
+ "column": 1,
+ "endLine": 83,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 84,
+ "column": 1,
+ "endLine": 84,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 85,
+ "column": 1,
+ "endLine": 85,
+ "endColumn": 11,
+ "problem": "RuntimeArrayCheck",
+ "suggest": "",
+ "rule": "Array bound not checked. (arkts-runtime-array-check)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 97,
+ "column": 1,
+ "endLine": 97,
+ "endColumn": 18,
+ "problem": "UnsupportPropNameFromValue",
+ "suggest": "",
+ "rule": "Enum cannot get member name by member value (arkts-unsupport-prop-name-from-value)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 98,
+ "column": 1,
+ "endLine": 98,
+ "endColumn": 17,
+ "problem": "UnsupportPropNameFromValue",
+ "suggest": "",
+ "rule": "Enum cannot get member name by member value (arkts-unsupport-prop-name-from-value)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 99,
+ "column": 1,
+ "endLine": 99,
+ "endColumn": 17,
+ "problem": "UnsupportPropNameFromValue",
+ "suggest": "",
+ "rule": "Enum cannot get member name by member value (arkts-unsupport-prop-name-from-value)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 107,
+ "column": 24,
+ "endLine": 107,
+ "endColumn": 39,
+ "problem": "ArrayIndexExprType",
+ "suggest": "",
+ "rule": "The index expression must be of a numeric type (arkts-array-index-expr-type)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 107,
+ "column": 24,
+ "endLine": 107,
+ "endColumn": 39,
+ "problem": "BuiltinSymbolIterator",
+ "suggest": "",
+ "rule": "Using \"Symbol.iterator\" is not allowed in this API (arkts-builtin-symbol-iterator)",
+ "severity": "ERROR"
+ },
{
"line": 108,
"column": 5,
@@ -64,6 +324,46 @@
"rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)",
"severity": "ERROR"
},
+ {
+ "line": 108,
+ "column": 17,
+ "endLine": 108,
+ "endColumn": 40,
+ "problem": "AvoidUnionTypes",
+ "suggest": "",
+ "rule": "Avoid using union types (arkts-common-union-member-access)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 112,
+ "column": 15,
+ "endLine": 112,
+ "endColumn": 38,
+ "problem": "AvoidUnionTypes",
+ "suggest": "",
+ "rule": "Avoid using union types (arkts-common-union-member-access)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 117,
+ "column": 20,
+ "endLine": 117,
+ "endColumn": 35,
+ "problem": "ArrayIndexExprType",
+ "suggest": "",
+ "rule": "The index expression must be of a numeric type (arkts-array-index-expr-type)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 117,
+ "column": 20,
+ "endLine": 117,
+ "endColumn": 35,
+ "problem": "BuiltinSymbolIterator",
+ "suggest": "",
+ "rule": "Using \"Symbol.iterator\" is not allowed in this API (arkts-builtin-symbol-iterator)",
+ "severity": "ERROR"
+ },
{
"line": 118,
"column": 5,
@@ -74,6 +374,36 @@
"rule": "Use explicit types instead of \"any\", \"unknown\" (arkts-no-any-unknown)",
"severity": "ERROR"
},
+ {
+ "line": 118,
+ "column": 15,
+ "endLine": 118,
+ "endColumn": 36,
+ "problem": "AvoidUnionTypes",
+ "suggest": "",
+ "rule": "Avoid using union types (arkts-common-union-member-access)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 121,
+ "column": 13,
+ "endLine": 121,
+ "endColumn": 34,
+ "problem": "AvoidUnionTypes",
+ "suggest": "",
+ "rule": "Avoid using union types (arkts-common-union-member-access)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 139,
+ "column": 12,
+ "endLine": 139,
+ "endColumn": 31,
+ "problem": "CreatingPrimitiveTypes",
+ "suggest": "",
+ "rule": "Primitive types are normalized with their boxed type (arkts-primitive-type-normalization)",
+ "severity": "ERROR"
+ },
{
"line": 159,
"column": 3,
@@ -83,6 +413,76 @@
"suggest": "",
"rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
"severity": "ERROR"
+ },
+ {
+ "line": 172,
+ "column": 1,
+ "endLine": 172,
+ "endColumn": 9,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 173,
+ "column": 1,
+ "endLine": 173,
+ "endColumn": 13,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 174,
+ "column": 1,
+ "endLine": 174,
+ "endColumn": 13,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 181,
+ "column": 7,
+ "endLine": 181,
+ "endColumn": 14,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 192,
+ "column": 1,
+ "endLine": 192,
+ "endColumn": 5,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 193,
+ "column": 1,
+ "endLine": 193,
+ "endColumn": 7,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
+ },
+ {
+ "line": 196,
+ "column": 1,
+ "endLine": 196,
+ "endColumn": 23,
+ "problem": "PropertyAccessByIndex",
+ "suggest": "",
+ "rule": "Indexed access is not supported for fields (arkts-no-props-by-index)",
+ "severity": "ERROR"
}
]
}
\ No newline at end of file