blob: 3203638062af5e33543905c279b5e134d5edf35e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
/*******************************************************************************
* Copyright (c) 2005, 2007 BEA Systems, Inc.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* tyeung@bea.com - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.apt.core.internal.type;
import com.sun.mirror.declaration.AnnotationTypeDeclaration;
import com.sun.mirror.declaration.ClassDeclaration;
import com.sun.mirror.declaration.InterfaceDeclaration;
import com.sun.mirror.declaration.TypeDeclaration;
import com.sun.mirror.type.AnnotationType;
import com.sun.mirror.type.ArrayType;
import com.sun.mirror.type.ClassType;
import com.sun.mirror.type.DeclaredType;
import com.sun.mirror.type.InterfaceType;
import com.sun.mirror.type.ReferenceType;
import com.sun.mirror.type.TypeMirror;
import com.sun.mirror.util.TypeVisitor;
import java.util.Collection;
import java.util.Collections;
import org.eclipse.jdt.apt.core.internal.declaration.EclipseMirrorType;
import org.eclipse.jdt.apt.core.internal.env.BaseProcessorEnv;
import org.eclipse.jdt.core.dom.ITypeBinding;
/**
* This is the error type marker
*/
public abstract class ErrorType implements DeclaredType, ReferenceType, EclipseMirrorType
{
final String _name;
ErrorType(final String name){
_name = name;
}
@Override
public Collection<TypeMirror> getActualTypeArguments(){ return Collections.emptyList(); }
@Override
public DeclaredType getContainingType(){ return null; }
@Override
public String toString(){ return _name; }
@Override
public void accept(TypeVisitor visitor)
{
visitor.visitTypeMirror(this);
}
@Override
public Collection<InterfaceType> getSuperinterfaces(){ return Collections.emptyList(); }
@Override
public MirrorKind kind(){ return MirrorKind.TYPE_ERROR; }
@Override
public BaseProcessorEnv getEnvironment(){ return null; }
public static final class ErrorClass extends ErrorType implements ClassType
{
public ErrorClass(final String name){ super(name); }
@Override
public void accept(TypeVisitor visitor)
{
visitor.visitClassType(this);
}
@Override
public ClassType getSuperclass()
{
return null;
}
@Override
public ClassDeclaration getDeclaration(){ return null; }
}
public static class ErrorInterface extends ErrorType implements InterfaceType
{
public ErrorInterface(final String name){ super(name); }
@Override
public void accept(TypeVisitor visitor)
{
visitor.visitInterfaceType(this);
}
@Override
public InterfaceDeclaration getDeclaration(){ return null; }
}
public static final class ErrorAnnotation extends ErrorInterface implements AnnotationType
{
public ErrorAnnotation(final String name){ super(name); }
@Override
public void accept(TypeVisitor visitor)
{
visitor.visitAnnotationType(this);
}
@Override
public AnnotationTypeDeclaration getDeclaration(){ return null; }
}
public static final class ErrorArrayType extends ErrorType implements ArrayType
{
private final int _dimension;
public ErrorArrayType(final String name, final int dimension )
{
super(name);
_dimension = dimension;
}
@Override
public void accept(TypeVisitor visitor)
{
visitor.visitArrayType(this);
}
@Override
public TypeDeclaration getDeclaration() { return null; }
@Override
public TypeMirror getComponentType() {
return new ErrorClass(_name);
}
@Override
public String toString()
{
final StringBuilder buffer = new StringBuilder();
buffer.append(_name);
for( int i=0; i<_dimension; i++ )
buffer.append("[]"); //$NON-NLS-1$
return buffer.toString();
}
}
@Override
public ITypeBinding getTypeBinding() {
return null;
}
@Override
public boolean isAssignmentCompatible(EclipseMirrorType left) {
return false;
}
@Override
public boolean isSubTypeCompatible(EclipseMirrorType type) {
return false;
}
}
|