1 /******************************************************************************* 2 * Copyright (c) 2000, 2016 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types; 15 16 public final class UnboundWildcardType extends WildcardType { 17 UnboundWildcardType(TypeEnvironment environment)18 protected UnboundWildcardType(TypeEnvironment environment) { 19 super(environment); 20 } 21 22 @Override getKind()23 public int getKind() { 24 return UNBOUND_WILDCARD_TYPE; 25 } 26 27 @Override getErasure()28 public TType getErasure() { 29 return getEnvironment().getJavaLangObject(); 30 } 31 32 @Override doCanAssignTo(TType lhs)33 protected boolean doCanAssignTo(TType lhs) { 34 switch(lhs.getKind()) { 35 case STANDARD_TYPE: 36 return ((StandardType)lhs).isJavaLangObject(); 37 case UNBOUND_WILDCARD_TYPE: 38 return true; 39 case SUPER_WILDCARD_TYPE: 40 case EXTENDS_WILDCARD_TYPE: 41 return ((WildcardType)lhs).getBound().isJavaLangObject(); 42 case CAPTURE_TYPE: 43 return ((CaptureType)lhs).checkLowerBound(this); 44 default: 45 return false; 46 } 47 } 48 49 @Override checkTypeArgument(TType rhs)50 protected boolean checkTypeArgument(TType rhs) { 51 switch(rhs.getKind()) { 52 case ARRAY_TYPE: 53 case STANDARD_TYPE: 54 case PARAMETERIZED_TYPE: 55 case RAW_TYPE: 56 case UNBOUND_WILDCARD_TYPE: 57 case EXTENDS_WILDCARD_TYPE: 58 case SUPER_WILDCARD_TYPE: 59 case TYPE_VARIABLE: 60 case CAPTURE_TYPE: 61 return true; 62 default: 63 return false; 64 } 65 } 66 67 @Override checkAssignmentBound(TType rhs)68 protected boolean checkAssignmentBound(TType rhs) { 69 // unbound equals ? extends Object. 70 return rhs.isNullType(); 71 } 72 73 @Override getName()74 public String getName() { 75 return "?"; //$NON-NLS-1$ 76 } 77 78 @Override getPlainPrettySignature()79 protected String getPlainPrettySignature() { 80 return getName(); 81 } 82 } 83