summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsefftinge2008-03-04 05:52:57 (EST)
committer sefftinge2008-03-04 05:52:57 (EST)
commitb97e76a1eecf75230484a4479190d1e57b40f158 (patch)
tree706bb8a8434a4c7e20e0196ad350b54d66ec9726
parent5eb7284d48d11bb33ef635028466e4a7e362f780 (diff)
downloadorg.eclipse.xpand-b97e76a1eecf75230484a4479190d1e57b40f158.zip
org.eclipse.xpand-b97e76a1eecf75230484a4479190d1e57b40f158.tar.gz
org.eclipse.xpand-b97e76a1eecf75230484a4479190d1e57b40f158.tar.bz2
static typesystem (4th draft)
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/AbstractNamedElement.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/AbstractTypeReference.java22
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/FunctionType.java73
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/StaticTypesystemFactory.java82
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/StaticTypesystemPackage.java585
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/Type.java73
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/TypeVariable.java54
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/VoidType.java21
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/WildcardType.java61
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclarationFactory.java100
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclarationPackage.java704
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredFunction.java90
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredOperation.java102
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredParameter.java22
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredProperty.java22
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredStaticProperty.java22
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredType.java99
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredTypeParameter.java22
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclarationFactoryImpl.java165
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclarationPackageImpl.java429
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredFunctionImpl.java257
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredOperationImpl.java305
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredParameterImpl.java45
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredPropertyImpl.java45
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredStaticPropertyImpl.java45
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredTypeImpl.java283
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredTypeParameterImpl.java45
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/util/DeclarationAdapterFactory.java252
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/util/DeclarationSwitch.java280
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/AbstractNamedElementImpl.java167
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/AbstractTypeReferenceImpl.java45
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/FunctionTypeImpl.java203
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/StaticTypesystemFactoryImpl.java143
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/StaticTypesystemPackageImpl.java412
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/TypeImpl.java203
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/TypeVariableImpl.java161
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/VoidTypeImpl.java43
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/WildcardTypeImpl.java170
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/util/StaticTypesystemAdapterFactory.java232
-rw-r--r--plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/util/StaticTypesystemSwitch.java261
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/DeclarationsContributorFactory.java2
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/AbstractNamed.java24
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/DeclarationsContributor.java (renamed from plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclarationsContributor.java)5
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Feature.java29
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Function.java29
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Operation.java30
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Property.java26
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/TypeSystemFacade.java80
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BooleanTypeImpl.java41
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BuiltinBaseType.java39
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BuiltinDeclarationsContributor.java19
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredFeature.java29
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredFunction.java31
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredOperation.java29
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredProperty.java26
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredStaticProperty.java26
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredType.java35
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredTypeParameter.java29
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/Type.java29
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/TypeMirror.java24
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/TypeVariable.java26
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/VoidType.java23
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/WildcardType.java32
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Lexer.java10
-rw-r--r--plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Parser.java20
-rw-r--r--plugins/org.eclipse.xpand3/src/static_typesystem.ecore64
-rw-r--r--plugins/org.eclipse.xpand3/src/static_typesystem.genmodel51
67 files changed, 6602 insertions, 605 deletions
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/AbstractNamedElement.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/AbstractNamedElement.java
new file mode 100644
index 0000000..170fb9d
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/AbstractNamedElement.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractNamedElement.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.AbstractNamedElement#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getAbstractNamedElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractNamedElement extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getAbstractNamedElement_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.staticTypesystem.AbstractNamedElement#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // AbstractNamedElement
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/AbstractTypeReference.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/AbstractTypeReference.java
new file mode 100644
index 0000000..b05bc18
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/AbstractTypeReference.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractTypeReference.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Type Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getAbstractTypeReference()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractTypeReference extends EObject {
+} // AbstractTypeReference
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/FunctionType.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/FunctionType.java
new file mode 100644
index 0000000..bbb3b6d
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/FunctionType.java
@@ -0,0 +1,73 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: FunctionType.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Function Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.FunctionType#getDeclaredFunction <em>Declared Function</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.FunctionType#getActualTypeArguments <em>Actual Type Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getFunctionType()
+ * @model
+ * @generated
+ */
+public interface FunctionType extends AbstractTypeReference {
+ /**
+ * Returns the value of the '<em><b>Declared Function</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declared Function</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Declared Function</em>' reference.
+ * @see #setDeclaredFunction(DeclaredFunction)
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getFunctionType_DeclaredFunction()
+ * @model required="true"
+ * @generated
+ */
+ DeclaredFunction getDeclaredFunction();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.staticTypesystem.FunctionType#getDeclaredFunction <em>Declared Function</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Declared Function</em>' reference.
+ * @see #getDeclaredFunction()
+ * @generated
+ */
+ void setDeclaredFunction(DeclaredFunction value);
+
+ /**
+ * Returns the value of the '<em><b>Actual Type Arguments</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.AbstractTypeReference}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actual Type Arguments</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actual Type Arguments</em>' reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getFunctionType_ActualTypeArguments()
+ * @model
+ * @generated
+ */
+ EList<AbstractTypeReference> getActualTypeArguments();
+
+} // FunctionType
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/StaticTypesystemFactory.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/StaticTypesystemFactory.java
new file mode 100644
index 0000000..55c906a
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/StaticTypesystemFactory.java
@@ -0,0 +1,82 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: StaticTypesystemFactory.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage
+ * @generated
+ */
+public interface StaticTypesystemFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ StaticTypesystemFactory eINSTANCE = org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type</em>'.
+ * @generated
+ */
+ Type createType();
+
+ /**
+ * Returns a new object of class '<em>Type Variable</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type Variable</em>'.
+ * @generated
+ */
+ TypeVariable createTypeVariable();
+
+ /**
+ * Returns a new object of class '<em>Void Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Void Type</em>'.
+ * @generated
+ */
+ VoidType createVoidType();
+
+ /**
+ * Returns a new object of class '<em>Wildcard Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Wildcard Type</em>'.
+ * @generated
+ */
+ WildcardType createWildcardType();
+
+ /**
+ * Returns a new object of class '<em>Function Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Function Type</em>'.
+ * @generated
+ */
+ FunctionType createFunctionType();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ StaticTypesystemPackage getStaticTypesystemPackage();
+
+} //StaticTypesystemFactory
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/StaticTypesystemPackage.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/StaticTypesystemPackage.java
new file mode 100644
index 0000000..b989411
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/StaticTypesystemPackage.java
@@ -0,0 +1,585 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: StaticTypesystemPackage.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface StaticTypesystemPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "staticTypesystem";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/m2t/xpand3/staticTypesystem";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "staticTypesystem";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ StaticTypesystemPackage eINSTANCE = org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl <em>Abstract Named Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getAbstractNamedElement()
+ * @generated
+ */
+ int ABSTRACT_NAMED_ELEMENT = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_ELEMENT__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Abstract Named Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.impl.AbstractTypeReferenceImpl <em>Abstract Type Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.AbstractTypeReferenceImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getAbstractTypeReference()
+ * @generated
+ */
+ int ABSTRACT_TYPE_REFERENCE = 1;
+
+ /**
+ * The number of structural features of the '<em>Abstract Type Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.impl.TypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.TypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getType()
+ * @generated
+ */
+ int TYPE = 2;
+
+ /**
+ * The feature id for the '<em><b>Declared Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE__DECLARED_TYPE = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Actual Type Arguments</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE__ACTUAL_TYPE_ARGUMENTS = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_FEATURE_COUNT = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.impl.TypeVariableImpl <em>Type Variable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.TypeVariableImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getTypeVariable()
+ * @generated
+ */
+ int TYPE_VARIABLE = 3;
+
+ /**
+ * The feature id for the '<em><b>Declared Type Parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_VARIABLE__DECLARED_TYPE_PARAMETER = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Type Variable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TYPE_VARIABLE_FEATURE_COUNT = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.impl.VoidTypeImpl <em>Void Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.VoidTypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getVoidType()
+ * @generated
+ */
+ int VOID_TYPE = 4;
+
+ /**
+ * The number of structural features of the '<em>Void Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VOID_TYPE_FEATURE_COUNT = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.impl.WildcardTypeImpl <em>Wildcard Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.WildcardTypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getWildcardType()
+ * @generated
+ */
+ int WILDCARD_TYPE = 5;
+
+ /**
+ * The feature id for the '<em><b>Lower Bounds</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WILDCARD_TYPE__LOWER_BOUNDS = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Upper Bounds</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WILDCARD_TYPE__UPPER_BOUNDS = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Wildcard Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int WILDCARD_TYPE_FEATURE_COUNT = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 2;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.impl.FunctionTypeImpl <em>Function Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.FunctionTypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getFunctionType()
+ * @generated
+ */
+ int FUNCTION_TYPE = 6;
+
+ /**
+ * The feature id for the '<em><b>Declared Function</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_TYPE__DECLARED_FUNCTION = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Actual Type Arguments</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_TYPE__ACTUAL_TYPE_ARGUMENTS = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Function Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FUNCTION_TYPE_FEATURE_COUNT = ABSTRACT_TYPE_REFERENCE_FEATURE_COUNT + 2;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.AbstractNamedElement <em>Abstract Named Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Named Element</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.AbstractNamedElement
+ * @generated
+ */
+ EClass getAbstractNamedElement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.xpand3.staticTypesystem.AbstractNamedElement#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.AbstractNamedElement#getName()
+ * @see #getAbstractNamedElement()
+ * @generated
+ */
+ EAttribute getAbstractNamedElement_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.AbstractTypeReference <em>Abstract Type Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Type Reference</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.AbstractTypeReference
+ * @generated
+ */
+ EClass getAbstractTypeReference();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.Type <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.Type
+ * @generated
+ */
+ EClass getType();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xpand3.staticTypesystem.Type#getDeclaredType <em>Declared Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Declared Type</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.Type#getDeclaredType()
+ * @see #getType()
+ * @generated
+ */
+ EReference getType_DeclaredType();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xpand3.staticTypesystem.Type#getActualTypeArguments <em>Actual Type Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Actual Type Arguments</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.Type#getActualTypeArguments()
+ * @see #getType()
+ * @generated
+ */
+ EReference getType_ActualTypeArguments();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.TypeVariable <em>Type Variable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type Variable</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.TypeVariable
+ * @generated
+ */
+ EClass getTypeVariable();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xpand3.staticTypesystem.TypeVariable#getDeclaredTypeParameter <em>Declared Type Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Declared Type Parameter</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.TypeVariable#getDeclaredTypeParameter()
+ * @see #getTypeVariable()
+ * @generated
+ */
+ EReference getTypeVariable_DeclaredTypeParameter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.VoidType <em>Void Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Void Type</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.VoidType
+ * @generated
+ */
+ EClass getVoidType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.WildcardType <em>Wildcard Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Wildcard Type</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.WildcardType
+ * @generated
+ */
+ EClass getWildcardType();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xpand3.staticTypesystem.WildcardType#getLowerBounds <em>Lower Bounds</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Lower Bounds</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.WildcardType#getLowerBounds()
+ * @see #getWildcardType()
+ * @generated
+ */
+ EReference getWildcardType_LowerBounds();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xpand3.staticTypesystem.WildcardType#getUpperBounds <em>Upper Bounds</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Upper Bounds</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.WildcardType#getUpperBounds()
+ * @see #getWildcardType()
+ * @generated
+ */
+ EReference getWildcardType_UpperBounds();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.FunctionType <em>Function Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Function Type</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.FunctionType
+ * @generated
+ */
+ EClass getFunctionType();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xpand3.staticTypesystem.FunctionType#getDeclaredFunction <em>Declared Function</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Declared Function</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.FunctionType#getDeclaredFunction()
+ * @see #getFunctionType()
+ * @generated
+ */
+ EReference getFunctionType_DeclaredFunction();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.xpand3.staticTypesystem.FunctionType#getActualTypeArguments <em>Actual Type Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Actual Type Arguments</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.FunctionType#getActualTypeArguments()
+ * @see #getFunctionType()
+ * @generated
+ */
+ EReference getFunctionType_ActualTypeArguments();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ StaticTypesystemFactory getStaticTypesystemFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl <em>Abstract Named Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getAbstractNamedElement()
+ * @generated
+ */
+ EClass ABSTRACT_NAMED_ELEMENT = eINSTANCE.getAbstractNamedElement();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ABSTRACT_NAMED_ELEMENT__NAME = eINSTANCE.getAbstractNamedElement_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.impl.AbstractTypeReferenceImpl <em>Abstract Type Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.AbstractTypeReferenceImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getAbstractTypeReference()
+ * @generated
+ */
+ EClass ABSTRACT_TYPE_REFERENCE = eINSTANCE.getAbstractTypeReference();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.impl.TypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.TypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getType()
+ * @generated
+ */
+ EClass TYPE = eINSTANCE.getType();
+
+ /**
+ * The meta object literal for the '<em><b>Declared Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TYPE__DECLARED_TYPE = eINSTANCE.getType_DeclaredType();
+
+ /**
+ * The meta object literal for the '<em><b>Actual Type Arguments</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TYPE__ACTUAL_TYPE_ARGUMENTS = eINSTANCE.getType_ActualTypeArguments();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.impl.TypeVariableImpl <em>Type Variable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.TypeVariableImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getTypeVariable()
+ * @generated
+ */
+ EClass TYPE_VARIABLE = eINSTANCE.getTypeVariable();
+
+ /**
+ * The meta object literal for the '<em><b>Declared Type Parameter</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TYPE_VARIABLE__DECLARED_TYPE_PARAMETER = eINSTANCE.getTypeVariable_DeclaredTypeParameter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.impl.VoidTypeImpl <em>Void Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.VoidTypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getVoidType()
+ * @generated
+ */
+ EClass VOID_TYPE = eINSTANCE.getVoidType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.impl.WildcardTypeImpl <em>Wildcard Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.WildcardTypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getWildcardType()
+ * @generated
+ */
+ EClass WILDCARD_TYPE = eINSTANCE.getWildcardType();
+
+ /**
+ * The meta object literal for the '<em><b>Lower Bounds</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference WILDCARD_TYPE__LOWER_BOUNDS = eINSTANCE.getWildcardType_LowerBounds();
+
+ /**
+ * The meta object literal for the '<em><b>Upper Bounds</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference WILDCARD_TYPE__UPPER_BOUNDS = eINSTANCE.getWildcardType_UpperBounds();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.impl.FunctionTypeImpl <em>Function Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.impl.FunctionTypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl#getFunctionType()
+ * @generated
+ */
+ EClass FUNCTION_TYPE = eINSTANCE.getFunctionType();
+
+ /**
+ * The meta object literal for the '<em><b>Declared Function</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FUNCTION_TYPE__DECLARED_FUNCTION = eINSTANCE.getFunctionType_DeclaredFunction();
+
+ /**
+ * The meta object literal for the '<em><b>Actual Type Arguments</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FUNCTION_TYPE__ACTUAL_TYPE_ARGUMENTS = eINSTANCE.getFunctionType_ActualTypeArguments();
+
+ }
+
+} //StaticTypesystemPackage
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/Type.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/Type.java
new file mode 100644
index 0000000..095c597
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/Type.java
@@ -0,0 +1,73 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Type.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.Type#getDeclaredType <em>Declared Type</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.Type#getActualTypeArguments <em>Actual Type Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getType()
+ * @model
+ * @generated
+ */
+public interface Type extends AbstractTypeReference {
+ /**
+ * Returns the value of the '<em><b>Declared Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declared Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Declared Type</em>' reference.
+ * @see #setDeclaredType(DeclaredType)
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getType_DeclaredType()
+ * @model required="true"
+ * @generated
+ */
+ DeclaredType getDeclaredType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.staticTypesystem.Type#getDeclaredType <em>Declared Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Declared Type</em>' reference.
+ * @see #getDeclaredType()
+ * @generated
+ */
+ void setDeclaredType(DeclaredType value);
+
+ /**
+ * Returns the value of the '<em><b>Actual Type Arguments</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.AbstractTypeReference}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actual Type Arguments</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actual Type Arguments</em>' reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getType_ActualTypeArguments()
+ * @model
+ * @generated
+ */
+ EList<AbstractTypeReference> getActualTypeArguments();
+
+} // Type
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/TypeVariable.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/TypeVariable.java
new file mode 100644
index 0000000..31dd044
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/TypeVariable.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: TypeVariable.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Variable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.TypeVariable#getDeclaredTypeParameter <em>Declared Type Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getTypeVariable()
+ * @model
+ * @generated
+ */
+public interface TypeVariable extends AbstractTypeReference {
+ /**
+ * Returns the value of the '<em><b>Declared Type Parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declared Type Parameter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Declared Type Parameter</em>' reference.
+ * @see #setDeclaredTypeParameter(DeclaredTypeParameter)
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getTypeVariable_DeclaredTypeParameter()
+ * @model required="true"
+ * @generated
+ */
+ DeclaredTypeParameter getDeclaredTypeParameter();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.staticTypesystem.TypeVariable#getDeclaredTypeParameter <em>Declared Type Parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Declared Type Parameter</em>' reference.
+ * @see #getDeclaredTypeParameter()
+ * @generated
+ */
+ void setDeclaredTypeParameter(DeclaredTypeParameter value);
+
+} // TypeVariable
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/VoidType.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/VoidType.java
new file mode 100644
index 0000000..2250988
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/VoidType.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: VoidType.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Void Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getVoidType()
+ * @model
+ * @generated
+ */
+public interface VoidType extends AbstractTypeReference {
+} // VoidType
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/WildcardType.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/WildcardType.java
new file mode 100644
index 0000000..d4fbd18
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/WildcardType.java
@@ -0,0 +1,61 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: WildcardType.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Wildcard Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.WildcardType#getLowerBounds <em>Lower Bounds</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.WildcardType#getUpperBounds <em>Upper Bounds</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getWildcardType()
+ * @model
+ * @generated
+ */
+public interface WildcardType extends AbstractTypeReference {
+ /**
+ * Returns the value of the '<em><b>Lower Bounds</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.AbstractTypeReference}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Lower Bounds</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Lower Bounds</em>' reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getWildcardType_LowerBounds()
+ * @model
+ * @generated
+ */
+ EList<AbstractTypeReference> getLowerBounds();
+
+ /**
+ * Returns the value of the '<em><b>Upper Bounds</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.AbstractTypeReference}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Upper Bounds</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Upper Bounds</em>' reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#getWildcardType_UpperBounds()
+ * @model
+ * @generated
+ */
+ EList<AbstractTypeReference> getUpperBounds();
+
+} // WildcardType
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclarationFactory.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclarationFactory.java
new file mode 100644
index 0000000..3167918
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclarationFactory.java
@@ -0,0 +1,100 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationFactory.java,v 1.1 2008/03/04 10:52:59 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage
+ * @generated
+ */
+public interface DeclarationFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ DeclarationFactory eINSTANCE = org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Declared Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Declared Type</em>'.
+ * @generated
+ */
+ DeclaredType createDeclaredType();
+
+ /**
+ * Returns a new object of class '<em>Declared Operation</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Declared Operation</em>'.
+ * @generated
+ */
+ DeclaredOperation createDeclaredOperation();
+
+ /**
+ * Returns a new object of class '<em>Declared Function</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Declared Function</em>'.
+ * @generated
+ */
+ DeclaredFunction createDeclaredFunction();
+
+ /**
+ * Returns a new object of class '<em>Declared Property</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Declared Property</em>'.
+ * @generated
+ */
+ DeclaredProperty createDeclaredProperty();
+
+ /**
+ * Returns a new object of class '<em>Declared Static Property</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Declared Static Property</em>'.
+ * @generated
+ */
+ DeclaredStaticProperty createDeclaredStaticProperty();
+
+ /**
+ * Returns a new object of class '<em>Declared Type Parameter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Declared Type Parameter</em>'.
+ * @generated
+ */
+ DeclaredTypeParameter createDeclaredTypeParameter();
+
+ /**
+ * Returns a new object of class '<em>Declared Parameter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Declared Parameter</em>'.
+ * @generated
+ */
+ DeclaredParameter createDeclaredParameter();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ DeclarationPackage getDeclarationPackage();
+
+} //DeclarationFactory
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclarationPackage.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclarationPackage.java
new file mode 100644
index 0000000..d1badfe
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclarationPackage.java
@@ -0,0 +1,704 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationPackage.java,v 1.1 2008/03/04 10:52:59 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface DeclarationPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "declaration";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/m2t/xpand3/staticTypesystem/declaration";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "declaration";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ DeclarationPackage eINSTANCE = org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeImpl <em>Declared Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredType()
+ * @generated
+ */
+ int DECLARED_TYPE = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_TYPE__NAME = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Static Properties</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_TYPE__STATIC_PROPERTIES = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_TYPE__PROPERTIES = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_TYPE__OPERATIONS = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Declared Type Parameters</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_TYPE__DECLARED_TYPE_PARAMETERS = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Declared Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_TYPE_FEATURE_COUNT = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredOperationImpl <em>Declared Operation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredOperationImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredOperation()
+ * @generated
+ */
+ int DECLARED_OPERATION = 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_OPERATION__NAME = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Declared Parameters</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_OPERATION__DECLARED_PARAMETERS = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Declaring Type</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_OPERATION__DECLARING_TYPE = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Return Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_OPERATION__RETURN_TYPE = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Declared Operation</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_OPERATION_FEATURE_COUNT = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredFunctionImpl <em>Declared Function</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredFunctionImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredFunction()
+ * @generated
+ */
+ int DECLARED_FUNCTION = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_FUNCTION__NAME = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME;
+
+ /**
+ * The feature id for the '<em><b>Declared Parameters</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_FUNCTION__DECLARED_PARAMETERS = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Declared Type Parameters</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_FUNCTION__DECLARED_TYPE_PARAMETERS = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Return Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_FUNCTION__RETURN_TYPE = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Declared Function</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_FUNCTION_FEATURE_COUNT = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredPropertyImpl <em>Declared Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredPropertyImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredProperty()
+ * @generated
+ */
+ int DECLARED_PROPERTY = 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PROPERTY__NAME = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME;
+
+ /**
+ * The number of structural features of the '<em>Declared Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PROPERTY_FEATURE_COUNT = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredStaticPropertyImpl <em>Declared Static Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredStaticPropertyImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredStaticProperty()
+ * @generated
+ */
+ int DECLARED_STATIC_PROPERTY = 4;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_STATIC_PROPERTY__NAME = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME;
+
+ /**
+ * The number of structural features of the '<em>Declared Static Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_STATIC_PROPERTY_FEATURE_COUNT = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeParameterImpl <em>Declared Type Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeParameterImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredTypeParameter()
+ * @generated
+ */
+ int DECLARED_TYPE_PARAMETER = 5;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_TYPE_PARAMETER__NAME = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME;
+
+ /**
+ * The number of structural features of the '<em>Declared Type Parameter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_TYPE_PARAMETER_FEATURE_COUNT = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredParameterImpl <em>Declared Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredParameterImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredParameter()
+ * @generated
+ */
+ int DECLARED_PARAMETER = 6;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PARAMETER__NAME = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME;
+
+ /**
+ * The number of structural features of the '<em>Declared Parameter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECLARED_PARAMETER_FEATURE_COUNT = StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType <em>Declared Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Declared Type</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType
+ * @generated
+ */
+ EClass getDeclaredType();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getStaticProperties <em>Static Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Static Properties</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getStaticProperties()
+ * @see #getDeclaredType()
+ * @generated
+ */
+ EReference getDeclaredType_StaticProperties();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getProperties <em>Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Properties</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getProperties()
+ * @see #getDeclaredType()
+ * @generated
+ */
+ EReference getDeclaredType_Properties();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getOperations <em>Operations</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Operations</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getOperations()
+ * @see #getDeclaredType()
+ * @generated
+ */
+ EReference getDeclaredType_Operations();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getDeclaredTypeParameters <em>Declared Type Parameters</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Declared Type Parameters</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getDeclaredTypeParameters()
+ * @see #getDeclaredType()
+ * @generated
+ */
+ EReference getDeclaredType_DeclaredTypeParameters();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation <em>Declared Operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Declared Operation</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation
+ * @generated
+ */
+ EClass getDeclaredOperation();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getDeclaredParameters <em>Declared Parameters</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Declared Parameters</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getDeclaredParameters()
+ * @see #getDeclaredOperation()
+ * @generated
+ */
+ EReference getDeclaredOperation_DeclaredParameters();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getDeclaringType <em>Declaring Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Declaring Type</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getDeclaringType()
+ * @see #getDeclaredOperation()
+ * @generated
+ */
+ EReference getDeclaredOperation_DeclaringType();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getReturnType <em>Return Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Return Type</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getReturnType()
+ * @see #getDeclaredOperation()
+ * @generated
+ */
+ EReference getDeclaredOperation_ReturnType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction <em>Declared Function</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Declared Function</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction
+ * @generated
+ */
+ EClass getDeclaredFunction();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getDeclaredParameters <em>Declared Parameters</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Declared Parameters</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getDeclaredParameters()
+ * @see #getDeclaredFunction()
+ * @generated
+ */
+ EReference getDeclaredFunction_DeclaredParameters();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getDeclaredTypeParameters <em>Declared Type Parameters</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Declared Type Parameters</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getDeclaredTypeParameters()
+ * @see #getDeclaredFunction()
+ * @generated
+ */
+ EReference getDeclaredFunction_DeclaredTypeParameters();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getReturnType <em>Return Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Return Type</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getReturnType()
+ * @see #getDeclaredFunction()
+ * @generated
+ */
+ EReference getDeclaredFunction_ReturnType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredProperty <em>Declared Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Declared Property</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredProperty
+ * @generated
+ */
+ EClass getDeclaredProperty();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredStaticProperty <em>Declared Static Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Declared Static Property</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredStaticProperty
+ * @generated
+ */
+ EClass getDeclaredStaticProperty();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter <em>Declared Type Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Declared Type Parameter</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter
+ * @generated
+ */
+ EClass getDeclaredTypeParameter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter <em>Declared Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Declared Parameter</em>'.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter
+ * @generated
+ */
+ EClass getDeclaredParameter();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ DeclarationFactory getDeclarationFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeImpl <em>Declared Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredType()
+ * @generated
+ */
+ EClass DECLARED_TYPE = eINSTANCE.getDeclaredType();
+
+ /**
+ * The meta object literal for the '<em><b>Static Properties</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_TYPE__STATIC_PROPERTIES = eINSTANCE.getDeclaredType_StaticProperties();
+
+ /**
+ * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_TYPE__PROPERTIES = eINSTANCE.getDeclaredType_Properties();
+
+ /**
+ * The meta object literal for the '<em><b>Operations</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_TYPE__OPERATIONS = eINSTANCE.getDeclaredType_Operations();
+
+ /**
+ * The meta object literal for the '<em><b>Declared Type Parameters</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_TYPE__DECLARED_TYPE_PARAMETERS = eINSTANCE.getDeclaredType_DeclaredTypeParameters();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredOperationImpl <em>Declared Operation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredOperationImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredOperation()
+ * @generated
+ */
+ EClass DECLARED_OPERATION = eINSTANCE.getDeclaredOperation();
+
+ /**
+ * The meta object literal for the '<em><b>Declared Parameters</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_OPERATION__DECLARED_PARAMETERS = eINSTANCE.getDeclaredOperation_DeclaredParameters();
+
+ /**
+ * The meta object literal for the '<em><b>Declaring Type</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_OPERATION__DECLARING_TYPE = eINSTANCE.getDeclaredOperation_DeclaringType();
+
+ /**
+ * The meta object literal for the '<em><b>Return Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_OPERATION__RETURN_TYPE = eINSTANCE.getDeclaredOperation_ReturnType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredFunctionImpl <em>Declared Function</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredFunctionImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredFunction()
+ * @generated
+ */
+ EClass DECLARED_FUNCTION = eINSTANCE.getDeclaredFunction();
+
+ /**
+ * The meta object literal for the '<em><b>Declared Parameters</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_FUNCTION__DECLARED_PARAMETERS = eINSTANCE.getDeclaredFunction_DeclaredParameters();
+
+ /**
+ * The meta object literal for the '<em><b>Declared Type Parameters</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_FUNCTION__DECLARED_TYPE_PARAMETERS = eINSTANCE.getDeclaredFunction_DeclaredTypeParameters();
+
+ /**
+ * The meta object literal for the '<em><b>Return Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECLARED_FUNCTION__RETURN_TYPE = eINSTANCE.getDeclaredFunction_ReturnType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredPropertyImpl <em>Declared Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredPropertyImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredProperty()
+ * @generated
+ */
+ EClass DECLARED_PROPERTY = eINSTANCE.getDeclaredProperty();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredStaticPropertyImpl <em>Declared Static Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredStaticPropertyImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredStaticProperty()
+ * @generated
+ */
+ EClass DECLARED_STATIC_PROPERTY = eINSTANCE.getDeclaredStaticProperty();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeParameterImpl <em>Declared Type Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeParameterImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredTypeParameter()
+ * @generated
+ */
+ EClass DECLARED_TYPE_PARAMETER = eINSTANCE.getDeclaredTypeParameter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredParameterImpl <em>Declared Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredParameterImpl
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl#getDeclaredParameter()
+ * @generated
+ */
+ EClass DECLARED_PARAMETER = eINSTANCE.getDeclaredParameter();
+
+ }
+
+} //DeclarationPackage
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredFunction.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredFunction.java
new file mode 100644
index 0000000..e7826e7
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredFunction.java
@@ -0,0 +1,90 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredFunction.java,v 1.1 2008/03/04 10:52:57 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Declared Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getDeclaredParameters <em>Declared Parameters</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getDeclaredTypeParameters <em>Declared Type Parameters</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getReturnType <em>Return Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredFunction()
+ * @model
+ * @generated
+ */
+public interface DeclaredFunction extends AbstractNamedElement {
+ /**
+ * Returns the value of the '<em><b>Declared Parameters</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declared 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>Declared Parameters</em>' containment reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredFunction_DeclaredParameters()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DeclaredParameter> getDeclaredParameters();
+
+ /**
+ * Returns the value of the '<em><b>Declared Type Parameters</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declared 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>Declared Type Parameters</em>' containment reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredFunction_DeclaredTypeParameters()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DeclaredTypeParameter> getDeclaredTypeParameters();
+
+ /**
+ * Returns the value of the '<em><b>Return Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Return Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Return Type</em>' reference.
+ * @see #setReturnType(DeclaredType)
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredFunction_ReturnType()
+ * @model
+ * @generated
+ */
+ DeclaredType getReturnType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction#getReturnType <em>Return Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Return Type</em>' reference.
+ * @see #getReturnType()
+ * @generated
+ */
+ void setReturnType(DeclaredType value);
+
+} // DeclaredFunction
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredOperation.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredOperation.java
new file mode 100644
index 0000000..338a768
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredOperation.java
@@ -0,0 +1,102 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredOperation.java,v 1.1 2008/03/04 10:52:59 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Declared Operation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getDeclaredParameters <em>Declared Parameters</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getDeclaringType <em>Declaring Type</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getReturnType <em>Return Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredOperation()
+ * @model
+ * @generated
+ */
+public interface DeclaredOperation extends AbstractNamedElement {
+ /**
+ * Returns the value of the '<em><b>Declared Parameters</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declared 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>Declared Parameters</em>' containment reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredOperation_DeclaredParameters()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DeclaredParameter> getDeclaredParameters();
+
+ /**
+ * Returns the value of the '<em><b>Declaring Type</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getOperations <em>Operations</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declaring Type</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Declaring Type</em>' container reference.
+ * @see #setDeclaringType(DeclaredType)
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredOperation_DeclaringType()
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getOperations
+ * @model opposite="operations" required="true" transient="false"
+ * @generated
+ */
+ DeclaredType getDeclaringType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getDeclaringType <em>Declaring Type</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Declaring Type</em>' container reference.
+ * @see #getDeclaringType()
+ * @generated
+ */
+ void setDeclaringType(DeclaredType value);
+
+ /**
+ * Returns the value of the '<em><b>Return Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Return Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Return Type</em>' reference.
+ * @see #setReturnType(DeclaredType)
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredOperation_ReturnType()
+ * @model
+ * @generated
+ */
+ DeclaredType getReturnType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getReturnType <em>Return Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Return Type</em>' reference.
+ * @see #getReturnType()
+ * @generated
+ */
+ void setReturnType(DeclaredType value);
+
+} // DeclaredOperation
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredParameter.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredParameter.java
new file mode 100644
index 0000000..a088fc4
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredParameter.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredParameter.java,v 1.1 2008/03/04 10:52:58 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Declared Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredParameter()
+ * @model
+ * @generated
+ */
+public interface DeclaredParameter extends AbstractNamedElement {
+} // DeclaredParameter
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredProperty.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredProperty.java
new file mode 100644
index 0000000..4263ee8
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredProperty.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredProperty.java,v 1.1 2008/03/04 10:52:59 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Declared Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredProperty()
+ * @model
+ * @generated
+ */
+public interface DeclaredProperty extends AbstractNamedElement {
+} // DeclaredProperty
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredStaticProperty.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredStaticProperty.java
new file mode 100644
index 0000000..c1380a3
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredStaticProperty.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredStaticProperty.java,v 1.1 2008/03/04 10:52:58 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Declared Static Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredStaticProperty()
+ * @model
+ * @generated
+ */
+public interface DeclaredStaticProperty extends AbstractNamedElement {
+} // DeclaredStaticProperty
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredType.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredType.java
new file mode 100644
index 0000000..438e73e
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredType.java
@@ -0,0 +1,99 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredType.java,v 1.1 2008/03/04 10:52:58 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Declared Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getStaticProperties <em>Static Properties</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getProperties <em>Properties</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getOperations <em>Operations</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType#getDeclaredTypeParameters <em>Declared Type Parameters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredType()
+ * @model
+ * @generated
+ */
+public interface DeclaredType extends AbstractNamedElement {
+ /**
+ * Returns the value of the '<em><b>Static Properties</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredStaticProperty}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Static Properties</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>Static Properties</em>' containment reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredType_StaticProperties()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DeclaredStaticProperty> getStaticProperties();
+
+ /**
+ * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredProperty}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Properties</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>Properties</em>' containment reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredType_Properties()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DeclaredProperty> getProperties();
+
+ /**
+ * Returns the value of the '<em><b>Operations</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getDeclaringType <em>Declaring Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Operations</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>Operations</em>' containment reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredType_Operations()
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation#getDeclaringType
+ * @model opposite="declaringType" containment="true"
+ * @generated
+ */
+ EList<DeclaredOperation> getOperations();
+
+ /**
+ * Returns the value of the '<em><b>Declared Type Parameters</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declared 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>Declared Type Parameters</em>' containment reference list.
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredType_DeclaredTypeParameters()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DeclaredTypeParameter> getDeclaredTypeParameters();
+
+} // DeclaredType
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredTypeParameter.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredTypeParameter.java
new file mode 100644
index 0000000..899b58f
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/DeclaredTypeParameter.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredTypeParameter.java,v 1.1 2008/03/04 10:52:59 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Declared Type Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#getDeclaredTypeParameter()
+ * @model
+ * @generated
+ */
+public interface DeclaredTypeParameter extends AbstractNamedElement {
+} // DeclaredTypeParameter
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclarationFactoryImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclarationFactoryImpl.java
new file mode 100644
index 0000000..fbb63fa
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclarationFactoryImpl.java
@@ -0,0 +1,165 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationFactoryImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeclarationFactoryImpl extends EFactoryImpl implements DeclarationFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DeclarationFactory init() {
+ try {
+ DeclarationFactory theDeclarationFactory = (DeclarationFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/m2t/xpand3/staticTypesystem/declaration");
+ if (theDeclarationFactory != null) {
+ return theDeclarationFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new DeclarationFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case DeclarationPackage.DECLARED_TYPE: return createDeclaredType();
+ case DeclarationPackage.DECLARED_OPERATION: return createDeclaredOperation();
+ case DeclarationPackage.DECLARED_FUNCTION: return createDeclaredFunction();
+ case DeclarationPackage.DECLARED_PROPERTY: return createDeclaredProperty();
+ case DeclarationPackage.DECLARED_STATIC_PROPERTY: return createDeclaredStaticProperty();
+ case DeclarationPackage.DECLARED_TYPE_PARAMETER: return createDeclaredTypeParameter();
+ case DeclarationPackage.DECLARED_PARAMETER: return createDeclaredParameter();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredType createDeclaredType() {
+ DeclaredTypeImpl declaredType = new DeclaredTypeImpl();
+ return declaredType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredOperation createDeclaredOperation() {
+ DeclaredOperationImpl declaredOperation = new DeclaredOperationImpl();
+ return declaredOperation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredFunction createDeclaredFunction() {
+ DeclaredFunctionImpl declaredFunction = new DeclaredFunctionImpl();
+ return declaredFunction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredProperty createDeclaredProperty() {
+ DeclaredPropertyImpl declaredProperty = new DeclaredPropertyImpl();
+ return declaredProperty;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredStaticProperty createDeclaredStaticProperty() {
+ DeclaredStaticPropertyImpl declaredStaticProperty = new DeclaredStaticPropertyImpl();
+ return declaredStaticProperty;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredTypeParameter createDeclaredTypeParameter() {
+ DeclaredTypeParameterImpl declaredTypeParameter = new DeclaredTypeParameterImpl();
+ return declaredTypeParameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredParameter createDeclaredParameter() {
+ DeclaredParameterImpl declaredParameter = new DeclaredParameterImpl();
+ return declaredParameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationPackage getDeclarationPackage() {
+ return (DeclarationPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static DeclarationPackage getPackage() {
+ return DeclarationPackage.eINSTANCE;
+ }
+
+} //DeclarationFactoryImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclarationPackageImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclarationPackageImpl.java
new file mode 100644
index 0000000..15c372b
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclarationPackageImpl.java
@@ -0,0 +1,429 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationPackageImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclarationFactory;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredProperty;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredStaticProperty;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter;
+
+import org.eclipse.xpand3.staticTypesystem.impl.StaticTypesystemPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeclarationPackageImpl extends EPackageImpl implements DeclarationPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass declaredTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass declaredOperationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass declaredFunctionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass declaredPropertyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass declaredStaticPropertyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass declaredTypeParameterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass declaredParameterEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private DeclarationPackageImpl() {
+ super(eNS_URI, DeclarationFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this
+ * model, and for any others upon which it depends. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static DeclarationPackage init() {
+ if (isInited) return (DeclarationPackage)EPackage.Registry.INSTANCE.getEPackage(DeclarationPackage.eNS_URI);
+
+ // Obtain or create and register package
+ DeclarationPackageImpl theDeclarationPackage = (DeclarationPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof DeclarationPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new DeclarationPackageImpl());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ StaticTypesystemPackageImpl theStaticTypesystemPackage = (StaticTypesystemPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(StaticTypesystemPackage.eNS_URI) instanceof StaticTypesystemPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(StaticTypesystemPackage.eNS_URI) : StaticTypesystemPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theDeclarationPackage.createPackageContents();
+ theStaticTypesystemPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theDeclarationPackage.initializePackageContents();
+ theStaticTypesystemPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theDeclarationPackage.freeze();
+
+ return theDeclarationPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDeclaredType() {
+ return declaredTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredType_StaticProperties() {
+ return (EReference)declaredTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredType_Properties() {
+ return (EReference)declaredTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredType_Operations() {
+ return (EReference)declaredTypeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredType_DeclaredTypeParameters() {
+ return (EReference)declaredTypeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDeclaredOperation() {
+ return declaredOperationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredOperation_DeclaredParameters() {
+ return (EReference)declaredOperationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredOperation_DeclaringType() {
+ return (EReference)declaredOperationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredOperation_ReturnType() {
+ return (EReference)declaredOperationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDeclaredFunction() {
+ return declaredFunctionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredFunction_DeclaredParameters() {
+ return (EReference)declaredFunctionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredFunction_DeclaredTypeParameters() {
+ return (EReference)declaredFunctionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeclaredFunction_ReturnType() {
+ return (EReference)declaredFunctionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDeclaredProperty() {
+ return declaredPropertyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDeclaredStaticProperty() {
+ return declaredStaticPropertyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDeclaredTypeParameter() {
+ return declaredTypeParameterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDeclaredParameter() {
+ return declaredParameterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationFactory getDeclarationFactory() {
+ return (DeclarationFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ declaredTypeEClass = createEClass(DECLARED_TYPE);
+ createEReference(declaredTypeEClass, DECLARED_TYPE__STATIC_PROPERTIES);
+ createEReference(declaredTypeEClass, DECLARED_TYPE__PROPERTIES);
+ createEReference(declaredTypeEClass, DECLARED_TYPE__OPERATIONS);
+ createEReference(declaredTypeEClass, DECLARED_TYPE__DECLARED_TYPE_PARAMETERS);
+
+ declaredOperationEClass = createEClass(DECLARED_OPERATION);
+ createEReference(declaredOperationEClass, DECLARED_OPERATION__DECLARED_PARAMETERS);
+ createEReference(declaredOperationEClass, DECLARED_OPERATION__DECLARING_TYPE);
+ createEReference(declaredOperationEClass, DECLARED_OPERATION__RETURN_TYPE);
+
+ declaredFunctionEClass = createEClass(DECLARED_FUNCTION);
+ createEReference(declaredFunctionEClass, DECLARED_FUNCTION__DECLARED_PARAMETERS);
+ createEReference(declaredFunctionEClass, DECLARED_FUNCTION__DECLARED_TYPE_PARAMETERS);
+ createEReference(declaredFunctionEClass, DECLARED_FUNCTION__RETURN_TYPE);
+
+ declaredPropertyEClass = createEClass(DECLARED_PROPERTY);
+
+ declaredStaticPropertyEClass = createEClass(DECLARED_STATIC_PROPERTY);
+
+ declaredTypeParameterEClass = createEClass(DECLARED_TYPE_PARAMETER);
+
+ declaredParameterEClass = createEClass(DECLARED_PARAMETER);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ StaticTypesystemPackage theStaticTypesystemPackage = (StaticTypesystemPackage)EPackage.Registry.INSTANCE.getEPackage(StaticTypesystemPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ declaredTypeEClass.getESuperTypes().add(theStaticTypesystemPackage.getAbstractNamedElement());
+ declaredOperationEClass.getESuperTypes().add(theStaticTypesystemPackage.getAbstractNamedElement());
+ declaredFunctionEClass.getESuperTypes().add(theStaticTypesystemPackage.getAbstractNamedElement());
+ declaredPropertyEClass.getESuperTypes().add(theStaticTypesystemPackage.getAbstractNamedElement());
+ declaredStaticPropertyEClass.getESuperTypes().add(theStaticTypesystemPackage.getAbstractNamedElement());
+ declaredTypeParameterEClass.getESuperTypes().add(theStaticTypesystemPackage.getAbstractNamedElement());
+ declaredParameterEClass.getESuperTypes().add(theStaticTypesystemPackage.getAbstractNamedElement());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(declaredTypeEClass, DeclaredType.class, "DeclaredType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDeclaredType_StaticProperties(), this.getDeclaredStaticProperty(), null, "staticProperties", null, 0, -1, DeclaredType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDeclaredType_Properties(), this.getDeclaredProperty(), null, "properties", null, 0, -1, DeclaredType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDeclaredType_Operations(), this.getDeclaredOperation(), this.getDeclaredOperation_DeclaringType(), "operations", null, 0, -1, DeclaredType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDeclaredType_DeclaredTypeParameters(), this.getDeclaredTypeParameter(), null, "declaredTypeParameters", null, 0, -1, DeclaredType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(declaredOperationEClass, DeclaredOperation.class, "DeclaredOperation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDeclaredOperation_DeclaredParameters(), this.getDeclaredParameter(), null, "declaredParameters", null, 0, -1, DeclaredOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDeclaredOperation_DeclaringType(), this.getDeclaredType(), this.getDeclaredType_Operations(), "declaringType", null, 1, 1, DeclaredOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDeclaredOperation_ReturnType(), this.getDeclaredType(), null, "returnType", null, 0, 1, DeclaredOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(declaredFunctionEClass, DeclaredFunction.class, "DeclaredFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDeclaredFunction_DeclaredParameters(), this.getDeclaredParameter(), null, "declaredParameters", null, 0, -1, DeclaredFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDeclaredFunction_DeclaredTypeParameters(), this.getDeclaredTypeParameter(), null, "declaredTypeParameters", null, 0, -1, DeclaredFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDeclaredFunction_ReturnType(), this.getDeclaredType(), null, "returnType", null, 0, 1, DeclaredFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(declaredPropertyEClass, DeclaredProperty.class, "DeclaredProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(declaredStaticPropertyEClass, DeclaredStaticProperty.class, "DeclaredStaticProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(declaredTypeParameterEClass, DeclaredTypeParameter.class, "DeclaredTypeParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(declaredParameterEClass, DeclaredParameter.class, "DeclaredParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ }
+
+} //DeclarationPackageImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredFunctionImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredFunctionImpl.java
new file mode 100644
index 0000000..7c58422
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredFunctionImpl.java
@@ -0,0 +1,257 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredFunctionImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.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;
+
+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.InternalEList;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter;
+
+import org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Declared Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredFunctionImpl#getDeclaredParameters <em>Declared Parameters</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredFunctionImpl#getDeclaredTypeParameters <em>Declared Type Parameters</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredFunctionImpl#getReturnType <em>Return Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DeclaredFunctionImpl extends AbstractNamedElementImpl implements DeclaredFunction {
+ /**
+ * The cached value of the '{@link #getDeclaredParameters() <em>Declared Parameters</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaredParameters()
+ * @generated
+ * @ordered
+ */
+ protected EList<DeclaredParameter> declaredParameters;
+
+ /**
+ * The cached value of the '{@link #getDeclaredTypeParameters() <em>Declared Type Parameters</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaredTypeParameters()
+ * @generated
+ * @ordered
+ */
+ protected EList<DeclaredTypeParameter> declaredTypeParameters;
+
+ /**
+ * The cached value of the '{@link #getReturnType() <em>Return Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReturnType()
+ * @generated
+ * @ordered
+ */
+ protected DeclaredType returnType;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeclaredFunctionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.DECLARED_FUNCTION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DeclaredParameter> getDeclaredParameters() {
+ if (declaredParameters == null) {
+ declaredParameters = new EObjectContainmentEList<DeclaredParameter>(DeclaredParameter.class, this, DeclarationPackage.DECLARED_FUNCTION__DECLARED_PARAMETERS);
+ }
+ return declaredParameters;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DeclaredTypeParameter> getDeclaredTypeParameters() {
+ if (declaredTypeParameters == null) {
+ declaredTypeParameters = new EObjectContainmentEList<DeclaredTypeParameter>(DeclaredTypeParameter.class, this, DeclarationPackage.DECLARED_FUNCTION__DECLARED_TYPE_PARAMETERS);
+ }
+ return declaredTypeParameters;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredType getReturnType() {
+ if (returnType != null && returnType.eIsProxy()) {
+ InternalEObject oldReturnType = (InternalEObject)returnType;
+ returnType = (DeclaredType)eResolveProxy(oldReturnType);
+ if (returnType != oldReturnType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, DeclarationPackage.DECLARED_FUNCTION__RETURN_TYPE, oldReturnType, returnType));
+ }
+ }
+ return returnType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredType basicGetReturnType() {
+ return returnType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setReturnType(DeclaredType newReturnType) {
+ DeclaredType oldReturnType = returnType;
+ returnType = newReturnType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.DECLARED_FUNCTION__RETURN_TYPE, oldReturnType, returnType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_PARAMETERS:
+ return ((InternalEList<?>)getDeclaredParameters()).basicRemove(otherEnd, msgs);
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_TYPE_PARAMETERS:
+ return ((InternalEList<?>)getDeclaredTypeParameters()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_PARAMETERS:
+ return getDeclaredParameters();
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_TYPE_PARAMETERS:
+ return getDeclaredTypeParameters();
+ case DeclarationPackage.DECLARED_FUNCTION__RETURN_TYPE:
+ if (resolve) return getReturnType();
+ return basicGetReturnType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_PARAMETERS:
+ getDeclaredParameters().clear();
+ getDeclaredParameters().addAll((Collection<? extends DeclaredParameter>)newValue);
+ return;
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_TYPE_PARAMETERS:
+ getDeclaredTypeParameters().clear();
+ getDeclaredTypeParameters().addAll((Collection<? extends DeclaredTypeParameter>)newValue);
+ return;
+ case DeclarationPackage.DECLARED_FUNCTION__RETURN_TYPE:
+ setReturnType((DeclaredType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_PARAMETERS:
+ getDeclaredParameters().clear();
+ return;
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_TYPE_PARAMETERS:
+ getDeclaredTypeParameters().clear();
+ return;
+ case DeclarationPackage.DECLARED_FUNCTION__RETURN_TYPE:
+ setReturnType((DeclaredType)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_PARAMETERS:
+ return declaredParameters != null && !declaredParameters.isEmpty();
+ case DeclarationPackage.DECLARED_FUNCTION__DECLARED_TYPE_PARAMETERS:
+ return declaredTypeParameters != null && !declaredTypeParameters.isEmpty();
+ case DeclarationPackage.DECLARED_FUNCTION__RETURN_TYPE:
+ return returnType != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DeclaredFunctionImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredOperationImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredOperationImpl.java
new file mode 100644
index 0000000..8799d59
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredOperationImpl.java
@@ -0,0 +1,305 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredOperationImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.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;
+
+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.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType;
+
+import org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Declared Operation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredOperationImpl#getDeclaredParameters <em>Declared Parameters</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredOperationImpl#getDeclaringType <em>Declaring Type</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredOperationImpl#getReturnType <em>Return Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DeclaredOperationImpl extends AbstractNamedElementImpl implements DeclaredOperation {
+ /**
+ * The cached value of the '{@link #getDeclaredParameters() <em>Declared Parameters</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaredParameters()
+ * @generated
+ * @ordered
+ */
+ protected EList<DeclaredParameter> declaredParameters;
+
+ /**
+ * The cached value of the '{@link #getReturnType() <em>Return Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReturnType()
+ * @generated
+ * @ordered
+ */
+ protected DeclaredType returnType;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeclaredOperationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.DECLARED_OPERATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DeclaredParameter> getDeclaredParameters() {
+ if (declaredParameters == null) {
+ declaredParameters = new EObjectContainmentEList<DeclaredParameter>(DeclaredParameter.class, this, DeclarationPackage.DECLARED_OPERATION__DECLARED_PARAMETERS);
+ }
+ return declaredParameters;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredType getDeclaringType() {
+ if (eContainerFeatureID != DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE) return null;
+ return (DeclaredType)eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDeclaringType(DeclaredType newDeclaringType, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newDeclaringType, DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDeclaringType(DeclaredType newDeclaringType) {
+ if (newDeclaringType != eInternalContainer() || (eContainerFeatureID != DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE && newDeclaringType != null)) {
+ if (EcoreUtil.isAncestor(this, newDeclaringType))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newDeclaringType != null)
+ msgs = ((InternalEObject)newDeclaringType).eInverseAdd(this, DeclarationPackage.DECLARED_TYPE__OPERATIONS, DeclaredType.class, msgs);
+ msgs = basicSetDeclaringType(newDeclaringType, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE, newDeclaringType, newDeclaringType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredType getReturnType() {
+ if (returnType != null && returnType.eIsProxy()) {
+ InternalEObject oldReturnType = (InternalEObject)returnType;
+ returnType = (DeclaredType)eResolveProxy(oldReturnType);
+ if (returnType != oldReturnType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, DeclarationPackage.DECLARED_OPERATION__RETURN_TYPE, oldReturnType, returnType));
+ }
+ }
+ return returnType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredType basicGetReturnType() {
+ return returnType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setReturnType(DeclaredType newReturnType) {
+ DeclaredType oldReturnType = returnType;
+ returnType = newReturnType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, DeclarationPackage.DECLARED_OPERATION__RETURN_TYPE, oldReturnType, returnType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetDeclaringType((DeclaredType)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_OPERATION__DECLARED_PARAMETERS:
+ return ((InternalEList<?>)getDeclaredParameters()).basicRemove(otherEnd, msgs);
+ case DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE:
+ return basicSetDeclaringType(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID) {
+ case DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE:
+ return eInternalContainer().eInverseRemove(this, DeclarationPackage.DECLARED_TYPE__OPERATIONS, DeclaredType.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_OPERATION__DECLARED_PARAMETERS:
+ return getDeclaredParameters();
+ case DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE:
+ return getDeclaringType();
+ case DeclarationPackage.DECLARED_OPERATION__RETURN_TYPE:
+ if (resolve) return getReturnType();
+ return basicGetReturnType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_OPERATION__DECLARED_PARAMETERS:
+ getDeclaredParameters().clear();
+ getDeclaredParameters().addAll((Collection<? extends DeclaredParameter>)newValue);
+ return;
+ case DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE:
+ setDeclaringType((DeclaredType)newValue);
+ return;
+ case DeclarationPackage.DECLARED_OPERATION__RETURN_TYPE:
+ setReturnType((DeclaredType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_OPERATION__DECLARED_PARAMETERS:
+ getDeclaredParameters().clear();
+ return;
+ case DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE:
+ setDeclaringType((DeclaredType)null);
+ return;
+ case DeclarationPackage.DECLARED_OPERATION__RETURN_TYPE:
+ setReturnType((DeclaredType)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_OPERATION__DECLARED_PARAMETERS:
+ return declaredParameters != null && !declaredParameters.isEmpty();
+ case DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE:
+ return getDeclaringType() != null;
+ case DeclarationPackage.DECLARED_OPERATION__RETURN_TYPE:
+ return returnType != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DeclaredOperationImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredParameterImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredParameterImpl.java
new file mode 100644
index 0000000..4755a9c
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredParameterImpl.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredParameterImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter;
+
+import org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Declared Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DeclaredParameterImpl extends AbstractNamedElementImpl implements DeclaredParameter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeclaredParameterImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.DECLARED_PARAMETER;
+ }
+
+} //DeclaredParameterImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredPropertyImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredPropertyImpl.java
new file mode 100644
index 0000000..07c10ef
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredPropertyImpl.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredPropertyImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredProperty;
+
+import org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Declared Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DeclaredPropertyImpl extends AbstractNamedElementImpl implements DeclaredProperty {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeclaredPropertyImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.DECLARED_PROPERTY;
+ }
+
+} //DeclaredPropertyImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredStaticPropertyImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredStaticPropertyImpl.java
new file mode 100644
index 0000000..fa399ae
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredStaticPropertyImpl.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredStaticPropertyImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredStaticProperty;
+
+import org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Declared Static Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DeclaredStaticPropertyImpl extends AbstractNamedElementImpl implements DeclaredStaticProperty {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeclaredStaticPropertyImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.DECLARED_STATIC_PROPERTY;
+ }
+
+} //DeclaredStaticPropertyImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredTypeImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredTypeImpl.java
new file mode 100644
index 0000000..06c9d99
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredTypeImpl.java
@@ -0,0 +1,283 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredTypeImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.impl;
+
+import java.util.Collection;
+
+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.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredProperty;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredStaticProperty;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter;
+
+import org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Declared Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeImpl#getStaticProperties <em>Static Properties</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeImpl#getProperties <em>Properties</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeImpl#getOperations <em>Operations</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclaredTypeImpl#getDeclaredTypeParameters <em>Declared Type Parameters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DeclaredTypeImpl extends AbstractNamedElementImpl implements DeclaredType {
+ /**
+ * The cached value of the '{@link #getStaticProperties() <em>Static Properties</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStaticProperties()
+ * @generated
+ * @ordered
+ */
+ protected EList<DeclaredStaticProperty> staticProperties;
+
+ /**
+ * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProperties()
+ * @generated
+ * @ordered
+ */
+ protected EList<DeclaredProperty> properties;
+
+ /**
+ * The cached value of the '{@link #getOperations() <em>Operations</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperations()
+ * @generated
+ * @ordered
+ */
+ protected EList<DeclaredOperation> operations;
+
+ /**
+ * The cached value of the '{@link #getDeclaredTypeParameters() <em>Declared Type Parameters</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaredTypeParameters()
+ * @generated
+ * @ordered
+ */
+ protected EList<DeclaredTypeParameter> declaredTypeParameters;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeclaredTypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.DECLARED_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DeclaredStaticProperty> getStaticProperties() {
+ if (staticProperties == null) {
+ staticProperties = new EObjectContainmentEList<DeclaredStaticProperty>(DeclaredStaticProperty.class, this, DeclarationPackage.DECLARED_TYPE__STATIC_PROPERTIES);
+ }
+ return staticProperties;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DeclaredProperty> getProperties() {
+ if (properties == null) {
+ properties = new EObjectContainmentEList<DeclaredProperty>(DeclaredProperty.class, this, DeclarationPackage.DECLARED_TYPE__PROPERTIES);
+ }
+ return properties;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DeclaredOperation> getOperations() {
+ if (operations == null) {
+ operations = new EObjectContainmentWithInverseEList<DeclaredOperation>(DeclaredOperation.class, this, DeclarationPackage.DECLARED_TYPE__OPERATIONS, DeclarationPackage.DECLARED_OPERATION__DECLARING_TYPE);
+ }
+ return operations;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DeclaredTypeParameter> getDeclaredTypeParameters() {
+ if (declaredTypeParameters == null) {
+ declaredTypeParameters = new EObjectContainmentEList<DeclaredTypeParameter>(DeclaredTypeParameter.class, this, DeclarationPackage.DECLARED_TYPE__DECLARED_TYPE_PARAMETERS);
+ }
+ return declaredTypeParameters;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_TYPE__OPERATIONS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getOperations()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_TYPE__STATIC_PROPERTIES:
+ return ((InternalEList<?>)getStaticProperties()).basicRemove(otherEnd, msgs);
+ case DeclarationPackage.DECLARED_TYPE__PROPERTIES:
+ return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+ case DeclarationPackage.DECLARED_TYPE__OPERATIONS:
+ return ((InternalEList<?>)getOperations()).basicRemove(otherEnd, msgs);
+ case DeclarationPackage.DECLARED_TYPE__DECLARED_TYPE_PARAMETERS:
+ return ((InternalEList<?>)getDeclaredTypeParameters()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_TYPE__STATIC_PROPERTIES:
+ return getStaticProperties();
+ case DeclarationPackage.DECLARED_TYPE__PROPERTIES:
+ return getProperties();
+ case DeclarationPackage.DECLARED_TYPE__OPERATIONS:
+ return getOperations();
+ case DeclarationPackage.DECLARED_TYPE__DECLARED_TYPE_PARAMETERS:
+ return getDeclaredTypeParameters();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_TYPE__STATIC_PROPERTIES:
+ getStaticProperties().clear();
+ getStaticProperties().addAll((Collection<? extends DeclaredStaticProperty>)newValue);
+ return;
+ case DeclarationPackage.DECLARED_TYPE__PROPERTIES:
+ getProperties().clear();
+ getProperties().addAll((Collection<? extends DeclaredProperty>)newValue);
+ return;
+ case DeclarationPackage.DECLARED_TYPE__OPERATIONS:
+ getOperations().clear();
+ getOperations().addAll((Collection<? extends DeclaredOperation>)newValue);
+ return;
+ case DeclarationPackage.DECLARED_TYPE__DECLARED_TYPE_PARAMETERS:
+ getDeclaredTypeParameters().clear();
+ getDeclaredTypeParameters().addAll((Collection<? extends DeclaredTypeParameter>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_TYPE__STATIC_PROPERTIES:
+ getStaticProperties().clear();
+ return;
+ case DeclarationPackage.DECLARED_TYPE__PROPERTIES:
+ getProperties().clear();
+ return;
+ case DeclarationPackage.DECLARED_TYPE__OPERATIONS:
+ getOperations().clear();
+ return;
+ case DeclarationPackage.DECLARED_TYPE__DECLARED_TYPE_PARAMETERS:
+ getDeclaredTypeParameters().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case DeclarationPackage.DECLARED_TYPE__STATIC_PROPERTIES:
+ return staticProperties != null && !staticProperties.isEmpty();
+ case DeclarationPackage.DECLARED_TYPE__PROPERTIES:
+ return properties != null && !properties.isEmpty();
+ case DeclarationPackage.DECLARED_TYPE__OPERATIONS:
+ return operations != null && !operations.isEmpty();
+ case DeclarationPackage.DECLARED_TYPE__DECLARED_TYPE_PARAMETERS:
+ return declaredTypeParameters != null && !declaredTypeParameters.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DeclaredTypeImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredTypeParameterImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredTypeParameterImpl.java
new file mode 100644
index 0000000..44983cd
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/impl/DeclaredTypeParameterImpl.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclaredTypeParameterImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter;
+
+import org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Declared Type Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DeclaredTypeParameterImpl extends AbstractNamedElementImpl implements DeclaredTypeParameter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeclaredTypeParameterImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return DeclarationPackage.Literals.DECLARED_TYPE_PARAMETER;
+ }
+
+} //DeclaredTypeParameterImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/util/DeclarationAdapterFactory.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/util/DeclarationAdapterFactory.java
new file mode 100644
index 0000000..3d6b804
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/util/DeclarationAdapterFactory.java
@@ -0,0 +1,252 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationAdapterFactory.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage
+ * @generated
+ */
+public class DeclarationAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static DeclarationPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = DeclarationPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch the delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeclarationSwitch<Adapter> modelSwitch =
+ new DeclarationSwitch<Adapter>() {
+ @Override
+ public Adapter caseDeclaredType(DeclaredType object) {
+ return createDeclaredTypeAdapter();
+ }
+ @Override
+ public Adapter caseDeclaredOperation(DeclaredOperation object) {
+ return createDeclaredOperationAdapter();
+ }
+ @Override
+ public Adapter caseDeclaredFunction(DeclaredFunction object) {
+ return createDeclaredFunctionAdapter();
+ }
+ @Override
+ public Adapter caseDeclaredProperty(DeclaredProperty object) {
+ return createDeclaredPropertyAdapter();
+ }
+ @Override
+ public Adapter caseDeclaredStaticProperty(DeclaredStaticProperty object) {
+ return createDeclaredStaticPropertyAdapter();
+ }
+ @Override
+ public Adapter caseDeclaredTypeParameter(DeclaredTypeParameter object) {
+ return createDeclaredTypeParameterAdapter();
+ }
+ @Override
+ public Adapter caseDeclaredParameter(DeclaredParameter object) {
+ return createDeclaredParameterAdapter();
+ }
+ @Override
+ public Adapter caseAbstractNamedElement(AbstractNamedElement object) {
+ return createAbstractNamedElementAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType <em>Declared Type</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.eclipse.xpand3.staticTypesystem.declaration.DeclaredType
+ * @generated
+ */
+ public Adapter createDeclaredTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation <em>Declared Operation</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.eclipse.xpand3.staticTypesystem.declaration.DeclaredOperation
+ * @generated
+ */
+ public Adapter createDeclaredOperationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction <em>Declared Function</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.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction
+ * @generated
+ */
+ public Adapter createDeclaredFunctionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredProperty <em>Declared Property</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.eclipse.xpand3.staticTypesystem.declaration.DeclaredProperty
+ * @generated
+ */
+ public Adapter createDeclaredPropertyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredStaticProperty <em>Declared Static Property</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.eclipse.xpand3.staticTypesystem.declaration.DeclaredStaticProperty
+ * @generated
+ */
+ public Adapter createDeclaredStaticPropertyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter <em>Declared Type Parameter</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.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter
+ * @generated
+ */
+ public Adapter createDeclaredTypeParameterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter <em>Declared Parameter</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.eclipse.xpand3.staticTypesystem.declaration.DeclaredParameter
+ * @generated
+ */
+ public Adapter createDeclaredParameterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.AbstractNamedElement <em>Abstract Named 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.eclipse.xpand3.staticTypesystem.AbstractNamedElement
+ * @generated
+ */
+ public Adapter createAbstractNamedElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //DeclarationAdapterFactory
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/util/DeclarationSwitch.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/util/DeclarationSwitch.java
new file mode 100644
index 0000000..466d46a
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/declaration/util/DeclarationSwitch.java
@@ -0,0 +1,280 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DeclarationSwitch.java,v 1.1 2008/03/04 10:53:03 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.declaration.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage
+ * @generated
+ */
+public class DeclarationSwitch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static DeclarationPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclarationSwitch() {
+ if (modelPackage == null) {
+ modelPackage = DeclarationPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case DeclarationPackage.DECLARED_TYPE: {
+ DeclaredType declaredType = (DeclaredType)theEObject;
+ T result = caseDeclaredType(declaredType);
+ if (result == null) result = caseAbstractNamedElement(declaredType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.DECLARED_OPERATION: {
+ DeclaredOperation declaredOperation = (DeclaredOperation)theEObject;
+ T result = caseDeclaredOperation(declaredOperation);
+ if (result == null) result = caseAbstractNamedElement(declaredOperation);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.DECLARED_FUNCTION: {
+ DeclaredFunction declaredFunction = (DeclaredFunction)theEObject;
+ T result = caseDeclaredFunction(declaredFunction);
+ if (result == null) result = caseAbstractNamedElement(declaredFunction);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.DECLARED_PROPERTY: {
+ DeclaredProperty declaredProperty = (DeclaredProperty)theEObject;
+ T result = caseDeclaredProperty(declaredProperty);
+ if (result == null) result = caseAbstractNamedElement(declaredProperty);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.DECLARED_STATIC_PROPERTY: {
+ DeclaredStaticProperty declaredStaticProperty = (DeclaredStaticProperty)theEObject;
+ T result = caseDeclaredStaticProperty(declaredStaticProperty);
+ if (result == null) result = caseAbstractNamedElement(declaredStaticProperty);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.DECLARED_TYPE_PARAMETER: {
+ DeclaredTypeParameter declaredTypeParameter = (DeclaredTypeParameter)theEObject;
+ T result = caseDeclaredTypeParameter(declaredTypeParameter);
+ if (result == null) result = caseAbstractNamedElement(declaredTypeParameter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case DeclarationPackage.DECLARED_PARAMETER: {
+ DeclaredParameter declaredParameter = (DeclaredParameter)theEObject;
+ T result = caseDeclaredParameter(declaredParameter);
+ if (result == null) result = caseAbstractNamedElement(declaredParameter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Declared Type</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>Declared Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDeclaredType(DeclaredType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Declared Operation</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>Declared Operation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDeclaredOperation(DeclaredOperation object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Declared Function</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>Declared Function</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDeclaredFunction(DeclaredFunction object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Declared Property</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>Declared Property</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDeclaredProperty(DeclaredProperty object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Declared Static Property</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>Declared Static Property</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDeclaredStaticProperty(DeclaredStaticProperty object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Declared Type Parameter</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>Declared Type Parameter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDeclaredTypeParameter(DeclaredTypeParameter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Declared Parameter</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>Declared Parameter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDeclaredParameter(DeclaredParameter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Named 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>Abstract Named Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractNamedElement(AbstractNamedElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //DeclarationSwitch
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/AbstractNamedElementImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/AbstractNamedElementImpl.java
new file mode 100644
index 0000000..7b2244b
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/AbstractNamedElementImpl.java
@@ -0,0 +1,167 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractNamedElementImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.impl.AbstractNamedElementImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractNamedElementImpl extends EObjectImpl implements AbstractNamedElement {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractNamedElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return StaticTypesystemPackage.Literals.ABSTRACT_NAMED_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //AbstractNamedElementImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/AbstractTypeReferenceImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/AbstractTypeReferenceImpl.java
new file mode 100644
index 0000000..2e3dfd7
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/AbstractTypeReferenceImpl.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AbstractTypeReferenceImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractTypeReference;
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Type Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractTypeReferenceImpl extends EObjectImpl implements AbstractTypeReference {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractTypeReferenceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return StaticTypesystemPackage.Literals.ABSTRACT_TYPE_REFERENCE;
+ }
+
+} //AbstractTypeReferenceImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/FunctionTypeImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/FunctionTypeImpl.java
new file mode 100644
index 0000000..56c9688
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/FunctionTypeImpl.java
@@ -0,0 +1,203 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: FunctionTypeImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+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.EObjectResolvingEList;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractTypeReference;
+import org.eclipse.xpand3.staticTypesystem.FunctionType;
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Function Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.impl.FunctionTypeImpl#getDeclaredFunction <em>Declared Function</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.impl.FunctionTypeImpl#getActualTypeArguments <em>Actual Type Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FunctionTypeImpl extends AbstractTypeReferenceImpl implements FunctionType {
+ /**
+ * The cached value of the '{@link #getDeclaredFunction() <em>Declared Function</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaredFunction()
+ * @generated
+ * @ordered
+ */
+ protected DeclaredFunction declaredFunction;
+
+ /**
+ * The cached value of the '{@link #getActualTypeArguments() <em>Actual Type Arguments</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActualTypeArguments()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractTypeReference> actualTypeArguments;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FunctionTypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return StaticTypesystemPackage.Literals.FUNCTION_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredFunction getDeclaredFunction() {
+ if (declaredFunction != null && declaredFunction.eIsProxy()) {
+ InternalEObject oldDeclaredFunction = (InternalEObject)declaredFunction;
+ declaredFunction = (DeclaredFunction)eResolveProxy(oldDeclaredFunction);
+ if (declaredFunction != oldDeclaredFunction) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, StaticTypesystemPackage.FUNCTION_TYPE__DECLARED_FUNCTION, oldDeclaredFunction, declaredFunction));
+ }
+ }
+ return declaredFunction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredFunction basicGetDeclaredFunction() {
+ return declaredFunction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDeclaredFunction(DeclaredFunction newDeclaredFunction) {
+ DeclaredFunction oldDeclaredFunction = declaredFunction;
+ declaredFunction = newDeclaredFunction;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StaticTypesystemPackage.FUNCTION_TYPE__DECLARED_FUNCTION, oldDeclaredFunction, declaredFunction));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractTypeReference> getActualTypeArguments() {
+ if (actualTypeArguments == null) {
+ actualTypeArguments = new EObjectResolvingEList<AbstractTypeReference>(AbstractTypeReference.class, this, StaticTypesystemPackage.FUNCTION_TYPE__ACTUAL_TYPE_ARGUMENTS);
+ }
+ return actualTypeArguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case StaticTypesystemPackage.FUNCTION_TYPE__DECLARED_FUNCTION:
+ if (resolve) return getDeclaredFunction();
+ return basicGetDeclaredFunction();
+ case StaticTypesystemPackage.FUNCTION_TYPE__ACTUAL_TYPE_ARGUMENTS:
+ return getActualTypeArguments();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case StaticTypesystemPackage.FUNCTION_TYPE__DECLARED_FUNCTION:
+ setDeclaredFunction((DeclaredFunction)newValue);
+ return;
+ case StaticTypesystemPackage.FUNCTION_TYPE__ACTUAL_TYPE_ARGUMENTS:
+ getActualTypeArguments().clear();
+ getActualTypeArguments().addAll((Collection<? extends AbstractTypeReference>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.FUNCTION_TYPE__DECLARED_FUNCTION:
+ setDeclaredFunction((DeclaredFunction)null);
+ return;
+ case StaticTypesystemPackage.FUNCTION_TYPE__ACTUAL_TYPE_ARGUMENTS:
+ getActualTypeArguments().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.FUNCTION_TYPE__DECLARED_FUNCTION:
+ return declaredFunction != null;
+ case StaticTypesystemPackage.FUNCTION_TYPE__ACTUAL_TYPE_ARGUMENTS:
+ return actualTypeArguments != null && !actualTypeArguments.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //FunctionTypeImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/StaticTypesystemFactoryImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/StaticTypesystemFactoryImpl.java
new file mode 100644
index 0000000..0f42602
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/StaticTypesystemFactoryImpl.java
@@ -0,0 +1,143 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: StaticTypesystemFactoryImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.xpand3.staticTypesystem.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StaticTypesystemFactoryImpl extends EFactoryImpl implements StaticTypesystemFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static StaticTypesystemFactory init() {
+ try {
+ StaticTypesystemFactory theStaticTypesystemFactory = (StaticTypesystemFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/m2t/xpand3/staticTypesystem");
+ if (theStaticTypesystemFactory != null) {
+ return theStaticTypesystemFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new StaticTypesystemFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StaticTypesystemFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case StaticTypesystemPackage.TYPE: return createType();
+ case StaticTypesystemPackage.TYPE_VARIABLE: return createTypeVariable();
+ case StaticTypesystemPackage.VOID_TYPE: return createVoidType();
+ case StaticTypesystemPackage.WILDCARD_TYPE: return createWildcardType();
+ case StaticTypesystemPackage.FUNCTION_TYPE: return createFunctionType();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type createType() {
+ TypeImpl type = new TypeImpl();
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TypeVariable createTypeVariable() {
+ TypeVariableImpl typeVariable = new TypeVariableImpl();
+ return typeVariable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public VoidType createVoidType() {
+ VoidTypeImpl voidType = new VoidTypeImpl();
+ return voidType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public WildcardType createWildcardType() {
+ WildcardTypeImpl wildcardType = new WildcardTypeImpl();
+ return wildcardType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FunctionType createFunctionType() {
+ FunctionTypeImpl functionType = new FunctionTypeImpl();
+ return functionType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StaticTypesystemPackage getStaticTypesystemPackage() {
+ return (StaticTypesystemPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static StaticTypesystemPackage getPackage() {
+ return StaticTypesystemPackage.eINSTANCE;
+ }
+
+} //StaticTypesystemFactoryImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/StaticTypesystemPackageImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/StaticTypesystemPackageImpl.java
new file mode 100644
index 0000000..a2d1626
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/StaticTypesystemPackageImpl.java
@@ -0,0 +1,412 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: StaticTypesystemPackageImpl.java,v 1.1 2008/03/04 10:53:01 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractNamedElement;
+import org.eclipse.xpand3.staticTypesystem.AbstractTypeReference;
+import org.eclipse.xpand3.staticTypesystem.FunctionType;
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemFactory;
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage;
+import org.eclipse.xpand3.staticTypesystem.Type;
+import org.eclipse.xpand3.staticTypesystem.TypeVariable;
+import org.eclipse.xpand3.staticTypesystem.VoidType;
+import org.eclipse.xpand3.staticTypesystem.WildcardType;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclarationPackage;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.impl.DeclarationPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StaticTypesystemPackageImpl extends EPackageImpl implements StaticTypesystemPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractNamedElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractTypeReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass typeVariableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass voidTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass wildcardTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass functionTypeEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private StaticTypesystemPackageImpl() {
+ super(eNS_URI, StaticTypesystemFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this
+ * model, and for any others upon which it depends. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static StaticTypesystemPackage init() {
+ if (isInited) return (StaticTypesystemPackage)EPackage.Registry.INSTANCE.getEPackage(StaticTypesystemPackage.eNS_URI);
+
+ // Obtain or create and register package
+ StaticTypesystemPackageImpl theStaticTypesystemPackage = (StaticTypesystemPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof StaticTypesystemPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new StaticTypesystemPackageImpl());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ DeclarationPackageImpl theDeclarationPackage = (DeclarationPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(DeclarationPackage.eNS_URI) instanceof DeclarationPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(DeclarationPackage.eNS_URI) : DeclarationPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theStaticTypesystemPackage.createPackageContents();
+ theDeclarationPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theStaticTypesystemPackage.initializePackageContents();
+ theDeclarationPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theStaticTypesystemPackage.freeze();
+
+ return theStaticTypesystemPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractNamedElement() {
+ return abstractNamedElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAbstractNamedElement_Name() {
+ return (EAttribute)abstractNamedElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractTypeReference() {
+ return abstractTypeReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getType() {
+ return typeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getType_DeclaredType() {
+ return (EReference)typeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getType_ActualTypeArguments() {
+ return (EReference)typeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTypeVariable() {
+ return typeVariableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTypeVariable_DeclaredTypeParameter() {
+ return (EReference)typeVariableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getVoidType() {
+ return voidTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getWildcardType() {
+ return wildcardTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getWildcardType_LowerBounds() {
+ return (EReference)wildcardTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getWildcardType_UpperBounds() {
+ return (EReference)wildcardTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFunctionType() {
+ return functionTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFunctionType_DeclaredFunction() {
+ return (EReference)functionTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFunctionType_ActualTypeArguments() {
+ return (EReference)functionTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StaticTypesystemFactory getStaticTypesystemFactory() {
+ return (StaticTypesystemFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ abstractNamedElementEClass = createEClass(ABSTRACT_NAMED_ELEMENT);
+ createEAttribute(abstractNamedElementEClass, ABSTRACT_NAMED_ELEMENT__NAME);
+
+ abstractTypeReferenceEClass = createEClass(ABSTRACT_TYPE_REFERENCE);
+
+ typeEClass = createEClass(TYPE);
+ createEReference(typeEClass, TYPE__DECLARED_TYPE);
+ createEReference(typeEClass, TYPE__ACTUAL_TYPE_ARGUMENTS);
+
+ typeVariableEClass = createEClass(TYPE_VARIABLE);
+ createEReference(typeVariableEClass, TYPE_VARIABLE__DECLARED_TYPE_PARAMETER);
+
+ voidTypeEClass = createEClass(VOID_TYPE);
+
+ wildcardTypeEClass = createEClass(WILDCARD_TYPE);
+ createEReference(wildcardTypeEClass, WILDCARD_TYPE__LOWER_BOUNDS);
+ createEReference(wildcardTypeEClass, WILDCARD_TYPE__UPPER_BOUNDS);
+
+ functionTypeEClass = createEClass(FUNCTION_TYPE);
+ createEReference(functionTypeEClass, FUNCTION_TYPE__DECLARED_FUNCTION);
+ createEReference(functionTypeEClass, FUNCTION_TYPE__ACTUAL_TYPE_ARGUMENTS);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ DeclarationPackage theDeclarationPackage = (DeclarationPackage)EPackage.Registry.INSTANCE.getEPackage(DeclarationPackage.eNS_URI);
+
+ // Add subpackages
+ getESubpackages().add(theDeclarationPackage);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ typeEClass.getESuperTypes().add(this.getAbstractTypeReference());
+ typeVariableEClass.getESuperTypes().add(this.getAbstractTypeReference());
+ voidTypeEClass.getESuperTypes().add(this.getAbstractTypeReference());
+ wildcardTypeEClass.getESuperTypes().add(this.getAbstractTypeReference());
+ functionTypeEClass.getESuperTypes().add(this.getAbstractTypeReference());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(abstractNamedElementEClass, AbstractNamedElement.class, "AbstractNamedElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAbstractNamedElement_Name(), ecorePackage.getEString(), "name", null, 0, 1, AbstractNamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(abstractTypeReferenceEClass, AbstractTypeReference.class, "AbstractTypeReference", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(typeEClass, Type.class, "Type", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getType_DeclaredType(), theDeclarationPackage.getDeclaredType(), null, "declaredType", null, 1, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getType_ActualTypeArguments(), this.getAbstractTypeReference(), null, "actualTypeArguments", null, 0, -1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(typeVariableEClass, TypeVariable.class, "TypeVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTypeVariable_DeclaredTypeParameter(), theDeclarationPackage.getDeclaredTypeParameter(), null, "declaredTypeParameter", null, 1, 1, TypeVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(voidTypeEClass, VoidType.class, "VoidType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(wildcardTypeEClass, WildcardType.class, "WildcardType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getWildcardType_LowerBounds(), this.getAbstractTypeReference(), null, "lowerBounds", null, 0, -1, WildcardType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getWildcardType_UpperBounds(), this.getAbstractTypeReference(), null, "upperBounds", null, 0, -1, WildcardType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(functionTypeEClass, FunctionType.class, "FunctionType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getFunctionType_DeclaredFunction(), theDeclarationPackage.getDeclaredFunction(), null, "declaredFunction", null, 1, 1, FunctionType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getFunctionType_ActualTypeArguments(), this.getAbstractTypeReference(), null, "actualTypeArguments", null, 0, -1, FunctionType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //StaticTypesystemPackageImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/TypeImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/TypeImpl.java
new file mode 100644
index 0000000..3085b52
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/TypeImpl.java
@@ -0,0 +1,203 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: TypeImpl.java,v 1.1 2008/03/04 10:53:01 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+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.EObjectResolvingEList;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractTypeReference;
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage;
+import org.eclipse.xpand3.staticTypesystem.Type;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.impl.TypeImpl#getDeclaredType <em>Declared Type</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.impl.TypeImpl#getActualTypeArguments <em>Actual Type Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeImpl extends AbstractTypeReferenceImpl implements Type {
+ /**
+ * The cached value of the '{@link #getDeclaredType() <em>Declared Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaredType()
+ * @generated
+ * @ordered
+ */
+ protected DeclaredType declaredType;
+
+ /**
+ * The cached value of the '{@link #getActualTypeArguments() <em>Actual Type Arguments</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActualTypeArguments()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractTypeReference> actualTypeArguments;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return StaticTypesystemPackage.Literals.TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredType getDeclaredType() {
+ if (declaredType != null && declaredType.eIsProxy()) {
+ InternalEObject oldDeclaredType = (InternalEObject)declaredType;
+ declaredType = (DeclaredType)eResolveProxy(oldDeclaredType);
+ if (declaredType != oldDeclaredType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, StaticTypesystemPackage.TYPE__DECLARED_TYPE, oldDeclaredType, declaredType));
+ }
+ }
+ return declaredType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredType basicGetDeclaredType() {
+ return declaredType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDeclaredType(DeclaredType newDeclaredType) {
+ DeclaredType oldDeclaredType = declaredType;
+ declaredType = newDeclaredType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StaticTypesystemPackage.TYPE__DECLARED_TYPE, oldDeclaredType, declaredType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractTypeReference> getActualTypeArguments() {
+ if (actualTypeArguments == null) {
+ actualTypeArguments = new EObjectResolvingEList<AbstractTypeReference>(AbstractTypeReference.class, this, StaticTypesystemPackage.TYPE__ACTUAL_TYPE_ARGUMENTS);
+ }
+ return actualTypeArguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case StaticTypesystemPackage.TYPE__DECLARED_TYPE:
+ if (resolve) return getDeclaredType();
+ return basicGetDeclaredType();
+ case StaticTypesystemPackage.TYPE__ACTUAL_TYPE_ARGUMENTS:
+ return getActualTypeArguments();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case StaticTypesystemPackage.TYPE__DECLARED_TYPE:
+ setDeclaredType((DeclaredType)newValue);
+ return;
+ case StaticTypesystemPackage.TYPE__ACTUAL_TYPE_ARGUMENTS:
+ getActualTypeArguments().clear();
+ getActualTypeArguments().addAll((Collection<? extends AbstractTypeReference>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.TYPE__DECLARED_TYPE:
+ setDeclaredType((DeclaredType)null);
+ return;
+ case StaticTypesystemPackage.TYPE__ACTUAL_TYPE_ARGUMENTS:
+ getActualTypeArguments().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.TYPE__DECLARED_TYPE:
+ return declaredType != null;
+ case StaticTypesystemPackage.TYPE__ACTUAL_TYPE_ARGUMENTS:
+ return actualTypeArguments != null && !actualTypeArguments.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TypeImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/TypeVariableImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/TypeVariableImpl.java
new file mode 100644
index 0000000..3d3af92
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/TypeVariableImpl.java
@@ -0,0 +1,161 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: TypeVariableImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.impl;
+
+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.xpand3.staticTypesystem.StaticTypesystemPackage;
+import org.eclipse.xpand3.staticTypesystem.TypeVariable;
+
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredTypeParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Variable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.impl.TypeVariableImpl#getDeclaredTypeParameter <em>Declared Type Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeVariableImpl extends AbstractTypeReferenceImpl implements TypeVariable {
+ /**
+ * The cached value of the '{@link #getDeclaredTypeParameter() <em>Declared Type Parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaredTypeParameter()
+ * @generated
+ * @ordered
+ */
+ protected DeclaredTypeParameter declaredTypeParameter;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TypeVariableImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return StaticTypesystemPackage.Literals.TYPE_VARIABLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredTypeParameter getDeclaredTypeParameter() {
+ if (declaredTypeParameter != null && declaredTypeParameter.eIsProxy()) {
+ InternalEObject oldDeclaredTypeParameter = (InternalEObject)declaredTypeParameter;
+ declaredTypeParameter = (DeclaredTypeParameter)eResolveProxy(oldDeclaredTypeParameter);
+ if (declaredTypeParameter != oldDeclaredTypeParameter) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, StaticTypesystemPackage.TYPE_VARIABLE__DECLARED_TYPE_PARAMETER, oldDeclaredTypeParameter, declaredTypeParameter));
+ }
+ }
+ return declaredTypeParameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeclaredTypeParameter basicGetDeclaredTypeParameter() {
+ return declaredTypeParameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDeclaredTypeParameter(DeclaredTypeParameter newDeclaredTypeParameter) {
+ DeclaredTypeParameter oldDeclaredTypeParameter = declaredTypeParameter;
+ declaredTypeParameter = newDeclaredTypeParameter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, StaticTypesystemPackage.TYPE_VARIABLE__DECLARED_TYPE_PARAMETER, oldDeclaredTypeParameter, declaredTypeParameter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case StaticTypesystemPackage.TYPE_VARIABLE__DECLARED_TYPE_PARAMETER:
+ if (resolve) return getDeclaredTypeParameter();
+ return basicGetDeclaredTypeParameter();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case StaticTypesystemPackage.TYPE_VARIABLE__DECLARED_TYPE_PARAMETER:
+ setDeclaredTypeParameter((DeclaredTypeParameter)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.TYPE_VARIABLE__DECLARED_TYPE_PARAMETER:
+ setDeclaredTypeParameter((DeclaredTypeParameter)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.TYPE_VARIABLE__DECLARED_TYPE_PARAMETER:
+ return declaredTypeParameter != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TypeVariableImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/VoidTypeImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/VoidTypeImpl.java
new file mode 100644
index 0000000..532044f
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/VoidTypeImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: VoidTypeImpl.java,v 1.1 2008/03/04 10:53:02 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage;
+import org.eclipse.xpand3.staticTypesystem.VoidType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Void Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class VoidTypeImpl extends AbstractTypeReferenceImpl implements VoidType {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected VoidTypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return StaticTypesystemPackage.Literals.VOID_TYPE;
+ }
+
+} //VoidTypeImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/WildcardTypeImpl.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/WildcardTypeImpl.java
new file mode 100644
index 0000000..5a028ec
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/impl/WildcardTypeImpl.java
@@ -0,0 +1,170 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: WildcardTypeImpl.java,v 1.1 2008/03/04 10:53:01 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.xpand3.staticTypesystem.AbstractTypeReference;
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage;
+import org.eclipse.xpand3.staticTypesystem.WildcardType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Wildcard Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.impl.WildcardTypeImpl#getLowerBounds <em>Lower Bounds</em>}</li>
+ * <li>{@link org.eclipse.xpand3.staticTypesystem.impl.WildcardTypeImpl#getUpperBounds <em>Upper Bounds</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class WildcardTypeImpl extends AbstractTypeReferenceImpl implements WildcardType {
+ /**
+ * The cached value of the '{@link #getLowerBounds() <em>Lower Bounds</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLowerBounds()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractTypeReference> lowerBounds;
+
+ /**
+ * The cached value of the '{@link #getUpperBounds() <em>Upper Bounds</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUpperBounds()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractTypeReference> upperBounds;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected WildcardTypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return StaticTypesystemPackage.Literals.WILDCARD_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractTypeReference> getLowerBounds() {
+ if (lowerBounds == null) {
+ lowerBounds = new EObjectResolvingEList<AbstractTypeReference>(AbstractTypeReference.class, this, StaticTypesystemPackage.WILDCARD_TYPE__LOWER_BOUNDS);
+ }
+ return lowerBounds;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractTypeReference> getUpperBounds() {
+ if (upperBounds == null) {
+ upperBounds = new EObjectResolvingEList<AbstractTypeReference>(AbstractTypeReference.class, this, StaticTypesystemPackage.WILDCARD_TYPE__UPPER_BOUNDS);
+ }
+ return upperBounds;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case StaticTypesystemPackage.WILDCARD_TYPE__LOWER_BOUNDS:
+ return getLowerBounds();
+ case StaticTypesystemPackage.WILDCARD_TYPE__UPPER_BOUNDS:
+ return getUpperBounds();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case StaticTypesystemPackage.WILDCARD_TYPE__LOWER_BOUNDS:
+ getLowerBounds().clear();
+ getLowerBounds().addAll((Collection<? extends AbstractTypeReference>)newValue);
+ return;
+ case StaticTypesystemPackage.WILDCARD_TYPE__UPPER_BOUNDS:
+ getUpperBounds().clear();
+ getUpperBounds().addAll((Collection<? extends AbstractTypeReference>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.WILDCARD_TYPE__LOWER_BOUNDS:
+ getLowerBounds().clear();
+ return;
+ case StaticTypesystemPackage.WILDCARD_TYPE__UPPER_BOUNDS:
+ getUpperBounds().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case StaticTypesystemPackage.WILDCARD_TYPE__LOWER_BOUNDS:
+ return lowerBounds != null && !lowerBounds.isEmpty();
+ case StaticTypesystemPackage.WILDCARD_TYPE__UPPER_BOUNDS:
+ return upperBounds != null && !upperBounds.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //WildcardTypeImpl
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/util/StaticTypesystemAdapterFactory.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/util/StaticTypesystemAdapterFactory.java
new file mode 100644
index 0000000..2bb14ea
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/util/StaticTypesystemAdapterFactory.java
@@ -0,0 +1,232 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: StaticTypesystemAdapterFactory.java,v 1.1 2008/03/04 10:52:57 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.xpand3.staticTypesystem.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage
+ * @generated
+ */
+public class StaticTypesystemAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static StaticTypesystemPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StaticTypesystemAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = StaticTypesystemPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch the delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StaticTypesystemSwitch<Adapter> modelSwitch =
+ new StaticTypesystemSwitch<Adapter>() {
+ @Override
+ public Adapter caseAbstractNamedElement(AbstractNamedElement object) {
+ return createAbstractNamedElementAdapter();
+ }
+ @Override
+ public Adapter caseAbstractTypeReference(AbstractTypeReference object) {
+ return createAbstractTypeReferenceAdapter();
+ }
+ @Override
+ public Adapter caseType(Type object) {
+ return createTypeAdapter();
+ }
+ @Override
+ public Adapter caseTypeVariable(TypeVariable object) {
+ return createTypeVariableAdapter();
+ }
+ @Override
+ public Adapter caseVoidType(VoidType object) {
+ return createVoidTypeAdapter();
+ }
+ @Override
+ public Adapter caseWildcardType(WildcardType object) {
+ return createWildcardTypeAdapter();
+ }
+ @Override
+ public Adapter caseFunctionType(FunctionType object) {
+ return createFunctionTypeAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.AbstractNamedElement <em>Abstract Named 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.eclipse.xpand3.staticTypesystem.AbstractNamedElement
+ * @generated
+ */
+ public Adapter createAbstractNamedElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.AbstractTypeReference <em>Abstract Type Reference</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.eclipse.xpand3.staticTypesystem.AbstractTypeReference
+ * @generated
+ */
+ public Adapter createAbstractTypeReferenceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.Type <em>Type</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.eclipse.xpand3.staticTypesystem.Type
+ * @generated
+ */
+ public Adapter createTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.TypeVariable <em>Type Variable</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.eclipse.xpand3.staticTypesystem.TypeVariable
+ * @generated
+ */
+ public Adapter createTypeVariableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.VoidType <em>Void Type</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.eclipse.xpand3.staticTypesystem.VoidType
+ * @generated
+ */
+ public Adapter createVoidTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.WildcardType <em>Wildcard Type</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.eclipse.xpand3.staticTypesystem.WildcardType
+ * @generated
+ */
+ public Adapter createWildcardTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.xpand3.staticTypesystem.FunctionType <em>Function Type</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.eclipse.xpand3.staticTypesystem.FunctionType
+ * @generated
+ */
+ public Adapter createFunctionTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //StaticTypesystemAdapterFactory
diff --git a/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/util/StaticTypesystemSwitch.java b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/util/StaticTypesystemSwitch.java
new file mode 100644
index 0000000..5b7ccbb
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/emf-gen/org/eclipse/xpand3/staticTypesystem/util/StaticTypesystemSwitch.java
@@ -0,0 +1,261 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: StaticTypesystemSwitch.java,v 1.1 2008/03/04 10:52:57 sefftinge Exp $
+ */
+package org.eclipse.xpand3.staticTypesystem.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.xpand3.staticTypesystem.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.xpand3.staticTypesystem.StaticTypesystemPackage
+ * @generated
+ */
+public class StaticTypesystemSwitch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static StaticTypesystemPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StaticTypesystemSwitch() {
+ if (modelPackage == null) {
+ modelPackage = StaticTypesystemPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case StaticTypesystemPackage.ABSTRACT_NAMED_ELEMENT: {
+ AbstractNamedElement abstractNamedElement = (AbstractNamedElement)theEObject;
+ T result = caseAbstractNamedElement(abstractNamedElement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case StaticTypesystemPackage.ABSTRACT_TYPE_REFERENCE: {
+ AbstractTypeReference abstractTypeReference = (AbstractTypeReference)theEObject;
+ T result = caseAbstractTypeReference(abstractTypeReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case StaticTypesystemPackage.TYPE: {
+ Type type = (Type)theEObject;
+ T result = caseType(type);
+ if (result == null) result = caseAbstractTypeReference(type);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case StaticTypesystemPackage.TYPE_VARIABLE: {
+ TypeVariable typeVariable = (TypeVariable)theEObject;
+ T result = caseTypeVariable(typeVariable);
+ if (result == null) result = caseAbstractTypeReference(typeVariable);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case StaticTypesystemPackage.VOID_TYPE: {
+ VoidType voidType = (VoidType)theEObject;
+ T result = caseVoidType(voidType);
+ if (result == null) result = caseAbstractTypeReference(voidType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case StaticTypesystemPackage.WILDCARD_TYPE: {
+ WildcardType wildcardType = (WildcardType)theEObject;
+ T result = caseWildcardType(wildcardType);
+ if (result == null) result = caseAbstractTypeReference(wildcardType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case StaticTypesystemPackage.FUNCTION_TYPE: {
+ FunctionType functionType = (FunctionType)theEObject;
+ T result = caseFunctionType(functionType);
+ if (result == null) result = caseAbstractTypeReference(functionType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Named 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>Abstract Named Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractNamedElement(AbstractNamedElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Type Reference</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>Abstract Type Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractTypeReference(AbstractTypeReference object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Type</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>Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseType(Type object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Type Variable</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>Type Variable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTypeVariable(TypeVariable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Void Type</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>Void Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseVoidType(VoidType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Wildcard Type</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>Wildcard Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseWildcardType(WildcardType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Function Type</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>Function Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseFunctionType(FunctionType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //StaticTypesystemSwitch
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/DeclarationsContributorFactory.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/DeclarationsContributorFactory.java
index 20ebe5f..2bebedc 100644
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/DeclarationsContributorFactory.java
+++ b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/DeclarationsContributorFactory.java
@@ -15,7 +15,7 @@
*/
package org.eclipse.xand3.analyzation;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclarationsContributor;
+import org.eclipse.xand3.analyzation.typesystem.DeclarationsContributor;
/**
* @author Sven Efftinge
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/AbstractNamed.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/AbstractNamed.java
deleted file mode 100644
index 66ffd86..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/AbstractNamed.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface AbstractNamed {
- String getName();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclarationsContributor.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/DeclarationsContributor.java
index 6e0a214..1229a6c 100644
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclarationsContributor.java
+++ b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/DeclarationsContributor.java
@@ -13,10 +13,13 @@
* </copyright>
*
*/
-package org.eclipse.xand3.analyzation.typesystem.declaration;
+package org.eclipse.xand3.analyzation.typesystem;
import java.util.Set;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType;
+
/**
* @author Sven Efftinge
*
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Feature.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Feature.java
deleted file mode 100644
index 6202356..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Feature.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem;
-
-import org.eclipse.xand3.analyzation.typesystem.type.Type;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface Feature extends AbstractNamed {
- /**
- * @return the declaring type
- */
- Type getDeclaringType();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Function.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Function.java
deleted file mode 100644
index 53a324a..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Function.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem;
-
-import java.util.List;
-
-import org.eclipse.xand3.analyzation.typesystem.type.TypeMirror;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface Function extends AbstractNamed {
- TypeMirror getReturnType();
- List<TypeMirror> getParameterTypes();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Operation.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Operation.java
deleted file mode 100644
index ed76df3..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Operation.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem;
-
-import java.util.List;
-
-import org.eclipse.xand3.analyzation.typesystem.type.Type;
-import org.eclipse.xand3.analyzation.typesystem.type.TypeMirror;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface Operation extends Feature {
- List<Type> getParameterTypes();
- TypeMirror getReturnType();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Property.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Property.java
deleted file mode 100644
index f7a5427..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/Property.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem;
-
-import org.eclipse.xand3.analyzation.typesystem.type.Type;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface Property extends Feature {
- Type getPropertyType();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/TypeSystemFacade.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/TypeSystemFacade.java
index db052c9..b9f3dd1 100644
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/TypeSystemFacade.java
+++ b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/TypeSystemFacade.java
@@ -15,44 +15,56 @@
*/
package org.eclipse.xand3.analyzation.typesystem;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredFunction;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredType;
-import org.eclipse.xand3.analyzation.typesystem.type.Type;
-import org.eclipse.xand3.analyzation.typesystem.type.TypeMirror;
-import org.eclipse.xand3.analyzation.typesystem.type.WildcardType;
+import org.eclipse.xpand3.staticTypesystem.AbstractTypeReference;
+import org.eclipse.xpand3.staticTypesystem.FunctionType;
+import org.eclipse.xpand3.staticTypesystem.StaticTypesystemFactory;
+import org.eclipse.xpand3.staticTypesystem.Type;
+import org.eclipse.xpand3.staticTypesystem.WildcardType;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType;
/**
* @author Sven Efftinge
*
*/
-public interface TypeSystemFacade {
+public final class TypeSystemFacade {
+ private TypeSystemFacade(){}
+
+ public static TypeSystemFacade create() {
+ return new TypeSystemFacade();
+ }
+
+ private StaticTypesystemFactory FACTORY = StaticTypesystemFactory.eINSTANCE;
// factory methods for type arguments
/**
* creates and returns a simple wild card type argument
*/
- WildcardType createWildCard();
+ public WildcardType createWildcard() {
+ WildcardType wildcardType = FACTORY.createWildcardType();
+ return wildcardType;
+ }
/**
* creates and returns a wild card type argument with the passed lower bound as well as upper bounds
*/
- WildcardType createWildCardWithLowerAndUpper(Type lower,
- Type... upperBounds);
+ public WildcardType createWildcardWithLower(AbstractTypeReference... lowerBounds) {
+ WildcardType wildCard = createWildcard();
+ for (AbstractTypeReference abstractTypeReference : lowerBounds) {
+ wildCard.getLowerBounds().add(abstractTypeReference);
+ }
+ return wildCard;
+ }
/**
* creates and returns a wild card type argument with the passed upper bounds
*/
- WildcardType createWildCardWithUpper(Type... upperBounds);
-
- /**
- * creates and returns a simple type argument, parameterized with a concrete type
- */
- WildcardType createSimpleArgument(Type type);
-
- /**
- * @param name - a simple name (not parameterized!)
- * @return the type (maybe unbound) or null if there is no type with the given name
- */
- Type typeForName(String name);
+ public WildcardType createWildcardWithUpper(Type... upperBounds){
+ WildcardType wildCard = createWildcard();
+ for (AbstractTypeReference abstractTypeReference : upperBounds) {
+ wildCard.getLowerBounds().add(abstractTypeReference);
+ }
+ return wildCard;
+ }
/**
* creates a type for a declared type and the needed arguments
@@ -60,21 +72,27 @@ public interface TypeSystemFacade {
* @param args
* @return
*/
- Type addArguments(DeclaredType dt, TypeMirror... args);
+ public Type typeReference(DeclaredType dt, AbstractTypeReference... args) {
+ Type type = FACTORY.createType();
+ type.setDeclaredType(dt);
+ for (AbstractTypeReference ref : args) {
+ type.getActualTypeArguments().add(ref);
+ }
+ return type;
+ }
/**
* @param name - a simple name (not parameterized!)
* @param paramTypes - the types of the parameters to be passed
* @return the type (maybe unbound) or null if there is no type with the given name
*/
- Function functionForNameAndParameterTypes(String name, Type[]... paramTypes);
+ public FunctionType functionType(DeclaredFunction func, AbstractTypeReference... args){
+ FunctionType funcType = FACTORY.createFunctionType();
+ funcType.setDeclaredFunction(func);
+ for (AbstractTypeReference ref : args) {
+ funcType.getActualTypeArguments().add(ref);
+ }
+ return funcType;
+ }
- /**
- * creates a function for a declared function and the needed arguments
- * @param f - the function to be instantiated
- * @param args - the type arguments
- * @return
- */
- Function addArguments(DeclaredFunction f, TypeMirror... args);
-
}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BooleanTypeImpl.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BooleanTypeImpl.java
deleted file mode 100644
index 494a3e5..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BooleanTypeImpl.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 committers of openArchitectureWare 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 openArchitectureWare - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.xand3.analyzation.typesystem.builtin;
-
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredTypeParameter;
-import org.eclipse.xand3.analyzation.typesystem.type.Type;
-
-
-public final class BooleanTypeImpl extends BuiltinBaseType {
- public BooleanTypeImpl(final String name) {
- super(name);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredType#getSuperTypes()
- */
- public Set<Type> getSuperTypes() {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredType#getTypeParameters()
- */
- public List<DeclaredTypeParameter> getTypeParameters() {
- // TODO Auto-generated method stub
- return null;
- }
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BuiltinBaseType.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BuiltinBaseType.java
deleted file mode 100644
index 55aded1..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BuiltinBaseType.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.xand3.analyzation.typesystem.builtin;
-
-import java.util.Set;
-
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredFeature;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredOperation;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredProperty;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredType;
-
-public abstract class BuiltinBaseType implements DeclaredType {
-
- private String name;
-
- public BuiltinBaseType(final String name) {
- this.name = name;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.xand3.analyzation.typesystem.DeclaredType#getDeclaredFeatures()
- */
- public Set<DeclaredFeature> getDeclaredFeatures() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredType#getDeclaredOperations()
- */
- public Set<DeclaredOperation> getDeclaredOperations() {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredType#getDeclaredProperties()
- */
- public Set<DeclaredProperty> getDeclaredProperties() {
- return null;
- }
-
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BuiltinDeclarationsContributor.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BuiltinDeclarationsContributor.java
index 1cb12d5..ce0dc25 100644
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BuiltinDeclarationsContributor.java
+++ b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/builtin/BuiltinDeclarationsContributor.java
@@ -15,17 +15,26 @@
*/
package org.eclipse.xand3.analyzation.typesystem.builtin;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclarationsContributor;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredFunction;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredType;
+import org.eclipse.xand3.analyzation.typesystem.DeclarationsContributor;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredFunction;
+import org.eclipse.xpand3.staticTypesystem.declaration.DeclaredType;
/**
* @author Sven Efftinge
*
*/
public class BuiltinDeclarationsContributor implements DeclarationsContributor {
+
+// private BackendTypesystem backendTypesystem = null;
+
+ private Map<String, DeclaredType> types = new HashMap<String, DeclaredType>();
+ {
+
+ }
/* (non-Javadoc)
* @see org.eclipse.xand3.analyzation.typesystem.DeclarationsContributor#functionsForName(java.lang.String)
@@ -39,10 +48,10 @@ public class BuiltinDeclarationsContributor implements DeclarationsContributor {
* @see org.eclipse.xand3.analyzation.typesystem.DeclarationsContributor#typeForName(java.lang.String)
*/
public DeclaredType typeForName(String name) {
- // TODO Auto-generated method stub
+
return null;
}
-
+
public static final String OBJECT = "Object";
// Datatypes
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredFeature.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredFeature.java
deleted file mode 100644
index 584b9a6..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredFeature.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.declaration;
-
-import org.eclipse.xand3.analyzation.typesystem.AbstractNamed;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface DeclaredFeature extends AbstractNamed {
- /**
- * @return the declaring type
- */
- DeclaredType getDeclaringType();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredFunction.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredFunction.java
deleted file mode 100644
index fc16d44..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredFunction.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.declaration;
-
-import java.util.List;
-
-import org.eclipse.xand3.analyzation.typesystem.AbstractNamed;
-import org.eclipse.xand3.analyzation.typesystem.type.TypeMirror;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface DeclaredFunction extends AbstractNamed {
- DeclaredTypeParameter[] getTypeParameters();
- TypeMirror getReturnType();
- List<TypeMirror> getParameterTypes();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredOperation.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredOperation.java
deleted file mode 100644
index ebe9e31..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredOperation.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.declaration;
-
-import java.util.List;
-
-import org.eclipse.xand3.analyzation.typesystem.type.TypeMirror;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface DeclaredOperation extends DeclaredFeature {
- TypeMirror getReturnType();
- List<TypeMirror> getParameterTypes();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredProperty.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredProperty.java
deleted file mode 100644
index 55fba93..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredProperty.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.declaration;
-
-import org.eclipse.xand3.analyzation.typesystem.type.TypeMirror;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface DeclaredProperty extends DeclaredFeature {
- TypeMirror getPropertyType();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredStaticProperty.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredStaticProperty.java
deleted file mode 100644
index ae49dc8..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredStaticProperty.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.declaration;
-
-import org.eclipse.xand3.analyzation.typesystem.type.Type;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface DeclaredStaticProperty extends DeclaredFeature {
- Type getPropertyType();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredType.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredType.java
deleted file mode 100644
index 30ad26b..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredType.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.declaration;
-
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.xand3.analyzation.typesystem.type.Type;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface DeclaredType {
- Set<Type> getSuperTypes();
-
- Set<DeclaredFeature> getDeclaredFeatures();
- Set<DeclaredProperty> getDeclaredProperties();
- Set<DeclaredOperation> getDeclaredOperations();
-
- List<DeclaredTypeParameter> getTypeParameters();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredTypeParameter.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredTypeParameter.java
deleted file mode 100644
index 4bf2f54..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/declaration/DeclaredTypeParameter.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.declaration;
-
-import java.util.Set;
-
-import org.eclipse.xand3.analyzation.typesystem.AbstractNamed;
-import org.eclipse.xand3.analyzation.typesystem.type.Type;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface DeclaredTypeParameter extends AbstractNamed {
- Set<Type> getUpperBounds();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/Type.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/Type.java
deleted file mode 100644
index 2552e93..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/Type.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.type;
-
-import org.eclipse.xand3.analyzation.typesystem.AbstractNamed;
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredType;
-
-public interface Type extends AbstractNamed, TypeMirror {
- /**
- * @return returns either the type this type is a bound instance of or just <code>this</code>, if the originally declared type wasn't generic
- */
- DeclaredType getDeclaredType();
-
- TypeMirror[] getActualTypeArguments();
-
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/TypeMirror.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/TypeMirror.java
deleted file mode 100644
index 8218ed9..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/TypeMirror.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.type;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface TypeMirror {
-
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/TypeVariable.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/TypeVariable.java
deleted file mode 100644
index bf7a98a..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/TypeVariable.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.type;
-
-import org.eclipse.xand3.analyzation.typesystem.declaration.DeclaredTypeParameter;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface TypeVariable extends TypeMirror {
- DeclaredTypeParameter getDeclaration();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/VoidType.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/VoidType.java
deleted file mode 100644
index d75be9a..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/VoidType.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.type;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface VoidType extends TypeMirror {
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/WildcardType.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/WildcardType.java
deleted file mode 100644
index 04791c4..0000000
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xand3/analyzation/typesystem/type/WildcardType.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2007 itemis AG 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:
- * itemis AG - Initial API and implementation
- *
- * </copyright>
- *
- */
-package org.eclipse.xand3.analyzation.typesystem.type;
-
-/**
- * @author Sven Efftinge
- *
- */
-public interface WildcardType extends TypeMirror {
- /**
- * @return the lower bounds (specified using e.g. <* super MyType>)
- */
- TypeMirror[] getLowerBounds();
-
- /**
- * @return the upper bounds (specified using e.g. <* extends Comparable,Serializable>)
- */
- TypeMirror[] getUpperBounds();
-}
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Lexer.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Lexer.java
index cb3f36a..99d1168 100644
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Lexer.java
+++ b/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Lexer.java
@@ -3,10 +3,12 @@
package org.eclipse.xpand3.parser;
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.FailedPredicateException;
+import org.antlr.runtime.Lexer;
+import org.antlr.runtime.MismatchedSetException;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.RecognitionException;
public class Xpand3Lexer extends Lexer {
public static final int T29=29;
diff --git a/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Parser.java b/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Parser.java
index d7110e1..a71647e 100644
--- a/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Parser.java
+++ b/plugins/org.eclipse.xpand3/src/org/eclipse/xpand3/parser/Xpand3Parser.java
@@ -3,14 +3,22 @@
package org.eclipse.xpand3.parser;
-import org.antlr.runtime.*;
-import java.util.Stack;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
import java.util.HashMap;
-import org.antlr.runtime.tree.*;
+import org.antlr.runtime.BaseRecognizer;
+import org.antlr.runtime.BitSet;
+import org.antlr.runtime.CommonToken;
+import org.antlr.runtime.DFA;
+import org.antlr.runtime.IntStream;
+import org.antlr.runtime.MismatchedSetException;
+import org.antlr.runtime.NoViableAltException;
+import org.antlr.runtime.Parser;
+import org.antlr.runtime.ParserRuleReturnScope;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.Token;
+import org.antlr.runtime.TokenStream;
+import org.antlr.runtime.tree.CommonTreeAdaptor;
+import org.antlr.runtime.tree.TreeAdaptor;
/** START EDITED 'abstract' added */
public abstract class Xpand3Parser extends Parser {
diff --git a/plugins/org.eclipse.xpand3/src/static_typesystem.ecore b/plugins/org.eclipse.xpand3/src/static_typesystem.ecore
new file mode 100644
index 0000000..c3867d1
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/src/static_typesystem.ecore
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="staticTypesystem"
+ nsURI="http://www.eclipse.org/m2t/xpand3/staticTypesystem" nsPrefix="staticTypesystem">
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractNamedElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractTypeReference" abstract="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Type" eSuperTypes="#//AbstractTypeReference">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaredType" lowerBound="1"
+ eType="#//declaration/DeclaredType"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actualTypeArguments" upperBound="-1"
+ eType="#//AbstractTypeReference"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypeVariable" eSuperTypes="#//AbstractTypeReference">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaredTypeParameter"
+ lowerBound="1" eType="#//declaration/DeclaredTypeParameter"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VoidType" eSuperTypes="#//AbstractTypeReference"/>
+ <eClassifiers xsi:type="ecore:EClass" name="WildcardType" eSuperTypes="#//AbstractTypeReference">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="lowerBounds" upperBound="-1"
+ eType="#//AbstractTypeReference"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="upperBounds" upperBound="-1"
+ eType="#//AbstractTypeReference"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FunctionType" eSuperTypes="#//AbstractTypeReference">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaredFunction" lowerBound="1"
+ eType="#//declaration/DeclaredFunction"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actualTypeArguments" upperBound="-1"
+ eType="#//AbstractTypeReference"/>
+ </eClassifiers>
+ <eSubpackages name="declaration" nsURI="http://www.eclipse.org/m2t/xpand3/staticTypesystem/declaration"
+ nsPrefix="declaration">
+ <eClassifiers xsi:type="ecore:EClass" name="DeclaredType" eSuperTypes="#//AbstractNamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="staticProperties" upperBound="-1"
+ eType="#//declaration/DeclaredStaticProperty" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
+ eType="#//declaration/DeclaredProperty" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operations" upperBound="-1"
+ eType="#//declaration/DeclaredOperation" containment="true" eOpposite="#//declaration/DeclaredOperation/declaringType"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaredTypeParameters"
+ upperBound="-1" eType="#//declaration/DeclaredTypeParameter" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeclaredOperation" eSuperTypes="#//AbstractNamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaredParameters" upperBound="-1"
+ eType="#//declaration/DeclaredParameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaringType" lowerBound="1"
+ eType="#//declaration/DeclaredType" eOpposite="#//declaration/DeclaredType/operations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="returnType" eType="#//declaration/DeclaredType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeclaredFunction" eSuperTypes="#//AbstractNamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaredParameters" upperBound="-1"
+ eType="#//declaration/DeclaredParameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaredTypeParameters"
+ upperBound="-1" eType="#//declaration/DeclaredTypeParameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="returnType" eType="#//declaration/DeclaredType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeclaredProperty" eSuperTypes="#//AbstractNamedElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DeclaredStaticProperty" eSuperTypes="#//AbstractNamedElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DeclaredTypeParameter" eSuperTypes="#//AbstractNamedElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DeclaredParameter" eSuperTypes="#//AbstractNamedElement"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.xpand3/src/static_typesystem.genmodel b/plugins/org.eclipse.xpand3/src/static_typesystem.genmodel
new file mode 100644
index 0000000..b759b23
--- /dev/null
+++ b/plugins/org.eclipse.xpand3/src/static_typesystem.genmodel
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.xpand3/emf-gen"
+ modelPluginID="org.eclipse.xpand3" modelName="Static_typesystem" importerID="org.eclipse.emf.importer.ecore"
+ complianceLevel="5.0" copyrightFields="false">
+ <foreignModel>static_typesystem.ecore</foreignModel>
+ <genPackages prefix="StaticTypesystem" basePackage="org.eclipse.xpand3" disposableProviderFactory="true"
+ ecorePackage="static_typesystem.ecore#/">
+ <genClasses image="false" ecoreClass="static_typesystem.ecore#//AbstractNamedElement">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute static_typesystem.ecore#//AbstractNamedElement/name"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="static_typesystem.ecore#//AbstractTypeReference"/>
+ <genClasses ecoreClass="static_typesystem.ecore#//Type">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//Type/declaredType"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//Type/actualTypeArguments"/>
+ </genClasses>
+ <genClasses ecoreClass="static_typesystem.ecore#//TypeVariable">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//TypeVariable/declaredTypeParameter"/>
+ </genClasses>
+ <genClasses ecoreClass="static_typesystem.ecore#//VoidType"/>
+ <genClasses ecoreClass="static_typesystem.ecore#//WildcardType">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//WildcardType/lowerBounds"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//WildcardType/upperBounds"/>
+ </genClasses>
+ <nestedGenPackages prefix="Declaration" disposableProviderFactory="true" ecorePackage="static_typesystem.ecore#//declaration">
+ <genClasses ecoreClass="static_typesystem.ecore#//declaration/DeclaredType">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredType/staticProperties"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredType/properties"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredType/operations"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredType/declaredTypeParameters"/>
+ </genClasses>
+ <genClasses ecoreClass="static_typesystem.ecore#//declaration/DeclaredOperation">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredOperation/declaredParameters"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredOperation/declaringType"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredOperation/returnType"/>
+ </genClasses>
+ <genClasses ecoreClass="static_typesystem.ecore#//declaration/DeclaredFunction">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredFunction/declaredParameters"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredFunction/declaredTypeParameters"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference static_typesystem.ecore#//declaration/DeclaredFunction/returnType"/>
+ </genClasses>
+ <genClasses ecoreClass="static_typesystem.ecore#//declaration/DeclaredProperty"/>
+ <genClasses ecoreClass="static_typesystem.ecore#//declaration/DeclaredStaticProperty"/>
+ <genClasses ecoreClass="static_typesystem.ecore#//declaration/DeclaredTypeParameter"/>
+ <genClasses ecoreClass="static_typesystem.ecore#//declaration/DeclaredParameter"/>
+ </nestedGenPackages>
+ </genPackages>
+</genmodel:GenModel>