diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 817cc45f796..64ac1407b3f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -370,6 +370,7 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform this.name = name candidateSymbol = null } + origin = FirFunctionCallOrigin.OPERATOR } // x.plusAssign(y) diff --git a/compiler/testData/diagnostics/tests/Operators.fir.kt b/compiler/testData/diagnostics/tests/Operators.fir.kt index c916a2e5261..6a3cfcde7eb 100644 --- a/compiler/testData/diagnostics/tests/Operators.fir.kt +++ b/compiler/testData/diagnostics/tests/Operators.fir.kt @@ -64,7 +64,7 @@ fun test() { a.get(1) a.get("str") - c += d + c += d c -= d a..b diff --git a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.3.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.3.fir.kt deleted file mode 100644 index 6bfb0d8bf7b..00000000000 --- a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.3.fir.kt +++ /dev/null @@ -1,193 +0,0 @@ -// !LANGUAGE: +NewInference -// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -EXTENSION_SHADOWED_BY_MEMBER -// SKIP_TXT - -/* - * KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE) - * - * SPEC VERSION: 0.1-268 - * MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 2 -> sentence 3 - * PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 3 - * overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 4 -> sentence 1 - * NUMBER: 3 - * DESCRIPTION: Explicitly imported extension callables - */ - - -// FILE: LibCase11.kt -// TESTCASE NUMBER: 1 -package libPackage1 -import testPackCase1.Case -import testPackCase1.Case.Inv -import testPackCase1.Case.E - -operator fun Case.E.plus(value: Int) = Inv() -operator fun Case.Inv.invoke(i: Int) = 1 - -// FILE: LibCase12.kt -// TESTCASE NUMBER: 1 -package libPackage2 -import testPackCase1.Case -import testPackCase1.Case.Inv -import testPackCase1.Case.E - -operator fun Case.E.plus(value: Int) = Inv() -operator fun Case.Inv.invoke(i: Int) = 1 - - -// FILE: TestCase1.kt -// TESTCASE NUMBER: 1 -package testPackCase1 -import libPackage1.plus -import libPackage1.invoke -import libPackage2.* -class Case() { - - class E(val plus: Inv? = null) { - /*operator*/ fun plus(value: Int) = Case() - } - - class Inv() { - /*operator*/ fun invoke(value: Int) = Case() - } - - fun foo(e: E) { - /*operator*/ fun E.plus(value: Int) = Case() - - run { - e + 1 - } - e + 1 - - } -} - -// FILE: LibCase21.kt -// TESTCASE NUMBER: 2 -package libPackage1 -import testPackCase2.Case -import testPackCase2.Case.Inv -import testPackCase2.Case.E - -operator fun Case.E.plus(value: Int) = Inv() -operator fun Case.Inv.invoke(i: Int) = 1 - -// FILE: LibCase22.kt -// TESTCASE NUMBER: 2 -package libPackage2 -import testPackCase2.Case -import testPackCase2.Case.Inv -import testPackCase2.Case.E - -operator fun Case.E.plus(value: Int) = Inv() -operator fun Case.Inv.invoke(i: Int) = 1 - - -// FILE: TestCase2.kt -// TESTCASE NUMBER: 2 -package testPackCase2 -import libPackage1.plus -import libPackage1.invoke -import libPackage2.* -class Case() { - - class E(val plus: Inv? = null) { - /*operator*/ fun plus(value: Int) = Case() - } - - class Inv() { - /*operator*/ fun invoke(value: Int) = Case() - } - - fun foo(e: E) { - /*operator*/ fun E.plus(value: Int) = Case() - - run { - /*operator*/ fun E.plus(value: Int) = Case() - - e + 1 - } - e + 1 - } -} - -// FILE: LibCase3.kt -// TESTCASE NUMBER: 3 -package libPackage -import testPackCase3.Case -import testPackCase3.Case.Inv -import testPackCase3.Case.E - -operator fun Case.E.plusAssign(value: Int) {} -operator fun Case.Inv.invoke(i: Int) {} - - -// FILE: TestCase3.kt -// TESTCASE NUMBER: 3 -package testPackCase3 -import libPackage.plusAssign -import libPackage.invoke -import libPackage.* -class Case() { - - class E(val plusAssign: Inv? = null) { - /*operator*/ fun plusAssign(value: Int) {} - } - - class Inv() { - /*operator*/ fun invoke(value: Int) {} - } - - fun foo(e: E) { - /*operator*/ fun E.plusAssign(value: Int) {} - - run { - e += 1 - } - e += 1 - - } -} - - -// FILE: LibCase4.kt -// TESTCASE NUMBER: 4 -package libPackage -import testPackCase4.Case -import testPackCase4.Case.Inv -import testPackCase4.Case.E - -operator fun Case.E.plusAssign(value: Int) {} -operator fun Case.Inv.invoke(i: Int) {} - - -// FILE: TestCase4.kt -// TESTCASE NUMBER: 4 -package testPackCase4 -import libPackage.plusAssign -import libPackage.* -import libPackage.invoke - -operator fun Case.E.plusAssign(value: Int) {} - -class Case() { - - class E(val plusAssign: Inv? = null) { - /*operator*/ fun plusAssign(value: Int) {} - } - - class Inv() { - /*operator*/ fun invoke(value: Int) {} - } - - fun foo(e: E) { - /*operator*/ fun E.plusAssign(value: Int) {} - - run { - /*operator*/ fun E.plusAssign(value: Int) {} - - e += 1 - } - e += 1 - } -} diff --git a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.3.kt b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.3.kt index 9b2188007ea..bd6de85aadb 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.3.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.3.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +NewInference // !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -EXTENSION_SHADOWED_BY_MEMBER // SKIP_TXT diff --git a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.4.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.4.fir.kt deleted file mode 100644 index f0fe20740d3..00000000000 --- a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.4.fir.kt +++ /dev/null @@ -1,194 +0,0 @@ -// !LANGUAGE: +NewInference -// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -EXTENSION_SHADOWED_BY_MEMBER -// SKIP_TXT - -/* - * KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE) - * - * SPEC VERSION: 0.1-268 - * MAIN LINK: overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 2 -> sentence 3 - * PRIMARY LINKS: overload-resolution, building-the-overload-candidate-set-ocs, call-with-an-explicit-receiver -> paragraph 6 -> sentence 4 - * overload-resolution, building-the-overload-candidate-set-ocs, operator-call -> paragraph 4 -> sentence 1 - * NUMBER: 4 - * DESCRIPTION: Extension callables declared in the package scope - */ - - -// FILE: LibCase1.kt -// TESTCASE NUMBER: 1 -package libPackage -import testPackCase1.Case -import testPackCase1.Case.Inv -import testPackCase1.Case.E - -operator fun Case.E.plus(value: Int) = Case().Inv() -operator fun Case.Inv.invoke(i: Int) = 1 - - -// FILE: TestCase11.kt -// TESTCASE NUMBER: 1 -package testPackCase1 -import libPackage.* - -operator fun Case.E.plus(value: Int) = Case().Inv() -operator fun Case.Inv.invoke(i: Int) = 1 - -class Case() { - class E(val plus: Inv? = null) { - /*operator*/ fun plus(value: Int) = Case() - } - - inner class Inv() { - /*operator*/ fun invoke(value: Int) = Case() - } - - fun foo(e: E) { - /*operator*/ fun E.plus(value: Int) = Case() - - run { - e + 1 - } - e + 1 - - } -} - -// FILE: Lib11.kt -// TESTCASE NUMBER: 2 -package libPackage1 -import testPackCase2.Case -import testPackCase2.Case.Inv -import testPackCase2.Case.E - -operator fun Case.E.plus(value: Int) = Inv() -operator fun Case.Inv.invoke(i: Int) = 1 - - -// FILE: Lib21.kt -// TESTCASE NUMBER: 2 -package testPackCase2 -import testPackCase2.Case -import testPackCase2.Case.Inv -import testPackCase2.Case.E - -operator fun Case.E.plus(value: Int) = Inv() -operator fun Case.Inv.invoke(i: Int) = 1 - - -// FILE: TestCase12.kt -// TESTCASE NUMBER: 2 -package testPackCase2 -import libPackage1.* -class Case() { - - operator fun plus(value: Int) = Case() - - class E(val plus: Inv? = null) { - /*operator*/ fun plus(value: Int) = Case() - } - - class Inv() { - /*operator*/ fun invoke(value: Int) = Case() - } - - fun foo(e: E) { - /*operator*/ fun E.plus(value: Int) = Case() - - run { - /*operator*/ fun E.plus(value: Int) = Case() - - e + 1 - } - e + 1 - } -} - - -// FILE: LibCase3.kt -// TESTCASE NUMBER: 3 -package libPackage -import testPackCase3.Case -import testPackCase3.Case.Inv -import testPackCase3.Case.E - -operator fun Case.E.plusAssign(value: Int) {} -operator fun Case.Inv.invoke(i: Int) {} - - -// FILE: TestCase3.kt -// TESTCASE NUMBER: 3 -package testPackCase3 -import libPackage.* - -operator fun Case.E.plusAssign(value: Int) {} -operator fun Case.Inv.invoke(i: Int) {} - -class Case() { - class E(val plusAssign: Inv? = null) { - /*operator*/ fun plusAssign(value: Int) {} - } - - inner class Inv() { - /*operator*/ fun invoke(value: Int) {} - } - - fun foo(e: E) { - /*operator*/ fun E.plusAssign(value: Int) {} - - run { - e += 1 - } - e += 1 - - } -} - -// FILE: Lib12.kt -// TESTCASE NUMBER: 4 -package libPackage1 -import testPackCase4.Case -import testPackCase4.Case.Inv -import testPackCase4.Case.E - -operator fun Case.E.plusAssign(value: Int) {} -operator fun Case.Inv.invoke(i: Int) {} - - -// FILE: Lib22.kt -// TESTCASE NUMBER: 4 -package testPackCase4 -import testPackCase4.Case -import testPackCase4.Case.Inv -import testPackCase4.Case.E - -operator fun Case.E.plusAssign(value: Int) {} -operator fun Case.Inv.invoke(i: Int) {} - - -// FILE: TestCase4.kt -// TESTCASE NUMBER: 4 -package testPackCase4 -import libPackage1.* -class Case() { - - operator fun plusAssign(value: Int) {} - - class E(val plusAssign: Inv? = null) { - /*operator*/ fun plusAssign(value: Int) {} - } - - class Inv() { - /*operator*/ fun invoke(value: Int) {} - } - - fun foo(e: E) { - /*operator*/ fun E.plusAssign(value: Int) {} - - run { - /*operator*/ fun E.plusAssign(value: Int) {} - - e += 1 - } - e += 1 - } -} diff --git a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.4.kt b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.4.kt index b498ba9dbbf..1e643abfc97 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.4.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.4.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +NewInference // !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -EXTENSION_SHADOWED_BY_MEMBER // SKIP_TXT diff --git a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.5.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.5.fir.kt index 95e9ea5f1e4..a7e01e8619a 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.5.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/overload-resolution/building-the-overload-candidate-set-ocs/operator-call/p-2/pos/3.5.fir.kt @@ -96,8 +96,8 @@ class Case() { /*operator*/ fun E.plusAssign(value: Int) {} run { - e += 1 + e += 1 } - e += 1 + e += 1 } }