Commit 3b578aba authored by Daniel Honsel's avatar Daniel Honsel
Browse files

fixed checkTestcasesModuleContainmentCheck

parent e5de68db
Loading
Loading
Loading
Loading
+17 −12
Original line number Diff line number Diff line
@@ -5,20 +5,19 @@ import de.ugoe.cs.swe.common.ConfigTools
import de.ugoe.cs.swe.common.MiscTools
import de.ugoe.cs.swe.common.logging.LoggingInterface.MessageClass
import de.ugoe.cs.swe.tTCN3.FunctionDef
import de.ugoe.cs.swe.tTCN3.FunctionInstance
import de.ugoe.cs.swe.tTCN3.ImportDef
import de.ugoe.cs.swe.tTCN3.ModuleDefinition
import de.ugoe.cs.swe.tTCN3.StartTCStatement
import de.ugoe.cs.swe.tTCN3.StartTimerStatement
import de.ugoe.cs.swe.tTCN3.TTCN3Module
import de.ugoe.cs.swe.tTCN3.TTCN3Package
import de.ugoe.cs.swe.tTCN3.TimerInstance
import de.ugoe.cs.swe.tTCN3.TypeDef

import java.util.regex.Matcher
import java.util.regex.Pattern

import org.eclipse.emf.ecore.EObject
import org.eclipse.emf.ecore.util.EcoreUtil.UsageCrossReferencer

import org.eclipse.xtext.nodemodel.INode
import org.eclipse.xtext.nodemodel.util.NodeModelUtils
import org.eclipse.xtext.validation.AbstractDeclarativeValidator
@@ -82,7 +81,7 @@ class ModularizationValidator extends AbstractDeclarativeValidator {
				val INode node = NodeModelUtils.getNode(definition)
				warning(
					message,
					null, //TODO: EStructuralFeature
					null,
					MessageClass.MODULARIZATION.toString,
					node.startLine.toString,
					node.endLine.toString,
@@ -99,7 +98,7 @@ class ModularizationValidator extends AbstractDeclarativeValidator {
						val INode node = NodeModelUtils.getNode(definition)
						warning(
							message,
							null, //TODO: EStructuralFeature
							null,
							MessageClass.MODULARIZATION.toString,
							node.startLine.toString,
							node.endLine.toString,
@@ -112,16 +111,22 @@ class ModularizationValidator extends AbstractDeclarativeValidator {
	}

	private def boolean functionStartBehavior(FunctionDef function, TTCN3Module module) {
		// TODO: use alternative for UsageCrossReferencer!!!
		val references = UsageCrossReferencer.find(function, module)

		for (r : references) {
			val startTC = r.EObject.findDesiredParent(StartTCStatement)
			val startTimer = r.EObject.findDesiredParent(StartTimerStatement)
			if (startTC != null || startTimer != null) {
			val nestedParameter = r.EObject.findDesiredParent(FunctionInstance)
			var timer = false
			if (startTimer != null && startTimer.ref.findDesiredParent(TimerInstance) != null) {
				timer = true
			}

			if (startTC != null || startTimer != null && !(nestedParameter != null || timer)) {
				return true
			}
		}

		return false
	}

@@ -156,8 +161,8 @@ class ModularizationValidator extends AbstractDeclarativeValidator {

		val Pattern typesAndValuesImportsLibNamesExcludedPattern = Pattern.compile(
			activeProfile.getTypesAndValuesImportsLibNamesExcludedRegExp())
		val Matcher typesAndValuesImportsLibNamesExcludedMatcher = typesAndValuesImportsLibNamesExcludedPattern.
			matcher(module.name)
		val Matcher typesAndValuesImportsLibNamesExcludedMatcher = typesAndValuesImportsLibNamesExcludedPattern.matcher(
			module.name)

		if (!module.name.contains(ModuleContentHelper.TypesAndValuesModuleIDSubstring) ||
			typesAndValuesImportsLibNamesExcludedMatcher.matches())