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

added support for template parameter references

parent 2f1191a1
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -221,10 +221,10 @@ ActionText:
	{ActionText} FREE_TEXT | Expression;

BehaviourStatements:
	testcase=TestcaseInstance | function=FunctionInstance | return=ReturnStatement |
	alt=AltConstruct | interleaved=InterleavedConstruct | label=LabelStatement | goto=GotoStatement |
	{BehaviourStatements} REPEATSTATEMENT | deactivate=DeactivateStatement | altstep=AltstepInstance |
	activate=ActivateOp | {BehaviourStatements} BREAKSTATEMENT | {BehaviourStatements} CONTINUESTATEMENT;
	testcase=TestcaseInstance | function=FunctionInstance | return=ReturnStatement | alt=AltConstruct |
	interleaved=InterleavedConstruct | label=LabelStatement | goto=GotoStatement | {BehaviourStatements} REPEATSTATEMENT
	| deactivate=DeactivateStatement | altstep=AltstepInstance | activate=ActivateOp | {BehaviourStatements}
	BREAKSTATEMENT | {BehaviourStatements} CONTINUESTATEMENT;

ActivateOp:
	ACTIVATEKEYWORD LPAREN AltstepInstance RPAREN;
@@ -1048,7 +1048,8 @@ ReferencedValue:
	ref=[RefValue|IDENTIFIER] ext+=ExtendedFieldReference*;

RefValue:
	SingleConstDef | ModuleParameter | SingleVarInstance | FieldReference | FormalTemplatePar | SingleTempVarInstance;
	SingleConstDef | ModuleParameter | SingleVarInstance | FieldReference | FormalTemplatePar | SingleTempVarInstance |
	FormalValuePar;

	// IDENTIFIER omitted
PredefinedValue:
@@ -1200,8 +1201,8 @@ FunctionFormalPar:
	value=FormalValuePar | timer=FormalTimerPar | template=FormalTemplatePar | port=FormalPortPar;

FormalValuePar:
	(INPARKEYWORD | INOUTPARKEYWORD | OUTPARKEYWORD)? type=Type name=IDENTIFIER (ASSIGNMENTCHAR (expression=Expression |
	MINUS))?;
	(inOut=(INPARKEYWORD | INOUTPARKEYWORD | OUTPARKEYWORD))? type=Type name=IDENTIFIER (ASSIGNMENTCHAR
	(expression=Expression | MINUS))?;

FormalTimerPar:
	INOUTPARKEYWORD? TIMERKEYWORD name=IDENTIFIER;
+11 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import de.ugoe.cs.swe.tTCN3.RecordOfDefNamed
import de.ugoe.cs.swe.tTCN3.SetOfDefNamed
import de.ugoe.cs.swe.tTCN3.AltstepDef
import de.ugoe.cs.swe.tTCN3.SingleTempVarInstance
import de.ugoe.cs.swe.tTCN3.TemplateDef

class TTCN3ScopeHelper {

@@ -145,6 +146,16 @@ class TTCN3ScopeHelper {
		}
	}

	def static void scopeTemplateParameter(TemplateDef template, ArrayList<EObject> list) {
		for (TemplateOrValueFormalPar p : template.base.parList.params) {
			if (p.value != null) {
				list.add(p.value)
			} else if (p.template != null) {
				list.add(p.template)
			}
		}
	}

	def static void scopeTemplateOrValueFormalParList(TemplateOrValueFormalParList paramsList,
		ArrayList<EObject> list) {
		var RefValue value;
+2 −0
Original line number Diff line number Diff line
@@ -86,6 +86,8 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {
				parent.list.scopeModuleVariable(list)
			} else if (parent instanceof ModuleParDef) {
				parent.scopeModuleParDef(list)
			} else if (parent instanceof TemplateDef) {
				parent.scopeTemplateParameter(list)
			}
			parent = parent.eContainer
		}