/***************************************************************************** * Copyright (c) 2011 CEA LIST. * * * 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: * CEA LIST - Initial API and implementation * *****************************************************************************/ package org.eclipse.papyrus.uml.alf.syntax.expressions; import org.eclipse.papyrus.uml.alf.syntax.common.AssignedSource; import org.eclipse.papyrus.uml.alf.syntax.common.ElementReference; public class NameExpression extends Expression { // Synthesized Properties public QualifiedName name ; // Derived Properties public AssignedSource assignment ; public ElementReference enumerationLiteral ; public PropertyAccessExpression propertyAccess ; // Constraints /* * If the name in a name expression is a local or parameter name, then its assignment is its assigned source * before the expression. */ public void checkNameExpressionAssignmentDerivation() { } /* * If the name in a name expression resolves to an enumeration literal name, then that is the enumeration * literal for the expression. */ public void checkNameExpressionEnumerationLiteralDerivation() { } /* * The multiplicity lower bound of a name expression is determined by its name. */ public void checkNameExpressionLowerDerivation() { } /* * If the name in a name expression disambiguates to a feature reference, then the equivalent property * access expression has the disambiguation of the name as its feature. The assignments before the property * access expression are the same as those before the name expression. */ public void checkNameExpressionPropertyAccessDerivation() { } /* * If the name referenced by this expression is not a disambiguated feature reference or a local or * parameter name, then it must resolve to exactly one enumeration literal. */ public void checkNameExpressionResolution() { } /* * The type of a name expression is determined by its name. If the name is a local name or parameter with * an assignment, then the type of the name expression is the type of that assignment. If the name is an * enumeration literal, then the type of the name expression is the corresponding enumeration. If the name * disambiguates to a feature reference, then the type of the name expression is the type of the equivalent * property access expression. */ public void checkNameExpressionTypeDerivation() { } /* * The multiplicity upper bound of a name expression is determined by its name. */ public void checkNameExpressionUpperDerivation() { } }