@Override public Iterable<ObjectType> getCtorExtendedInterfaces() { LinkedHashSet<ObjectType> resolvedExtendedInterfaces = new LinkedHashSet<>(); for (ObjectType obj : getReferencedObjTypeInternal().getCtorExtendedInterfaces()) { resolvedExtendedInterfaces.add(obj.visit(replacer).toObjectType()); } return resolvedExtendedInterfaces; }
@Override public Iterable<ObjectType> getCtorImplementedInterfaces() { LinkedHashSet<ObjectType> resolvedImplementedInterfaces = new LinkedHashSet<>(); for (ObjectType obj : getReferencedObjTypeInternal().getCtorImplementedInterfaces()) { resolvedImplementedInterfaces.add(obj.visit(replacer).toObjectType()); } return resolvedImplementedInterfaces; }
private void emitCommaSeparatedInterfaces(Iterator<ObjectType> it) { while (it.hasNext()) { ObjectType type = it.next(); if (isPrivate(type.getJSDocInfo()) && !isConstructor(type.getJSDocInfo())) { // TypeScript does not allow public APIs that expose non-exported/private types. emit(getGlobalSymbolNamespacePrefix() + "PrivateInterface"); } else { ExtendsImplementsTypeVisitor visitor = new ExtendsImplementsTypeVisitor(false); type.visit(visitor); } if (it.hasNext()) { emit(","); } } }
@Override public JSType caseTemplatizedType(TemplatizedType type) { boolean changed = false; ObjectType beforeBaseType = type.getReferencedType(); ObjectType afterBaseType = ObjectType.cast(beforeBaseType.visit(this)); if (beforeBaseType != afterBaseType) { changed = true; } ImmutableList.Builder<JSType> builder = ImmutableList.builder(); for (JSType beforeTemplateType : type.getTemplateTypes()) { JSType afterTemplateType = beforeTemplateType.visit(this); if (beforeTemplateType != afterTemplateType) { changed = true; } builder.add(afterTemplateType); } if (changed) { type = registry.createTemplatizedType(afterBaseType, builder.build()); } return type; }
@Override public JSType caseTemplatizedType(TemplatizedType type) { boolean changed = false; ObjectType beforeBaseType = type.getReferencedType(); ObjectType afterBaseType = ObjectType.cast(beforeBaseType.visit(this)); if (beforeBaseType != afterBaseType) { changed = true; } ImmutableList.Builder<JSType> builder = ImmutableList.builder(); for (JSType beforeTemplateType : type.getTemplateTypes()) { JSType afterTemplateType = beforeTemplateType.visit(this); if (beforeTemplateType != afterTemplateType) { changed = true; } builder.add(afterTemplateType); } if (changed) { type = registry.createTemplatizedType(afterBaseType, builder.build()); } return type; }
boolean emitInstanceForObject = !shouldAvoidGeneratingExterns(superType); Visitor<Void> visitor = new ExtendsImplementsTypeVisitor(emitInstanceForObject); superType.visit(visitor);