Skip to content

Commit

Permalink
Ractor out some common code
Browse files Browse the repository at this point in the history
  • Loading branch information
tombentley committed Oct 9, 2015
1 parent 4702246 commit 6853a48
Showing 1 changed file with 14 additions and 21 deletions.
Expand Up @@ -2165,29 +2165,11 @@ public JCExpression transform(Tree.WithinOp op) {
OperatorTranslation upperOp = Operators.getOperator(upperBound instanceof Tree.OpenBound ? Tree.SmallerOp.class : Tree.SmallAsOp.class);
Tree.Term upperTerm = upperBound.getTerm();

final Type middleSuper = getSupertype(middleTerm, typeFact().getComparableDeclaration());
Type middleType = middleSuper;
Type middleSelf = middleType.getDeclaration().getSelfType();
if (middleSelf != null) {
// Simplify Comparable<X> to X
middleType = middleType.getTypeArguments().get(middleSelf.getDeclaration());
}
Type middleType = getComparableType(middleTerm);

final Type lowerSuper = getSupertype(lowerTerm, typeFact().getComparableDeclaration());
Type lowerType = lowerSuper;
Type lowerSelf = lowerType.getDeclaration().getSelfType();
if (lowerSelf != null) {
// Simplify Comparable<X> to X
lowerType = lowerType.getTypeArguments().get(lowerSelf.getDeclaration());
}
Type lowerType = getComparableType(lowerTerm);

final Type upperSuper = getSupertype(upperTerm, typeFact().getComparableDeclaration());
Type upperType = upperSuper;
Type upperSelf = upperType.getDeclaration().getSelfType();
if (upperSelf != null) {
// Simplify Comparable<X> to X
upperType = upperType.getTypeArguments().get(upperSelf.getDeclaration());
}
Type upperType = getComparableType(upperTerm);

// If any of the terms is optimizable, then use optimized
OptimisationStrategy opt;
Expand Down Expand Up @@ -2219,6 +2201,17 @@ public JCExpression transform(Tree.WithinOp op) {
return make().LetExpr(vars, transformOverridableBinaryOperator(andOp, optimisationStrategy, lower, upper, null, null, op.getTypeModel()));
}

protected Type getComparableType(Tree.Term middleTerm) {
final Type middleSuper = getSupertype(middleTerm, typeFact().getComparableDeclaration());
Type middleType = middleSuper;
Type middleSelf = middleType.getDeclaration().getSelfType();
if (middleSelf != null) {
// Simplify Comparable<X> to X
middleType = middleType.getTypeArguments().get(middleSelf.getDeclaration());
}
return middleType;
}

public JCExpression transformBound(
SyntheticName middle, Type middleType, Type otherType, final OperatorTranslation operator, final OptimisationStrategy optimisationStrategy, Tree.Term middleTerm, Tree.Bound bound, boolean isUpper) {
;
Expand Down

0 comments on commit 6853a48

Please sign in to comment.