diff --git a/plugins/ets/stdlib/std/core/String.ets b/plugins/ets/stdlib/std/core/String.ets index 9e859cf70701e6e2c0b011fd4759d39b790d0acb..105d4c0b9ad93ef52b047d1a3f9d7094a859d12b 100644 --- a/plugins/ets/stdlib/std/core/String.ets +++ b/plugins/ets/stdlib/std/core/String.ets @@ -1514,7 +1514,7 @@ export final class String extends Object implements Comparable, JSONable else { let matchStr = result.get(0); matches.pushBack(matchStr); - if (matchStr == "") { + if (matchStr.equals("")) { regexp.lastIndex = RegExp.advanceStringIndex(this, regexp.lastIndex, regexp.unicode); } } diff --git a/plugins/ets/stdlib/std/core/Type.ets b/plugins/ets/stdlib/std/core/Type.ets index a2339d2a107fbd6f592ec4d464f394333efc0159..a0ea6764d7218dbd8e5ba20eeaee89184a078c9f 100644 --- a/plugins/ets/stdlib/std/core/Type.ets +++ b/plugins/ets/stdlib/std/core/Type.ets @@ -960,7 +960,7 @@ export final class ClassType extends Type { } public override equals(to: NullishType): boolean { - return (to instanceof ClassType) && (to as ClassType).td == this.td + return (to instanceof ClassType) && (to as ClassType).td.equals(this.td) } public getBaseType(): ClassType { @@ -1174,7 +1174,7 @@ export final class InterfaceType extends Type { } public override equals(to: NullishType): boolean { - return to instanceof InterfaceType && this.td == (to as InterfaceType).td + return to instanceof InterfaceType && this.td.equals((to as InterfaceType).td) } // `this` extends of `other` interface? @@ -1615,7 +1615,7 @@ export final class EnumType extends Type { return false } let rt = other as EnumType - return this.getName() == rt.getName() + return this.getName().equals(rt.getName()) } public override isPrimitive(): boolean { diff --git a/plugins/ets/tests/ets_func_tests/escompat/JsonTest.ets b/plugins/ets/tests/ets_func_tests/escompat/JsonTest.ets index 6602d2c5db86da35bfc2f469f2d6e0fb25eb9327..3f707dea366a2bb39677a34df144b0f05ba08ad7 100644 --- a/plugins/ets/tests/ets_func_tests/escompat/JsonTest.ets +++ b/plugins/ets/tests/ets_func_tests/escompat/JsonTest.ets @@ -44,8 +44,8 @@ function testDouble(): int { function testString(): int { let stringType = Type.of(new String() as Object) - return test(JSON.parse("\"Gracias\"", stringType) as String == "Gracias", "String(Gracias)") + - test(JSON.parse("\"\"", stringType) as String == "", "String()") + return test((JSON.parse("\"Gracias\"", stringType) as String).equals("Gracias"), "String(Gracias)") + + test((JSON.parse("\"\"", stringType) as String).equals(""), "String()") } function equalObjectArrays(a: Object[], b: Object[]): boolean { @@ -53,7 +53,7 @@ function equalObjectArrays(a: Object[], b: Object[]): boolean { return false } for (let i = 0; i < a.length; i++) { - if (a[i] != b[i]) { + if (!a[i].equals(b[i])) { return false } } @@ -86,7 +86,7 @@ function testArrayString(): int { function testObject(): int { let objectType = Type.of(new Object()) - return test(JSON.stringify(JSON.parse("{}", objectType) as Object) == "{}", "Object") + return test(JSON.stringify(JSON.parse("{}", objectType) as Object).equals("{}"), "Object") } export class User {} @@ -104,7 +104,7 @@ class SuperUser extends UserWithFields { function testStringifyParse(): int { let classType = Type.of(new SuperUser() as Object) let str = "{\"id\":10,\"g\":true,\"name\":\"Name\",\"users\":[{\"id\":12,\"g\":true,\"name\":\"Name1\"},{\"id\":13,\"g\":false,\"name\":\"Name2\"}]}"; - return test(JSON.stringify(JSON.parse(str, classType) as SuperUser) == str, "SuperUser") + return test(JSON.stringify(JSON.parse(str, classType) as SuperUser).equals(str), "SuperUser") } class NoConstructor { diff --git a/plugins/ets/tests/ets_func_tests/std/containers/ArrayAsListStringTest.ets b/plugins/ets/tests/ets_func_tests/std/containers/ArrayAsListStringTest.ets index 81389ade2a7268a781ab6f5983abca915bbcc339..fab5e760c992aa6773495faa2303aae14a4838c8 100644 --- a/plugins/ets/tests/ets_func_tests/std/containers/ArrayAsListStringTest.ets +++ b/plugins/ets/tests/ets_func_tests/std/containers/ArrayAsListStringTest.ets @@ -79,7 +79,7 @@ function createWithGivenZeroSize(): int { function createWithGivenSize(): int { let list = new ArrayAsListString(10); for(let i: int = 0; i< 10; i++) { - if(list.at(i) != "") return 1; + if(!list.at(i).equals("")) return 1; } let result = list.size() == 10 ? 0 : 1; return result; @@ -89,7 +89,7 @@ function createWithGivenSizeAndValue0(): int { let value = ""; let list = new ArrayAsListString(10, value); for(let i: int = 0; i< 10; i++) { - if(list.at(i) != value) return 1; + if(!list.at(i).equals(value)) return 1; } let result = list.size() == 10 ? 0 : 1; return result; @@ -99,7 +99,7 @@ function createWithGivenSizeAndValue1(): int { let value = "10"; let list = new ArrayAsListString(10, value); for(let i: int; i< 10; i++) { - if(list.at(i) != value) return 1; + if(!list.at(i).equals(value)) return 1; } let result = list.size() == 10 ? 0 : 1; return result; @@ -111,7 +111,7 @@ function pushFrontToEmptyList(): int { list.pushFront(value); let expected: String = list.at(0); - let result = (expected == value && list.size() == 1) ? 0 : 1; + let result = (expected.equals(value) && list.size() == 1) ? 0 : 1; return result; } @@ -121,7 +121,7 @@ function pushBackToEmptyList(): int { list.pushBack(value); let expected: String = list.at(0); - let result = (expected == value && list.size() == 1) ? 0 : 1; + let result = (expected.equals(value) && list.size() == 1) ? 0 : 1; return result; } @@ -131,7 +131,7 @@ function pushFrontToNonEmptyList(): int { list.pushFront(value); let expected: String = list.at(0); - let result = (expected == value && list.size() == 10) ? 0 : 1; + let result = (expected.equals(value) && list.size() == 10) ? 0 : 1; return result; } @@ -141,7 +141,7 @@ function pushBackToNonEmptyList(): int { list.pushBack(value); let expected: String = list.at(9); - let result = (expected == value && list.size() == 10) ? 0 : 1; + let result = (expected.equals(value) && list.size() == 10) ? 0 : 1; return result; } @@ -154,7 +154,7 @@ function pushAndPopFrontFromNonEmptyList(): int { let expected = list.popFront(); let head = list.at(0); - let result = (expected == value && head == init && list.size() == 10) ? 0 : 1; + let result = (expected.equals(value) && head.equals(init) && list.size() == 10) ? 0 : 1; return result; } @@ -168,7 +168,7 @@ function pushAndPopBackFromNonEmptyList(): int { let expected = list.popBack(); let tail = list.at(9); - let result = (expected == value && tail == init && list.size() == 10) ? 0 : 1; + let result = (expected.equals(value) && tail.equals(init) && list.size() == 10) ? 0 : 1; return result; } @@ -198,7 +198,7 @@ function toArray(): int { } for(let i: int = 0; i< target.length; i++) { - if(target[i] == value) continue; + if(target[i].equals(value)) continue; console.println("Unexpected value in array"); return 1; } diff --git a/plugins/ets/tests/ets_func_tests/std/core/EscapeUnescapeTest.ets b/plugins/ets/tests/ets_func_tests/std/core/EscapeUnescapeTest.ets index 8fdab92e2117334e35d45dd576f4a41c5aeb9644..b9e4df5ff6927bf7226d03b7d37c672cdcf3cde9 100644 --- a/plugins/ets/tests/ets_func_tests/std/core/EscapeUnescapeTest.ets +++ b/plugins/ets/tests/ets_func_tests/std/core/EscapeUnescapeTest.ets @@ -28,7 +28,7 @@ function main(): int { failures += testInverse("^") failures += testInverse("!@#$%^&*()-=_+1234567890%%%") failures += testInverse("äöü") - failures += test(unescape("%E4%F6%FC") == "äöü", "äöü failed, got " + unescape("%E4%F6%FC")) + failures += test(unescape("%E4%F6%FC").equals("äöü"), "äöü failed, got " + unescape("%E4%F6%FC")) failures += testInverse("🌈🌬️👩🏻‍🏭💅🏿") @@ -46,7 +46,7 @@ function testEscapeId(s1: string): int { } function testEscapeId(s1: string, s2: string): int { - return test(escape(s1) == s2, 'escape("' + s1 + '") == "' + s2 + '" failed; got "' + escape(s1) + '"') + return test(escape(s1).equals(s2), 'escape("' + s1 + '") == "' + s2 + '" failed; got "' + escape(s1) + '"') } function testUnescapeId(s1: string): int { @@ -54,11 +54,11 @@ function testUnescapeId(s1: string): int { } function testUnescapeId(s1: string, s2: string): int { - return test(unescape(s1) == s2, 'unescape("' + s1 + '") == "' + s2 + '" failed; got "' + unescape(s1) + '"') + return test(unescape(s1).equals(s2), 'unescape("' + s1 + '") == "' + s2 + '" failed; got "' + unescape(s1) + '"') } function testInverse(s1: string): int { - return test(unescape(escape(s1)) == s1, 'unescape(escape("' + s1 + '")) == "' + s1 + '" failed, got "' + unescape(escape(s1)) + '", escaped "' + escape(s1) + '"') + return test(unescape(escape(s1)).equals(s1), 'unescape(escape("' + s1 + '")) == "' + s1 + '" failed, got "' + unescape(escape(s1)) + '", escaped "' + escape(s1) + '"') } function test(result: boolean, msg: string): int { diff --git a/plugins/ets/tests/ets_func_tests/std/core/EscapeUnescapeURITest.ets b/plugins/ets/tests/ets_func_tests/std/core/EscapeUnescapeURITest.ets index 1ecb05f8e3e0834570b0d342bafdbce8a88725d1..9fe6da4ab3425b3c4adaaae019b99af8f4f74805 100644 --- a/plugins/ets/tests/ets_func_tests/std/core/EscapeUnescapeURITest.ets +++ b/plugins/ets/tests/ets_func_tests/std/core/EscapeUnescapeURITest.ets @@ -70,7 +70,7 @@ function main(): int { } function testEquals(s1: string, s2: string): int { - if (s1 == s2) { + if (s1.equals(s2)) { return 0 } console.println('fail: "' + s1 + '"!= "' + s2 + '"') @@ -87,7 +87,7 @@ function testInverse1(s1: string): int { a = decodeURI(encodeURI(s1)) return 1 } - if (a == s1) { + if (a.equals(s1)) { return 0 } console.println('failed: decodeURI(encodeURI("' + s1 +'")) == "' + a + '" != "' + s1 + '"') @@ -104,7 +104,7 @@ function testInverse2(s1: string): int { a = decodeURIComponent(encodeURIComponent(s1)) return 1 } - if (a == s1) { + if (a.equals(s1)) { return 0 } console.println('failed: decodeURIComponent(encodeURIComponent("' + s1 +'")) == "' + a + '" != "' + s1 + '"') diff --git a/plugins/ets/tests/ets_func_tests/std/core/GoodRadixTest.ets b/plugins/ets/tests/ets_func_tests/std/core/GoodRadixTest.ets index eff58ea0675546fbb69e12935a908e18304e0dc2..3764a0853a5cf37f52d77e5a7ef4ca66ba5803d8 100644 --- a/plugins/ets/tests/ets_func_tests/std/core/GoodRadixTest.ets +++ b/plugins/ets/tests/ets_func_tests/std/core/GoodRadixTest.ets @@ -52,7 +52,7 @@ function checkGoodRadix(val: Double, radix: int, expected: String):int { return 1; } - if(sv == expected) return 0; + if(sv.equals(expected)) return 0; return 1; } diff --git a/plugins/ets/tests/ets_func_tests/std/core/TypeCreateErasedBodyTest.ets b/plugins/ets/tests/ets_func_tests/std/core/TypeCreateErasedBodyTest.ets index d107af344c226e01d990df2bae45716bc83af87a..8dc0d85d45612f26b2f09c9d0777865779f249d5 100644 --- a/plugins/ets/tests/ets_func_tests/std/core/TypeCreateErasedBodyTest.ets +++ b/plugins/ets/tests/ets_func_tests/std/core/TypeCreateErasedBodyTest.ets @@ -70,5 +70,5 @@ function main(): void throws { const i = ty.make() as C assert(i.c(10, 11, true) == 10) assert(i.c(10, 11, false) == 11) - assert(i.m("abc") == "abc123DATA!") + assert(i.m("abc").equals("abc123DATA!")) } diff --git a/plugins/ets/tests/ets_func_tests/std/core/TypeCreatePrimitiveNameTest.ets b/plugins/ets/tests/ets_func_tests/std/core/TypeCreatePrimitiveNameTest.ets index a766bcbb03e0e8e75c66a4a1a5b1d19ecbc32a2a..eb1668bf91ff50de71daa9beb294ce0b47a2f7c8 100644 --- a/plugins/ets/tests/ets_func_tests/std/core/TypeCreatePrimitiveNameTest.ets +++ b/plugins/ets/tests/ets_func_tests/std/core/TypeCreatePrimitiveNameTest.ets @@ -18,7 +18,7 @@ interface I { } function foo(self: Object, x: int): int { - assert (Type.of(self) as ClassType).getName() == "i32" + assert (Type.of(self) as ClassType).getName().equals("i32") return x + 11 } diff --git a/plugins/ets/tests/ets_func_tests/std/core/TypeResolve.ets b/plugins/ets/tests/ets_func_tests/std/core/TypeResolve.ets index 1c974e8a66310c031b705da0c11abbbceb2a9bf7..1dcba06b26de5c283fae484c19cf1826fd05d5b1 100644 --- a/plugins/ets/tests/ets_func_tests/std/core/TypeResolve.ets +++ b/plugins/ets/tests/ets_func_tests/std/core/TypeResolve.ets @@ -36,7 +36,7 @@ function main() { let ok = false for (let i = 0; i < iType.getMethodsNum(); i++) { const m = iType.getMethod(i) - if (m.getName() == "meth") { + if (m.getName().equals("meth")) { assert m.getType().getResultType() instanceof IntType ok = true break diff --git a/plugins/ets/tests/ets_test_suite/coroutines/multiple_launch.ets b/plugins/ets/tests/ets_test_suite/coroutines/multiple_launch.ets index 364b4027be95efde08df6a969ac30e5aa9d0a3bc..644a0f9fd41b296c36e9e066bb8ac1c23c457546 100644 --- a/plugins/ets/tests/ets_test_suite/coroutines/multiple_launch.ets +++ b/plugins/ets/tests/ets_test_suite/coroutines/multiple_launch.ets @@ -24,7 +24,7 @@ function n_cor_launch(n_cor: int): int { } for (let i = 0; i < n_cor; ++i) { let val = await p[i]; - if(val != return_value(i)) { + if(!val.equals(return_value(i))) { console.println("p[" + i + "] = \"" + val + "\" instead of \"" + return_value(i) + "\""); return 1; } diff --git a/plugins/ets/tests/ets_test_suite/gc/weak_ref_test.ets b/plugins/ets/tests/ets_test_suite/gc/weak_ref_test.ets index cbf9a68506a39a2066f2877c76003cf5c0077f7a..9a86d03ebb68c5f034712f2ecb673a4027aca335 100644 --- a/plugins/ets/tests/ets_test_suite/gc/weak_ref_test.ets +++ b/plugins/ets/tests/ets_test_suite/gc/weak_ref_test.ets @@ -32,6 +32,7 @@ function main(): int { let wrs = CreateWeakRefString(); let reachable_obj = new Object(); let wr_with_reachable = new WeakRef(reachable_obj); + assert reachable_obj.equals(wr_with_reachable.deref()); // Run Full GC for referent collection try { let gc_id = GC.startGC(GC.FULL_CAUSE); diff --git a/plugins/ets/tests/stdlib-templates/regression/12581_box_type_array.ets b/plugins/ets/tests/stdlib-templates/regression/12581_box_type_array.ets index 170f6a7235c43a5fc8ffcb18d956d67beaf863de..0f6aa363314e41e19c709e6d7142e9d7cc9ce8ad 100644 --- a/plugins/ets/tests/stdlib-templates/regression/12581_box_type_array.ets +++ b/plugins/ets/tests/stdlib-templates/regression/12581_box_type_array.ets @@ -34,13 +34,15 @@ function test{{.item.box_type}}Wrapper() : int { let arrayProvider = new BoxTypeArrayProvider<{{.item.box_type}}>(); let {{.item.box_type|lower}}Array = arrayProvider.getBoxObjectArray(); let inputData : {{.item.box_type}}[] = {{.item.array_data}}; - let expectedData : {{.item.box_type}}[] = {{.item.expected_data}}; + let expectedData = new {{.item.box_type}}[ARRAY_SIZE]; if ({{.item.box_type|lower}}Array.length != ARRAY_SIZE) return 1; for (let i = 0; i< {{.item.box_type|lower}}Array.length; i++) { if ({{.item.box_type|lower}}Array[i] instanceof {{.item.box_type|capitalize}}) return 1; } for (let i = 0; i< inputData.length; i++) { - {{.item.box_type|lower}}Array[i] = new {{.item.box_type}}(inputData[i]); + let data = new {{.item.box_type}}(inputData[i]) + {{.item.box_type|lower}}Array[i] = data; + expectedData[i] = data; } for (let i = 0; i< inputData.length; i++) { if ({{.item.box_type|lower}}Array[i] != expectedData[i]) return 1; diff --git a/plugins/ets/tests/stdlib-templates/regression/list.bug_12581_box_type.yaml b/plugins/ets/tests/stdlib-templates/regression/list.bug_12581_box_type.yaml index 54925a4257c9c207ed98e281712bcf887589bdcf..601203b17a1dc5a7ff93073952a8a2153270da7f 100644 --- a/plugins/ets/tests/stdlib-templates/regression/list.bug_12581_box_type.yaml +++ b/plugins/ets/tests/stdlib-templates/regression/list.bug_12581_box_type.yaml @@ -15,34 +15,29 @@ box_type: Byte, box_type_desc: Byte_array, box_type_array_size: 5, - array_data: "[1,2,3,4,5]", - expected_data: "[1,2,3,4,5]", + array_data: "[1,2,3,4,5]" } - { box_type: Short, box_type_desc: Short_array, box_type_array_size: 5, - array_data: "[1,2,3,4,5]", - expected_data: "[1,2,3,4,5]", + array_data: "[1,2,3,4,5]" } - { box_type: Int, box_type_desc: Int_array, box_type_array_size: 5, - array_data: "[1,2,3,4,5]", - expected_data: "[1,2,3,4,5]", + array_data: "[1,2,3,4,5]" } - { box_type: Long, box_type_desc: Long_array, box_type_array_size: 5, - array_data: "[1,2,3,4,5]", - expected_data: "[1,2,3,4,5]", + array_data: "[1,2,3,4,5]" } - { box_type: Boolean, box_type_desc: Boolean_array, box_type_array_size: 5, - array_data: "[true,true,true,true,true]", - expected_data: "[true,true,true,true,true]", + array_data: "[true,true,true,true,true]" } diff --git a/plugins/ets/tests/stdlib-templates/utils/test_check_test_array_result.j2 b/plugins/ets/tests/stdlib-templates/utils/test_check_test_array_result.j2 index dca12b4c230cb8caee8ba46441935b17549dd685..fbc639b02fe689c9aaeaa7597d48ec9254eae5f6 100644 --- a/plugins/ets/tests/stdlib-templates/utils/test_check_test_array_result.j2 +++ b/plugins/ets/tests/stdlib-templates/utils/test_check_test_array_result.j2 @@ -32,7 +32,11 @@ function checkTestResult(actual : {{.item.result_type}}, expected : {{.item.resu } {% else %} function checkTestResult(actual : {{.item.result_type}}, expected : {{.item.result_type}}) : int { + {% if item.result_type == "String" %} + if (actual.equals(expected)) return 0; + {% else %} if (actual == expected) return 0; + {% endif %} return 1; } {% endif %} diff --git a/plugins/ets/tests/stdlib-templates/utils/test_verifier_lib.j2 b/plugins/ets/tests/stdlib-templates/utils/test_verifier_lib.j2 index 498615353a3dcf5a1c8c660090f27e8bb7a32457..09e93894bdaa0205f50266cb55052d991f8eefbf 100644 --- a/plugins/ets/tests/stdlib-templates/utils/test_verifier_lib.j2 +++ b/plugins/ets/tests/stdlib-templates/utils/test_verifier_lib.j2 @@ -15,7 +15,7 @@ {%- if item.method_return_type == "String" %} function compareStringTrivial(actual : String, expected : String) : boolean { - if (actual == expected) return true; + if (actual.equals(expected)) return true; return false; } {%- endif %} @@ -30,10 +30,19 @@ function compareStringBuilderWithString(actual : StringBuilder, expected : Strin {%- if item.result_nature == "primitive" or item.method_return_type == "UTF_16_CodePoint" or item.method_return_type == "char" or item.method_return_type == "byte" or item.method_return_type == "short" or item.method_return_type == "int" or item.method_return_type == "long" or item.method_return_type == "boolean" %} {%- if item.method_return_type != "void" %} function comparePrimitiveValue(actual : {{.item.method_return_type}}, expected : {{.item.method_return_type}}) : boolean { + {%- if item.method_return_type == "String" %} + if (actual.equals(expected)) return true; + {% else %} + if (actual == expected) return true; + {% endif %} {%- else %} function comparePrimitiveValue(actual : {{.item.result_type}}, expected : {{.item.result_type}}) : boolean { -{%- endif %} + {%- if item.result_type == "String" %} + if (actual.equals(expected)) return true; + {% else %} if (actual == expected) return true; + {% endif %} +{%- endif %} return false; } {%- endif %} @@ -94,7 +103,11 @@ function comparePrimitiveArray(actual : {{.item.param_types[item.result_storage {%- endif %} if (actual.length != expected.length) return false; for (let i = 0; i < actual.length; i++) { + {%- if item.expected_test_data_item_type == "String[]" %} + if (!expected[i].equals(actual[i])) return false; + {% else %} if (actual[i] != expected[i]) return false; + {% endif %} } return true; diff --git a/tests/tests-u-runner/runner/plugins/ets/ets-cts-ignored.txt b/tests/tests-u-runner/runner/plugins/ets/ets-cts-ignored.txt index 63e4c0c49232734230940012901102777cc5a7f5..a9ae2559a2b695ea13f701b2a44bbc4a6709a653 100644 --- a/tests/tests-u-runner/runner/plugins/ets/ets-cts-ignored.txt +++ b/tests/tests-u-runner/runner/plugins/ets/ets-cts-ignored.txt @@ -1,3 +1,29 @@ +02.lexical_elements/09.literals/05.string_literals/codepoints.ets +02.lexical_elements/09.literals/06.template_literals/spec_example_2.ets +02.lexical_elements/09.literals/06.template_literals/templ_03.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_byte_0.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_byte_1.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_byte_2.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_byte_3.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_char_0.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_char_1.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_int_0.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_int_1.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_int_2.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_int_3.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_long_0.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_long_1.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_long_2.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_long_3.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_short_0.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_short_1.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_short_2.ets +03.types/05.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_short_3.ets +03.types/05.value_types/04.boolean_type_and_operations/string_concatenation_operator.ets +03.types/06.reference_types/01.objects/string_concatenation_0.ets +03.types/06.reference_types/01.objects/string_concatenation_1.ets +03.types/06.reference_types/03.the_string_type/change_string_value.ets +03.types/06.reference_types/03.the_string_type/strings_addition.ets 03.types/01.predefined_types/class_types_declaration_2.ets 03.types/01.predefined_types/class_value_types_declaration_4.ets 03.types/01.predefined_types/class_value_types_declaration_5.ets @@ -36,6 +62,7 @@ 04.names_declarations_and_scopes/06.type_alias_declaration/alias_gen_8.ets 04.names_declarations_and_scopes/06.type_alias_declaration/alias_gen_9.ets 04.names_declarations_and_scopes/07.variable_and_constant_declarations/03.type_compatibility_with_initializer/initializer_compatibility_8.ets +04.names_declarations_and_scopes/08.function_declarations/function_decl2_1.ets 05.generics/01.generic_declarations/generic_classes/generic_class_self_dependency_0.ets 05.generics/01.generic_declarations/generic_classes/generic_class_self_dependency_1.ets 05.generics/01.generic_declarations/generic_classes/generic_class_self_dependency_2.ets @@ -230,6 +257,9 @@ 07.expressions/01.evaluation_of_expressions/02.normal_and_abrupt_completion_of_expression_evaluation/npe1.ets 07.expressions/01.evaluation_of_expressions/02.normal_and_abrupt_completion_of_expression_evaluation/npe2.ets 07.expressions/01.evaluation_of_expressions/02.normal_and_abrupt_completion_of_expression_evaluation/npe3.ets +07.expressions/01.evaluation_of_expressions/04.operator_precedence/bool_cond.ets +07.expressions/01.evaluation_of_expressions/04.operator_precedence/bool_tern.ets +07.expressions/01.evaluation_of_expressions/eval_se.ets 07.expressions/01.evaluation_of_expressions/eval_decl.ets 07.expressions/03.qualified_name/qualified_name_0.ets 07.expressions/03.qualified_name/qualified_name_1.ets @@ -321,8 +351,59 @@ 07.expressions/22.relational_expressions/01.numerical_comparison_operators/float_comparison_69.ets 07.expressions/22.relational_expressions/01.numerical_comparison_operators/float_comparison_70.ets 07.expressions/22.relational_expressions/01.numerical_comparison_operators/float_comparison_71.ets +07.expressions/24.equality_expressions/01.reference_equality_operators/operand_is_not_of_reference_type_3.ets +07.expressions/24.equality_expressions/01.reference_equality_operators/reference_types_equality_operator_2.ets +07.expressions/24.equality_expressions/01.reference_equality_operators/reference_types_equality_operator_3.ets +07.expressions/24.equality_expressions/02.value_equality_operators/value_equality_operators_12.ets +07.expressions/24.equality_expressions/04.value_equality_operators_for_boolean_types/boolean_equality_operator_16.ets +07.expressions/24.equality_expressions/04.value_equality_operators_for_boolean_types/boolean_equality_operator_19.ets +07.expressions/24.equality_expressions/04.value_equality_operators_for_boolean_types/boolean_equality_operator_20.ets +07.expressions/24.equality_expressions/04.value_equality_operators_for_boolean_types/boolean_equality_operator_23.ets +07.expressions/25.bitwise_and_logical_expressions/01.integer_bitwise_operators/integer_xor_4.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord1.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord2.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord21.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord22.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord23.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord24.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord25.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord26.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord3.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord5.ets +07.expressions/28.assignment/01.simple_assignment_operator/ord6.ets +07.expressions/28.assignment/02.compound_assignment_operators/ops_39.ets +07.expressions/28.assignment/02.compound_assignment_operators/ops_40.ets +07.expressions/28.assignment/02.compound_assignment_operators/ops_41.ets +07.expressions/28.assignment/order.ets +07.expressions/28.assignment/pos_3.ets 07.expressions/27.conditional_or_expression/conditional_or_boolean.ets 08.statements/04.local_declarations/local_class.ets +08.statements/05.if_statements/if2_0.ets +08.statements/05.if_statements/if2_1.ets +08.statements/05.if_statements/if2_10.ets +08.statements/05.if_statements/if2_11.ets +08.statements/05.if_statements/if2_12.ets +08.statements/05.if_statements/if2_2.ets +08.statements/05.if_statements/if2_3.ets +08.statements/05.if_statements/if2_5.ets +08.statements/05.if_statements/if2_6.ets +08.statements/05.if_statements/if2_7.ets +08.statements/05.if_statements/if2_8.ets +08.statements/05.if_statements/if2_9.ets +08.statements/07.while_statements_and_do_statements/do_1.ets +08.statements/07.while_statements_and_do_statements/while_1.ets +08.statements/09.for_of_statements/for_of_10.ets +08.statements/09.for_of_statements/for_of_11.ets +08.statements/09.for_of_statements/for_of_12.ets +08.statements/09.for_of_statements/for_of_13.ets +08.statements/09.for_of_statements/for_of_14.ets +08.statements/09.for_of_statements/for_of_15.ets +08.statements/09.for_of_statements/for_of_4.ets +08.statements/09.for_of_statements/for_of_5.ets +08.statements/09.for_of_statements/for_of_6.ets +08.statements/09.for_of_statements/for_of_7.ets +08.statements/09.for_of_statements/for_of_8.ets +08.statements/09.for_of_statements/for_of_9.ets 09.classes/01.class_declaration/03.class_modifiers_inner_classes_and_static_classes/class_inner_class_declaration.ets 09.classes/01.class_declaration/03.class_modifiers_inner_classes_and_static_classes/inner_class_inherit_static_member.ets 09.classes/01.class_declaration/03.class_modifiers_inner_classes_and_static_classes/interface_inner_class_declaration.ets @@ -1158,6 +1239,24 @@ 03.types/07.value_types/01.integer_types_and_operations/right_shift/right_shift_ushort_7.ets 03.types/07.value_types/01.integer_types_and_operations/right_shift/right_shift_ushort_8.ets 03.types/07.value_types/01.integer_types_and_operations/right_shift/right_shift_ushort_9.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_byte_0.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_byte_1.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_byte_2.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_byte_3.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_char_0.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_char_1.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_int_0.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_int_1.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_int_2.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_int_3.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_long_0.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_long_1.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_long_2.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_long_3.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_short_0.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_short_1.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_short_2.ets +03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_short_3.ets 03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_ubyte_0.ets 03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_ubyte_1.ets 03.types/07.value_types/01.integer_types_and_operations/string_concatenation/string_concatenation_uint_0.ets @@ -1321,6 +1420,8 @@ 03.types/07.value_types/01.integer_types_and_operations/unsigned_right_shift/unsigned_right_shift_ushort_7.ets 03.types/07.value_types/01.integer_types_and_operations/unsigned_right_shift/unsigned_right_shift_ushort_8.ets 03.types/07.value_types/01.integer_types_and_operations/unsigned_right_shift/unsigned_right_shift_ushort_9.ets +03.types/07.value_types/04.boolean_type_and_operations/string_concatenation_operator.ets +07.expressions/07.object_literal/01.object_literal_of_class_type/cl_0.ets 07.expressions/07.object_literal/04.object_literal_evaluation/ex1.ets 07.expressions/07.object_literal/04.object_literal_evaluation/ex2.ets 07.expressions/28.assignment/01.simple_assignment_operator/ord4.ets @@ -1688,6 +1789,10 @@ 02.lexical_elements/09.literals/03.bigint_literals/bigint_literals_1.ets 02.lexical_elements/09.literals/03.bigint_literals/bigint_literals_2.ets 02.lexical_elements/09.literals/03.bigint_literals/bigint_literals_3.ets +03.types/08.reference_types/01.objects/string_concatenation_0.ets +03.types/08.reference_types/01.objects/string_concatenation_1.ets +03.types/08.reference_types/03.string_type/change_string_value.ets +03.types/08.reference_types/03.string_type/strings_addition.ets 03.types/08.reference_types/07.function_types/function_type_2.ets 03.types/08.reference_types/07.function_types/function_type_3.ets 03.types/08.reference_types/07.function_types/function_type_4.ets @@ -1713,10 +1818,13 @@ 04.names_declarations_and_scopes/08.function_declarations/03.optional_parameters/opt_param_10.ets 04.names_declarations_and_scopes/08.function_declarations/03.optional_parameters/opt_param_11.ets 04.names_declarations_and_scopes/08.function_declarations/03.optional_parameters/opt_param_12.ets +04.names_declarations_and_scopes/08.function_declarations/03.optional_parameters/opt_param_15.ets 04.names_declarations_and_scopes/08.function_declarations/03.optional_parameters/opt_param_2.ets 04.names_declarations_and_scopes/08.function_declarations/03.optional_parameters/opt_param_6.ets 04.names_declarations_and_scopes/08.function_declarations/03.optional_parameters/opt_param_7.ets 04.names_declarations_and_scopes/08.function_declarations/03.optional_parameters/opt_param_9.ets +04.names_declarations_and_scopes/08.function_declarations/04.rest_parameter/rest_parameter_10.ets +04.names_declarations_and_scopes/08.function_declarations/04.rest_parameter/rest_parameter_9.ets 05.generics/05.parameterized_declarations/type_arguments_of_parameterized_declarations/class_args_22.ets 05.generics/05.parameterized_declarations/type_arguments_of_parameterized_declarations/class_args_25.ets 14.semantic_rules/03.override_equivalent_signatures/pos_6.ets