From 46c393d2dbea2a5a97a3193c518e4dcb1d24ac21 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 19 Nov 2014 22:18:07 +0300 Subject: [PATCH] Added === and !== in addition to == and != --- .../jet/lang/resolve/lazy/PartialBodyResolveFilter.kt | 2 +- .../org/jetbrains/jet/plugin/completion/ExpectedInfos.kt | 3 ++- .../jet/plugin/completion/smart/SmartCompletion.kt | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/idea/ide-common/src/org/jetbrains/jet/lang/resolve/lazy/PartialBodyResolveFilter.kt b/idea/ide-common/src/org/jetbrains/jet/lang/resolve/lazy/PartialBodyResolveFilter.kt index 45418b5917f..70f9e7254ca 100644 --- a/idea/ide-common/src/org/jetbrains/jet/lang/resolve/lazy/PartialBodyResolveFilter.kt +++ b/idea/ide-common/src/org/jetbrains/jet/lang/resolve/lazy/PartialBodyResolveFilter.kt @@ -220,7 +220,7 @@ class PartialBodyResolveFilter( expression.acceptChildren(this) val operation = expression.getOperationToken() - if (operation == JetTokens.EQEQ || operation == JetTokens.EXCLEQ) { + if (operation == JetTokens.EQEQ || operation == JetTokens.EXCLEQ || operation == JetTokens.EQEQEQ || operation == JetTokens.EXCLEQEQEQ) { result.addIfNotNull(expression.getLeft()?.smartCastExpressionName()) result.addIfNotNull(expression.getRight()?.smartCastExpressionName()) } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/ExpectedInfos.kt b/idea/src/org/jetbrains/jet/plugin/completion/ExpectedInfos.kt index 5b320469dc6..80550eb08fc 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/ExpectedInfos.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/ExpectedInfos.kt @@ -212,7 +212,8 @@ class ExpectedInfos(val bindingContext: BindingContext, val resolutionFacade: Re val binaryExpression = expressionWithType.getParent() as? JetBinaryExpression if (binaryExpression != null) { val operationToken = binaryExpression.getOperationToken() - if (operationToken == JetTokens.EQ || operationToken == JetTokens.EQEQ || operationToken == JetTokens.EXCLEQ) { + if (operationToken == JetTokens.EQ || operationToken == JetTokens.EQEQ || operationToken == JetTokens.EXCLEQ + || operationToken == JetTokens.EQEQEQ || operationToken == JetTokens.EXCLEQEQEQ) { val otherOperand = if (expressionWithType == binaryExpression.getRight()) binaryExpression.getLeft() else binaryExpression.getRight() if (otherOperand != null) { val expressionType = bindingContext[BindingContext.EXPRESSION_TYPE, otherOperand] ?: return null diff --git a/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt index a44573fcacd..21734624160 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt @@ -94,7 +94,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression, if (filteredExpectedInfos.isEmpty()) return null // if we complete argument of == or !=, make types in expected info's nullable to allow nullable items too - val expectedInfos = if ((expressionWithType.getParent() as? JetBinaryExpression)?.getOperationToken() in setOf(JetTokens.EQEQ, JetTokens.EXCLEQ)) + val expectedInfos = if ((expressionWithType.getParent() as? JetBinaryExpression)?.getOperationToken() in COMPARISON_TOKENS) filteredExpectedInfos.map { ExpectedInfo(it.type.makeNullable(), it.name, it.tail) } else filteredExpectedInfos @@ -182,7 +182,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression, is JetBinaryExpression -> { if (parent.getRight() == expression) { val operationToken = parent.getOperationToken() - if (operationToken == JetTokens.EQ || operationToken == JetTokens.EQEQ || operationToken == JetTokens.EXCLEQ) { + if (operationToken == JetTokens.EQ || operationToken in COMPARISON_TOKENS) { val left = parent.getLeft() if (left is JetReferenceExpression) { return bindingContext[BindingContext.REFERENCE_TARGET, left].toSet() @@ -326,5 +326,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression, class object { public val OLD_ARGUMENTS_REPLACEMENT_OFFSET: OffsetKey = OffsetKey.create("nonFunctionReplacementOffset") public val MULTIPLE_ARGUMENTS_REPLACEMENT_OFFSET: OffsetKey = OffsetKey.create("multipleArgumentsReplacementOffset") + + private val COMPARISON_TOKENS = setOf(JetTokens.EQEQ, JetTokens.EXCLEQ, JetTokens.EQEQEQ, JetTokens.EXCLEQEQEQ) } }