@Test public void testBug300216() { JvmDeclaredType type = (JvmDeclaredType) getTypeProvider().findTypeByName("java.lang.Object"); assertTrue(type.getSuperTypes().isEmpty()); URI unresolveableType = URI.createURI("java:/Objects/Something#Something"); JvmVoid proxy = TypesFactory.eINSTANCE.createJvmVoid(); JvmParameterizedTypeReference typeReference = TypesFactory.eINSTANCE.createJvmParameterizedTypeReference(); typeReference.setType(proxy); ((InternalEObject) proxy).eSetProxyURI(unresolveableType); type.getSuperTypes().add(typeReference); assertTrue(type.getSuperTypes().get(0).getType().eIsProxy()); assertEquals(2, type.eResource().getResourceSet().getResources().size()); }
protected IScope createLocalVarScopeForJvmDeclaredType(JvmDeclaredType type, IScope parentScope) { Iterator<JvmTypeReference> classes = filter( type.getSuperTypes(), new Predicate<JvmTypeReference>() { public boolean apply(JvmTypeReference input) { if (input.getType() instanceof JvmGenericType) { return !((JvmGenericType) input.getType()).isInterface(); } return false; } }) .iterator(); JvmGenericType superType = null; if (classes.hasNext()) { superType = (JvmGenericType) classes.next().getType(); } if (superType == null) { return new JvmFeatureScope(parentScope, "this", new LocalVarDescription(THIS, type)); } else { return new JvmFeatureScope( parentScope, "this & super", newArrayList( new LocalVarDescription(THIS, type), new LocalVarDescription(QualifiedName.create("super"), superType))); } }
public void generateBodyAnnotations(final XPackage pack) { final HashSet<ETypedElement> processed = CollectionLiterals.<ETypedElement>newHashSet(); EList<XClassifier> _classifiers = pack.getClassifiers(); for (final XClassifier xClassifier : _classifiers) { if ((xClassifier instanceof XDataType)) { final XDataType xDataType = ((XDataType) xClassifier); XDataTypeMapping _mapping = this.mappings.getMapping(xDataType); final EDataType eDataType = _mapping.getEDataType(); final XBlockExpression createBody = xDataType.getCreateBody(); XDataTypeMapping _mapping_1 = this.mappings.getMapping(xDataType); final JvmOperation creator = _mapping_1.getCreator(); boolean _and = false; boolean _notEquals = (!Objects.equal(createBody, null)); if (!_notEquals) { _and = false; } else { boolean _notEquals_1 = (!Objects.equal(creator, null)); _and = (_notEquals && _notEquals_1); } if (_and) { final XcoreAppendable appendable = this.createAppendable(); EList<JvmFormalParameter> _parameters = creator.getParameters(); JvmFormalParameter _get = _parameters.get(0); appendable.declareVariable(_get, "it"); JvmTypeReference _returnType = creator.getReturnType(); Set<JvmTypeReference> _emptySet = Collections.<JvmTypeReference>emptySet(); this.compiler.compile(createBody, appendable, _returnType, _emptySet); String _string = appendable.toString(); String _extractBody = this.extractBody(_string); EcoreUtil.setAnnotation(eDataType, GenModelPackage.eNS_URI, "create", _extractBody); } final XBlockExpression convertBody = xDataType.getConvertBody(); XDataTypeMapping _mapping_2 = this.mappings.getMapping(xDataType); final JvmOperation converter = _mapping_2.getConverter(); boolean _and_1 = false; boolean _notEquals_2 = (!Objects.equal(convertBody, null)); if (!_notEquals_2) { _and_1 = false; } else { boolean _notEquals_3 = (!Objects.equal(converter, null)); _and_1 = (_notEquals_2 && _notEquals_3); } if (_and_1) { final XcoreAppendable appendable_1 = this.createAppendable(); EList<JvmFormalParameter> _parameters_1 = converter.getParameters(); JvmFormalParameter _get_1 = _parameters_1.get(0); appendable_1.declareVariable(_get_1, "it"); JvmTypeReference _returnType_1 = converter.getReturnType(); Set<JvmTypeReference> _emptySet_1 = Collections.<JvmTypeReference>emptySet(); this.compiler.compile(convertBody, appendable_1, _returnType_1, _emptySet_1); String _string_1 = appendable_1.toString(); String _extractBody_1 = this.extractBody(_string_1); EcoreUtil.setAnnotation(eDataType, GenModelPackage.eNS_URI, "convert", _extractBody_1); } } else { final XClass xClass = ((XClass) xClassifier); XClassMapping _mapping_3 = this.mappings.getMapping(xClass); final EClass eClass = _mapping_3.getEClass(); EList<EStructuralFeature> _eAllStructuralFeatures = eClass.getEAllStructuralFeatures(); for (final EStructuralFeature eStructuralFeature : _eAllStructuralFeatures) { boolean _add = processed.add(eStructuralFeature); if (_add) { final XStructuralFeature xFeature = this.mappings.getXFeature(eStructuralFeature); boolean _notEquals_4 = (!Objects.equal(xFeature, null)); if (_notEquals_4) { final XBlockExpression getBody = xFeature.getGetBody(); boolean _notEquals_5 = (!Objects.equal(getBody, null)); if (_notEquals_5) { XFeatureMapping _mapping_4 = this.mappings.getMapping(xFeature); final JvmOperation getter = _mapping_4.getGetter(); final XcoreAppendable appendable_2 = this.createAppendable(); JvmTypeReference _returnType_2 = getter.getReturnType(); Set<JvmTypeReference> _emptySet_2 = Collections.<JvmTypeReference>emptySet(); this.compiler.compile(getBody, appendable_2, _returnType_2, _emptySet_2); String _string_2 = appendable_2.toString(); String _extractBody_2 = this.extractBody(_string_2); EcoreUtil.setAnnotation( eStructuralFeature, GenModelPackage.eNS_URI, "get", _extractBody_2); } } } } EList<EOperation> _eAllOperations = eClass.getEAllOperations(); for (final EOperation eOperation : _eAllOperations) { boolean _add_1 = processed.add(eOperation); if (_add_1) { final XOperation xOperation = this.mappings.getXOperation(eOperation); boolean _notEquals_6 = (!Objects.equal(xOperation, null)); if (_notEquals_6) { final XBlockExpression body = xOperation.getBody(); boolean _notEquals_7 = (!Objects.equal(body, null)); if (_notEquals_7) { XOperationMapping _mapping_5 = this.mappings.getMapping(xOperation); final JvmOperation jvmOperation = _mapping_5.getJvmOperation(); boolean _notEquals_8 = (!Objects.equal(jvmOperation, null)); if (_notEquals_8) { final XcoreAppendable appendable_3 = this.createAppendable(); JvmDeclaredType _declaringType = jvmOperation.getDeclaringType(); appendable_3.declareVariable(_declaringType, "this"); JvmDeclaredType _declaringType_1 = jvmOperation.getDeclaringType(); EList<JvmTypeReference> _superTypes = _declaringType_1.getSuperTypes(); final JvmTypeReference superType = IterableExtensions.<JvmTypeReference>head(_superTypes); boolean _notEquals_9 = (!Objects.equal(superType, null)); if (_notEquals_9) { JvmType _type = superType.getType(); appendable_3.declareVariable(_type, "super"); } EList<JvmFormalParameter> _parameters_2 = jvmOperation.getParameters(); for (final JvmFormalParameter parameter : _parameters_2) { String _name = parameter.getName(); appendable_3.declareVariable(parameter, _name); } JvmTypeReference _returnType_3 = jvmOperation.getReturnType(); EList<JvmTypeReference> _exceptions = jvmOperation.getExceptions(); HashSet<JvmTypeReference> _hashSet = new HashSet<JvmTypeReference>(_exceptions); this.compiler.compile(body, appendable_3, _returnType_3, _hashSet); String _string_3 = appendable_3.toString(); String _extractBody_3 = this.extractBody(_string_3); EcoreUtil.setAnnotation( eOperation, GenModelPackage.eNS_URI, "body", _extractBody_3); } } } } } } } }