@Check public void checkSpecializeReference(final Ecosystem ecosystem) { final JvmParameterizedTypeReference superTypeRef = ecosystem.getSpecializes(); boolean _tripleNotEquals = (superTypeRef != null); if (_tripleNotEquals) { JvmType _type = superTypeRef.getType(); final Ecosystem superType = this._speADLUtils.associatedEcosystem(_type); boolean _tripleEquals = (superType == null); if (_tripleEquals) { JvmParameterizedTypeReference _specializes = ecosystem.getSpecializes(); String _simpleName = _specializes.getSimpleName(); String _plus = (_simpleName + " cannot be resolved"); JvmParameterizedTypeReference _specializes_1 = ecosystem.getSpecializes(); this.error( _plus, _specializes_1, TypesPackage.Literals.JVM_PARAMETERIZED_TYPE_REFERENCE__TYPE); } else { EList<Part> _parts = superType.getParts(); boolean _isEmpty = _parts.isEmpty(); boolean _not = (!_isEmpty); if (_not) { this.error( "Can only implements components without subcomponents", SpeadlPackage.Literals.ABSTRACT_COMPONENT__SPECIALIZES); } boolean _hasCycleInHierarchy = this._speADLUtils.hasCycleInHierarchy(superType); if (_hasCycleInHierarchy) { String _name = ecosystem.getName(); String _plus_1 = ("The inheritance hierarchy of " + _name); String _plus_2 = (_plus_1 + " contains cycles"); this.error(_plus_2, SpeadlPackage.Literals.ABSTRACT_COMPONENT__NAME); } boolean _isInvalidWildcard = this.isInvalidWildcard(superTypeRef); if (_isInvalidWildcard) { String _name_1 = ecosystem.getName(); String _plus_3 = ("The type " + _name_1); String _plus_4 = (_plus_3 + " cannot extend or implement "); String _identifier = superTypeRef.getIdentifier(); String _plus_5 = (_plus_4 + _identifier); String _plus_6 = (_plus_5 + ". A supertype may not specify any wildcard"); this.error(_plus_6, SpeadlPackage.Literals.ABSTRACT_COMPONENT__SPECIALIZES); } EList<RequiredPort> _requires = ecosystem.getRequires(); final Procedure2<RequiredPort, Integer> _function = new Procedure2<RequiredPort, Integer>() { public void apply(final RequiredPort p, final Integer index) { SpeADLValidator.this.error( "Requires can\'t be declared in a specialising component", SpeadlPackage.Literals.ABSTRACT_COMPONENT__REQUIRES, (index).intValue()); } }; IterableExtensions.<RequiredPort>forEach(_requires, _function); } } }
@Check public void checkComponentReference(final ComponentPart p) { JvmParameterizedTypeReference _componentReference = p.getComponentReference(); JvmType _type = _componentReference.getType(); final Ecosystem eco = this._speADLUtils.associatedEcosystem(_type); boolean _tripleEquals = (eco == null); if (_tripleEquals) { JvmParameterizedTypeReference _componentReference_1 = p.getComponentReference(); String _simpleName = _componentReference_1.getSimpleName(); String _plus = (_simpleName + " cannot be resolved"); JvmParameterizedTypeReference _componentReference_2 = p.getComponentReference(); this.error( _plus, _componentReference_2, TypesPackage.Literals.JVM_PARAMETERIZED_TYPE_REFERENCE__TYPE); } }
public void serialize( final JvmTypeReference type, EObject context, IAppendable appendable, boolean withoutConstraints, boolean paramsToWildcard, boolean paramsToObject, boolean allowPrimitives) { IAppendable tracedAppendable = appendable; boolean tracing = false; if (appendable instanceof ITreeAppendable && type.eResource() == context.eResource()) { tracedAppendable = ((ITreeAppendable) appendable).trace(type); tracing = true; } if (type instanceof JvmWildcardTypeReference) { JvmWildcardTypeReference wildcard = (JvmWildcardTypeReference) type; if (!withoutConstraints) { tracedAppendable.append("?"); } if (!wildcard.getConstraints().isEmpty()) { for (JvmTypeConstraint constraint : wildcard.getConstraints()) { if (constraint instanceof JvmLowerBound) { if (!withoutConstraints) tracedAppendable.append(" super "); serialize( constraint.getTypeReference(), context, tracedAppendable, withoutConstraints, paramsToWildcard, paramsToObject, false); return; } } boolean first = true; for (JvmTypeConstraint constraint : wildcard.getConstraints()) { if (constraint instanceof JvmUpperBound) { if (first) { if (!withoutConstraints) tracedAppendable.append(" extends "); first = false; } else { if (withoutConstraints) throw new IllegalStateException( "cannot have two upperbounds if type should be printed without constraints"); tracedAppendable.append(" & "); } serialize( constraint.getTypeReference(), context, tracedAppendable, withoutConstraints, paramsToWildcard, paramsToObject, false); } } } else if (withoutConstraints) { tracedAppendable.append("Object"); } } else if (type instanceof JvmGenericArrayTypeReference) { serialize( ((JvmGenericArrayTypeReference) type).getComponentType(), context, tracedAppendable, withoutConstraints, paramsToWildcard, paramsToObject, true); tracedAppendable.append("[]"); } else if (type instanceof JvmParameterizedTypeReference) { JvmParameterizedTypeReference parameterized = (JvmParameterizedTypeReference) type; if ((paramsToWildcard || paramsToObject) && parameterized.getType() instanceof JvmTypeParameter) { JvmTypeParameter parameter = (JvmTypeParameter) parameterized.getType(); if (!isLocalTypeParameter(context, parameter)) { if (paramsToWildcard) tracedAppendable.append("?"); else tracedAppendable.append("Object"); return; } } JvmType jvmType = allowPrimitives ? type.getType() : primitives.asWrapperTypeIfPrimitive(type).getType(); if (tracing) { ITextRegion region = locationProvider.getFullTextRegion( type, TypesPackage.Literals.JVM_PARAMETERIZED_TYPE_REFERENCE__TYPE, 0); if (region instanceof ITextRegionWithLineInformation) { ((ITreeAppendable) tracedAppendable) .trace(new LocationData((ITextRegionWithLineInformation) region, null)) .append(jvmType); } else { tracedAppendable.append(jvmType); } } else { tracedAppendable.append(jvmType); } if (!parameterized.getArguments().isEmpty()) { tracedAppendable.append("<"); for (int i = 0; i < parameterized.getArguments().size(); i++) { if (i != 0) { tracedAppendable.append(","); } serialize( parameterized.getArguments().get(i), context, tracedAppendable, withoutConstraints, paramsToWildcard, paramsToObject, false); } tracedAppendable.append(">"); } } else if (type instanceof JvmAnyTypeReference) { tracedAppendable.append("Object"); } else if (type instanceof JvmMultiTypeReference) { serialize( resolveMultiType(type, context), context, tracedAppendable, withoutConstraints, paramsToWildcard, paramsToObject, allowPrimitives); } else if (type instanceof JvmDelegateTypeReference) { JvmTypeReference delegate = ((JvmDelegateTypeReference) type).getDelegate(); if (delegate != null) serialize( delegate, context, tracedAppendable, withoutConstraints, paramsToWildcard, paramsToObject, allowPrimitives); else tracedAppendable.append("Object"); } else if (type instanceof JvmSpecializedTypeReference) { serialize( ((JvmSpecializedTypeReference) type).getEquivalent(), context, tracedAppendable, withoutConstraints, paramsToWildcard, paramsToObject, allowPrimitives); } else if (type instanceof JvmUnknownTypeReference) { if (type.eIsSet(TypesPackage.Literals.JVM_UNKNOWN_TYPE_REFERENCE__QUALIFIED_NAME)) { tracedAppendable.append(type.getQualifiedName()); } else { tracedAppendable.append("Object"); } } else { throw new IllegalArgumentException(String.valueOf(type)); } }