From 9441e57fa0f2a0806c81d7e3cd2387e9056f4d3c Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 14 Mar 2012 12:40:06 +0400 Subject: [PATCH] KT-627 Drop Predicate expression The residuals removed --- .../jet/codegen/ExpressionCodegen.java | 19 --------- .../jet/lang/cfg/JetControlFlowProcessor.java | 1 - .../lang/parsing/JetExpressionParsing.java | 2 +- .../jet/lang/psi/JetPredicateExpression.java | 39 ------------------- .../jetbrains/jet/lang/psi/JetVisitor.java | 4 -- .../jet/lang/psi/JetVisitorVoid.java | 4 -- .../BasicExpressionTypingVisitor.java | 12 +----- .../org/jetbrains/jet/lexer/JetTokens.java | 2 +- 8 files changed, 3 insertions(+), 80 deletions(-) delete mode 100644 compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPredicateExpression.java diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 60bbc61fbda..6e4db23653b 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -1610,25 +1610,6 @@ public class ExpressionCodegen extends JetVisitor { } } - @Override - public StackValue visitPredicateExpression(JetPredicateExpression expression, StackValue receiver) { - JetExpression expr = expression.getReceiverExpression(); - StackValue value = gen(expr); - Type receiverType = expressionType(expr); - value.put(receiverType, v); - Label ifFalse = new Label(); - Label end = new Label(); - v.dup(); - StackValue result = genQualified(StackValue.onStack(receiverType), expression.getSelectorExpression()); - result.condJump(ifFalse, true, v); - v.goTo(end); - v.mark(ifFalse); - v.pop(); - v.aconst(null); - v.mark(end); - return StackValue.onStack(expressionType(expression)); - } - @Override public StackValue visitBinaryExpression(JetBinaryExpression expression, StackValue receiver) { final IElementType opToken = expression.getOperationReference().getReferencedNameElementType(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index 75dd75ff198..6c00cdd4f2d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -265,7 +265,6 @@ public class JetControlFlowProcessor { JetArrayAccessExpression arrayAccessExpression = (JetArrayAccessExpression) left; visitAssignToArrayAccess(expression, arrayAccessExpression); } else if (left instanceof JetQualifiedExpression) { - assert !(left instanceof JetPredicateExpression) : left; // TODO assert !(left instanceof JetHashQualifiedExpression) : left; // TODO JetQualifiedExpression qualifiedExpression = (JetQualifiedExpression) left; value(qualifiedExpression.getReceiverExpression(), false); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 67cedd21a9c..c925df969a7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -126,7 +126,7 @@ public class JetExpressionParsing extends AbstractJetParsing { private enum Precedence { POSTFIX(PLUSPLUS, MINUSMINUS, // HASH, - DOT, SAFE_ACCESS, QUEST), // typeArguments? valueArguments : typeArguments : arrayAccess + DOT, SAFE_ACCESS), // typeArguments? valueArguments : typeArguments : arrayAccess PREFIX(MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL, LABEL_IDENTIFIER, AT, ATAT) { // attributes diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPredicateExpression.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPredicateExpression.java deleted file mode 100644 index 19d8b9e7086..00000000000 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPredicateExpression.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2010-2012 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.lang.psi; - -import com.intellij.lang.ASTNode; -import org.jetbrains.annotations.NotNull; - -/** - * @author abreslav - */ -public class JetPredicateExpression extends JetQualifiedExpression { - public JetPredicateExpression(@NotNull ASTNode node) { - super(node); - } - - @Override - public void accept(@NotNull JetVisitorVoid visitor) { - visitor.visitPredicateExpression(this); - } - - @Override - public R accept(@NotNull JetVisitor visitor, D data) { - return visitor.visitPredicateExpression(this, data); - } -} diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java index cb9c2dccc54..15a6aae6621 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java @@ -256,10 +256,6 @@ public class JetVisitor extends PsiElementVisitor { return visitQualifiedExpression(expression, data); } - public R visitPredicateExpression(JetPredicateExpression expression, D data) { - return visitQualifiedExpression(expression, data); - } - public R visitSafeQualifiedExpression(JetSafeQualifiedExpression expression, D data) { return visitQualifiedExpression(expression, data); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitorVoid.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitorVoid.java index 9caabd69b92..27763ebeca3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitorVoid.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitorVoid.java @@ -254,10 +254,6 @@ public class JetVisitorVoid extends PsiElementVisitor { visitQualifiedExpression(expression); } - public void visitPredicateExpression(JetPredicateExpression expression) { - visitQualifiedExpression(expression); - } - public void visitSafeQualifiedExpression(JetSafeQualifiedExpression expression) { visitQualifiedExpression(expression); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java index 5c69de4a3a6..48b9257eb8e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java @@ -544,17 +544,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { } } - JetType result; - if (expression.getOperationSign() == JetTokens.QUEST) { - if (selectorReturnType != null && !isBoolean(selectorReturnType)) { - // TODO : more comprehensible error message - context.trace.report(TYPE_MISMATCH.on(selectorExpression, JetStandardLibrary.getInstance().getBooleanType(), selectorReturnType)); - } - result = TypeUtils.makeNullable(receiverType); - } - else { - result = selectorReturnType; - } + JetType result = selectorReturnType; // TODO : this is suspicious: remove this code? if (result != null) { context.trace.record(BindingContext.EXPRESSION_TYPE, selectorExpression, result); diff --git a/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java b/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java index 8b4a803fb26..f581555c309 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java +++ b/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java @@ -188,7 +188,7 @@ public interface JetTokens { MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, SAFE_ACCESS, ELVIS, // MAP, FILTER, - QUEST, COLON, + COLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS, // HASH,