Просмотр исходного кода

refactored InteractiveDecorator in order to improve extendability
replaced VariableDefinition by Type-Property and EventDefinition by Type-Event in validation classes

terfloth@itemis.de 13 лет назад
Родитель
Сommit
4ddabd8961

+ 2 - 2
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

@@ -159,11 +159,11 @@ public class STextJavaValidator extends AbstractSTextJavaValidator {
 	private String getVariableName(AssignmentExpression exp) {
 		Expression varRef = exp.getVarRef();
 		if (varRef instanceof ElementReferenceExpression) {
-			VariableDefinition reference = (VariableDefinition) ((ElementReferenceExpression) varRef)
+			Property reference = (Property) ((ElementReferenceExpression) varRef)
 					.getReference();
 			return reference.getName();
 		} else if (varRef instanceof FeatureCall) {
-			VariableDefinition reference = (VariableDefinition) ((FeatureCall) varRef)
+			Property reference = (Property) ((FeatureCall) varRef)
 					.getFeature();
 			return reference.getName();
 		}

+ 9 - 8
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/TypeInferrer.xtend

@@ -13,8 +13,10 @@ package org.yakindu.sct.model.stext.validation
 
 import com.google.inject.Inject
 import org.eclipse.emf.ecore.EObject
+import org.yakindu.base.types.Event
 import org.yakindu.base.types.Feature
 import org.yakindu.base.types.ITypeSystemAccess
+import org.yakindu.base.types.Property
 import org.yakindu.base.types.Type
 import org.yakindu.sct.model.sgraph.Statement
 import org.yakindu.sct.model.stext.stext.ActiveStateReferenceExpression
@@ -25,7 +27,6 @@ import org.yakindu.sct.model.stext.stext.BitwiseXorExpression
 import org.yakindu.sct.model.stext.stext.BoolLiteral
 import org.yakindu.sct.model.stext.stext.ConditionalExpression
 import org.yakindu.sct.model.stext.stext.ElementReferenceExpression
-import org.yakindu.sct.model.stext.stext.EventDefinition
 import org.yakindu.sct.model.stext.stext.EventRaisingExpression
 import org.yakindu.sct.model.stext.stext.EventValueReferenceExpression
 import org.yakindu.sct.model.stext.stext.Expression
@@ -46,8 +47,7 @@ import org.yakindu.sct.model.stext.stext.RealLiteral
 import org.yakindu.sct.model.stext.stext.RelationalOperator
 import org.yakindu.sct.model.stext.stext.ShiftExpression
 import org.yakindu.sct.model.stext.stext.StringLiteral
-import org.yakindu.sct.model.stext.stext.UnaryOperator
-import org.yakindu.sct.model.stext.stext.VariableDefinition
+import org.yakindu.sct.model.stext.stext.UnaryOperator
  
 /**
  * 
@@ -58,8 +58,9 @@ import org.yakindu.sct.model.stext.stext.VariableDefinition
  */
 class TypeInferrer implements org.yakindu.sct.model.stext.validation.ITypeInferrer, org.yakindu.sct.model.stext.validation.TypeInferrerCache$ICacheableTypeAnalyzer {
 	
-	@Inject extension
-	ITypeSystemAccess ts 
+	@Inject protected extension
+	ITypeSystemAccess ts
+	 
 	@Inject 
 	org.yakindu.sct.model.stext.validation.TypeInferrerCache cache
 	
@@ -208,7 +209,7 @@ class TypeInferrer implements org.yakindu.sct.model.stext.validation.ITypeInferr
 		return trueType.combine(falseType)
 	} 
 	def dispatch inferType(FeatureCall featureCall){
-		if(featureCall.feature instanceof EventDefinition && !(featureCall.eContainer instanceof EventRaisingExpression)){
+		if(featureCall.feature instanceof Event /*ntDefinition*/ && !(featureCall.eContainer instanceof EventRaisingExpression)){
 			return ts.boolean
 		}
 		if (featureCall.feature instanceof Feature) {
@@ -227,11 +228,11 @@ class TypeInferrer implements org.yakindu.sct.model.stext.validation.ITypeInferr
 	def dispatch inferType(EObject object, ElementReferenceExpression expression) {
 		//	
 	}
-	def dispatch inferType(VariableDefinition definition,ElementReferenceExpression expression) {
+	def dispatch inferType(Property /*VariableDefinition*/ definition,ElementReferenceExpression expression) {
 		return definition.type
 	}
 
-	def dispatch inferType(EventDefinition definition,ElementReferenceExpression expression) {
+	def dispatch inferType(Event /*Definition*/ definition,ElementReferenceExpression expression) {
 		if(expression.eContainer instanceof EventRaisingExpression
 				|| expression.eContainer instanceof EventValueReferenceExpression)
 			return definition.type