diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java index ec473f8c229..4f3b9d899cf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java @@ -641,6 +641,7 @@ public class JetPsiUtil { return null; } + private static int getPriority(@NotNull JetExpression expression) { int maxPriority = JetExpressionParsing.Precedence.values().length + 1; @@ -1033,4 +1034,14 @@ public class JetPsiUtil { public static boolean isLocal(@NotNull JetNamedDeclaration declaration) { return getEnclosingBlockForLocalDeclaration(declaration) != null; } + + @Nullable + public static JetToken getOperationToken(@NotNull JetOperationExpression expression) { + JetSimpleNameExpression operationExpression = expression.getOperationReference(); + IElementType elementType = operationExpression.getReferencedNameElementType(); + assert elementType == null || elementType instanceof JetToken : + "JetOperationExpression should have operation token of type JetToken: " + + expression; + return (JetToken) elementType; + } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java index 28c73f45565..660a777b18c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java @@ -35,6 +35,7 @@ import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.InlineUtil; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; +import org.jetbrains.jet.lexer.JetTokens; import java.util.HashSet; import java.util.Set; @@ -103,21 +104,31 @@ public class InlineCallResolverExtension implements CallResolverExtension { while (parent != null) { if (parent instanceof JetValueArgument || parent instanceof JetBinaryExpression || + parent instanceof JetUnaryExpression || parent instanceof JetDotQualifiedExpression || - parent instanceof JetCallExpression) { + parent instanceof JetCallExpression || + parent instanceof JetArrayAccessExpression || + parent instanceof JetMultiDeclaration) { + + if (parent instanceof JetPrefixExpression) { + if (JetPsiUtil.isLabeledExpression((JetPrefixExpression) parent)) { + parent = parent.getParent(); + continue; + } + } + else if (parent instanceof JetBinaryExpression) { + if (JetPsiUtil.getOperationToken((JetOperationExpression) parent) == JetTokens.EQ) { + //assignment + return false; + } + } + //check that it's in inlineable call would be in resolve call of parent return true; } else if (parent instanceof JetParenthesizedExpression || parent instanceof JetBinaryExpressionWithTypeRHS) { parent = parent.getParent(); } - else if (parent instanceof JetPrefixExpression) { - boolean isLabeled = JetPsiUtil.isLabeledExpression((JetPrefixExpression) parent); - if (!isLabeled) { - return false; - } - parent = parent.getParent(); - } else { return false; } diff --git a/compiler/testData/diagnostics/tests/inline/assignment.kt b/compiler/testData/diagnostics/tests/inline/assignment.kt new file mode 100644 index 00000000000..d69850fec56 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/assignment.kt @@ -0,0 +1,14 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE +inline fun inlineFunWithInvoke(s: (p: Int) -> Unit, ext: Int.(p: Int) -> Unit) { + var d = s + d = s + + var e = ext + e = ext +} + + +inline fun Function1.inlineExt() { + var d = this + d = this +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/arrayAccess.kt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/arrayAccess.kt new file mode 100644 index 00000000000..9db60d513ed --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/arrayAccess.kt @@ -0,0 +1,27 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE +inline fun Function1.get(index : Int) { + +} + +inline fun ExtensionFunction1.get(index : Int) { + +} + +inline fun inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) { + s[1] + ext[1] +} + +//noinline +fun Function2.get(index : Int) { + +} + +fun ExtensionFunction2.get(index : Int) { + +} + +inline fun inlineFunWithInvoke(s: (p: T, l: U) -> V, ext: T.(p: U, l: V) -> W) { + s[1] + ext[1] +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/assignment.kt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/assignment.kt new file mode 100644 index 00000000000..293f864afc5 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/assignment.kt @@ -0,0 +1,30 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE + +fun Function1.minusAssign(p: Function1) {} + +inline fun Function1.modAssign(p: Function1) = { + this += p + p += this +} + +inline fun Function1.plusAssign(p: Function1) { + this -= p + p -= this +} + +fun ExtensionFunction1.minusAssign(ext : ExtensionFunction1) {} + +inline fun ExtensionFunction1.modAssign(ext : ExtensionFunction1) = { + this += ext + ext += this +} + +inline fun ExtensionFunction1.plusAssign(ext : ExtensionFunction1) { + this -= ext + ext -= this +} + +inline fun inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) { + s += s + ext += ext +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/comparison.kt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/comparison.kt new file mode 100644 index 00000000000..66d35affdf8 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/comparison.kt @@ -0,0 +1,32 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE + +inline fun Function1.compareTo(p: Function1) = 1 +inline fun ExtensionFunction1.compareTo(index : ExtensionFunction1) = 1 + +inline fun inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) { + s < s + s <= s + s > s + s >= s + + ext < ext + ext > ext + ext <= ext + ext >= ext +} + +//noinline +fun Function2.compareTo(index : Function2) = 1 +fun ExtensionFunction2.compareTo(index : ExtensionFunction2) = 1 + +inline fun inlineFunWithInvoke(s: (p: T, l: U) -> V, ext: T.(p: U, l: V) -> W) { + s < s + s <= s + s > s + s >= s + + ext < ext + ext > ext + ext <= ext + ext >= ext +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/componentAccess.kt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/componentAccess.kt new file mode 100644 index 00000000000..6f1d8fb07ad --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/componentAccess.kt @@ -0,0 +1,22 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE +inline fun Function1.component1() = 1 +inline fun Function1.component2() = 2 + +inline fun ExtensionFunction1.component1() = 1 +inline fun ExtensionFunction1.component2() = 2 + +inline fun inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) { + val (d1, e1) = s + val (d2, e2) = ext +} + +fun Function2.component1() = 1 +fun Function2.component2() = 2 + +fun ExtensionFunction2.component1() = 1 +fun ExtensionFunction2.component2() = 2 + +inline fun inlineFunWithInvoke(s: (p: T, l: U) -> V, ext: T.(p: U, l: V) -> W) { + val (d1, e1) = s + val (d2, e2) = ext +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/contains.kt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/contains.kt new file mode 100644 index 00000000000..b369662aad8 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/contains.kt @@ -0,0 +1,34 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE +inline fun Function1.contains(p: Function1): Boolean { + this in p + p in this + return false +} + +inline fun ExtensionFunction1.contains(ext: ExtensionFunction1): Boolean { + ext in this + this in ext + return false +} + + +inline fun inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) { + s in s + s !in s + + ext in ext + ext !in ext +} + + +fun Function2.contains(p: Function2): Boolean = false + +fun ExtensionFunction2.contains(ext: ExtensionFunction2): Boolean = false + +inline fun inlineFunWithInvoke(s: (p: T, l: U) -> U, ext: T.(p: U, l: U) -> V) { + s in s + s !in s + + ext in ext + ext !in ext +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/mathOperations.kt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/mathOperations.kt new file mode 100644 index 00000000000..2200b78e1f8 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/mathOperations.kt @@ -0,0 +1,34 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE +fun Function1.minus(p: Function1) { + +} + +fun ExtensionFunction1.minus(p: T.(p: U) -> V) { + +} + +inline fun Function1.plus(p: Function1) { + this - p +} + +inline fun ExtensionFunction1.plus(p: T.(p: U) -> V) { + this - p +} + +inline fun inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) { + s + s + ext + ext +} + +inline fun inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) { + s + s + ext + ext +} + +inline fun Function1.submit() { + this + this +} + +inline fun ExtensionFunction1.submit() { + this + this +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/rangeTo.kt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/rangeTo.kt new file mode 100644 index 00000000000..0688d4bbd1c --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/rangeTo.kt @@ -0,0 +1,39 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE + +inline fun Function1.rangeTo(p: Function1): Range { + this..p + p..this + return 1..2 +} + +inline fun ExtensionFunction1.rangeTo(ext: ExtensionFunction1): Range { + ext..this + this..ext + return 1..2 +} + + +inline fun inlineFunWithInvoke(s: (p: T) -> U, ext: T.(p: U) -> V) { + s..s + s..s + + ext..ext + ext..ext +} + + +fun Function2.rangeTo(p: Function2): Range { + return 1..2 +} + +fun ExtensionFunction2.rangeTo(ext: ExtensionFunction2): Range { + return 1..2 +} + +inline fun inlineFunWithInvoke(s: (p: T, l: U) -> U, ext: T.(p: U, l: U) -> V) { + s..s + s..s + + ext..ext + ext..ext +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/nullabilityOperations.kt b/compiler/testData/diagnostics/tests/inline/nullabilityOperations.kt new file mode 100644 index 00000000000..eda24f91fa1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/nullabilityOperations.kt @@ -0,0 +1,16 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNNECESSARY_SAFE_CALL -UNNECESSARY_NOT_NULL_ASSERTION +inline fun String.submit(action: Function1) { + +} + +inline fun Function1.submit() { + this?.invoke(11) + this!!.invoke(11) + + submit(this!!) +} + +inline fun submit(action: Function1) { + action?.invoke(10) + action!!.invoke(10) +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/unaryExpressions/mathOperation.kt b/compiler/testData/diagnostics/tests/inline/unaryExpressions/mathOperation.kt new file mode 100644 index 00000000000..1416545562a --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/unaryExpressions/mathOperation.kt @@ -0,0 +1,35 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -VAL_REASSIGNMENT -UNUSED_CHANGED_VALUE -VARIABLE_EXPECTED + +inline fun Function1.plus() = this +fun Function1.minus() = this +inline fun Function1.inc() = this +fun Function1.dec() = this + +inline fun ExtensionFunction1.plus(){} +fun ExtensionFunction1.minus(){} +inline fun ExtensionFunction1.inc() = this +fun ExtensionFunction1.dec() = this + +inline fun inlineFunWithInvoke(s: (p: T) -> V, ext: T.(p: T) -> V) { + +s + -s + s++ + ++s + s-- + --s + +ext + -ext + ext++ + ++ext + ext-- + --ext +} + +inline fun Function1.inlineFunWithInvoke() { + +this + -this + this++ + ++this + this-- + --this +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/unaryExpressions/notOperation.kt b/compiler/testData/diagnostics/tests/inline/unaryExpressions/notOperation.kt new file mode 100644 index 00000000000..51933f30698 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/unaryExpressions/notOperation.kt @@ -0,0 +1,26 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE +inline fun Function1.not() : Boolean { + return !this +} + +inline fun ExtensionFunction1.not() : Boolean { + return !this +} + +inline fun inlineFunWithInvoke(s: (p: T) -> V, ext: T.(p: T) -> V) { + !s + !ext +} + +fun Function2.not() : Boolean { + return !this +} + +fun ExtensionFunction2.not() : Boolean { + return !this +} + +inline fun inlineFunWithInvoke(s: (p: T, l: U) -> V, ext: T.(p: T, l : U) -> V) { + !s + !ext +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/wrongUsage.kt b/compiler/testData/diagnostics/tests/inline/wrongUsage.kt index 8b7350d44a1..7248ae4a670 100644 --- a/compiler/testData/diagnostics/tests/inline/wrongUsage.kt +++ b/compiler/testData/diagnostics/tests/inline/wrongUsage.kt @@ -1,12 +1,11 @@ -// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -NOTHING_TO_INLINE -USELESS_ELVIS inline fun inlineFunWrongUsage(s: (p: Int) -> Unit) { s if (true) s else 0 - var c = s - c = s + s ?: s } inline fun inlineFunWrongUsageExt(ext: Int.(p: Int) -> Unit) { @@ -14,8 +13,7 @@ inline fun inlineFunWrongUsageExt(ext: Int.(p: Int) -> Unit) { if (true) ext else 0 - var c = ext - c = ext + ext ?: ext } inline fun inlineFunWrongUsageInClosure(s: (p: Int) -> Unit) { @@ -24,8 +22,7 @@ inline fun inlineFunWrongUsageInClosure(s: (p: Int) -> Unit) { if (true) s else 0 - var c = s - c = s + s ?: s }() } @@ -35,21 +32,20 @@ inline fun inlineFunWrongUsageInClosureExt(ext: Int.(p: Int) -> Unit) { if (true) ext else 0 - var c = ext - c = ext + ext ?: ext }() } inline fun inlineFunNoInline(noinline s: (p: Int) -> Unit) { s if (true) s else 0 - var c = s - c = s + + s ?: s } inline fun inlineFunNoInline(noinline ext: Int.(p: Int) -> Unit) { ext if (true) ext else 0 - var c = ext - c = ext -} + + ext ?: ext +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inline/wrongUsage2.kt b/compiler/testData/diagnostics/tests/inline/wrongUsage2.kt deleted file mode 100644 index 00b6d2d0488..00000000000 --- a/compiler/testData/diagnostics/tests/inline/wrongUsage2.kt +++ /dev/null @@ -1,24 +0,0 @@ -// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -UNNECESSARY_SAFE_CALL -UNNECESSARY_NOT_NULL_ASSERTION - -public inline fun assertNot(message: String, block: ()-> Boolean) {} - -public inline fun assertNot(block: ()-> Boolean) : Unit = assertNot(block.toString(), block) - - -public fun callable(action: ()-> T) { - -} - -public inline fun String.submit(action: ()->T) { - callable(action) -} - -public inline fun Function1.submit() { - this?.invoke(11) - this!!.invoke(11) -} - -public inline fun submit(action: Function1) { - action?.invoke(10) - action!!.invoke(10) -} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index fa5e4f8de88..7ca738c6881 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -3751,12 +3751,17 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage } @TestMetadata("compiler/testData/diagnostics/tests/inline") - @InnerTestClasses({Inline.NonPublicMember.class}) + @InnerTestClasses({Inline.BinaryExpressions.class, Inline.NonPublicMember.class, Inline.UnaryExpressions.class}) public static class Inline extends AbstractDiagnosticsTestWithEagerResolve { public void testAllFilesPresentInInline() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/inline"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("assignment.kt") + public void testAssignment() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/assignment.kt"); + } + @TestMetadata("capture.kt") public void testCapture() throws Exception { doTest("compiler/testData/diagnostics/tests/inline/capture.kt"); @@ -3782,21 +3787,26 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage doTest("compiler/testData/diagnostics/tests/inline/invoke.kt"); } - @TestMetadata("nonVirtualMembersWithInline.kt") - public void testNonVirtualMembersWithInline() throws Exception { - doTest("compiler/testData/diagnostics/tests/inline/nonVirtualMembersWithInline.kt"); - } - @TestMetadata("labeled.kt") public void testLabeled() throws Exception { doTest("compiler/testData/diagnostics/tests/inline/labeled.kt"); } + @TestMetadata("nonVirtualMembersWithInline.kt") + public void testNonVirtualMembersWithInline() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/nonVirtualMembersWithInline.kt"); + } + @TestMetadata("nothingToInline.kt") public void testNothingToInline() throws Exception { doTest("compiler/testData/diagnostics/tests/inline/nothingToInline.kt"); } + @TestMetadata("nullabilityOperations.kt") + public void testNullabilityOperations() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/nullabilityOperations.kt"); + } + @TestMetadata("nullableFunction.kt") public void testNullableFunction() throws Exception { doTest("compiler/testData/diagnostics/tests/inline/nullableFunction.kt"); @@ -3837,9 +3847,47 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage doTest("compiler/testData/diagnostics/tests/inline/wrongUsage.kt"); } - @TestMetadata("wrongUsage2.kt") - public void testWrongUsage2() throws Exception { - doTest("compiler/testData/diagnostics/tests/inline/wrongUsage2.kt"); + @TestMetadata("compiler/testData/diagnostics/tests/inline/binaryExpressions") + public static class BinaryExpressions extends AbstractDiagnosticsTestWithEagerResolve { + public void testAllFilesPresentInBinaryExpressions() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/inline/binaryExpressions"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("arrayAccess.kt") + public void testArrayAccess() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/binaryExpressions/arrayAccess.kt"); + } + + @TestMetadata("assignment.kt") + public void testAssignment() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/binaryExpressions/assignment.kt"); + } + + @TestMetadata("comparison.kt") + public void testComparison() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/binaryExpressions/comparison.kt"); + } + + @TestMetadata("componentAccess.kt") + public void testComponentAccess() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/binaryExpressions/componentAccess.kt"); + } + + @TestMetadata("contains.kt") + public void testContains() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/binaryExpressions/contains.kt"); + } + + @TestMetadata("mathOperations.kt") + public void testMathOperations() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/binaryExpressions/mathOperations.kt"); + } + + @TestMetadata("rangeTo.kt") + public void testRangeTo() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/binaryExpressions/rangeTo.kt"); + } + } @TestMetadata("compiler/testData/diagnostics/tests/inline/nonPublicMember") @@ -3875,10 +3923,30 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage } + @TestMetadata("compiler/testData/diagnostics/tests/inline/unaryExpressions") + public static class UnaryExpressions extends AbstractDiagnosticsTestWithEagerResolve { + public void testAllFilesPresentInUnaryExpressions() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/inline/unaryExpressions"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("mathOperation.kt") + public void testMathOperation() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/unaryExpressions/mathOperation.kt"); + } + + @TestMetadata("notOperation.kt") + public void testNotOperation() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/unaryExpressions/notOperation.kt"); + } + + } + public static Test innerSuite() { TestSuite suite = new TestSuite("Inline"); suite.addTestSuite(Inline.class); + suite.addTestSuite(BinaryExpressions.class); suite.addTestSuite(NonPublicMember.class); + suite.addTestSuite(UnaryExpressions.class); return suite; } }