Java 类javax.lang.model.type.NoType 实例源码

项目:manifold    文件:StructuralTypeEraser.java   
private Type eraseBound( Type t, Type bound )
{
  if( bound == null || bound instanceof NoType )
  {
    return bound;
  }

  Type erasedBound;
  if( bound.contains( t ) )
  {
    erasedBound = visit( _types.erasure( bound ) );
  }
  else
  {
    erasedBound = visit( bound );
  }
  return erasedBound;
}
项目:manifold    文件:SrcClassUtil.java   
private SrcType makeNestedType( Type type )
{
  String fqn = type.toString();
  Type enclosingType = type.getEnclosingType();
  SrcType srcType;
  if( enclosingType != null && !(enclosingType instanceof NoType) && fqn.length() > enclosingType.toString().length() )
  {
    String simpleName = fqn.substring( enclosingType.toString().length() + 1 );
    srcType = new SrcType( simpleName );
    srcType.setEnclosingType( makeNestedType( enclosingType ) );
  }
  else
  {
    srcType = new SrcType( fqn );
  }
  return srcType;
}
项目:manifold    文件:SrcClassUtil.java   
private SrcType makeTypeVarType( Symbol.TypeVariableSymbol typeVar )
{
  StringBuilder sb = new StringBuilder( typeVar.type.toString() );
  Type lowerBound = typeVar.type.getLowerBound();
  if( lowerBound != null && !(lowerBound instanceof NullType) )
  {
    sb.append( " super " ).append( lowerBound.toString() );
  }
  else
  {
    Type upperBound = typeVar.type.getUpperBound();
    if( upperBound != null && !(upperBound instanceof NoType) && !upperBound.toString().equals( Object.class.getName() ) )
    {
      sb.append( " extends " ).append( upperBound.toString() );
    }
  }
  return new SrcType( sb.toString() );
}
项目:sundrio    文件:ElementTo.java   
public TypeRef apply(TypeMirror item) {
    if (item instanceof NoType) {
        return new VoidRef();
    }

    Element element = CodegenContext.getContext().getTypes().asElement(item);
    TypeDef known = element != null ? CodegenContext.getContext().getDefinitionRepository().getDefinition(element.toString()) : null;

    if (known == null && element instanceof TypeElement) {
        known = TYPEDEF.apply((TypeElement) element);
    }
    TypeRef typeRef = item.accept(new TypeRefTypeVisitor(), 0);
    if (typeRef instanceof ClassRef && known != null) {
        return new ClassRefBuilder((ClassRef) typeRef).withDefinition(known).build();
    }
    return typeRef;
}
项目:lambdamatic-project    文件:ElementUtils.java   
/**
 * Checks if the given {@link Element} is, implements or extends the given target type.
 * 
 * @param type the element to analyze
 * @param targetType the type to check
 * @return <code>true</code> if the given {@link Element} corresponds to a type that implements
 *         {@link List}, <code>false</code> otherwise.
 */
public static boolean isAssignable(final DeclaredType type, final Class<?> targetType) {
  if (type instanceof NoType) {
    return false;
  }
  if (type.asElement().toString().equals(targetType.getName())) {
    return true;
  }
  final TypeElement element = (TypeElement) type.asElement();
  final boolean implementation = element.getInterfaces().stream()
      .filter(interfaceMirror -> interfaceMirror.getKind() == TypeKind.DECLARED)
      .map(interfaceMirror -> (DeclaredType) interfaceMirror)
      .map(declaredInterface -> declaredInterface.asElement())
      .anyMatch(declaredElement -> declaredElement.toString().equals(targetType.getName()));
  if (implementation) {
    return true;
  }
  if (element.getSuperclass().getKind() == TypeKind.DECLARED) {
    return isAssignable((DeclaredType)(element.getSuperclass()), targetType);
  } 
  return false;
}
项目:AbstractViewAdapter    文件:JavaLangUtils.java   
/**
 * Check if the given Element extends a given type. A fully qualified name of another type
 * to check for must be given. Throws an IllegalArgumentException if Element is not an instance of
 * TypeElement. The method will recursively climb up the type hierarchy until it reaches either
 * the desired type or a root type.
 *
 * @param element   element to perform the check for
 * @param superType fully qualified name of a type
 * @return true if given element represents a type that extends another type with the given fully
 * qualified name
 * @throws java.lang.IllegalArgumentException if element is not an instance of TypeElement
 */
public static boolean checkIfExtends(Element element, String superType) {
    if (!(element instanceof TypeElement)) {
        throw new IllegalArgumentException("Can only check if TypeElement extends a certain superType");
    }

    TypeElement typeElement = (TypeElement) element;

    if (typeElement.getSuperclass() instanceof NoType) {
        return false;
    } else if (((DeclaredType) typeElement.getSuperclass()).asElement().toString().equals(superType)) {
        return true;
    } else {
        return checkIfExtends(((DeclaredType) typeElement.getSuperclass()).asElement(), superType);
    }
}
项目:louie    文件:TypeUtils.java   
public static boolean instanceOf(Types types, TypeMirror type, String className) {
    //System.out.println("instanceOf : "+type.toString()+":"+className);

    String baseType = type.toString();
    if (type instanceof DeclaredType) {
        baseType = ((DeclaredType)type).asElement().toString();
    }
    //System.out.println("BaseType: "+baseType);

    if (baseType.equals(className)) {
        return true;
    }
    TypeElement elem = (TypeElement) types.asElement(type);
    for (TypeMirror i : elem.getInterfaces()) {
        if (instanceOf(types,i,className)) {
            return true;
        }
    }

    TypeMirror sup =  elem.getSuperclass();
    if (sup instanceof NoType) {
        return false;
    }
    return (instanceOf(types,sup,className));
}
项目:buck    文件:TreeBackedTypeElementTest.java   
@Test
public void testAsType() throws IOException {
  compile("class Foo { }");

  TypeElement fooElement = elements.getTypeElement("Foo");
  TypeMirror fooTypeMirror = fooElement.asType();

  assertEquals(TypeKind.DECLARED, fooTypeMirror.getKind());
  DeclaredType fooDeclaredType = (DeclaredType) fooTypeMirror;
  assertSame(fooElement, fooDeclaredType.asElement());
  assertEquals(0, fooDeclaredType.getTypeArguments().size());

  TypeMirror enclosingType = fooDeclaredType.getEnclosingType();
  assertEquals(TypeKind.NONE, enclosingType.getKind());
  assertTrue(enclosingType instanceof NoType);
}
项目:buck    文件:TreeBackedTypeElementTest.java   
@Test
public void testAsTypeGeneric() throws IOException {
  compile("class Foo<T> { }");

  TypeElement fooElement = elements.getTypeElement("Foo");
  TypeMirror fooTypeMirror = fooElement.asType();

  assertEquals(TypeKind.DECLARED, fooTypeMirror.getKind());
  DeclaredType fooDeclaredType = (DeclaredType) fooTypeMirror;
  assertSame(fooElement, fooDeclaredType.asElement());
  List<? extends TypeMirror> typeArguments = fooDeclaredType.getTypeArguments();
  assertEquals("T", ((TypeVariable) typeArguments.get(0)).asElement().getSimpleName().toString());
  assertEquals(1, typeArguments.size());

  TypeMirror enclosingType = fooDeclaredType.getEnclosingType();
  assertEquals(TypeKind.NONE, enclosingType.getKind());
  assertTrue(enclosingType instanceof NoType);
}
项目:buck    文件:TreeBackedTypesTest.java   
@Test
public void testGetDeclaredTypeTopLevelNoGenerics() throws IOException {
  compile("class Foo { }");

  TypeElement fooElement = elements.getTypeElement("Foo");
  TypeMirror fooTypeMirror = types.getDeclaredType(fooElement);

  assertEquals(TypeKind.DECLARED, fooTypeMirror.getKind());
  DeclaredType fooDeclaredType = (DeclaredType) fooTypeMirror;
  assertNotSame(fooElement.asType(), fooDeclaredType);
  assertSame(fooElement, fooDeclaredType.asElement());
  assertEquals(0, fooDeclaredType.getTypeArguments().size());

  TypeMirror enclosingType = fooDeclaredType.getEnclosingType();
  assertEquals(TypeKind.NONE, enclosingType.getKind());
  assertTrue(enclosingType instanceof NoType);
}
项目:buck    文件:TreeBackedTypesTest.java   
@Test
public void testGetDeclaredTypeTopLevelRawType() throws IOException {
  compile("class Foo<T> { }");

  TypeElement fooElement = elements.getTypeElement("Foo");
  TypeMirror fooTypeMirror = types.getDeclaredType(fooElement);

  assertEquals(TypeKind.DECLARED, fooTypeMirror.getKind());
  DeclaredType fooDeclaredType = (DeclaredType) fooTypeMirror;
  assertNotSame(fooElement.asType(), fooDeclaredType);
  assertSame(fooElement, fooDeclaredType.asElement());
  assertEquals(0, fooDeclaredType.getTypeArguments().size());

  TypeMirror enclosingType = fooDeclaredType.getEnclosingType();
  assertEquals(TypeKind.NONE, enclosingType.getKind());
  assertTrue(enclosingType instanceof NoType);
}
项目:SyncGenerator    文件:AnnotatedType.java   
private Set<MethodSpec> getMethods(Types typeUtils) {
    Set<MethodSpec> methods = new HashSet<>();

    MethodSpec constructor = MethodSpec.constructorBuilder()
            .addModifiers(Modifier.PUBLIC)
            .addParameter(classTypeName, MEMBER_FIELD_NAME)
            .addStatement("this.$N = $N", MEMBER_FIELD_NAME, MEMBER_FIELD_NAME)
            .build();

    methods.add(constructor);

    Set<Element> allElements = new HashSet<>();
    allElements.addAll(element.getEnclosedElements());
    for (TypeMirror typeMirror : element.getInterfaces()) {
        allElements.addAll(typeUtils.asElement(typeMirror).getEnclosedElements());
    }

    for (Element e : allElements) {
        if (!(e instanceof ExecutableElement)) {
            continue;
        }
        ExecutableElement method = (ExecutableElement) e;
        String methodName = method.getSimpleName().toString();
        if ("<init>".equals(methodName)) { // skip constructors
            continue;
        }
        Set<Modifier> modifiers = new HashSet<>(method.getModifiers());
        if (modifiers.contains(Modifier.PRIVATE)
                || modifiers.contains(Modifier.STATIC)
                || modifiers.contains(Modifier.FINAL)) {
            continue;
        }
        modifiers.remove(Modifier.ABSTRACT);
        modifiers.add(Modifier.SYNCHRONIZED);

        MethodSpec.Builder spec = MethodSpec.methodBuilder(methodName)
                .addModifiers(modifiers);

        List<? extends TypeMirror> thrownTypes = method.getThrownTypes();
        for (TypeMirror throwable : thrownTypes) {
            spec = spec.addException(TypeName.get(throwable));
        }

        String arguments = "";
        List<? extends VariableElement> parameters = method.getParameters();
        for (VariableElement parameter : parameters) {
            arguments += parameter.getSimpleName().toString();
            if (parameters.indexOf(parameter) != parameters.size() - 1) {
                arguments += ", ";
            }
            spec.addParameter(ParameterSpec.get(parameter));
        }

        if (method.getReturnType() instanceof NoType) {
            spec = spec.addStatement("$N.$N($L)", MEMBER_FIELD_NAME, methodName, arguments);
        } else {
            spec = spec.addStatement("return $N.$N($L)", MEMBER_FIELD_NAME, methodName, arguments)
                    .returns(TypeName.get(method.getReturnType()));
        }

        methods.add(spec.build());
    }
    return methods;
}
项目:data-mediator    文件:DataBindingAnnotationProcessor.java   
private TypeElement getSuperClassForDataBinding(TypeElement te) {
    TypeMirror superclass = te.getSuperclass();
    String superName = superclass.toString();
    if(superclass instanceof NoType){
        //no super.
    }else if(superName.startsWith("java.") || superName.startsWith("android.")){
        // no super too.
    }else{
        TypeElement newTe = new FieldData.TypeCompat(mContext.getTypes(), superclass).getElementAsType();
        DataBindingInfo info = mInfoMap.get(superName);
        if(info == null){
            //-------------- handle cross modules ------------
            //by class annotation
            if(hasDataBindingClassAnnotation(newTe)){
                return newTe;
            }
            //by field annotation
            List<VariableElement> elements = ElementFilter.fieldsIn(newTe.getEnclosedElements());
            if(elements.size() > 0){
                for(VariableElement ve: elements){
                    if(hasDataBindingFieldAnnotation(ve)){
                        return newTe;
                    }
                }
            }
            //may super's N class is using data-binding
            return getSuperClassForDataBinding(newTe);
        }else{
            //found
            return newTe;
        }
    }
    return null;
}
项目:android-auto-mapper    文件:MoreTypes.java   
/**
 * Returns a {@link NoType} if the {@link TypeMirror} represents an non-type such
 * as void, or package, etc. or throws an {@link IllegalArgumentException}.
 */
public static NoType asNoType(TypeMirror maybeNoType) {
    return maybeNoType.accept(new CastingTypeVisitor<NoType>() {
        @Override
        public NoType visitNoType(NoType noType, String p) {
            return noType;
        }
    }, "non-type");
}
项目:manifold    文件:StructuralTypeProxyGenerator.java   
private boolean hasPotentialMethod( Symbol.ClassSymbol rootClassSymbol, String name, int paramCount )
{
  if( rootClassSymbol == null || rootClassSymbol instanceof NoType )
  {
    return false;
  }

  for( Symbol member : IDynamicJdk.instance().getMembers( rootClassSymbol, e -> e.flatName().toString().equals( name ) ) )
  {
    Symbol.MethodSymbol methodSym = (Symbol.MethodSymbol)member;
    if( methodSym.getParameters().size() == paramCount )
    {
      return true;
    }
  }
  if( hasPotentialMethod( (Symbol.ClassSymbol)rootClassSymbol.getSuperclass().tsym, name, paramCount ) )
  {
    return true;
  }
  for( Type iface : rootClassSymbol.getInterfaces() )
  {
    if( hasPotentialMethod( (Symbol.ClassSymbol)iface.tsym, name, paramCount ) )
    {
      return true;
    }
  }
  return false;
}
项目:listing    文件:JavaMirrorsTest.java   
@Test
void unknownTypeFails() {
  AssertionError e =
      expectThrows(
          AssertionError.class,
          () -> JavaMirrors.of(Tests.proxy(PrimitiveType.class, (p, m, a) -> TypeKind.ERROR)));
  assertTrue(e.toString().contains("Unsupported primitive type"));
  e =
      expectThrows(
          AssertionError.class,
          () -> JavaMirrors.of(Tests.proxy(NoType.class, (p, m, a) -> TypeKind.ERROR)));
  assertTrue(e.toString().contains("Unsupported no type"));
}
项目:gulava    文件:FreshInstantiation.java   
@Override
public String visitDeclared(DeclaredType type, Void v) {
  Name typeName = Processors.qualifiedName(type);
  TypeElement typeElement = (TypeElement) type.asElement();

  if (typeName.contentEquals("java.lang.Object")) {
    return "new " + ClassNames.VAR + "()";
  }
  if (typeName.contentEquals("java.lang.Void")) {
    return "null";
  }

  List<String> subInstantiations = new ArrayList<>();
  for (TypeMirror typeArgument : type.getTypeArguments()) {
    subInstantiations.add(visit(typeArgument));
  }

  if (typeElement.getModifiers().contains(Modifier.ABSTRACT)
      || (typeElement.getSuperclass() instanceof NoType)) {
    // typeElement is abstract or an interface
    return typeName + ".of(" + Processors.join(", ", subInstantiations) + ")";
  }
  if (subInstantiations.isEmpty()) {
    return "new " + typeName + "()";
  }
  return "new " + typeName + "<>(" + Processors.join(", ", subInstantiations) + ")";
}
项目:auto-parcel    文件:MoreTypes.java   
/**
 * Returns a {@link NoType} if the {@link TypeMirror} represents an non-type such
 * as void, or package, etc. or throws an {@link IllegalArgumentException}.
 */
public static NoType asNoType(TypeMirror maybeNoType) {
    return maybeNoType.accept(new CastingTypeVisitor<NoType>() {
        @Override
        public NoType visitNoType(NoType noType, String p) {
            return noType;
        }
    }, "non-type");
}
项目:Eclipse-Postfix-Code-Completion    文件:Factory.java   
public NoType getNoType(TypeKind kind)
{
    switch (kind) {
    case NONE:
        return NoTypeImpl.NO_TYPE_NONE;
    case VOID:
        return NoTypeImpl.NO_TYPE_VOID;
    case PACKAGE:
        return NoTypeImpl.NO_TYPE_PACKAGE;
    default:
        throw new IllegalArgumentException();
    }
}
项目:AnnotatedAdapter    文件:AdapterInfo.java   
/**
 * Checks if this AnnotatedAdapter has another AnnotatedAdapter as super class. Therfore the
 * binder interface must extends from this one.
 */
public AdapterInfo getAnnotatedAdapterSuperClass(Map<String, AdapterInfo> adaptersMap) {

  if (searchedForSuperAnnotatedAdapterClass) {
    return superAnnotatedAdapterClass;
  }

  searchedForSuperAnnotatedAdapterClass = true;

  // Search from bottom up along inheritance three for the fist Annotated adapter class we find
  TypeElement currentClass = adapterClass;

  while (currentClass != null) {
    TypeMirror currentMirror = currentClass.getSuperclass();

    if (currentMirror instanceof NoType || currentMirror.getKind() == TypeKind.NONE) {
      // java.lang.Object has been found, there is no other super class
      return null;
    }

    AdapterInfo superAdapter = adaptersMap.get(currentMirror.toString());
    if (superAdapter != null) {
      // "Cache" the found super class for performance reasons
      superAnnotatedAdapterClass = superAdapter;
      return superAnnotatedAdapterClass;
    }

    // Continue with the super class
    currentClass = elementUtils.getTypeElement(currentMirror.toString());
  }

  return null;
}
项目:java-types    文件:ReflectionTypes.java   
@Override
public NoType getNoType(TypeKind kind) {
    Objects.requireNonNull(kind);
    if (kind == TypeKind.VOID) {
        return NoTypeImpl.VOID;
    } else if (kind == TypeKind.NONE) {
        return NoTypeImpl.NONE;
    } else {
        throw new IllegalArgumentException(String.format("Expected one of %s, but got %s.",
            Arrays.asList(TypeKind.VOID, TypeKind.NONE), kind));
    }
}
项目:java-types    文件:ReflectionTypesTest.java   
@Test
public void testToString() {
    // PrimitiveType
    for (TypeKind primitive: Arrays.asList(TypeKind.DOUBLE, TypeKind.FLOAT, TypeKind.LONG, TypeKind.INT,
            TypeKind.SHORT, TypeKind.BYTE, TypeKind.CHAR, TypeKind.BOOLEAN)) {
        PrimitiveType primitiveType = types.getPrimitiveType(primitive);
        Assert.assertEquals(types.getPrimitiveType(primitive).toString(), types.toString(primitiveType));
    }

    // DeclaredType
    DeclaredType declaredType = (DeclaredType) types.typeMirror(Integer.class);
    Assert.assertEquals(declaredType.toString(), types.toString(declaredType));

    // IntersectionType
    IntersectionType intersectionType
        = types.getIntersectionType(types.typeMirror(Serializable.class), types.typeMirror(Cloneable.class));
    Assert.assertEquals(intersectionType.toString(), types.toString(intersectionType));

    // WildcardType
    WildcardType wildcardType = types.getWildcardType(types.typeMirror(Integer.class), null);
    Assert.assertEquals(wildcardType.toString(), types.toString(wildcardType));

    // NullType
    NullType nullType = types.getNullType();
    Assert.assertEquals(nullType.toString(), types.toString(nullType));

    // NoType
    NoType noType = types.getNoType(TypeKind.VOID);
    Assert.assertEquals(noType.toString(), types.toString(noType));

    // TypeVariable
    TypeVariable typeVariable = (TypeVariable) types.typeElement(List.class).getTypeParameters().get(0).asType();
    Assert.assertEquals(typeVariable.toString(), types.toString(typeVariable));
}
项目:revapi    文件:Util.java   
@Override
public Void visitNoType(NoType t, StringBuilderAndState<TypeMirror> state) {
    switch (t.getKind()) {
    case VOID:
        state.bld.append("void");
        break;
    case PACKAGE:
        state.bld.append("package");
        break;
    default:
        break;
    }

    return null;
}
项目:revapi    文件:Util.java   
@Override
public Void visitNoType(NoType t, StringBuilderAndState<TypeMirror> state) {
    switch (t.getKind()) {
    case VOID:
        state.bld.append("void");
        break;
    case PACKAGE:
        state.bld.append("package");
        break;
    default:
        break;
    }

    return null;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:Factory.java   
public NoType getNoType(TypeKind kind)
{
    switch (kind) {
    case NONE:
        return NoTypeImpl.NO_TYPE_NONE;
    case VOID:
        return NoTypeImpl.NO_TYPE_VOID;
    case PACKAGE:
        return NoTypeImpl.NO_TYPE_PACKAGE;
    default:
        throw new IllegalArgumentException();
    }
}
项目:checker-framework    文件:AnnotatedTypeMirror.java   
@Override
public AnnotatedNoType getCopy(boolean copyAnnotations) {
    AnnotatedNoType type = new AnnotatedNoType((NoType) actualType, atypeFactory);
    if (copyAnnotations)
        type.addAnnotations(annotations);
    return type;
}
项目:contracts    文件:ParameterMapAnnotationProcessor.java   
@Override
public Void visitNoType(NoType t, Void p) {
    if ( t.getKind() == TypeKind.VOID ) {
        buf.append('V');
        return null;
    }
    else {
        return defaultAction(t, p);
    }
}
项目:buck    文件:StandaloneTypeMirror.java   
@Override
public <R, P> R accept(TypeVisitor<R, P> v, P p) {
  switch (kind) {
    case BOOLEAN:
    case BYTE:
    case SHORT:
    case INT:
    case LONG:
    case CHAR:
    case FLOAT:
    case DOUBLE:
      return v.visitPrimitive((PrimitiveType) this, p);
    case PACKAGE:
    case VOID:
    case NONE:
      return v.visitNoType((NoType) this, p);
    case NULL:
      return v.visitNull((NullType) this, p);
    case ARRAY:
      return v.visitArray((ArrayType) this, p);
    case DECLARED:
      return v.visitDeclared((DeclaredType) this, p);
    case ERROR:
      return v.visitError((ErrorType) this, p);
    case TYPEVAR:
      return v.visitTypeVariable((TypeVariable) this, p);
    case WILDCARD:
      return v.visitWildcard((WildcardType) this, p);
    case EXECUTABLE:
      return v.visitExecutable((ExecutableType) this, p);
    case OTHER:
      return v.visit(this, p);
    case UNION:
      return v.visitUnion((UnionType) this, p);
    case INTERSECTION:
      return v.visitIntersection((IntersectionType) this, p);
    default:
      throw new AssertionError(String.format("Unknown TypeKind: %s", kind));
  }
}
项目:buck    文件:SignatureFactory.java   
@Override
public Void visitNoType(NoType t, SignatureVisitor visitor) {
  if (t.getKind() == TypeKind.VOID) {
    visitor.visitBaseType(descriptorFactory.getDescriptor(t).charAt(0));
    return null;
  }

  return defaultAction(t, visitor);
}
项目:jenkins-csvexporter    文件:ExportBeanListRetrieverTest.java   
private static TypeMirror noType() {
    return new NoType() {
        @Override
        public <R, P> R accept(TypeVisitor<R, P> v, P p) {
            throw new UnsupportedOperationException();
        }

        @Override
        public TypeKind getKind() {
            throw new UnsupportedOperationException();
        }
    };
}
项目:GitHub    文件:TypeExtractor.java   
@Override
public Type visitNoType(NoType t, Type.Parameters p) {
  return Type.Primitive.VOID;
}
项目:incubator-netbeans    文件:ExportNonAccessibleElement.java   
public Boolean visitNoType(NoType arg0, Void arg1) {
    return false;
}
项目:alvisnlp    文件:ParamModel.java   
@Override
public Boolean visitNoType(NoType t, Boolean p) {
    return false;
}
项目:OpenJSharp    文件:WebServiceVisitor.java   
@Override
public Boolean visitNoType(NoType t, Void o) {
    return true;
}
项目:OpenJSharp    文件:MakeSafeTypeVisitor.java   
@Override
public TypeMirror visitNoType(NoType type, Types types) {
    return type;
}
项目:openjdk-jdk10    文件:WebServiceVisitor.java   
@Override
public Boolean visitNoType(NoType t, Void o) {
    return true;
}
项目:openjdk-jdk10    文件:MakeSafeTypeVisitor.java   
@Override
public TypeMirror visitNoType(NoType type, Types types) {
    return type;
}
项目:manifold    文件:ExtensionTransformer.java   
private static boolean hasCallMethod( BasicJavacTask javacTask, Symbol.ClassSymbol classSymbol )
{
  Name call = Names.instance( javacTask.getContext() ).fromString( "call" );
  Iterable<Symbol> elems = IDynamicJdk.instance().getMembersByName( classSymbol, call );
  for( Symbol s : elems )
  {
    if( s instanceof Symbol.MethodSymbol )
    {
      List<Symbol.VarSymbol> parameters = ((Symbol.MethodSymbol)s).getParameters();
      if( parameters.size() != 6 )
      {
        return false;
      }

      Symtab symbols = Symtab.instance( javacTask.getContext() );
      Types types = Types.instance( javacTask.getContext() );
      return types.erasure( parameters.get( 0 ).asType() ).equals( types.erasure( symbols.classType ) ) &&
             parameters.get( 1 ).asType().equals( symbols.stringType ) &&
             parameters.get( 2 ).asType().equals( symbols.stringType ) &&
             types.erasure( parameters.get( 3 ).asType() ).equals( types.erasure( symbols.classType ) ) &&
             parameters.get( 4 ).asType() instanceof Type.ArrayType && types.erasure( ((Type.ArrayType)parameters.get( 4 ).asType()).getComponentType() ).equals( types.erasure( symbols.classType ) ) &&
             parameters.get( 5 ).asType() instanceof Type.ArrayType && ((Type.ArrayType)parameters.get( 5 ).asType()).getComponentType().equals( symbols.objectType );
    }
  }
  Type superclass = classSymbol.getSuperclass();
  if( !(superclass instanceof NoType) )
  {
    if( hasCallMethod( javacTask, (Symbol.ClassSymbol)superclass.tsym ) )
    {
      return true;
    }
  }
  for( Type iface : classSymbol.getInterfaces() )
  {
    if( hasCallMethod( javacTask, (Symbol.ClassSymbol)iface.tsym ) )
    {
      return true;
    }
  }
  return false;
}
项目:openjdk9    文件:WebServiceVisitor.java   
@Override
public Boolean visitNoType(NoType t, Void o) {
    return true;
}
项目:openjdk9    文件:MakeSafeTypeVisitor.java   
@Override
public TypeMirror visitNoType(NoType type, Types types) {
    return type;
}