@Override public LightweightTypeReference getPrimitiveIfWrapperType() { if (internalIsResolved()) { return resolvedTo.getPrimitiveIfWrapperType(); } return this; }
/** Retrieve the types of the formal parameters of the given JVM executable object. * * @param jvmExecutable the JVM executable. * @param wrapFromPrimitives indicates if the primitive types must be wrapped to object type equivalent. * @param wrapToPrimitives indicates if the object types must be wrapped to primitive type equivalent. * @return the list of types. * @since 0.8 * @see #getParamTypes(JvmOperation, boolean) */ protected List<LightweightTypeReference> getParamTypeReferences(JvmExecutable jvmExecutable, boolean wrapFromPrimitives, boolean wrapToPrimitives) { assert (wrapFromPrimitives && !wrapToPrimitives) || (wrapToPrimitives && !wrapFromPrimitives); final List<LightweightTypeReference> types = newArrayList(); for (final JvmFormalParameter parameter : jvmExecutable.getParameters()) { LightweightTypeReference typeReference = toLightweightTypeReference(parameter.getParameterType()); if (wrapFromPrimitives) { typeReference = typeReference.getWrapperTypeIfPrimitive(); } else if (wrapToPrimitives) { typeReference = typeReference.getPrimitiveIfWrapperType(); } types.add(typeReference); } return types; }
@Override public TypeReference getPrimitiveIfWrapper() { TypeReference _xblockexpression = null; { boolean _isWrapper = this.isWrapper(); boolean _not = (!_isWrapper); if (_not) { return this; } _xblockexpression = this.getCompilationUnit().toTypeReference(this.getDelegate().getPrimitiveIfWrapperType()); } return _xblockexpression; }
@Override public boolean isImmutable(LightweightTypeReference type) { assert type != null; final LightweightTypeReference ref = type.getPrimitiveIfWrapperType(); if (ref.isArray()) { return false; } if (ref.isPrimitive() || ref.isPrimitiveVoid()) { return true; } for (final Class<?> jvmType : IMMUTABLE_TYPES) { if (type.isSubtypeOf(jvmType)) { return true; } } return false; }
@Check public void checkReturnTypeOfCheckConstraints(CheckConstraint checkConstraint) { XExpression xExpression = checkConstraint.getExpression(); if (xExpression != null) { final IResolvedTypes resolvedType = typeResolver.resolveTypes(xExpression); LightweightTypeReference type = resolvedType.getReturnType(xExpression); if (type.getPrimitiveIfWrapperType().getPrimitiveKind() != Primitive.Boolean) { error("Check expressions must return boolean instead of " + type.getSimpleName(), checkConstraint, PatternLanguagePackage.Literals.CHECK_CONSTRAINT__EXPRESSION, IssueCodes.CHECK_MUST_BE_BOOLEAN); } } }
@Check public void checkReturnTypeOfCheckConstraints(CheckConstraint checkConstraint) { XExpression xExpression = checkConstraint.getExpression(); if (xExpression != null) { final IResolvedTypes resolvedType = typeResolver.resolveTypes(xExpression); LightweightTypeReference type = resolvedType.getReturnType(xExpression); if (type.getPrimitiveIfWrapperType().getPrimitiveKind() != Primitive.Boolean) { error("Check expressions must return boolean instead of " + type.getSimpleName(), checkConstraint, PatternLanguagePackage.Literals.CHECK_CONSTRAINT__EXPRESSION, IssueCodes.CHECK_MUST_BE_BOOLEAN); } } }
if (arrayType != null) { LightweightTypeReference componentType = arrayType.getComponentType(); LightweightTypeReference primitiveComponentType = componentType.getPrimitiveIfWrapperType(); if (primitiveComponentType != componentType) { ArrayTypeReference primitiveArray = type.getOwner().newArrayTypeReference(primitiveComponentType);
public void collectSynonymTypes(/* @Nullable */ LightweightTypeReference type, /* @NonNull */ Acceptor acceptor) { if (type == null || type.isPrimitiveVoid() || type.isType(Void.class)) { return; } if (type.isWrapper()) { if (!acceptor.accept(type.getPrimitiveIfWrapperType(), ConformanceFlags.CHECKED_SUCCESS | ConformanceFlags.UNBOXING)) { return; } // a primitive type is never an array or list collectCustomSynonymTypes(type, acceptor); return; } else if (type.isPrimitive()) { if (!acceptor.accept(type.getWrapperTypeIfPrimitive(), ConformanceFlags.CHECKED_SUCCESS | ConformanceFlags.BOXING)) { return; } // a primitive type is never an array or list collectCustomSynonymTypes(type, acceptor); return; } if (addArrayAndListSynonyms(type, acceptor)) { collectCustomSynonymTypes(type, acceptor); } }
if (iterableOrArray == null) { iterableOrArray = reference; LightweightTypeReference potentialPrimitive = addAsArrayComponentAndIterable.getPrimitiveIfWrapperType(); if (potentialPrimitive != addAsArrayComponentAndIterable) { compoundResult.addComponent(owner.newArrayTypeReference(potentialPrimitive));
ArrayTypeReference array = valueResultType.tryConvertToArray(); if (array != null) { LightweightTypeReference primitiveComponentType = array.getComponentType().getPrimitiveIfWrapperType(); state.addDiagnostic(new EObjectDiagnosticImpl( Severity.ERROR,
convertWrapperToPrimitive(left, left, context, appendable, expression); } else { convertWrapperToPrimitive(right, right.getPrimitiveIfWrapperType(), context, appendable, expression);