From cc7d82ab7b7035a09ddc4dc8877652dfc05b7c45 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 15 Feb 2021 12:46:54 +0300 Subject: [PATCH] [VISUALIZER] Change rendering of equality operator --- .../compiler/visualizer/FirVisualizer.kt | 2 +- .../resultFiles/overrideEquals.kt | 55 +++++++++++++++++++ .../uncommonCases/testFiles/overrideEquals.kt | 19 +++++++ .../FirVisualizerForRawFirDataGenerated.java | 10 ++-- ...irVisualizerForUncommonCasesGenerated.java | 6 ++ .../PsiVisualizerForRawFirDataGenerated.java | 10 ++-- ...siVisualizerForUncommonCasesGenerated.java | 6 ++ 7 files changed, 97 insertions(+), 11 deletions(-) create mode 100644 compiler/visualizer/testData/uncommonCases/resultFiles/overrideEquals.kt create mode 100644 compiler/visualizer/testData/uncommonCases/testFiles/overrideEquals.kt diff --git a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt index a52959e70f8..adf4da6191e 100644 --- a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt +++ b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt @@ -439,7 +439,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { } override fun visitEqualityOperatorCall(equalityOperatorCall: FirEqualityOperatorCall, data: StringBuilder) { - data.append("equality operator call ${equalityOperatorCall.operation}") + data.append("fun (Any).equals(Any?): Boolean") } override fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression, data: StringBuilder) { diff --git a/compiler/visualizer/testData/uncommonCases/resultFiles/overrideEquals.kt b/compiler/visualizer/testData/uncommonCases/resultFiles/overrideEquals.kt new file mode 100644 index 00000000000..64797ddc8f8 --- /dev/null +++ b/compiler/visualizer/testData/uncommonCases/resultFiles/overrideEquals.kt @@ -0,0 +1,55 @@ +class A(val a: Int) { + override fun equals(other: Any?): Boolean { +// Unit +// │ A.equals.other: Any? +// │ │ Boolean +// │ │ │ + if (other !is A) return false +// val (A).a: Int +// │ fun (Any).equals(Any?): Boolean +// │ │ A.equals.other: Any? +// │ │ │ val (A).a: Int +// │ │ │ │ + return this.a == other.a + } +} + +open class B(val b: Int) { + override fun equals(other: Any?): Boolean { +// Unit +// │ B.equals.other: Any? +// │ │ Boolean +// │ │ │ + if (other !is B) return false +// val (B).b: Int +// │ fun (Any).equals(Any?): Boolean +// │ │ B.equals.other: Any? +// │ │ │ val (B).b: Int +// │ │ │ │ + return this.b == other.b + } +} + +// constructor B(Int) +// │ C..c: Int +// │ │ +class C(c: Int): B(c) {} + +// constructor A(Int) +// │ fun (A).equals(Any?): Boolean +// │ │ constructor A(Int) +// Boolean │ Int │ │ Int +// │ │ │ │ │ │ +val areEqual = A(10) == A(11) +// constructor C(Int) +// │ fun (B).equals(Any?): Boolean +// │ │ constructor C(Int) +// Boolean │ Int │ │ Int +// │ │ │ │ │ │ +val areEqual2 = C(10) == C(11) +// constructor A(Int) +// │ fun (A).equals(Any?): Boolean +// │ │ constructor C(Int) +// Boolean │ Int │ │ Int +// │ │ │ │ │ │ +val areEqual3 = A(10) == C(11) diff --git a/compiler/visualizer/testData/uncommonCases/testFiles/overrideEquals.kt b/compiler/visualizer/testData/uncommonCases/testFiles/overrideEquals.kt new file mode 100644 index 00000000000..08ffaa87d3f --- /dev/null +++ b/compiler/visualizer/testData/uncommonCases/testFiles/overrideEquals.kt @@ -0,0 +1,19 @@ +class A(val a: Int) { + override fun equals(other: Any?): Boolean { + if (other !is A) return false + return this.a == other.a + } +} + +open class B(val b: Int) { + override fun equals(other: Any?): Boolean { + if (other !is B) return false + return this.b == other.b + } +} + +class C(c: Int): B(c) {} + +val areEqual = A(10) == A(11) +val areEqual2 = C(10) == C(11) +val areEqual3 = A(10) == C(11) \ No newline at end of file diff --git a/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForRawFirDataGenerated.java b/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForRawFirDataGenerated.java index fd6ead63aaa..5b3a87c0719 100644 --- a/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForRawFirDataGenerated.java +++ b/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForRawFirDataGenerated.java @@ -27,7 +27,7 @@ public class FirVisualizerForRawFirDataGenerated extends AbstractFirVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations") @TestDataPath("$PROJECT_ROOT") - public class Declarations extends AbstractFirVisualizer { + public class Declarations { @Test public void testAllFilesPresentInDeclarations() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations"), Pattern.compile("^(.+)\\.kt$"), null, true); @@ -192,7 +192,7 @@ public class FirVisualizerForRawFirDataGenerated extends AbstractFirVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts") @TestDataPath("$PROJECT_ROOT") - public class Contracts extends AbstractFirVisualizer { + public class Contracts { @Test public void testAllFilesPresentInContracts() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts"), Pattern.compile("^(.+)\\.kt$"), null, true); @@ -201,7 +201,7 @@ public class FirVisualizerForRawFirDataGenerated extends AbstractFirVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax") @TestDataPath("$PROJECT_ROOT") - public class NewSyntax extends AbstractFirVisualizer { + public class NewSyntax { @Test public void testAllFilesPresentInNewSyntax() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax"), Pattern.compile("^(.+)\\.kt$"), null, true); @@ -229,7 +229,7 @@ public class FirVisualizerForRawFirDataGenerated extends AbstractFirVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/oldSyntax") @TestDataPath("$PROJECT_ROOT") - public class OldSyntax extends AbstractFirVisualizer { + public class OldSyntax { @Test public void testAllFilesPresentInOldSyntax() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/oldSyntax"), Pattern.compile("^(.+)\\.kt$"), null, true); @@ -247,7 +247,7 @@ public class FirVisualizerForRawFirDataGenerated extends AbstractFirVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/expressions") @TestDataPath("$PROJECT_ROOT") - public class Expressions extends AbstractFirVisualizer { + public class Expressions { @Test public void testAllFilesPresentInExpressions() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/expressions"), Pattern.compile("^(.+)\\.kt$"), null, true); diff --git a/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForUncommonCasesGenerated.java b/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForUncommonCasesGenerated.java index beb6bfac3d8..ad4c540f71d 100644 --- a/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForUncommonCasesGenerated.java +++ b/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForUncommonCasesGenerated.java @@ -48,6 +48,12 @@ public class FirVisualizerForUncommonCasesGenerated extends AbstractFirVisualize runTest("compiler/visualizer/testData/uncommonCases/testFiles/lists.kt"); } + @Test + @TestMetadata("overrideEquals.kt") + public void testOverrideEquals() throws Exception { + runTest("compiler/visualizer/testData/uncommonCases/testFiles/overrideEquals.kt"); + } + @Test @TestMetadata("properties.kt") public void testProperties() throws Exception { diff --git a/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForRawFirDataGenerated.java b/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForRawFirDataGenerated.java index db30161d2db..4d3b30433b3 100644 --- a/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForRawFirDataGenerated.java +++ b/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForRawFirDataGenerated.java @@ -27,7 +27,7 @@ public class PsiVisualizerForRawFirDataGenerated extends AbstractPsiVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations") @TestDataPath("$PROJECT_ROOT") - public class Declarations extends AbstractPsiVisualizer { + public class Declarations { @Test public void testAllFilesPresentInDeclarations() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations"), Pattern.compile("^(.+)\\.kt$"), null, true); @@ -192,7 +192,7 @@ public class PsiVisualizerForRawFirDataGenerated extends AbstractPsiVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts") @TestDataPath("$PROJECT_ROOT") - public class Contracts extends AbstractPsiVisualizer { + public class Contracts { @Test public void testAllFilesPresentInContracts() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts"), Pattern.compile("^(.+)\\.kt$"), null, true); @@ -201,7 +201,7 @@ public class PsiVisualizerForRawFirDataGenerated extends AbstractPsiVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax") @TestDataPath("$PROJECT_ROOT") - public class NewSyntax extends AbstractPsiVisualizer { + public class NewSyntax { @Test public void testAllFilesPresentInNewSyntax() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax"), Pattern.compile("^(.+)\\.kt$"), null, true); @@ -229,7 +229,7 @@ public class PsiVisualizerForRawFirDataGenerated extends AbstractPsiVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/oldSyntax") @TestDataPath("$PROJECT_ROOT") - public class OldSyntax extends AbstractPsiVisualizer { + public class OldSyntax { @Test public void testAllFilesPresentInOldSyntax() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/oldSyntax"), Pattern.compile("^(.+)\\.kt$"), null, true); @@ -247,7 +247,7 @@ public class PsiVisualizerForRawFirDataGenerated extends AbstractPsiVisualizer { @Nested @TestMetadata("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/expressions") @TestDataPath("$PROJECT_ROOT") - public class Expressions extends AbstractPsiVisualizer { + public class Expressions { @Test public void testAllFilesPresentInExpressions() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/expressions"), Pattern.compile("^(.+)\\.kt$"), null, true); diff --git a/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForUncommonCasesGenerated.java b/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForUncommonCasesGenerated.java index ebc67a59682..34f2e5fa58c 100644 --- a/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForUncommonCasesGenerated.java +++ b/compiler/visualizer/tests-gen/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForUncommonCasesGenerated.java @@ -48,6 +48,12 @@ public class PsiVisualizerForUncommonCasesGenerated extends AbstractPsiVisualize runTest("compiler/visualizer/testData/uncommonCases/testFiles/lists.kt"); } + @Test + @TestMetadata("overrideEquals.kt") + public void testOverrideEquals() throws Exception { + runTest("compiler/visualizer/testData/uncommonCases/testFiles/overrideEquals.kt"); + } + @Test @TestMetadata("properties.kt") public void testProperties() throws Exception {