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 ab6e425943f..060f615831d 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.JetToken; import org.jetbrains.jet.lexer.JetTokens; import java.util.HashSet; @@ -118,7 +119,8 @@ public class InlineCallResolverExtension implements CallResolverExtension { } } else if (parent instanceof JetBinaryExpression) { - if (JetPsiUtil.getOperationToken((JetOperationExpression) parent) == JetTokens.EQ) { + JetToken token = JetPsiUtil.getOperationToken((JetOperationExpression) parent); + if (token == JetTokens.EQ || token == JetTokens.ANDAND || token == JetTokens.OROR) { //assignment return false; } diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/andOr.kt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/andOr.kt new file mode 100644 index 00000000000..a8c42855f6f --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/andOr.kt @@ -0,0 +1,17 @@ +// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -TYPE_MISMATCH + +inline fun inlineFunWithInvoke(s: (p: Int) -> Unit, ext: Int.(p: Int) -> Unit) { + s && ext + s || s +} + +inline fun inlineFunWithInvokeNonInline(noinline s: (p: Int) -> Unit, ext: Int.(p: Int) -> Unit) { + s && ext + s || s +} + +inline fun Function1.inlineExt() { + invoke(11) + this && this + this || this +} \ 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 6b215ab9ee1..18acb1a1662 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -3858,6 +3858,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/inline/binaryExpressions"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("andOr.kt") + public void testAndOr() throws Exception { + doTest("compiler/testData/diagnostics/tests/inline/binaryExpressions/andOr.kt"); + } + @TestMetadata("arrayAccess.kt") public void testArrayAccess() throws Exception { doTest("compiler/testData/diagnostics/tests/inline/binaryExpressions/arrayAccess.kt");