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

started style validation

parent ead2f278
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1149,7 +1149,7 @@ GroupRefList:
	groups+=[GroupDef|QualifiedIdentifier] (COMMA groups+=[GroupDef|QualifiedIdentifier])*;

TTCN3Reference:
	ReferencedType | RefValue | TestcaseDef | AltstepDef | SignatureDef | PortElement;
	ReferencedType | RefValue | TestcaseDef | AltstepDef | SignatureDef | PortElement | LabelStatement | GotoStatement;

TTCN3ReferenceList:
	refs+=[TTCN3Reference|IDENTIFIER] (COMMA refs+=[TTCN3Reference|IDENTIFIER])*;
+39 −0
Original line number Diff line number Diff line
@@ -84,6 +84,8 @@ import de.ugoe.cs.swe.tTCN3.Signature
import de.ugoe.cs.swe.tTCN3.ProcOrTypeList
import de.ugoe.cs.swe.tTCN3.AllOrSignatureList
import de.ugoe.cs.swe.tTCN3.AllOrTypeList
import de.ugoe.cs.swe.tTCN3.GotoStatement
import de.ugoe.cs.swe.tTCN3.LabelStatement

class TTCN3Validator extends AbstractTTCN3Validator {
	val ConfigTools configTools = ConfigTools.getInstance;
@@ -607,6 +609,43 @@ class TTCN3Validator extends AbstractTTCN3Validator {
	/**
	  * END: Structure of Data   ---------------------------------------------------------------------
	  */
	/**
	  * BEGIN: Code Style ----------------------------------------------------------------------------
	  */
	@Check
	def checkNoGotoStatements(GotoStatement goto) {
		goto.checkNoLabelsOrGotoStatements
	}

	@Check
	def checkNoGotoStatements(LabelStatement label) {
		label.checkNoLabelsOrGotoStatements
	}

	def private checkNoLabelsOrGotoStatements(TTCN3Reference ref) {
		if (!activeProfile.checkNoLabelsOrGotoStatements)
			return;

		var message = ""
		val INode node = NodeModelUtils.getNode(ref)

		switch ref {
			GotoStatement: message = "A \"goto\" statement is used!"
			LabelStatement: message = "A \"label\" statement is used!"
		}
		warning(
			message,
			TTCN3Package.eINSTANCE.TTCN3Reference_Name,
			MessageClass.STYLE.toString,
			node.startLine.toString,
			node.endLine.toString,
			"6.1, " + MiscTools.getMethodName()
		);
	}

	/**
	  * END: Code Styl e------------------------------------------------------------------------------
	  */
	@Check
	def checkUniqueNameNestedVariable(RefValue variable) {
		variable.isNameClashInHierarchy