Commit cf1a6b27 authored by Daniel Honsel's avatar Daniel Honsel
Browse files

minor fixes

parent a9e5ab60
Loading
Loading
Loading
Loading
+32 −37
Original line number Diff line number Diff line
@@ -2,11 +2,13 @@ package de.ugoe.cs.swe.scoping

import de.ugoe.cs.swe.tTCN3.AltstepDef
import de.ugoe.cs.swe.tTCN3.AltstepLocalDef
import de.ugoe.cs.swe.tTCN3.BaseTemplate
import de.ugoe.cs.swe.tTCN3.ComponentDef
import de.ugoe.cs.swe.tTCN3.ComponentDefList
import de.ugoe.cs.swe.tTCN3.ConstDef
import de.ugoe.cs.swe.tTCN3.ControlStatementOrDefList
import de.ugoe.cs.swe.tTCN3.FieldExpressionSpec
import de.ugoe.cs.swe.tTCN3.FieldReference
import de.ugoe.cs.swe.tTCN3.FieldSpec
import de.ugoe.cs.swe.tTCN3.FormalTimerPar
import de.ugoe.cs.swe.tTCN3.FormalValuePar
@@ -22,9 +24,11 @@ import de.ugoe.cs.swe.tTCN3.ModuleParameter
import de.ugoe.cs.swe.tTCN3.PortOrAny
import de.ugoe.cs.swe.tTCN3.PortRef
import de.ugoe.cs.swe.tTCN3.RefValue
import de.ugoe.cs.swe.tTCN3.RefValueElement
import de.ugoe.cs.swe.tTCN3.RefValueHead
import de.ugoe.cs.swe.tTCN3.RefValueTail
import de.ugoe.cs.swe.tTCN3.SendStatement
import de.ugoe.cs.swe.tTCN3.SingleTempVarInstance
import de.ugoe.cs.swe.tTCN3.SingleVarInstance
import de.ugoe.cs.swe.tTCN3.SpecElement
import de.ugoe.cs.swe.tTCN3.StructFieldDef
@@ -34,7 +38,6 @@ import de.ugoe.cs.swe.tTCN3.TimerRefOrAny
import de.ugoe.cs.swe.tTCN3.VarInstance
import java.util.List
import org.eclipse.emf.ecore.EReference
import org.eclipse.xtend.typesystem.Feature
import org.eclipse.xtext.scoping.IScope
import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider

@@ -42,10 +45,10 @@ import static org.eclipse.xtext.scoping.Scopes.*

import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.*
import static extension org.eclipse.xtext.EcoreUtil2.*
import de.ugoe.cs.swe.tTCN3.RefValueElement
import de.ugoe.cs.swe.tTCN3.FieldReference
import de.ugoe.cs.swe.tTCN3.SingleTempVarInstance
import de.ugoe.cs.swe.tTCN3.BaseTemplate
import org.eclipse.emf.ecore.EObject
import de.ugoe.cs.swe.tTCN3.CallStatement
import de.ugoe.cs.swe.tTCN3.ReplyStatement
import de.ugoe.cs.swe.tTCN3.RaiseStatement

class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {

@@ -195,43 +198,43 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {
	}

	def IScope scope_PortOrAny_ref(PortOrAny spec, EReference ref) {
		val altstep = spec.findDesiredParent(AltstepDef)
		val inner = newArrayList

		// ports from parent altsteps
		if (altstep != null && altstep.spec != null) {
			componentScopePorts(altstep.spec.component, inner)
		spec.scope_communicationPort
	}

		// ports from parent function
		val function = spec.findDesiredParent(FunctionDef)
		if (function != null && function.runsOn != null) {
			function.runsOn.component.componentScopePorts(inner)
	def IScope scope_SendStatement_port(SendStatement stm, EReference ref) {
		stm.scope_communicationPort
	}

		// ports from parent testcase
		val testcase = spec.findDesiredParent(TestcaseDef)
		if (testcase != null) {
			testcase.spec.runsOn.component.componentScopePorts(inner)
			if (testcase.spec.systemSpec != null) {
				testcase.spec.systemSpec.component.componentScopePorts(inner)
	def IScope scope_CallStatement_port(CallStatement stm, EReference ref) {
		stm.scope_communicationPort
	}

	def IScope scope_ReplyStatement_port(ReplyStatement stm, EReference ref) {
		stm.scope_communicationPort
	}

		scopeFor(inner)
	def IScope scope_RaiseStatement_port(RaiseStatement stm, EReference ref) {
		stm.scope_communicationPort
	}

	def IScope scope_SendStatement_port(SendStatement stm, EReference ref) {
	// TODO: check nested port statements
	private def IScope scope_communicationPort(EObject statement) {
		val list = newArrayList

		// ports from parent altsteps
		val altstep = statement.findDesiredParent(AltstepDef)
		if (altstep != null && altstep.spec != null) {
			componentScopePorts(altstep.spec.component, list)
		}

		// ports from parent function
		val function = stm.findDesiredParent(FunctionDef)
		val function = statement.findDesiredParent(FunctionDef)
		if (function != null && function.runsOn != null) {
			function.runsOn.component.componentScopePorts(list)
		}

		// ports from parent testcase
		val testcase = stm.findDesiredParent(TestcaseDef)
		val testcase = statement.findDesiredParent(TestcaseDef)
		if (testcase != null) {
			testcase.spec.runsOn.component.componentScopePorts(list)
			if (testcase.spec.systemSpec != null) {
@@ -242,15 +245,7 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {
	}

	def IScope scope_PortRef_port(PortRef pRef, EReference ref) {
		val testcase = pRef.findDesiredParent(TestcaseDef)
		val list = newArrayList

		testcase.spec.runsOn.component.componentScopePorts(list)
		if (testcase.spec.systemSpec != null) {
			testcase.spec.systemSpec.component.componentScopePorts(list)
		}

		scopeFor(list)
		pRef.scope_communicationPort
	}

	def IScope scope_RefValueTail_value(RefValueTail it, EReference ref) {
+4 −4
Original line number Diff line number Diff line
package de.ugoe.cs.swe.validation

import com.google.common.base.Strings
import de.ugoe.cs.swe.TTCN3Configuration.QualityCheckProfile
import de.ugoe.cs.swe.common.ConfigTools
import de.ugoe.cs.swe.common.logging.LoggingInterface.LogLevel
import de.ugoe.cs.swe.common.logging.LoggingInterface.MessageClass
import de.ugoe.cs.swe.tTCN3.AltstepDef
import de.ugoe.cs.swe.tTCN3.AltstepLocalDef
import de.ugoe.cs.swe.tTCN3.AltstepLocalDefList
@@ -72,6 +68,10 @@ import org.eclipse.xtext.validation.Check
import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.*
import de.ugoe.cs.swe.tTCN3.TimerInstance
import de.ugoe.cs.swe.tTCN3.ComponentElementDef
import de.ugoe.cs.swe.common.ConfigTools
import de.ugoe.cs.swe.TTCN3Configuration.QualityCheckProfile
import de.ugoe.cs.swe.common.logging.LoggingInterface.LogLevel
import de.ugoe.cs.swe.common.logging.LoggingInterface.MessageClass

class TTCN3Validator extends AbstractTTCN3Validator {
	val ConfigTools configTools = ConfigTools.getInstance;