@Override protected String getAsStringNoFunctionType(String type, Function<LightweightTypeReference, String> format) { type = format.apply(outer) + "$" + getType().getSimpleName(); return super.getAsStringNoFunctionType(type, format); }
@Override public JvmTypeReference getEquivalentTypeReference() { JvmInnerTypeReference result = getTypesFactory().createJvmInnerTypeReference(); result.setType(getType()); result.setOuter((JvmParameterizedTypeReference) outer.toTypeReference()); for(LightweightTypeReference typeArgument: getTypeArguments()) { result.getArguments().add(typeArgument.toTypeReference()); } return result; }
@Override public ParameterizedTypeReference toInstanceTypeReference() { LightweightTypeReference outerInstanceTypeReference = ((ParameterizedTypeReference) outer).toInstanceTypeReference(); InnerTypeReference result = new InnerTypeReference(getOwner(), outerInstanceTypeReference, getType()); for(LightweightTypeReference typeArgument: getTypeArguments()) { result.addTypeArgument(typeArgument.getInvariantBoundSubstitute()); } return result; } }
@Override public JvmTypeReference toJavaCompliantTypeReference(IVisibilityHelper visibilityHelper) { if (isTypeVisible(visibilityHelper)) { JvmInnerTypeReference result = getTypesFactory().createJvmInnerTypeReference(); result.setType(getType()); result.setOuter((JvmParameterizedTypeReference) outer.toJavaCompliantTypeReference()); for(LightweightTypeReference typeArgument: getTypeArguments()) { result.getArguments().add(typeArgument.toJavaCompliantTypeReference()); } return result; } else { return toJavaCompliantTypeReference(getSuperTypes(), visibilityHelper); } }
@Override protected void doVisitInnerFunctionTypeReference(final InnerFunctionTypeReference reference) { boolean _isJava = this.appender.isJava(); if (_isJava) { reference.getOuter().accept(this); this.appender.append("."); this.appender.append(reference.getType().getSimpleName()); boolean _isEmpty = reference.getTypeArguments().isEmpty(); boolean _not = (!_isEmpty); if (_not) { this.appender.append("<"); this.appendCommaSeparated(reference.getTypeArguments()); this.appender.append(">"); } } else { this.appender.append("("); this.appendCommaSeparated(reference.getParameterTypes()); this.appender.append(")=>"); LightweightTypeReference _returnType = reference.getReturnType(); boolean _tripleEquals = (_returnType == null); if (_tripleEquals) { this.appender.append("void"); } else { reference.getReturnType().accept(this); } } }
@Override protected InnerFunctionTypeReference doCopyInto(ITypeReferenceOwner owner) { LightweightTypeReference copiedOuter = outer.copyInto(owner); InnerFunctionTypeReference result = new InnerFunctionTypeReference(owner, copiedOuter, getType()); copyTypeArguments(result, owner); return result; }
@Override protected SubstitutionResult doVisitInnerFunctionTypeReference(InnerFunctionTypeReference reference, VarianceInfo varianceInfo) { SubstitutionResult visitedOuter = reference.getOuter().accept(this, varianceInfo); InnerFunctionTypeReference result = owner.newFunctionTypeReference(visitedOuter.typeReference, reference.getType()); return doSubstituteFunctionType(reference, result, visitedOuter.didSubstitute); }
@Override protected LightweightTypeReference doVisitInnerFunctionTypeReference(InnerFunctionTypeReference reference, Visiting visiting) { if (reference.isResolved() && reference.isOwnedBy(getOwner())) return reference; LightweightTypeReference outer = reference.getOuter().accept(this, visiting); InnerFunctionTypeReference result = getOwner().newFunctionTypeReference(outer, reference.getType()); enhanceFunctionType(reference, result, visiting); return result; }
@Override public LightweightTypeReference getRawTypeReference() { if (isRawType()) { return this; } LightweightTypeReference rawOuter = outer.getRawTypeReference(); JvmType type = getType(); if (type.eClass() != TypesPackage.Literals.JVM_TYPE_PARAMETER) { return getOwner().newParameterizedTypeReference(rawOuter, type); } return getServices().getRawTypeHelper().getRawTypeReference(this, getOwner().getContextResourceSet()); }