]> git.uio.no Git - ifi-stolz-refaktor.git/blame - case-study/jdt-before/core refactoring/org/eclipse/jdt/internal/corext/refactoring/typeconstraints/types/StandardType.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-before / core refactoring / org / eclipse / jdt / internal / corext / refactoring / typeconstraints / types / StandardType.java
CommitLineData
1b2798f6
EK
1/*******************************************************************************
2 * Copyright (c) 2000, 2011 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11package org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types;
12
13import org.eclipse.jdt.core.BindingKey;
14
15
16public final class StandardType extends HierarchyType {
17
18 private static final String OBJECT_KEY= BindingKey.createTypeBindingKey("java.lang.Object"); //$NON-NLS-1$
19 private static final String CLONEABLE_KEY= BindingKey.createTypeBindingKey("java.lang.Cloneable"); //$NON-NLS-1$
20 private static final String SERIALIZABLE_KEY= BindingKey.createTypeBindingKey("java.io.Serializable"); //$NON-NLS-1$
21
22 protected StandardType(TypeEnvironment environment) {
23 super(environment);
24 }
25
26 @Override
27 public int getKind() {
28 return STANDARD_TYPE;
29 }
30
31 @Override
32 public boolean isJavaLangObject() {
33 return OBJECT_KEY.equals(getBindingKey());
34 }
35
36 @Override
37 public boolean isJavaLangCloneable() {
38 return CLONEABLE_KEY.equals(getBindingKey());
39 }
40
41 @Override
42 public boolean isJavaIoSerializable() {
43 return SERIALIZABLE_KEY.equals(getBindingKey());
44 }
45
46 @Override
47 public boolean doEquals(TType type) {
48 return getJavaElementType().equals(((StandardType)type).getJavaElementType());
49 }
50
51 @Override
52 public int hashCode() {
53 return getJavaElementType().hashCode();
54 }
55
56 @Override
57 protected boolean doCanAssignTo(TType lhs) {
58 switch (lhs.getKind()) {
59 case NULL_TYPE: return false;
60 case VOID_TYPE: return false;
61 case PRIMITIVE_TYPE: return canAssignToPrimitive((PrimitiveType)lhs);
62
63 case ARRAY_TYPE: return false;
64
65 case STANDARD_TYPE: return canAssignToStandardType((StandardType)lhs);
66 case GENERIC_TYPE: return false;
67 case PARAMETERIZED_TYPE: return isSubType((HierarchyType)lhs);
68 case RAW_TYPE: return isSubType((HierarchyType)lhs);
69
70 case UNBOUND_WILDCARD_TYPE:
71 case SUPER_WILDCARD_TYPE:
72 case EXTENDS_WILDCARD_TYPE:
73 return ((WildcardType)lhs).checkAssignmentBound(this);
74
75 case TYPE_VARIABLE: return false;
76
77 case CAPTURE_TYPE:
78 return ((CaptureType)lhs).checkLowerBound(this);
79 }
80 return false;
81 }
82
83 private boolean canAssignToPrimitive(PrimitiveType type) {
84 PrimitiveType source= getEnvironment().createUnBoxed(this);
85 return source != null && source.canAssignTo(type);
86 }
87
88 @Override
89 public String getName() {
90 return getJavaElementType().getElementName();
91 }
92
93 @Override
94 protected String getPlainPrettySignature() {
95 return getJavaElementType().getFullyQualifiedName('.');
96 }
97}