Java 类javax.lang.model.type.WildcardType 实例源码
项目:dew
文件:TypeUtilities.java
@Override
public StringBuilder visitWildcard(WildcardType t, Boolean p) {
int len = DEFAULT_VALUE.length();
DEFAULT_VALUE.append("?"); //NOI18N
TypeMirror bound = t.getSuperBound();
if (bound == null) {
bound = t.getExtendsBound();
if (bound != null) {
DEFAULT_VALUE.append(" extends "); //NOI18N
if (bound.getKind() == TypeKind.WILDCARD)
bound = ((WildcardType)bound).getSuperBound();
visit(bound, p);
} else if (len == 0) {
bound = getBound(t);
if (bound != null && (bound.getKind() != TypeKind.DECLARED || !((TypeElement)((DeclaredType)bound).asElement()).getQualifiedName().contentEquals("java.lang.Object"))) { //NOI18N
DEFAULT_VALUE.append(" extends "); //NOI18N
visit(bound, p);
}
}
} else {
DEFAULT_VALUE.append(" super "); //NOI18N
visit(bound, p);
}
return DEFAULT_VALUE;
}
项目:incubator-netbeans
文件:JavaSymbolProvider.java
@Override
public StringBuilder visitWildcard(WildcardType t, Boolean p) {
int len = DEFAULT_VALUE.length();
DEFAULT_VALUE.append("?"); //NOI18N
TypeMirror bound = t.getSuperBound();
if (bound == null) {
bound = t.getExtendsBound();
if (bound != null) {
DEFAULT_VALUE.append(" extends "); //NOI18N
if (bound.getKind() == TypeKind.WILDCARD) {
bound = ((WildcardType)bound).getSuperBound();
}
visit(bound, p);
} else if (len == 0) {
bound = SourceUtils.getBound(t);
if (bound != null && (bound.getKind() != TypeKind.DECLARED || !((TypeElement)((DeclaredType)bound).asElement()).getQualifiedName().contentEquals("java.lang.Object"))) { //NOI18N
DEFAULT_VALUE.append(" extends "); //NOI18N
visit(bound, p);
}
}
} else {
DEFAULT_VALUE.append(" super "); //NOI18N
visit(bound, p);
}
return DEFAULT_VALUE;
}
项目:incubator-netbeans
文件:TypeUtilities.java
private static TypeMirror resolveCapturedType(CompilationInfo info, TypeMirror tm) {
if (tm == null) {
return tm;
}
if (tm.getKind() == TypeKind.ERROR) {
tm = info.getTrees().getOriginalType((ErrorType) tm);
}
TypeMirror type = resolveCapturedTypeInt(info, tm);
if (type == null) {
return tm;
}
if (type.getKind() == TypeKind.WILDCARD) {
TypeMirror tmirr = ((WildcardType) type).getExtendsBound();
if (tmirr != null)
return tmirr;
else { //no extends, just '?'
TypeElement te = info.getElements().getTypeElement("java.lang.Object"); // NOI18N
return te == null ? null : te.asType();
}
}
return type;
}
项目:incubator-netbeans
文件:TypeUtilities.java
@Override
public StringBuilder visitWildcard(WildcardType t, Boolean p) {
int len = DEFAULT_VALUE.length();
DEFAULT_VALUE.append("?"); //NOI18N
TypeMirror bound = t.getSuperBound();
if (bound == null) {
bound = t.getExtendsBound();
if (bound != null) {
DEFAULT_VALUE.append(" extends "); //NOI18N
if (bound.getKind() == TypeKind.WILDCARD)
bound = ((WildcardType)bound).getSuperBound();
visit(bound, p);
} else if (len == 0) {
bound = SourceUtils.getBound(t);
if (bound != null && (bound.getKind() != TypeKind.DECLARED || !((TypeElement)((DeclaredType)bound).asElement()).getQualifiedName().contentEquals("java.lang.Object"))) { //NOI18N
DEFAULT_VALUE.append(" extends "); //NOI18N
visit(bound, p);
}
}
} else {
DEFAULT_VALUE.append(" super "); //NOI18N
visit(bound, p);
}
return DEFAULT_VALUE;
}
项目:incubator-netbeans
文件:SourceUtils.java
/**
* Resolves all captured type variables to their respective wildcards in the given type.
* @param info CompilationInfo over which the method should work
* @param tm type to resolve
* @return resolved type
*
* @since 0.136
*/
public static TypeMirror resolveCapturedType(CompilationInfo info, TypeMirror tm) {
TypeMirror type = resolveCapturedTypeInt(info, tm);
if (type.getKind() == TypeKind.WILDCARD) {
TypeMirror tmirr = ((WildcardType) type).getExtendsBound();
tmirr = tmirr != null ? tmirr : ((WildcardType) type).getSuperBound();
if (tmirr != null) {
return tmirr;
} else { //no extends, just '?
TypeElement tel = info.getElements().getTypeElement("java.lang.Object"); // NOI18N
return tel == null ? null : tel.asType();
}
}
return type;
}
项目:incubator-netbeans
文件:SourceUtils.java
/**
* @since 0.24
*/
public static WildcardType resolveCapturedType(TypeMirror type) {
if (type instanceof Type.CapturedType) {
return ((Type.CapturedType) type).wildcard;
} else {
return null;
}
}
项目:incubator-netbeans
文件:SpringXMLConfigCompletionItem.java
@Override
public StringBuilder visitWildcard(WildcardType t, Boolean p) {
DEFAULT_VALUE.append("?"); //NOI18N
TypeMirror bound = t.getSuperBound();
if (bound == null) {
bound = t.getExtendsBound();
if (bound != null) {
DEFAULT_VALUE.append(" extends "); //NOI18N
if (bound.getKind() == TypeKind.WILDCARD)
bound = ((WildcardType)bound).getSuperBound();
visit(bound, p);
} else {
bound = SourceUtils.getBound(t);
if (bound != null && (bound.getKind() != TypeKind.DECLARED || !((TypeElement)((DeclaredType)bound).asElement()).getQualifiedName().contentEquals("java.lang.Object"))) { //NOI18N
DEFAULT_VALUE.append(" extends "); //NOI18N
visit(bound, p);
}
}
} else {
DEFAULT_VALUE.append(" super "); //NOI18N
visit(bound, p);
}
return DEFAULT_VALUE;
}
项目:incubator-netbeans
文件:BeanModelBuilder.java
private void addDependency(TypeMirror tm) {
if (tm.getKind() == TypeKind.ARRAY) {
addDependency(((ArrayType)tm).getComponentType());
} else if (tm.getKind() == TypeKind.WILDCARD) {
WildcardType wt = (WildcardType)tm;
TypeMirror bound = wt.getSuperBound();
if (bound == null) {
bound = wt.getExtendsBound();
}
addDependency(bound);
} else if (tm.getKind() == TypeKind.DECLARED) {
addDependency(
((TypeElement)compilationInfo.getTypes().asElement(tm)).getQualifiedName().toString()
);
}
}
项目:incubator-netbeans
文件:Utilities.java
public static TypeMirror resolveCapturedType(CompilationInfo info, TypeMirror tm) {
if (tm == null) {
return tm;
}
if (tm.getKind() == TypeKind.ERROR) {
tm = info.getTrees().getOriginalType((ErrorType) tm);
}
TypeMirror type = resolveCapturedTypeInt(info, tm);
if (type == null) {
return tm;
}
if (type.getKind() == TypeKind.WILDCARD) {
TypeMirror tmirr = ((WildcardType) type).getExtendsBound();
if (tmirr != null)
return tmirr;
else { //no extends, just '?'
TypeElement te = info.getElements().getTypeElement("java.lang.Object"); // NOI18N
return te == null ? null : te.asType();
}
}
return type;
}
项目:incubator-netbeans
文件:Utilities.java
private static void containedTypevarsRecursively(@NonNull TypeMirror tm, @NonNull Collection<TypeVariable> typeVars) {
switch (tm.getKind()) {
case TYPEVAR:
typeVars.add((TypeVariable) tm);
break;
case DECLARED:
DeclaredType type = (DeclaredType) tm;
for (TypeMirror t : type.getTypeArguments()) {
containedTypevarsRecursively(t, typeVars);
}
break;
case ARRAY:
containedTypevarsRecursively(((ArrayType) tm).getComponentType(), typeVars);
break;
case WILDCARD:
if (((WildcardType) tm).getExtendsBound() != null) {
containedTypevarsRecursively(((WildcardType) tm).getExtendsBound(), typeVars);
}
if (((WildcardType) tm).getSuperBound() != null) {
containedTypevarsRecursively(((WildcardType) tm).getSuperBound(), typeVars);
}
break;
}
}
项目:incubator-netbeans
文件:ExpectedTypeResolver.java
private TypeMirror decapture(TypeMirror argm) {
if (argm instanceof CapturedType) {
argm = ((CapturedType)argm).wildcard;
}
if (argm.getKind() == TypeKind.WILDCARD) {
WildcardType wctype = (WildcardType)argm;
TypeMirror bound = wctype.getExtendsBound();
if (bound != null) {
return bound;
}
bound = wctype.getSuperBound();
if (bound != null) {
return bound;
}
return null;
}
return argm;
}
项目:incubator-netbeans
文件:AutoImport.java
@Override
public Void visitWildcard(WildcardType type, Void p) {
builder.append("?"); //NOI18N
TypeMirror bound = type.getSuperBound();
if (bound == null) {
bound = type.getExtendsBound();
if (bound != null) {
builder.append(" extends "); //NOI18N
if (bound.getKind() == TypeKind.WILDCARD)
bound = ((WildcardType)bound).getSuperBound();
visit(bound);
}
} else {
builder.append(" super "); //NOI18N
visit(bound);
}
return null;
}
项目:incubator-netbeans
文件:MethodModelSupport.java
@Override
public StringBuilder visitWildcard(WildcardType t, Boolean p) {
int len = DEFAULT_VALUE.length();
DEFAULT_VALUE.append("?"); //NOI18N
TypeMirror bound = t.getSuperBound();
if (bound == null) {
bound = t.getExtendsBound();
if (bound != null) {
DEFAULT_VALUE.append(" extends "); //NOI18N
if (bound.getKind() == TypeKind.WILDCARD)
bound = ((WildcardType)bound).getSuperBound();
visit(bound, p);
} else if (len == 0) {
bound = SourceUtils.getBound(t);
if (bound != null && (bound.getKind() != TypeKind.DECLARED || !((TypeElement)((DeclaredType)bound).asElement()).getQualifiedName().contentEquals("java.lang.Object"))) { //NOI18N
DEFAULT_VALUE.append(" extends "); //NOI18N
visit(bound, p);
}
}
} else {
DEFAULT_VALUE.append(" super "); //NOI18N
visit(bound, p);
}
return DEFAULT_VALUE;
}
项目:openjdk-jdk10
文件:GeneratedPlugin.java
static String getErasedType(TypeMirror type) {
switch (type.getKind()) {
case DECLARED:
DeclaredType declared = (DeclaredType) type;
TypeElement element = (TypeElement) declared.asElement();
return element.getQualifiedName().toString();
case TYPEVAR:
return getErasedType(((TypeVariable) type).getUpperBound());
case WILDCARD:
return getErasedType(((WildcardType) type).getExtendsBound());
case ARRAY:
return getErasedType(((ArrayType) type).getComponentType()) + "[]";
default:
return type.toString();
}
}
项目:openjdk-jdk10
文件:GeneratedPlugin.java
static boolean hasUncheckedWarning(TypeMirror type) {
switch (type.getKind()) {
case DECLARED:
DeclaredType declared = (DeclaredType) type;
for (TypeMirror typeParam : declared.getTypeArguments()) {
if (hasUncheckedWarning(typeParam)) {
return true;
}
}
return false;
case TYPEVAR:
return true;
case WILDCARD:
return ((WildcardType) type).getExtendsBound() != null;
case ARRAY:
return hasUncheckedWarning(((ArrayType) type).getComponentType());
default:
return false;
}
}
项目:openjdk-jdk10
文件:PluginGenerator.java
private static void appendSimpleTypeName(StringBuilder ret, TypeMirror type) {
switch (type.getKind()) {
case DECLARED:
DeclaredType declared = (DeclaredType) type;
TypeElement element = (TypeElement) declared.asElement();
ret.append(element.getSimpleName());
break;
case TYPEVAR:
appendSimpleTypeName(ret, ((TypeVariable) type).getUpperBound());
break;
case WILDCARD:
appendSimpleTypeName(ret, ((WildcardType) type).getExtendsBound());
break;
case ARRAY:
appendSimpleTypeName(ret, ((ArrayType) type).getComponentType());
ret.append("Array");
break;
default:
ret.append(type);
}
}
项目:graal-core
文件:GeneratedPlugin.java
static String getErasedType(TypeMirror type) {
switch (type.getKind()) {
case DECLARED:
DeclaredType declared = (DeclaredType) type;
TypeElement element = (TypeElement) declared.asElement();
return element.getQualifiedName().toString();
case TYPEVAR:
return getErasedType(((TypeVariable) type).getUpperBound());
case WILDCARD:
return getErasedType(((WildcardType) type).getExtendsBound());
case ARRAY:
return getErasedType(((ArrayType) type).getComponentType()) + "[]";
default:
return type.toString();
}
}
项目:graal-core
文件:GeneratedPlugin.java
static boolean hasUncheckedWarning(TypeMirror type) {
switch (type.getKind()) {
case DECLARED:
DeclaredType declared = (DeclaredType) type;
for (TypeMirror typeParam : declared.getTypeArguments()) {
if (hasUncheckedWarning(typeParam)) {
return true;
}
}
return false;
case TYPEVAR:
return true;
case WILDCARD:
return ((WildcardType) type).getExtendsBound() != null;
case ARRAY:
return hasUncheckedWarning(((ArrayType) type).getComponentType());
default:
return false;
}
}
项目:graal-core
文件:PluginGenerator.java
private static void appendSimpleTypeName(StringBuilder ret, TypeMirror type) {
switch (type.getKind()) {
case DECLARED:
DeclaredType declared = (DeclaredType) type;
TypeElement element = (TypeElement) declared.asElement();
ret.append(element.getSimpleName());
break;
case TYPEVAR:
appendSimpleTypeName(ret, ((TypeVariable) type).getUpperBound());
break;
case WILDCARD:
appendSimpleTypeName(ret, ((WildcardType) type).getExtendsBound());
break;
case ARRAY:
appendSimpleTypeName(ret, ((ArrayType) type).getComponentType());
ret.append("Array");
break;
default:
ret.append(type);
}
}
项目:bsoneer
文件:AnnotationInfo.java
public AnnotationInfo(TypeMirror tm, String idProperty, boolean keepNonIdProperty,
TypeMirror idGeneratorType, boolean customGenerator) {
this.tm = tm;
if (tm.getKind() != TypeKind.DECLARED) {
throw new RuntimeException(tm + " should be declared");
}
DeclaredType dt = (DeclaredType) tm;
List<? extends TypeMirror> typeArguments = dt.getTypeArguments();
if (typeArguments != null) {
for (TypeMirror tms : typeArguments) {
if (tms instanceof TypeVariable) {
typeVariables.add((TypeVariable) tms);
} else if (tms instanceof WildcardType) {
typeWildcards.add((WildcardType) tms);
}
}
}
this.idGeneratorType = idGeneratorType;
this.customGenerator = customGenerator;
this.idProperty = Strings.nullToEmpty(idProperty).trim();
this.keepNonIdProperty = keepNonIdProperty;
}
项目:java-types
文件:AbstractTypes.java
@Override
public Void visitWildcard(WildcardType wildcardTypeArgument, @Nullable StringBuilder stringBuilder) {
assert stringBuilder != null;
stringBuilder.append('?');
@Nullable TypeMirror extendsBound = wildcardTypeArgument.getExtendsBound();
if (extendsBound != null) {
stringBuilder.append(" extends ");
extendsBound.accept(this, stringBuilder);
}
@Nullable TypeMirror superBound = wildcardTypeArgument.getSuperBound();
if (superBound != null) {
stringBuilder.append(" super ");
superBound.accept(this, stringBuilder);
}
return null;
}
项目:java-types
文件:AbstractTypesContract.java
/**
* Verifies {@link AbstractTypes#substitute(TypeMirror, Map)}.
*/
@Test
public void substitute() {
TypeElement diamondADeclaration = element(DiamondA.class);
Map<TypeParameterElement, TypeMirror> substitutions = new LinkedHashMap<>();
substitutions.put(diamondADeclaration.getTypeParameters().get(0), type(String.class));
DeclaredType expectedType = types.getDeclaredType(
(DeclaredType) type(getClass()),
diamondADeclaration,
type(String.class), diamondADeclaration.getTypeParameters().get(1).asType()
);
assertEquals(types.substitute(diamondADeclaration.asType(), substitutions), expectedType);
WildcardType extendsStringWildcardArgument = types.getWildcardType(type(String.class), null);
assertEquals(types.substitute(extendsStringWildcardArgument, substitutions), extendsStringWildcardArgument);
}
项目:static-mustache
文件:RenderingCodeGenerator.java
RenderingContext createInvertedRenderingContext(JavaExpression expression, RenderingContext enclosing) throws TypeException {
if (expression.type() instanceof WildcardType) {
WildcardType wildcardType = (WildcardType)expression.type();
return createRenderingContext(javaModel.expression(expression.text(), wildcardType.getExtendsBound()), enclosing);
} else if (javaModel.isSameType(expression.type(), knownTypes._boolean)) {
return new BooleanRenderingContext("!(" + expression.text() + ")", enclosing);
} else if (javaModel.isSubtype(expression.type(), javaModel.getDeclaredType(knownTypes._Boolean))) {
return new BooleanRenderingContext("(" + expression.text() + ") == null || !(" + expression.text() + ")", enclosing);
} else if (expression.type() instanceof DeclaredType) {
return new BooleanRenderingContext("(" + expression.text() + ") == null", enclosing);
} else if (expression.type() instanceof ArrayType) {
return new BooleanRenderingContext("(" + expression.text() + ") == null || (" + expression.text() + ").length == 0", enclosing);
} else
throw new TypeException(MessageFormat.format("Can''t invert {0} expression of {1} type",
expression.text(),
expression.type()));
}
项目:revapi
文件:Util.java
@Override
public Void visitWildcard(WildcardType t, StringBuilderAndState<TypeMirror> state) {
state.bld.append("?");
TypeMirror superBound = IgnoreCompletionFailures.in(t::getSuperBound);
if (superBound != null) {
state.bld.append(" super ");
superBound.accept(this, state);
}
TypeMirror extendsBound = IgnoreCompletionFailures.in(t::getExtendsBound);
if (extendsBound != null) {
state.bld.append(" extends ");
extendsBound.accept(this, state);
}
return null;
}
项目:hexa.tools
文件:TypeSimplifier.java
@Override
public StringBuilder visitWildcard( WildcardType type, StringBuilder sb )
{
sb.append( "?" );
TypeMirror extendsBound = type.getExtendsBound();
TypeMirror superBound = type.getSuperBound();
if( superBound != null )
{
sb.append( " super " );
visit( superBound, sb );
}
else if( extendsBound != null )
{
sb.append( " extends " );
visit( extendsBound, sb );
}
return sb;
}
项目:checker-framework
文件:TypesUtils.java
/**
* If the argument is a bounded TypeVariable or WildcardType,
* return its non-variable, non-wildcard upper bound. Otherwise,
* return the type itself.
*
* @param type a type
* @return the non-variable, non-wildcard upper bound of a type,
* if it has one, or itself if it has no bounds
*/
public static TypeMirror upperBound(TypeMirror type) {
do {
if (type instanceof TypeVariable) {
TypeVariable tvar = (TypeVariable) type;
if (tvar.getUpperBound() != null) {
type = tvar.getUpperBound();
} else {
break;
}
} else if (type instanceof WildcardType) {
WildcardType wc = (WildcardType) type;
if (wc.getExtendsBound() != null) {
type = wc.getExtendsBound();
} else {
break;
}
} else {
break;
}
} while (true);
return type;
}
项目:checker-framework
文件:AnnotatedTypeMirror.java
/**
* @return the upper bound of this wildcard. If no upper bound is
* explicitly declared, the upper bound of the type variable to which
* the wildcard is bound is used.
*/
public AnnotatedTypeMirror getExtendsBound() {
if (extendsBound == null) {
// lazy init
TypeMirror extType = ((WildcardType)actualType).getExtendsBound();
if (extType == null) {
// Take the upper bound of the type variable the wildcard is bound to.
com.sun.tools.javac.code.Type.WildcardType wct = (com.sun.tools.javac.code.Type.WildcardType) actualType;
com.sun.tools.javac.util.Context ctx = ((com.sun.tools.javac.processing.JavacProcessingEnvironment) atypeFactory.processingEnv).getContext();
extType = com.sun.tools.javac.code.Types.instance(ctx).upperBound(wct);
}
AnnotatedTypeMirror annoexttype = createType(extType, atypeFactory);
// annoexttype.setElement(this.element);
setExtendsBound(annoexttype);
fixupBoundAnnotations();
}
return this.extendsBound;
}
项目:vertx-codetrans
文件:CodeTranslator.java
public CodeTranslator(ProcessingEnvironment processingEnv) {
this.trees = Trees.instance(processingEnv);
this.SystemType = (DeclaredType) processingEnv.getElementUtils().getTypeElement(System.class.getName()).asType();
this.ThrowableType = (DeclaredType) processingEnv.getElementUtils().getTypeElement(Throwable.class.getName()).asType();
Context context = ((JavacProcessingEnvironment)processingEnv).getContext();
this.attr = Attr.instance(context);
this.typeUtils = processingEnv.getTypeUtils();
this.factory = new TypeMirrorFactory(processingEnv.getElementUtils(), processingEnv.getTypeUtils()) {
@Override
public TypeInfo create(TypeUse use, TypeMirror type) {
if (type.getKind() == TypeKind.WILDCARD) {
WildcardType wildcardType = (WildcardType) type;
if (wildcardType.getExtendsBound() != null) {
return super.create(wildcardType.getExtendsBound());
} else if (wildcardType.getSuperBound() != null) {
return super.create(use, wildcardType.getSuperBound());
}
}
return super.create(use, type);
}
};
}
项目:bazel
文件:TypesUtils.java
/**
* If the argument is a bounded TypeVariable or WildcardType, return its non-variable,
* non-wildcard upper bound. Otherwise, return the type itself.
*
* @param type a type
* @return the non-variable, non-wildcard upper bound of a type, if it has one, or itself if it
* has no bounds
*/
public static TypeMirror upperBound(TypeMirror type) {
do {
if (type instanceof TypeVariable) {
TypeVariable tvar = (TypeVariable) type;
if (tvar.getUpperBound() != null) {
type = tvar.getUpperBound();
} else {
break;
}
} else if (type instanceof WildcardType) {
WildcardType wc = (WildcardType) type;
if (wc.getExtendsBound() != null) {
type = wc.getExtendsBound();
} else {
break;
}
} else {
break;
}
} while (true);
return type;
}
项目:bazel
文件:TypesUtils.java
/**
* Version of com.sun.tools.javac.code.Types.wildUpperBound(Type) that works with both jdk8
* (called upperBound there) and jdk8u.
*/
// TODO: contrast to upperBound.
public static Type wildUpperBound(ProcessingEnvironment env, TypeMirror tm) {
Type t = (Type) tm;
if (t.hasTag(TypeTag.WILDCARD)) {
Context context = ((JavacProcessingEnvironment) env).getContext();
Type.WildcardType w = (Type.WildcardType) TypeAnnotationUtils.unannotatedType(t);
if (w.isSuperBound()) {
Symtab syms = Symtab.instance(context);
return w.bound == null ? syms.objectType : w.bound.bound;
} else {
return wildUpperBound(env, w.type);
}
} else {
return TypeAnnotationUtils.unannotatedType(t);
}
}
项目:bazel
文件:TypesUtils.java
/**
* Given a bounded type (wildcard or typevar) get the concrete type of its upper bound. If the
* bounded type extends other bounded types, this method will iterate through their bounds until
* a class, interface, or intersection is found.
*
* @return a type that is not a wildcard or typevar, or null if this type is an unbounded
* wildcard
*/
public static TypeMirror findConcreteUpperBound(final TypeMirror boundedType) {
TypeMirror effectiveUpper = boundedType;
outerLoop:
while (true) {
switch (effectiveUpper.getKind()) {
case WILDCARD:
effectiveUpper =
((javax.lang.model.type.WildcardType) effectiveUpper).getExtendsBound();
if (effectiveUpper == null) {
return null;
}
break;
case TYPEVAR:
effectiveUpper = ((TypeVariable) effectiveUpper).getUpperBound();
break;
default:
break outerLoop;
}
}
return effectiveUpper;
}
项目:spezi-mvc
文件:ModelProcessor.java
private void addTypes(Set<String> imports, TypeMirror type) {
if (type instanceof DeclaredType) {
DeclaredType declaredType = (DeclaredType) type;
Element declaredElement = declaredType.asElement();
imports.add(declaredElement.toString());
for (TypeMirror typeArgument : declaredType.getTypeArguments()) {
addTypes(imports, typeArgument);
}
} else if (type instanceof WildcardType) {
WildcardType wildcardType = (WildcardType) type;
if (wildcardType.getExtendsBound() != null) {
addTypes(imports, wildcardType.getExtendsBound());
}
if (wildcardType.getSuperBound() != null) {
addTypes(imports, wildcardType.getSuperBound());
}
} else if (type instanceof ArrayType) {
ArrayType arrayType = (ArrayType) type;
addTypes(imports, arrayType.getComponentType());
}
}
项目:buck
文件:TypeScanner8.java
@Override
@Nullable
public R visitWildcard(WildcardType t, P p) {
R result = defaultValue;
TypeMirror extendsBound = t.getExtendsBound();
if (extendsBound != null) {
result = scan(extendsBound, p);
}
TypeMirror superBound = t.getSuperBound();
if (superBound != null) {
result = scan(superBound, p);
}
return result;
}
项目:buck
文件:SignatureFactory.java
@Override
public Void visitWildcard(WildcardType t, SignatureVisitor visitor) {
TypeMirror bound = t.getExtendsBound();
if (bound != null) {
bound.accept(this, visitor.visitTypeArgument(SignatureVisitor.EXTENDS));
return null;
}
bound = t.getSuperBound();
if (bound != null) {
bound.accept(this, visitor.visitTypeArgument(SignatureVisitor.SUPER));
return null;
}
visitor.visitTypeArgument();
return null;
}
项目:query-utils
文件:ConstructorsAsJpaProjections.java
private static final boolean isId(VariableElement argument, Elements elements, Types types, TypeElement wrapperType) {
TypeMirror innerInnerType;
String innerTypeName = containedType(argument);
if (innerTypeName.replaceFirst("<.*", "").equals(Id.class.getName())) {
String innerInnerTypeName = containedType(innerTypeName).replaceAll("<.*", "");
if (innerInnerTypeName.equals("?")) {
innerInnerType = types.getWildcardType(null, null);
} else {
innerInnerType = elements.getTypeElement(innerInnerTypeName).asType();
}
} else {
innerInnerType = types.getWildcardType(null, null);
}
TypeMirror idType = types.getDeclaredType(elements.getTypeElement(Id.class.getName()), innerInnerType);
WildcardType wildInnerType = types.getWildcardType(idType, null);
DeclaredType wholeType = types.getDeclaredType(wrapperType, wildInnerType);
return types.isAssignable(argument.asType(), wholeType);
}
项目:incubator-netbeans
文件:TypeMirrorHandle.java
@Override
public Void visitWildcardType(Type.WildcardType t, Void s) {
if (t.type instanceof PlaceholderType)
t.type = ((PlaceholderType)t.type).delegate;
else if (t.type != null)
t.type.accept(this, s);
if (t.bound != null)
t.bound.accept(this, s);
return null;
}
项目:incubator-netbeans
文件:AbstractTestGenerator.java
private TypeMirror getTypeMirror(WorkingCopy workingCopy, TypeMirror retType) {
if (retType.getKind() == TypeKind.DECLARED) {
List<? extends TypeMirror> typeArguments = ((DeclaredType) retType).getTypeArguments();
for (TypeMirror argument : typeArguments) {
if (argument.getKind() == TypeKind.WILDCARD) {
TypeMirror extendsBound = ((WildcardType) argument).getExtendsBound();
TypeMirror superBound = ((WildcardType) argument).getSuperBound();
if(extendsBound == null && superBound == null) {
return workingCopy.getTypes().erasure(retType);
}
if (extendsBound != null) {
if (shouldApplyErasure(extendsBound)) {
return workingCopy.getTypes().erasure(retType);
}
}
if (superBound != null) {
if (shouldApplyErasure(superBound)) {
return workingCopy.getTypes().erasure(retType);
}
}
} else if (argument.getKind() == TypeKind.DECLARED) {
if (((DeclaredType) argument).asElement().getModifiers().contains(Modifier.PRIVATE)) {
return workingCopy.getTypes().erasure(retType);
}
} else {
return workingCopy.getTypes().erasure(retType);
}
}
} else {
return workingCopy.getTypes().erasure(retType);
}
return retType;
}
项目:incubator-netbeans
文件:DeclaredTypeCollector.java
@Override
public Void visitWildcard(WildcardType t, Collection<DeclaredType> p) {
if (t.getExtendsBound() != null) {
visit(t.getExtendsBound(), p);
}
if (t.getSuperBound() != null) {
visit(t.getSuperBound(), p);
}
return DEFAULT_VALUE;
}
项目:incubator-netbeans
文件:Utilities.java
public static boolean containsErrorsRecursively(TypeMirror tm) {
switch (tm.getKind()) {
case ERROR:
return true;
case DECLARED:
DeclaredType type = (DeclaredType) tm;
for (TypeMirror t : type.getTypeArguments()) {
if (containsErrorsRecursively(t))
return true;
}
return false;
case ARRAY:
return containsErrorsRecursively(((ArrayType) tm).getComponentType());
case WILDCARD:
if (((WildcardType) tm).getExtendsBound() != null && containsErrorsRecursively(((WildcardType) tm).getExtendsBound())) {
return true;
}
if (((WildcardType) tm).getSuperBound() != null && containsErrorsRecursively(((WildcardType) tm).getSuperBound())) {
return true;
}
return false;
case OTHER:
return true;
default:
return false;
}
}
项目:vulture
文件:TypeUtils.java
public static boolean isParcelableArrayList(Types typeUtils, Elements elementUtils, Element element) {
TypeElement typeArrayList = elementUtils.getTypeElement(ArrayList.class.getName());
TypeElement typeParcelable = elementUtils.getTypeElement(Parcelable.class.getName());
WildcardType wildcardType = typeUtils.getWildcardType(typeParcelable.asType(), null);
DeclaredType declaredType = typeUtils.getDeclaredType(typeArrayList, wildcardType);
return typeUtils.isSubtype(element.asType(), declaredType);
}