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

fixed modularization issue with TemplatesAndFunctions modules

parent c3b987c7
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -45,6 +45,9 @@ class ModularizationValidator extends AbstractDeclarativeValidator {
		if (activeProfile.checkTypesAndValuesModuleContainmentCheck &&
			module.name.contains(ModuleContentHelper.TypesAndValuesModuleIDSubstring)) {
			module.checkModuleContainment(ModuleContentHelper.TypesAndValuesModuleIDSubstring)
		} else if (activeProfile.checkTemplatesModuleContainmentCheck &&
			module.name.contains(ModuleContentHelper.TemplatesModuleIDSubstring) && module.name.contains(ModuleContentHelper.FunctionsModuleIDSubstring )) {
			module.checkModuleContainment(ModuleContentHelper.TemplatesModuleIDSubstring, ModuleContentHelper.FunctionsModuleIDSubstring)			
		} else if (activeProfile.checkTemplatesModuleContainmentCheck &&
			module.name.contains(ModuleContentHelper.TemplatesModuleIDSubstring)) {
			module.checkModuleContainment(ModuleContentHelper.TemplatesModuleIDSubstring)
@@ -118,6 +121,29 @@ class ModularizationValidator extends AbstractDeclarativeValidator {
		}
	}

	// Special case for TemplatesAndTestcases modules
	private def checkModuleContainment(TTCN3Module module, String moduleRestriction1, String moduleRestriction2) {
		for (d : module.getAllContentsOfType(ModuleDefinition)) {
			var EObject definition = d.def
			if (!(moduleHelper.typePermittedInRestrictedModule(moduleRestriction1, definition.eClass)
				|| moduleHelper.typePermittedInRestrictedModule(moduleRestriction2, definition.eClass))
			) {
				TTCN3StatisticsProvider.getInstance.incrementCountModularization
				val message = "Definition in " + moduleRestriction1 + " and " + moduleRestriction2 +
					" module is not of the permissible definition type(s)!"
				val INode node = NodeModelUtils.getNode(definition)
				warning(
					message,
					null,
					MessageClass.MODULARIZATION.toString,
					node.startLine.toString,
					node.endLine.toString,
					"7.x, " + MiscTools.getMethodName()
				);
			}
		}
	}

	private def boolean functionStartBehavior(FunctionDef function, TTCN3Module module) {
		val List<FunctionInstance> list = newArrayList