@Override protected JvmTypeReference handleReentrantInvocation(XComputedTypeReferenceImplCustom context) { EObject sourceElement = getSourceElement(member); EStructuralFeature feature = sourceElement.eClass().getEStructuralFeature("name"); resolvedTypes.addDiagnostic(new EObjectDiagnosticImpl( Severity.WARNING, IssueCodes.TOO_LITTLE_TYPE_INFORMATION, "Cannot infer type from recursive usage. Type 'Object' is used.", sourceElement, feature, -1, null)); AnyTypeReference result = resolvedTypes.getReferenceOwner().newAnyTypeReference(); return toJavaCompliantTypeReference(result, session); }
protected JvmTypeReference doGetTypReferenceWithAnotherTypeReference() { IResolvedTypes resolveTypes = typeResolver.resolveTypes(expression); LightweightTypeReference actualType = returnType ? resolveTypes.getReturnType(expression) : resolveTypes.getActualType(expression); if (actualType == null) { actualType = returnType ? resolvedTypes.getExpectedReturnType(expression) : resolvedTypes.getExpectedType(expression); } if (actualType == null) return null; return toJavaCompliantTypeReference(convertLocalType(actualType), session); }
protected JvmTypeReference doGetTypeReferenceWithCurrentTypeResolver() { LightweightTypeReference actualType = returnType ? resolvedTypes.getReturnType(expression) : resolvedTypes.getActualType(expression); if (actualType == null) { computeTypes(resolvedTypesByContext, resolvedTypes, session, member); actualType = returnType ? resolvedTypes.getExpectedReturnType(expression) : resolvedTypes.getExpectedType(expression); if (actualType == null) actualType = returnType ? resolvedTypes.getReturnType(expression) : resolvedTypes.getActualType(expression); } if (actualType == null) return null; return toJavaCompliantTypeReference(convertLocalType(actualType), session); }