KT-627 Drop Predicate expression
The residuals removed
This commit is contained in:
@@ -1610,25 +1610,6 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
|
||||
}
|
||||
}
|
||||
|
||||
@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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitPredicateExpression(this, data);
|
||||
}
|
||||
}
|
||||
@@ -256,10 +256,6 @@ public class JetVisitor<R, D> 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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
+1
-11
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user