浏览代码

#650 - Adopt meta model to support generic operations (#1227)

* #650 - Adopt meta model to support generic operations

* Change type hierarchy of ComplexType

Inherits from Type & GenericElement instead of GenericElement & Type in order
to inherit getOriginType from TypeImpl.

* Revert incorrect change
Andreas Mülder 8 年之前
父节点
当前提交
fc5109d9d5
共有 37 个文件被更改,包括 541 次插入315 次删除
  1. 10 9
      plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/inferrer/ExpressionsTypeInferrer.java
  2. 14 14
      plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/validation/ExpressionsJavaValidator.java
  3. 二进制
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateGenericElement_templateParameters_TemplateParameter.gif
  4. 二进制
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateGenericElement_typeParameters_TypeParameter.gif
  5. 二进制
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreatePackage_member_TemplateParameter.gif
  6. 二进制
      plugins/org.yakindu.base.types.edit/icons/full/obj16/GenericElement.gif
  7. 二进制
      plugins/org.yakindu.base.types.edit/icons/full/obj16/TemplateParameter.gif
  8. 5 0
      plugins/org.yakindu.base.types.edit/plugin.properties
  9. 0 2
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ArrayTypeSpecifierItemProvider.java
  10. 111 1
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ComplexTypeItemProvider.java
  11. 30 24
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ParameterizedTypeItemProvider.java
  12. 7 0
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/OperationItemProvider.java
  13. 0 5
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/PackageItemProvider.java
  14. 0 4
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypeSpecifierItemProvider.java
  15. 8 8
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypesItemProviderAdapterFactory.java
  16. 4 4
      plugins/org.yakindu.base.types/model/types.ecore
  17. 1 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/ComplexType.java
  18. 41 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/GenericElement.java
  19. 1 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Operation.java
  20. 0 40
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/ParameterizedType.java
  21. 0 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypeSpecifier.java
  22. 3 3
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesFactory.java
  23. 69 105
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java
  24. 0 3
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ArrayTypeSpecifierImpl.java
  25. 77 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ComplexTypeImpl.java
  26. 1 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/DeclarationImpl.java
  27. 26 26
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ParameterizedTypeImpl.java
  28. 71 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/OperationImpl.java
  29. 1 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ParameterImpl.java
  30. 24 25
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypeParameterImpl.java
  31. 5 5
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesFactoryImpl.java
  32. 14 12
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java
  33. 6 6
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesAdapterFactory.java
  34. 10 12
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesSwitch.java
  35. 二进制
      plugins/org.yakindu.sct.model.stext.edit/icons/full/ctool16/CreateImportScope_imports_Package.gif
  36. 0 1
      plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/scoping/ContextPredicateProvider.java
  37. 2 2
      test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/util/STextTestScopeProvider.java

+ 10 - 9
plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/inferrer/ExpressionsTypeInferrer.java

@@ -52,9 +52,9 @@ import org.yakindu.base.expressions.expressions.TypeCastExpression;
 import org.yakindu.base.expressions.expressions.UnaryOperator;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
+import org.yakindu.base.types.GenericElement;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.Parameter;
-import org.yakindu.base.types.ParameterizedType;
 import org.yakindu.base.types.Property;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypeAlias;
@@ -214,7 +214,7 @@ public class ExpressionsTypeInferrer extends AbstractTypeSystemInferrer implemen
 		}
 		return result;
 	}
-	
+
 	public InferenceResult doInfer(ElementReferenceExpression e) {
 		if (e.isOperationCall()) {
 			Operation operation = (Operation) e.getReference();
@@ -231,7 +231,7 @@ public class ExpressionsTypeInferrer extends AbstractTypeSystemInferrer implemen
 				assertArgumentIsCompatible(operationOwner, parameters.get(i), args.get(i));
 			}
 		}
-		if(operation.isVariadic() && args.size() - 1 >= operation.getVarArgIndex()){
+		if (operation.isVariadic() && args.size() - 1 >= operation.getVarArgIndex()) {
 			Parameter parameter = operation.getParameters().get(operation.getVarArgIndex());
 			List<Expression> varArgs = args.subList(operation.getVarArgIndex(), args.size() - 1);
 			for (Expression expression : varArgs) {
@@ -248,13 +248,14 @@ public class ExpressionsTypeInferrer extends AbstractTypeSystemInferrer implemen
 		InferenceResult result2 = inferTypeDispatch(argument);
 		assertCompatible(result2, result1, String.format(INCOMPATIBLE_TYPES, result2, result1));
 	}
-	
+
 	protected InferenceResult inferTypeParameter(TypeParameter typeParameter, InferenceResult ownerResult) {
-		if (ownerResult.getBindings().isEmpty() || !(ownerResult.getType() instanceof ParameterizedType)) {
+		if (ownerResult.getBindings().isEmpty() || !(ownerResult.getType() instanceof GenericElement)) {
 			return getResultFor(ANY);
 		} else {
-			int index = ((ParameterizedType) ownerResult.getType()).getParameter().indexOf(typeParameter);
-			return InferenceResult.from(ownerResult.getBindings().get(index).getType(), ownerResult.getBindings().get(index).getBindings());
+			int index = ((GenericElement) ownerResult.getType()).getTypeParameters().indexOf(typeParameter);
+			return InferenceResult.from(ownerResult.getBindings().get(index).getType(),
+					ownerResult.getBindings().get(index).getBindings());
 		}
 	}
 
@@ -309,8 +310,8 @@ public class ExpressionsTypeInferrer extends AbstractTypeSystemInferrer implemen
 	}
 
 	public InferenceResult doInfer(TypeSpecifier specifier) {
-		if (specifier.getType() instanceof ParameterizedType
-				&& ((ParameterizedType) specifier.getType()).getParameter().size() > 0) {
+		if (specifier.getType() instanceof GenericElement
+				&& ((GenericElement) specifier.getType()).getTypeParameters().size() > 0) {
 			List<InferenceResult> bindings = new ArrayList<>();
 			EList<TypeSpecifier> arguments = specifier.getTypeArguments();
 			for (TypeSpecifier typeSpecifier : arguments) {

+ 14 - 14
plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/validation/ExpressionsJavaValidator.java

@@ -17,7 +17,7 @@ import org.eclipse.emf.common.util.EList;
 import org.eclipse.xtext.validation.Check;
 import org.yakindu.base.expressions.expressions.Expression;
 import org.yakindu.base.types.ComplexType;
-import org.yakindu.base.types.ParameterizedType;
+import org.yakindu.base.types.GenericElement;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypeParameter;
 import org.yakindu.base.types.TypeSpecifier;
@@ -85,9 +85,9 @@ public class ExpressionsJavaValidator extends org.yakindu.base.expressions.valid
 	@Check
 	public void checkIsRaw(TypeSpecifier typedElement) {
 		Type type = typedElement.getType();
-		if (!(type instanceof ParameterizedType))
+		if (!(type instanceof GenericElement))
 			return;
-		EList<TypeParameter> typeParameter = ((ParameterizedType) type).getParameter();
+		EList<TypeParameter> typeParameter = ((GenericElement) type).getTypeParameters();
 		if (typedElement.getTypeArguments().size() == 0 && typeParameter.size() > 0) {
 			String s1 = typedElement.getType().getName();
 			String s2 = s1 + printer.concatTypeParameter(typeParameter);
@@ -99,8 +99,8 @@ public class ExpressionsJavaValidator extends org.yakindu.base.expressions.valid
 	@Check
 	public void checkTypedElementNotGeneric(TypeSpecifier typedElement) {
 		if (typedElement.getTypeArguments().size() > 0
-				&& ((!(typedElement.getType() instanceof ParameterizedType)) || ((ParameterizedType) typedElement
-						.getType()).getParameter().size() == 0)) {
+				&& ((!(typedElement.getType() instanceof GenericElement)) || ((GenericElement) typedElement
+						.getType()).getTypeParameters().size() == 0)) {
 			String s1 = typedElement.getType().getName();
 			String s2 = printer.concatTypeArguments(typedElement.getTypeArguments());
 			error(String.format(ERROR_NOT_GENERIC_MSG, s1, s2), typedElement,
@@ -110,11 +110,11 @@ public class ExpressionsJavaValidator extends org.yakindu.base.expressions.valid
 
 	@Check
 	public void checkNofArguments(TypeSpecifier typedElement) {
-		if (!(typedElement.getType() instanceof ParameterizedType)) {
+		if (!(typedElement.getType() instanceof GenericElement)) {
 			return;
 		}
-		ParameterizedType type = (ParameterizedType) typedElement.getType();
-		EList<TypeParameter> typeParameter = type.getParameter();
+		GenericElement type = (GenericElement) typedElement.getType();
+		EList<TypeParameter> typeParameter = type.getTypeParameters();
 		if (typedElement.getTypeArguments().size() > 0
 				&& (typedElement.getTypeArguments().size() != typeParameter.size()) && typeParameter.size() > 0) {
 			String s1 = type.getName() + printer.concatTypeParameter(typeParameter);
@@ -125,14 +125,14 @@ public class ExpressionsJavaValidator extends org.yakindu.base.expressions.valid
 	}
 
 	@Check
-	public void checkDuplicateTypeParameter(ParameterizedType type) {
+	public void checkDuplicateTypeParameter(GenericElement type) {
 		Set<String> names = Sets.newHashSet();
-		EList<TypeParameter> typeParameter = type.getParameter();
+		EList<TypeParameter> typeParameter = type.getTypeParameters();
 		for (TypeParameter param : typeParameter) {
 			String name = param.getName();
 			if (names.contains(name)) {
 				error(String.format(ERROR_DUPLICATE_TYPE_PARAMETER_MSG, name), type,
-						TypesPackage.Literals.PARAMETERIZED_TYPE__PARAMETER, ERROR_DUPLICATE_TYPE_PARAMETER_CODE);
+						TypesPackage.Literals.GENERIC_ELEMENT__TYPE_PARAMETERS, ERROR_DUPLICATE_TYPE_PARAMETER_CODE);
 			}
 			names.add(name);
 		}
@@ -140,11 +140,11 @@ public class ExpressionsJavaValidator extends org.yakindu.base.expressions.valid
 
 	@Check
 	public void checkTypeParameterBounds(TypeSpecifier typedElement) {
-		if (!(typedElement.getType() instanceof ParameterizedType)) {
+		if (!(typedElement.getType() instanceof GenericElement)) {
 			return;
 		}
-		ParameterizedType type = (ParameterizedType) typedElement.getType();
-		EList<TypeParameter> typeParameter = type.getParameter();
+		GenericElement type = (GenericElement) typedElement.getType();
+		EList<TypeParameter> typeParameter = type.getTypeParameters();
 		if (typedElement.getTypeArguments().size() == 0
 				|| (typedElement.getTypeArguments().size() != typeParameter.size()))
 			return;

二进制
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateGenericElement_templateParameters_TemplateParameter.gif


二进制
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateGenericElement_typeParameters_TypeParameter.gif


二进制
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreatePackage_member_TemplateParameter.gif


二进制
plugins/org.yakindu.base.types.edit/icons/full/obj16/GenericElement.gif


二进制
plugins/org.yakindu.base.types.edit/icons/full/obj16/TemplateParameter.gif


+ 5 - 0
plugins/org.yakindu.base.types.edit/plugin.properties

@@ -211,3 +211,8 @@ _UI_ArrayTypeSpecifier_size_feature = Size
 _UI_Parameter_varArgs_feature = Var Args
 _UI_Operation_isVariadic_feature = Is Variadic
 _UI_Operation_variadic_feature = Variadic
+_UI_TemplateParameter_type = Template Parameter
+_UI_GenericElement_type = Generic Element
+_UI_TemplateParameter_bound_feature = Bound
+_UI_GenericElement_templateParameters_feature = Template Parameters
+_UI_GenericElement_typeParameters_feature = Type Parameters

+ 0 - 2
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ArrayTypeSpecifierItemProvider.java

@@ -8,12 +8,10 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
-
 import org.yakindu.base.types.ArrayTypeSpecifier;
 import org.yakindu.base.types.TypesPackage;
 

+ 111 - 1
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ComplexTypeItemProvider.java

@@ -19,6 +19,7 @@ import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.yakindu.base.types.ComplexType;
 import org.yakindu.base.types.TypesFactory;
@@ -31,7 +32,7 @@ import org.yakindu.base.types.TypesPackage;
  * @generated
  */
 public class ComplexTypeItemProvider
-	extends ParameterizedTypeItemProvider {
+	extends GenericElementItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -53,11 +54,103 @@ public class ComplexTypeItemProvider
 		if (itemPropertyDescriptors == null) {
 			super.getPropertyDescriptors(object);
 
+			addAnnotationsPropertyDescriptor(object);
+			addIdPropertyDescriptor(object);
+			addAbstractPropertyDescriptor(object);
+			addVisiblePropertyDescriptor(object);
 			addSuperTypesPropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
 	}
 
+	/**
+	 * This adds a property descriptor for the Annotations feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAnnotationsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_AnnotatableElement_annotations_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_AnnotatableElement_annotations_feature", "_UI_AnnotatableElement_type"),
+				 TypesPackage.Literals.ANNOTATABLE_ELEMENT__ANNOTATIONS,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_PackageMember_id_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_PackageMember_id_feature", "_UI_PackageMember_type"),
+				 TypesPackage.Literals.PACKAGE_MEMBER__ID,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Abstract feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAbstractPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Type_abstract_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Type_abstract_feature", "_UI_Type_type"),
+				 TypesPackage.Literals.TYPE__ABSTRACT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Visible feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVisiblePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_Type_visible_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_Type_visible_feature", "_UI_Type_type"),
+				 TypesPackage.Literals.TYPE__VISIBLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
 	/**
 	 * This adds a property descriptor for the Super Types feature.
 	 * <!-- begin-user-doc -->
@@ -92,6 +185,7 @@ public class ComplexTypeItemProvider
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
+			childrenFeatures.add(TypesPackage.Literals.TYPE__CONSTRAINT);
 			childrenFeatures.add(TypesPackage.Literals.COMPLEX_TYPE__FEATURES);
 		}
 		return childrenFeatures;
@@ -147,6 +241,12 @@ public class ComplexTypeItemProvider
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(ComplexType.class)) {
+			case TypesPackage.COMPLEX_TYPE__ID:
+			case TypesPackage.COMPLEX_TYPE__ABSTRACT:
+			case TypesPackage.COMPLEX_TYPE__VISIBLE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case TypesPackage.COMPLEX_TYPE__CONSTRAINT:
 			case TypesPackage.COMPLEX_TYPE__FEATURES:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
@@ -165,6 +265,16 @@ public class ComplexTypeItemProvider
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
+		newChildDescriptors.add
+			(createChildParameter
+				(TypesPackage.Literals.TYPE__CONSTRAINT,
+				 TypesFactory.eINSTANCE.createTypeConstraint()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(TypesPackage.Literals.TYPE__CONSTRAINT,
+				 TypesFactory.eINSTANCE.createRangeConstraint()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(TypesPackage.Literals.COMPLEX_TYPE__FEATURES,

+ 30 - 24
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ParameterizedTypeItemProvider.java

@@ -1,13 +1,5 @@
-/** 
- * Copyright (c) 2015 committers of YAKINDU and others. 
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html 
- * Contributors:
- * committers of YAKINDU - initial API and implementation
- *
-*/
+/**
+ */
 package org.yakindu.base.types.provider;
 
 
@@ -16,28 +8,30 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
-import org.yakindu.base.types.ParameterizedType;
+import org.yakindu.base.base.provider.NamedElementItemProvider;
+import org.yakindu.base.types.GenericElement;
 import org.yakindu.base.types.TypesFactory;
 import org.yakindu.base.types.TypesPackage;
 
 /**
- * This is the item provider adapter for a {@link org.yakindu.base.types.ParameterizedType} object.
+ * This is the item provider adapter for a {@link org.yakindu.base.types.GenericElement} object.
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  * @generated
  */
-public class ParameterizedTypeItemProvider
-	extends TypeItemProvider {
+public class GenericElementItemProvider 
+	extends NamedElementItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public ParameterizedTypeItemProvider(AdapterFactory adapterFactory) {
+	public GenericElementItemProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
 	}
 
@@ -68,7 +62,7 @@ public class ParameterizedTypeItemProvider
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			childrenFeatures.add(TypesPackage.Literals.PARAMETERIZED_TYPE__PARAMETER);
+			childrenFeatures.add(TypesPackage.Literals.GENERIC_ELEMENT__TYPE_PARAMETERS);
 		}
 		return childrenFeatures;
 	}
@@ -87,14 +81,14 @@ public class ParameterizedTypeItemProvider
 	}
 
 	/**
-	 * This returns ParameterizedType.gif.
+	 * This returns GenericElement.gif.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
 	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/ParameterizedType"));
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/GenericElement"));
 	}
 
 	/**
@@ -105,11 +99,12 @@ public class ParameterizedTypeItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		String label = ((ParameterizedType)object).getName();
+		String label = ((GenericElement)object).getName();
 		return label == null || label.length() == 0 ?
-			getString("_UI_ParameterizedType_type") :
-			getString("_UI_ParameterizedType_type") + " " + label;
+			getString("_UI_GenericElement_type") :
+			getString("_UI_GenericElement_type") + " " + label;
 	}
+	
 
 	/**
 	 * This handles model notifications by calling {@link #updateChildren} to update any cached
@@ -122,8 +117,8 @@ public class ParameterizedTypeItemProvider
 	public void notifyChanged(Notification notification) {
 		updateChildren(notification);
 
-		switch (notification.getFeatureID(ParameterizedType.class)) {
-			case TypesPackage.PARAMETERIZED_TYPE__PARAMETER:
+		switch (notification.getFeatureID(GenericElement.class)) {
+			case TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
 		}
@@ -143,8 +138,19 @@ public class ParameterizedTypeItemProvider
 
 		newChildDescriptors.add
 			(createChildParameter
-				(TypesPackage.Literals.PARAMETERIZED_TYPE__PARAMETER,
+				(TypesPackage.Literals.GENERIC_ELEMENT__TYPE_PARAMETERS,
 				 TypesFactory.eINSTANCE.createTypeParameter()));
 	}
 
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return TypesEditPlugin.INSTANCE;
+	}
+
 }

+ 7 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/OperationItemProvider.java

@@ -97,6 +97,7 @@ public class OperationItemProvider extends DeclarationItemProvider {
 	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
+			childrenFeatures.add(TypesPackage.Literals.GENERIC_ELEMENT__TYPE_PARAMETERS);
 			childrenFeatures.add(TypesPackage.Literals.OPERATION__PARAMETERS);
 		}
 		return childrenFeatures;
@@ -180,6 +181,7 @@ public class OperationItemProvider extends DeclarationItemProvider {
 			case TypesPackage.OPERATION__VARIADIC:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case TypesPackage.OPERATION__TYPE_PARAMETERS:
 			case TypesPackage.OPERATION__PARAMETERS:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
@@ -198,6 +200,11 @@ public class OperationItemProvider extends DeclarationItemProvider {
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
+		newChildDescriptors.add
+			(createChildParameter
+				(TypesPackage.Literals.GENERIC_ELEMENT__TYPE_PARAMETERS,
+				 TypesFactory.eINSTANCE.createTypeParameter()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(TypesPackage.Literals.OPERATION__PARAMETERS,

+ 0 - 5
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/PackageItemProvider.java

@@ -203,11 +203,6 @@ public class PackageItemProvider
 				(TypesPackage.Literals.PACKAGE__MEMBER,
 				 TypesFactory.eINSTANCE.createEnumerationType()));
 
-		newChildDescriptors.add
-			(createChildParameter
-				(TypesPackage.Literals.PACKAGE__MEMBER,
-				 TypesFactory.eINSTANCE.createParameterizedType()));
-
 		newChildDescriptors.add
 			(createChildParameter
 				(TypesPackage.Literals.PACKAGE__MEMBER,

+ 0 - 4
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypeSpecifierItemProvider.java

@@ -8,11 +8,8 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
-
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -22,7 +19,6 @@ import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
 import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
-
 import org.yakindu.base.types.TypeSpecifier;
 import org.yakindu.base.types.TypesFactory;
 import org.yakindu.base.types.TypesPackage;

+ 8 - 8
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypesItemProviderAdapterFactory.java

@@ -377,26 +377,26 @@ public class TypesItemProviderAdapterFactory extends TypesAdapterFactory impleme
 	}
 
 	/**
-	 * This keeps track of the one adapter used for all {@link org.yakindu.base.types.ParameterizedType} instances.
+	 * This keeps track of the one adapter used for all {@link org.yakindu.base.types.GenericElement} instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected ParameterizedTypeItemProvider parameterizedTypeItemProvider;
+	protected GenericElementItemProvider genericElementItemProvider;
 
 	/**
-	 * This creates an adapter for a {@link org.yakindu.base.types.ParameterizedType}.
+	 * This creates an adapter for a {@link org.yakindu.base.types.GenericElement}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
-	public Adapter createParameterizedTypeAdapter() {
-		if (parameterizedTypeItemProvider == null) {
-			parameterizedTypeItemProvider = new ParameterizedTypeItemProvider(this);
+	public Adapter createGenericElementAdapter() {
+		if (genericElementItemProvider == null) {
+			genericElementItemProvider = new GenericElementItemProvider(this);
 		}
 
-		return parameterizedTypeItemProvider;
+		return genericElementItemProvider;
 	}
 
 	/**
@@ -672,7 +672,7 @@ public class TypesItemProviderAdapterFactory extends TypesAdapterFactory impleme
 		if (enumeratorItemProvider != null) enumeratorItemProvider.dispose();
 		if (typeConstraintItemProvider != null) typeConstraintItemProvider.dispose();
 		if (typeParameterItemProvider != null) typeParameterItemProvider.dispose();
-		if (parameterizedTypeItemProvider != null) parameterizedTypeItemProvider.dispose();
+		if (genericElementItemProvider != null) genericElementItemProvider.dispose();
 		if (packageMemberItemProvider != null) packageMemberItemProvider.dispose();
 		if (rangeConstraintItemProvider != null) rangeConstraintItemProvider.dispose();
 		if (domainItemProvider != null) domainItemProvider.dispose();

+ 4 - 4
plugins/org.yakindu.base.types/model/types.ecore

@@ -18,7 +18,7 @@
         defaultValueLiteral="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Declaration" abstract="true" eSuperTypes="#//TypedElement base.ecore#//NamedElement #//PackageMember"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="#//Declaration">
+  <eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="#//Declaration #//GenericElement">
     <eOperations name="getVarArgIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
         eType="#//Parameter" containment="true" eOpposite="#//Parameter/owningOperation"/>
@@ -62,7 +62,7 @@
   <eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//Type">
     <eStructuralFeatures xsi:type="ecore:EReference" name="baseType" eType="#//PrimitiveType"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ComplexType" eSuperTypes="#//ParameterizedType">
+  <eClassifiers xsi:type="ecore:EClass" name="ComplexType" eSuperTypes="#//Type #//GenericElement">
     <eOperations name="getAllFeatures" upperBound="-1" eType="#//Declaration"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="features" upperBound="-1"
         eType="#//Declaration" containment="true"/>
@@ -81,8 +81,8 @@
   <eClassifiers xsi:type="ecore:EClass" name="TypeParameter" eSuperTypes="#//Type">
     <eStructuralFeatures xsi:type="ecore:EReference" name="bound" eType="#//Type"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ParameterizedType" eSuperTypes="#//Type">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
+  <eClassifiers xsi:type="ecore:EClass" name="GenericElement" eSuperTypes="base.ecore#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="typeParameters" upperBound="-1"
         eType="#//TypeParameter" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PackageMember" eSuperTypes="base.ecore#//NamedElement #//AnnotatableElement">

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/ComplexType.java

@@ -21,7 +21,7 @@ import org.eclipse.emf.common.util.EList;
  * @model
  * @generated
  */
-public interface ComplexType extends ParameterizedType {
+public interface ComplexType extends Type, GenericElement {
 	/**
 	 * Returns the value of the '<em><b>Features</b></em>' containment reference list.
 	 * The list contents are of type {@link org.yakindu.base.types.Declaration}.

+ 41 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/GenericElement.java

@@ -0,0 +1,41 @@
+/**
+ */
+package org.yakindu.base.types;
+
+import org.eclipse.emf.common.util.EList;
+import org.yakindu.base.base.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Generic Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.yakindu.base.types.GenericElement#getTypeParameters <em>Type Parameters</em>}</li>
+ * </ul>
+ *
+ * @see org.yakindu.base.types.TypesPackage#getGenericElement()
+ * @model
+ * @generated
+ */
+public interface GenericElement extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Type Parameters</b></em>' containment reference list.
+	 * The list contents are of type {@link org.yakindu.base.types.TypeParameter}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type Parameters</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type Parameters</em>' containment reference list.
+	 * @see org.yakindu.base.types.TypesPackage#getGenericElement_TypeParameters()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<TypeParameter> getTypeParameters();
+
+} // GenericElement

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Operation.java

@@ -25,7 +25,7 @@ import org.eclipse.emf.common.util.EList;
  * @model
  * @generated
  */
-public interface Operation extends Declaration {
+public interface Operation extends Declaration, GenericElement {
 	/**
 	 * Returns the value of the '<em><b>Parameters</b></em>' containment reference list.
 	 * The list contents are of type {@link org.yakindu.base.types.Parameter}.

+ 0 - 40
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/ParameterizedType.java

@@ -1,40 +0,0 @@
-/**
- */
-package org.yakindu.base.types;
-
-import org.eclipse.emf.common.util.EList;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Parameterized Type</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.base.types.ParameterizedType#getParameter <em>Parameter</em>}</li>
- * </ul>
- *
- * @see org.yakindu.base.types.TypesPackage#getParameterizedType()
- * @model
- * @generated
- */
-public interface ParameterizedType extends Type {
-	/**
-	 * Returns the value of the '<em><b>Parameter</b></em>' containment reference list.
-	 * The list contents are of type {@link org.yakindu.base.types.TypeParameter}.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Parameter</em>' containment reference list isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Parameter</em>' containment reference list.
-	 * @see org.yakindu.base.types.TypesPackage#getParameterizedType_Parameter()
-	 * @model containment="true"
-	 * @generated
-	 */
-	EList<TypeParameter> getParameter();
-
-} // ParameterizedType

+ 0 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypeSpecifier.java

@@ -3,7 +3,6 @@
 package org.yakindu.base.types;
 
 import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EObject;
 
 /**

+ 3 - 3
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesFactory.java

@@ -143,13 +143,13 @@ public interface TypesFactory extends EFactory {
 	TypeParameter createTypeParameter();
 
 	/**
-	 * Returns a new object of class '<em>Parameterized Type</em>'.
+	 * Returns a new object of class '<em>Generic Element</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Parameterized Type</em>'.
+	 * @return a new object of class '<em>Generic Element</em>'.
 	 * @generated
 	 */
-	ParameterizedType createParameterizedType();
+	GenericElement createGenericElement();
 
 	/**
 	 * Returns a new object of class '<em>Package Member</em>'.

+ 69 - 105
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java

@@ -411,6 +411,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int OPERATION__ID = DECLARATION__ID;
 
+	/**
+	 * The feature id for the '<em><b>Type Parameters</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION__TYPE_PARAMETERS = DECLARATION_FEATURE_COUNT + 0;
+
 	/**
 	 * The feature id for the '<em><b>Parameters</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -418,7 +427,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int OPERATION__PARAMETERS = DECLARATION_FEATURE_COUNT + 0;
+	int OPERATION__PARAMETERS = DECLARATION_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Variadic</b></em>' attribute.
@@ -427,7 +436,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int OPERATION__VARIADIC = DECLARATION_FEATURE_COUNT + 1;
+	int OPERATION__VARIADIC = DECLARATION_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Operation</em>' class.
@@ -436,7 +445,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int OPERATION_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 2;
+	int OPERATION_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
@@ -868,86 +877,14 @@ public interface TypesPackage extends EPackage {
 	int ENUMERATION_TYPE_FEATURE_COUNT = PRIMITIVE_TYPE_FEATURE_COUNT + 1;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.impl.ParameterizedTypeImpl <em>Parameterized Type</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.impl.ParameterizedTypeImpl
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getParameterizedType()
-	 * @generated
-	 */
-	int PARAMETERIZED_TYPE = 15;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERIZED_TYPE__NAME = TYPE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Annotations</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERIZED_TYPE__ANNOTATIONS = TYPE__ANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * The meta object id for the '{@link org.yakindu.base.types.impl.GenericElementImpl <em>Generic Element</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.types.impl.GenericElementImpl
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getGenericElement()
 	 * @generated
-	 * @ordered
 	 */
-	int PARAMETERIZED_TYPE__ID = TYPE__ID;
-
-	/**
-	 * The feature id for the '<em><b>Constraint</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERIZED_TYPE__CONSTRAINT = TYPE__CONSTRAINT;
-
-	/**
-	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERIZED_TYPE__ABSTRACT = TYPE__ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Visible</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERIZED_TYPE__VISIBLE = TYPE__VISIBLE;
-
-	/**
-	 * The feature id for the '<em><b>Parameter</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERIZED_TYPE__PARAMETER = TYPE_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the '<em>Parameterized Type</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERIZED_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 1;
+	int GENERIC_ELEMENT = 15;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.types.impl.ComplexTypeImpl <em>Complex Type</em>}' class.
@@ -966,7 +903,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE__NAME = PARAMETERIZED_TYPE__NAME;
+	int COMPLEX_TYPE__NAME = TYPE__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Annotations</b></em>' reference list.
@@ -975,7 +912,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE__ANNOTATIONS = PARAMETERIZED_TYPE__ANNOTATIONS;
+	int COMPLEX_TYPE__ANNOTATIONS = TYPE__ANNOTATIONS;
 
 	/**
 	 * The feature id for the '<em><b>Id</b></em>' attribute.
@@ -984,7 +921,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE__ID = PARAMETERIZED_TYPE__ID;
+	int COMPLEX_TYPE__ID = TYPE__ID;
 
 	/**
 	 * The feature id for the '<em><b>Constraint</b></em>' containment reference list.
@@ -993,7 +930,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE__CONSTRAINT = PARAMETERIZED_TYPE__CONSTRAINT;
+	int COMPLEX_TYPE__CONSTRAINT = TYPE__CONSTRAINT;
 
 	/**
 	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
@@ -1002,7 +939,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE__ABSTRACT = PARAMETERIZED_TYPE__ABSTRACT;
+	int COMPLEX_TYPE__ABSTRACT = TYPE__ABSTRACT;
 
 	/**
 	 * The feature id for the '<em><b>Visible</b></em>' attribute.
@@ -1011,16 +948,16 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE__VISIBLE = PARAMETERIZED_TYPE__VISIBLE;
+	int COMPLEX_TYPE__VISIBLE = TYPE__VISIBLE;
 
 	/**
-	 * The feature id for the '<em><b>Parameter</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Type Parameters</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE__PARAMETER = PARAMETERIZED_TYPE__PARAMETER;
+	int COMPLEX_TYPE__TYPE_PARAMETERS = TYPE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Features</b></em>' containment reference list.
@@ -1029,7 +966,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE__FEATURES = PARAMETERIZED_TYPE_FEATURE_COUNT + 0;
+	int COMPLEX_TYPE__FEATURES = TYPE_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Super Types</b></em>' reference list.
@@ -1038,7 +975,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE__SUPER_TYPES = PARAMETERIZED_TYPE_FEATURE_COUNT + 1;
+	int COMPLEX_TYPE__SUPER_TYPES = TYPE_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Complex Type</em>' class.
@@ -1047,7 +984,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COMPLEX_TYPE_FEATURE_COUNT = PARAMETERIZED_TYPE_FEATURE_COUNT + 2;
+	int COMPLEX_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 3;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.types.impl.EnumeratorImpl <em>Enumerator</em>}' class.
@@ -1242,6 +1179,33 @@ public interface TypesPackage extends EPackage {
 	 */
 	int TYPE_PARAMETER_FEATURE_COUNT = TYPE_FEATURE_COUNT + 1;
 
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_ELEMENT__NAME = BasePackage.NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Type Parameters</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_ELEMENT__TYPE_PARAMETERS = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Generic Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_ELEMENT_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.types.impl.RangeConstraintImpl <em>Range Constraint</em>}' class.
 	 * <!-- begin-user-doc -->
@@ -1992,25 +1956,25 @@ public interface TypesPackage extends EPackage {
 	EReference getTypeParameter_Bound();
 
 	/**
-	 * Returns the meta object for class '{@link org.yakindu.base.types.ParameterizedType <em>Parameterized Type</em>}'.
+	 * Returns the meta object for class '{@link org.yakindu.base.types.GenericElement <em>Generic Element</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Parameterized Type</em>'.
-	 * @see org.yakindu.base.types.ParameterizedType
+	 * @return the meta object for class '<em>Generic Element</em>'.
+	 * @see org.yakindu.base.types.GenericElement
 	 * @generated
 	 */
-	EClass getParameterizedType();
+	EClass getGenericElement();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link org.yakindu.base.types.ParameterizedType#getParameter <em>Parameter</em>}'.
+	 * Returns the meta object for the containment reference list '{@link org.yakindu.base.types.GenericElement#getTypeParameters <em>Type Parameters</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference list '<em>Parameter</em>'.
-	 * @see org.yakindu.base.types.ParameterizedType#getParameter()
-	 * @see #getParameterizedType()
+	 * @return the meta object for the containment reference list '<em>Type Parameters</em>'.
+	 * @see org.yakindu.base.types.GenericElement#getTypeParameters()
+	 * @see #getGenericElement()
 	 * @generated
 	 */
-	EReference getParameterizedType_Parameter();
+	EReference getGenericElement_TypeParameters();
 
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.types.PackageMember <em>Package Member</em>}'.
@@ -2561,22 +2525,22 @@ public interface TypesPackage extends EPackage {
 		EReference TYPE_PARAMETER__BOUND = eINSTANCE.getTypeParameter_Bound();
 
 		/**
-		 * The meta object literal for the '{@link org.yakindu.base.types.impl.ParameterizedTypeImpl <em>Parameterized Type</em>}' class.
+		 * The meta object literal for the '{@link org.yakindu.base.types.impl.GenericElementImpl <em>Generic Element</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see org.yakindu.base.types.impl.ParameterizedTypeImpl
-		 * @see org.yakindu.base.types.impl.TypesPackageImpl#getParameterizedType()
+		 * @see org.yakindu.base.types.impl.GenericElementImpl
+		 * @see org.yakindu.base.types.impl.TypesPackageImpl#getGenericElement()
 		 * @generated
 		 */
-		EClass PARAMETERIZED_TYPE = eINSTANCE.getParameterizedType();
+		EClass GENERIC_ELEMENT = eINSTANCE.getGenericElement();
 
 		/**
-		 * The meta object literal for the '<em><b>Parameter</b></em>' containment reference list feature.
+		 * The meta object literal for the '<em><b>Type Parameters</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference PARAMETERIZED_TYPE__PARAMETER = eINSTANCE.getParameterizedType_Parameter();
+		EReference GENERIC_ELEMENT__TYPE_PARAMETERS = eINSTANCE.getGenericElement_TypeParameters();
 
 		/**
 		 * The meta object literal for the '{@link org.yakindu.base.types.impl.PackageMemberImpl <em>Package Member</em>}' class.

+ 0 - 3
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ArrayTypeSpecifierImpl.java

@@ -3,11 +3,8 @@
 package org.yakindu.base.types.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
 import org.yakindu.base.types.ArrayTypeSpecifier;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypesPackage;

+ 77 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ComplexTypeImpl.java

@@ -7,17 +7,25 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 import org.eclipse.emf.ecore.util.InternalEList;
+import org.yakindu.base.types.AnnotatableElement;
+import org.yakindu.base.types.Annotation;
 import org.yakindu.base.types.ComplexType;
 import org.yakindu.base.types.Declaration;
+import org.yakindu.base.types.GenericElement;
+import org.yakindu.base.types.PackageMember;
 import org.yakindu.base.types.Type;
+import org.yakindu.base.types.TypeConstraint;
+import org.yakindu.base.types.TypeParameter;
 import org.yakindu.base.types.TypesPackage;
 
 /**
@@ -27,13 +35,24 @@ import org.yakindu.base.types.TypesPackage;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.yakindu.base.types.impl.ComplexTypeImpl#getTypeParameters <em>Type Parameters</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.ComplexTypeImpl#getFeatures <em>Features</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.ComplexTypeImpl#getSuperTypes <em>Super Types</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexType {
+public class ComplexTypeImpl extends TypeImpl implements ComplexType {
+	/**
+	 * The cached value of the '{@link #getTypeParameters() <em>Type Parameters</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeParameters()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<TypeParameter> typeParameters;
+
 	/**
 	 * The cached value of the '{@link #getFeatures() <em>Features</em>}' containment reference list.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -69,6 +88,18 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 		return TypesPackage.Literals.COMPLEX_TYPE;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<TypeParameter> getTypeParameters() {
+		if (typeParameters == null) {
+			typeParameters = new EObjectContainmentEList<TypeParameter>(TypeParameter.class, this, TypesPackage.COMPLEX_TYPE__TYPE_PARAMETERS);
+		}
+		return typeParameters;
+	}
+
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -126,6 +157,8 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case TypesPackage.COMPLEX_TYPE__TYPE_PARAMETERS:
+				return ((InternalEList<?>)getTypeParameters()).basicRemove(otherEnd, msgs);
 			case TypesPackage.COMPLEX_TYPE__FEATURES:
 				return ((InternalEList<?>)getFeatures()).basicRemove(otherEnd, msgs);
 		}
@@ -139,6 +172,8 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case TypesPackage.COMPLEX_TYPE__TYPE_PARAMETERS:
+				return getTypeParameters();
 			case TypesPackage.COMPLEX_TYPE__FEATURES:
 				return getFeatures();
 			case TypesPackage.COMPLEX_TYPE__SUPER_TYPES:
@@ -155,6 +190,10 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case TypesPackage.COMPLEX_TYPE__TYPE_PARAMETERS:
+				getTypeParameters().clear();
+				getTypeParameters().addAll((Collection<? extends TypeParameter>)newValue);
+				return;
 			case TypesPackage.COMPLEX_TYPE__FEATURES:
 				getFeatures().clear();
 				getFeatures().addAll((Collection<? extends Declaration>)newValue);
@@ -174,6 +213,9 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case TypesPackage.COMPLEX_TYPE__TYPE_PARAMETERS:
+				getTypeParameters().clear();
+				return;
 			case TypesPackage.COMPLEX_TYPE__FEATURES:
 				getFeatures().clear();
 				return;
@@ -191,6 +233,8 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case TypesPackage.COMPLEX_TYPE__TYPE_PARAMETERS:
+				return typeParameters != null && !typeParameters.isEmpty();
 			case TypesPackage.COMPLEX_TYPE__FEATURES:
 				return features != null && !features.isEmpty();
 			case TypesPackage.COMPLEX_TYPE__SUPER_TYPES:
@@ -199,4 +243,36 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == GenericElement.class) {
+			switch (derivedFeatureID) {
+				case TypesPackage.COMPLEX_TYPE__TYPE_PARAMETERS: return TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == GenericElement.class) {
+			switch (baseFeatureID) {
+				case TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS: return TypesPackage.COMPLEX_TYPE__TYPE_PARAMETERS;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 } // ComplexTypeImpl

+ 1 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/DeclarationImpl.java

@@ -3,6 +3,7 @@
 package org.yakindu.base.types.impl;
 
 import java.util.Collection;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.EList;

+ 26 - 26
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ParameterizedTypeImpl.java

@@ -10,40 +10,40 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
-import org.yakindu.base.types.ParameterizedType;
+import org.yakindu.base.base.impl.NamedElementImpl;
+import org.yakindu.base.types.GenericElement;
 import org.yakindu.base.types.TypeParameter;
 import org.yakindu.base.types.TypesPackage;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Parameterized Type</b></em>'.
+ * An implementation of the model object '<em><b>Generic Element</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.yakindu.base.types.impl.ParameterizedTypeImpl#getParameter <em>Parameter</em>}</li>
+ *   <li>{@link org.yakindu.base.types.impl.GenericElementImpl#getTypeParameters <em>Type Parameters</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class ParameterizedTypeImpl extends TypeImpl implements ParameterizedType {
+public class GenericElementImpl extends NamedElementImpl implements GenericElement {
 	/**
-	 * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference list.
+	 * The cached value of the '{@link #getTypeParameters() <em>Type Parameters</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getParameter()
+	 * @see #getTypeParameters()
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<TypeParameter> parameter;
-
+	protected EList<TypeParameter> typeParameters;
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected ParameterizedTypeImpl() {
+	protected GenericElementImpl() {
 		super();
 	}
 
@@ -54,7 +54,7 @@ public class ParameterizedTypeImpl extends TypeImpl implements ParameterizedType
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return TypesPackage.Literals.PARAMETERIZED_TYPE;
+		return TypesPackage.Literals.GENERIC_ELEMENT;
 	}
 
 	/**
@@ -62,11 +62,11 @@ public class ParameterizedTypeImpl extends TypeImpl implements ParameterizedType
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList<TypeParameter> getParameter() {
-		if (parameter == null) {
-			parameter = new EObjectContainmentEList<TypeParameter>(TypeParameter.class, this, TypesPackage.PARAMETERIZED_TYPE__PARAMETER);
+	public EList<TypeParameter> getTypeParameters() {
+		if (typeParameters == null) {
+			typeParameters = new EObjectContainmentEList<TypeParameter>(TypeParameter.class, this, TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS);
 		}
-		return parameter;
+		return typeParameters;
 	}
 
 	/**
@@ -77,8 +77,8 @@ public class ParameterizedTypeImpl extends TypeImpl implements ParameterizedType
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case TypesPackage.PARAMETERIZED_TYPE__PARAMETER:
-				return ((InternalEList<?>)getParameter()).basicRemove(otherEnd, msgs);
+			case TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS:
+				return ((InternalEList<?>)getTypeParameters()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -91,8 +91,8 @@ public class ParameterizedTypeImpl extends TypeImpl implements ParameterizedType
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case TypesPackage.PARAMETERIZED_TYPE__PARAMETER:
-				return getParameter();
+			case TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS:
+				return getTypeParameters();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -106,9 +106,9 @@ public class ParameterizedTypeImpl extends TypeImpl implements ParameterizedType
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case TypesPackage.PARAMETERIZED_TYPE__PARAMETER:
-				getParameter().clear();
-				getParameter().addAll((Collection<? extends TypeParameter>)newValue);
+			case TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS:
+				getTypeParameters().clear();
+				getTypeParameters().addAll((Collection<? extends TypeParameter>)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -122,8 +122,8 @@ public class ParameterizedTypeImpl extends TypeImpl implements ParameterizedType
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case TypesPackage.PARAMETERIZED_TYPE__PARAMETER:
-				getParameter().clear();
+			case TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS:
+				getTypeParameters().clear();
 				return;
 		}
 		super.eUnset(featureID);
@@ -137,10 +137,10 @@ public class ParameterizedTypeImpl extends TypeImpl implements ParameterizedType
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case TypesPackage.PARAMETERIZED_TYPE__PARAMETER:
-				return parameter != null && !parameter.isEmpty();
+			case TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS:
+				return typeParameters != null && !typeParameters.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
-} //ParameterizedTypeImpl
+} //GenericElementImpl

+ 71 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/OperationImpl.java

@@ -12,10 +12,13 @@ import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.InternalEList;
+import org.yakindu.base.types.GenericElement;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.Parameter;
+import org.yakindu.base.types.TypeParameter;
 import org.yakindu.base.types.TypesPackage;
 
 /**
@@ -26,6 +29,7 @@ import org.yakindu.base.types.TypesPackage;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.yakindu.base.types.impl.OperationImpl#getTypeParameters <em>Type Parameters</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.OperationImpl#getParameters <em>Parameters</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.OperationImpl#isVariadic <em>Variadic</em>}</li>
  * </ul>
@@ -33,6 +37,16 @@ import org.yakindu.base.types.TypesPackage;
  * @generated
  */
 public class OperationImpl extends DeclarationImpl implements Operation {
+	/**
+	 * The cached value of the '{@link #getTypeParameters() <em>Type Parameters</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeParameters()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<TypeParameter> typeParameters;
+
 	/**
 	 * The cached value of the '{@link #getParameters() <em>Parameters</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -72,6 +86,18 @@ public class OperationImpl extends DeclarationImpl implements Operation {
 		return TypesPackage.Literals.OPERATION;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<TypeParameter> getTypeParameters() {
+		if (typeParameters == null) {
+			typeParameters = new EObjectContainmentEList<TypeParameter>(TypeParameter.class, this, TypesPackage.OPERATION__TYPE_PARAMETERS);
+		}
+		return typeParameters;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -129,6 +155,8 @@ public class OperationImpl extends DeclarationImpl implements Operation {
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case TypesPackage.OPERATION__TYPE_PARAMETERS:
+				return ((InternalEList<?>)getTypeParameters()).basicRemove(otherEnd, msgs);
 			case TypesPackage.OPERATION__PARAMETERS:
 				return ((InternalEList<?>)getParameters()).basicRemove(otherEnd, msgs);
 		}
@@ -143,6 +171,8 @@ public class OperationImpl extends DeclarationImpl implements Operation {
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case TypesPackage.OPERATION__TYPE_PARAMETERS:
+				return getTypeParameters();
 			case TypesPackage.OPERATION__PARAMETERS:
 				return getParameters();
 			case TypesPackage.OPERATION__VARIADIC:
@@ -160,6 +190,10 @@ public class OperationImpl extends DeclarationImpl implements Operation {
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case TypesPackage.OPERATION__TYPE_PARAMETERS:
+				getTypeParameters().clear();
+				getTypeParameters().addAll((Collection<? extends TypeParameter>)newValue);
+				return;
 			case TypesPackage.OPERATION__PARAMETERS:
 				getParameters().clear();
 				getParameters().addAll((Collection<? extends Parameter>)newValue);
@@ -176,6 +210,9 @@ public class OperationImpl extends DeclarationImpl implements Operation {
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case TypesPackage.OPERATION__TYPE_PARAMETERS:
+				getTypeParameters().clear();
+				return;
 			case TypesPackage.OPERATION__PARAMETERS:
 				getParameters().clear();
 				return;
@@ -191,6 +228,8 @@ public class OperationImpl extends DeclarationImpl implements Operation {
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case TypesPackage.OPERATION__TYPE_PARAMETERS:
+				return typeParameters != null && !typeParameters.isEmpty();
 			case TypesPackage.OPERATION__PARAMETERS:
 				return parameters != null && !parameters.isEmpty();
 			case TypesPackage.OPERATION__VARIADIC:
@@ -199,4 +238,36 @@ public class OperationImpl extends DeclarationImpl implements Operation {
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == GenericElement.class) {
+			switch (derivedFeatureID) {
+				case TypesPackage.OPERATION__TYPE_PARAMETERS: return TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == GenericElement.class) {
+			switch (baseFeatureID) {
+				case TypesPackage.GENERIC_ELEMENT__TYPE_PARAMETERS: return TypesPackage.OPERATION__TYPE_PARAMETERS;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 } //OperationImpl

+ 1 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ParameterImpl.java

@@ -7,6 +7,7 @@
 package org.yakindu.base.types.impl;
 
 import java.util.Collection;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.EList;

+ 24 - 25
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypeParameterImpl.java

@@ -6,15 +6,14 @@ import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypeParameter;
-import org.yakindu.base.types.TypeParameterBinding;
 import org.yakindu.base.types.TypesPackage;
 
 /**
- * <!-- begin-user-doc --> An implementation of the model object '
- * <em><b>Type Parameter</b></em>'. <!-- end-user-doc -->
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Parameter</b></em>'.
+ * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
@@ -27,7 +26,8 @@ import org.yakindu.base.types.TypesPackage;
 public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	/**
 	 * The cached value of the '{@link #getBound() <em>Bound</em>}' reference.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @see #getBound()
 	 * @generated
 	 * @ordered
@@ -35,7 +35,8 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	protected Type bound;
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected TypeParameterImpl() {
@@ -43,7 +44,8 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
@@ -52,7 +54,8 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	public Type getBound() {
@@ -68,7 +71,8 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	public Type basicGetBound() {
@@ -76,7 +80,8 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	public void setBound(Type newBound) {
@@ -87,7 +92,8 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
@@ -101,7 +107,8 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
@@ -115,7 +122,8 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
@@ -129,7 +137,8 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
@@ -141,14 +150,4 @@ public class TypeParameterImpl extends TypeImpl implements TypeParameter {
 		return super.eIsSet(featureID);
 	}
 
-	@Override
-	public Type getOriginType() {
-		TypeParameterBinding existingAdapter = (TypeParameterBinding) EcoreUtil
-				.getExistingAdapter(this, TypeParameterBinding.class);
-		if (existingAdapter != null && existingAdapter.getActualType() != null) {
-			return existingAdapter.getActualType();
-		}
-		return super.getOriginType();
-	}
-
-} // TypeParameterImpl
+} //TypeParameterImpl

+ 5 - 5
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesFactoryImpl.java

@@ -21,10 +21,10 @@ import org.yakindu.base.types.Domain;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
 import org.yakindu.base.types.Event;
+import org.yakindu.base.types.GenericElement;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.PackageMember;
 import org.yakindu.base.types.Parameter;
-import org.yakindu.base.types.ParameterizedType;
 import org.yakindu.base.types.PrimitiveType;
 import org.yakindu.base.types.Property;
 import org.yakindu.base.types.RangeConstraint;
@@ -93,7 +93,7 @@ public class TypesFactoryImpl extends EFactoryImpl implements TypesFactory {
 			case TypesPackage.ENUMERATOR: return createEnumerator();
 			case TypesPackage.TYPE_CONSTRAINT: return createTypeConstraint();
 			case TypesPackage.TYPE_PARAMETER: return createTypeParameter();
-			case TypesPackage.PARAMETERIZED_TYPE: return createParameterizedType();
+			case TypesPackage.GENERIC_ELEMENT: return createGenericElement();
 			case TypesPackage.PACKAGE_MEMBER: return createPackageMember();
 			case TypesPackage.RANGE_CONSTRAINT: return createRangeConstraint();
 			case TypesPackage.DOMAIN: return createDomain();
@@ -271,9 +271,9 @@ public class TypesFactoryImpl extends EFactoryImpl implements TypesFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public ParameterizedType createParameterizedType() {
-		ParameterizedTypeImpl parameterizedType = new ParameterizedTypeImpl();
-		return parameterizedType;
+	public GenericElement createGenericElement() {
+		GenericElementImpl genericElement = new GenericElementImpl();
+		return genericElement;
 	}
 
 	/**

+ 14 - 12
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java

@@ -23,10 +23,10 @@ import org.yakindu.base.types.Domain;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
 import org.yakindu.base.types.Event;
+import org.yakindu.base.types.GenericElement;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.PackageMember;
 import org.yakindu.base.types.Parameter;
-import org.yakindu.base.types.ParameterizedType;
 import org.yakindu.base.types.PrimitiveType;
 import org.yakindu.base.types.Property;
 import org.yakindu.base.types.RangeConstraint;
@@ -145,7 +145,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass parameterizedTypeEClass = null;
+	private EClass genericElementEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -622,8 +622,8 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getParameterizedType() {
-		return parameterizedTypeEClass;
+	public EClass getGenericElement() {
+		return genericElementEClass;
 	}
 
 	/**
@@ -631,8 +631,8 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getParameterizedType_Parameter() {
-		return (EReference)parameterizedTypeEClass.getEStructuralFeatures().get(0);
+	public EReference getGenericElement_TypeParameters() {
+		return (EReference)genericElementEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -861,8 +861,8 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		typeParameterEClass = createEClass(TYPE_PARAMETER);
 		createEReference(typeParameterEClass, TYPE_PARAMETER__BOUND);
 
-		parameterizedTypeEClass = createEClass(PARAMETERIZED_TYPE);
-		createEReference(parameterizedTypeEClass, PARAMETERIZED_TYPE__PARAMETER);
+		genericElementEClass = createEClass(GENERIC_ELEMENT);
+		createEReference(genericElementEClass, GENERIC_ELEMENT__TYPE_PARAMETERS);
 
 		packageMemberEClass = createEClass(PACKAGE_MEMBER);
 		createEAttribute(packageMemberEClass, PACKAGE_MEMBER__ID);
@@ -926,6 +926,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		declarationEClass.getESuperTypes().add(theBasePackage.getNamedElement());
 		declarationEClass.getESuperTypes().add(this.getPackageMember());
 		operationEClass.getESuperTypes().add(this.getDeclaration());
+		operationEClass.getESuperTypes().add(this.getGenericElement());
 		propertyEClass.getESuperTypes().add(this.getDeclaration());
 		parameterEClass.getESuperTypes().add(this.getTypedElement());
 		parameterEClass.getESuperTypes().add(theBasePackage.getNamedElement());
@@ -933,10 +934,11 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		eventEClass.getESuperTypes().add(this.getDeclaration());
 		enumerationTypeEClass.getESuperTypes().add(this.getPrimitiveType());
 		primitiveTypeEClass.getESuperTypes().add(this.getType());
-		complexTypeEClass.getESuperTypes().add(this.getParameterizedType());
+		complexTypeEClass.getESuperTypes().add(this.getType());
+		complexTypeEClass.getESuperTypes().add(this.getGenericElement());
 		enumeratorEClass.getESuperTypes().add(this.getDeclaration());
 		typeParameterEClass.getESuperTypes().add(this.getType());
-		parameterizedTypeEClass.getESuperTypes().add(this.getType());
+		genericElementEClass.getESuperTypes().add(theBasePackage.getNamedElement());
 		packageMemberEClass.getESuperTypes().add(theBasePackage.getNamedElement());
 		packageMemberEClass.getESuperTypes().add(this.getAnnotatableElement());
 		rangeConstraintEClass.getESuperTypes().add(this.getTypeConstraint());
@@ -1008,8 +1010,8 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		initEClass(typeParameterEClass, TypeParameter.class, "TypeParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getTypeParameter_Bound(), this.getType(), null, "bound", null, 0, 1, TypeParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(parameterizedTypeEClass, ParameterizedType.class, "ParameterizedType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getParameterizedType_Parameter(), this.getTypeParameter(), null, "parameter", null, 0, -1, ParameterizedType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(genericElementEClass, GenericElement.class, "GenericElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getGenericElement_TypeParameters(), this.getTypeParameter(), null, "typeParameters", null, 0, -1, GenericElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(packageMemberEClass, PackageMember.class, "PackageMember", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getPackageMember_Id(), ecorePackage.getEString(), "id", null, 0, 1, PackageMember.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

+ 6 - 6
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesAdapterFactory.java

@@ -20,10 +20,10 @@ import org.yakindu.base.types.Domain;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
 import org.yakindu.base.types.Event;
+import org.yakindu.base.types.GenericElement;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.PackageMember;
 import org.yakindu.base.types.Parameter;
-import org.yakindu.base.types.ParameterizedType;
 import org.yakindu.base.types.PrimitiveType;
 import org.yakindu.base.types.Property;
 import org.yakindu.base.types.RangeConstraint;
@@ -149,8 +149,8 @@ public class TypesAdapterFactory extends AdapterFactoryImpl {
 				return createTypeParameterAdapter();
 			}
 			@Override
-			public Adapter caseParameterizedType(ParameterizedType object) {
-				return createParameterizedTypeAdapter();
+			public Adapter caseGenericElement(GenericElement object) {
+				return createGenericElementAdapter();
 			}
 			@Override
 			public Adapter casePackageMember(PackageMember object) {
@@ -432,16 +432,16 @@ public class TypesAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.ParameterizedType <em>Parameterized Type</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.GenericElement <em>Generic Element</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
 	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
 	 * <!-- end-user-doc -->
 	 * @return the new adapter.
-	 * @see org.yakindu.base.types.ParameterizedType
+	 * @see org.yakindu.base.types.GenericElement
 	 * @generated
 	 */
-	public Adapter createParameterizedTypeAdapter() {
+	public Adapter createGenericElementAdapter() {
 		return null;
 	}
 

+ 10 - 12
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesSwitch.java

@@ -19,10 +19,10 @@ import org.yakindu.base.types.Domain;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
 import org.yakindu.base.types.Event;
+import org.yakindu.base.types.GenericElement;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.PackageMember;
 import org.yakindu.base.types.Parameter;
-import org.yakindu.base.types.ParameterizedType;
 import org.yakindu.base.types.PrimitiveType;
 import org.yakindu.base.types.Property;
 import org.yakindu.base.types.RangeConstraint;
@@ -117,6 +117,7 @@ public class TypesSwitch<T> extends Switch<T> {
 				Operation operation = (Operation)theEObject;
 				T result = caseOperation(operation);
 				if (result == null) result = caseDeclaration(operation);
+				if (result == null) result = caseGenericElement(operation);
 				if (result == null) result = caseTypedElement(operation);
 				if (result == null) result = casePackageMember(operation);
 				if (result == null) result = caseNamedElement(operation);
@@ -191,8 +192,8 @@ public class TypesSwitch<T> extends Switch<T> {
 			case TypesPackage.COMPLEX_TYPE: {
 				ComplexType complexType = (ComplexType)theEObject;
 				T result = caseComplexType(complexType);
-				if (result == null) result = caseParameterizedType(complexType);
 				if (result == null) result = caseType(complexType);
+				if (result == null) result = caseGenericElement(complexType);
 				if (result == null) result = casePackageMember(complexType);
 				if (result == null) result = caseNamedElement(complexType);
 				if (result == null) result = caseAnnotatableElement(complexType);
@@ -226,13 +227,10 @@ public class TypesSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case TypesPackage.PARAMETERIZED_TYPE: {
-				ParameterizedType parameterizedType = (ParameterizedType)theEObject;
-				T result = caseParameterizedType(parameterizedType);
-				if (result == null) result = caseType(parameterizedType);
-				if (result == null) result = casePackageMember(parameterizedType);
-				if (result == null) result = caseNamedElement(parameterizedType);
-				if (result == null) result = caseAnnotatableElement(parameterizedType);
+			case TypesPackage.GENERIC_ELEMENT: {
+				GenericElement genericElement = (GenericElement)theEObject;
+				T result = caseGenericElement(genericElement);
+				if (result == null) result = caseNamedElement(genericElement);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -526,17 +524,17 @@ public class TypesSwitch<T> extends Switch<T> {
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Parameterized Type</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Generic Element</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch.
 	 * <!-- end-user-doc -->
 	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Parameterized Type</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Generic Element</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseParameterizedType(ParameterizedType object) {
+	public T caseGenericElement(GenericElement object) {
 		return null;
 	}
 

二进制
plugins/org.yakindu.sct.model.stext.edit/icons/full/ctool16/CreateImportScope_imports_Package.gif


+ 0 - 1
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/scoping/ContextPredicateProvider.java

@@ -73,7 +73,6 @@ public class ContextPredicateProvider {
 			EClass eClass = input.getEClass();
 			
 			return (SGraphPackage.Literals.SCOPE.isSuperTypeOf(eClass)); 
-//					|| (TypesPackage.Literals.DECLARATION.isSuperTypeOf(eClass));
 		}
 	}
 

+ 2 - 2
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/util/STextTestScopeProvider.java

@@ -155,10 +155,10 @@ public class STextTestScopeProvider extends STextScopeProvider {
 		
 		TypeParameter typeParam1 = TypesFactory.eINSTANCE.createTypeParameter();
 		typeParam1.setName("T1");
-		complexType.getParameter().add(typeParam1);
+		complexType.getTypeParameters().add(typeParam1);
 		TypeParameter typeParam2 = TypesFactory.eINSTANCE.createTypeParameter();
 		typeParam2.setName("T2");
-		complexType.getParameter().add(typeParam2);
+		complexType.getTypeParameters().add(typeParam2);
 
 		Property prop1 = TypesFactory.eINSTANCE.createProperty();
 		prop1.setName("prop1");