@Override public JetType getClassObjectType() { checkInitialized(); if (classObjectUpperBounds.isEmpty()) return null; if (classObjectBoundsAsType == null) { classObjectBoundsAsType = TypeUtils.intersect(JetTypeChecker.INSTANCE, classObjectUpperBounds); if (classObjectBoundsAsType == null) { classObjectBoundsAsType = KotlinBuiltIns.getInstance().getNothingType(); } } return classObjectBoundsAsType; }
@Override @NotNull public JetType getUpperBoundsAsType() { checkInitialized(); if (upperBoundsAsType == null) { assert upperBounds != null : "Upper bound list is null in " + getName(); assert upperBounds.size() > 0 : "Upper bound list is empty in " + getName(); upperBoundsAsType = TypeUtils.intersect(JetTypeChecker.INSTANCE, upperBounds); if (upperBoundsAsType == null) { upperBoundsAsType = KotlinBuiltIns.getInstance().getNothingType(); } } return upperBoundsAsType; }
@Override public int getIndex() { checkInitialized(); return index; }
@Override public <R, D> R accept(DeclarationDescriptorVisitor<R, D> visitor, D data) { checkInitialized(); return visitor.visitTypeParameterDescriptor(this, data); }
@Override @NotNull public JetType getLowerBoundsAsType() { checkInitialized(); return KotlinBuiltIns.getInstance().getNothingType(); }
@Override @NotNull public Set<JetType> getUpperBounds() { checkInitialized(); return upperBounds; }
@Override public boolean isReified() { checkInitialized(); return reified; }