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

fixed port references in map and unmap statements

parent 05a10816
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -425,7 +425,7 @@ FunctionActualPar:
	idRef=ArrayIdentifierRef | template=InLineTemplate | component=ComponentRef | {FunctionActualPar} MINUS;

ComponentRef:
	{ComponentRef} (ref=ComponentOrDefaultReference | SYSTEMKEYWORD | SELFOP | MTCKEYWORD);
	ref=ComponentOrDefaultReference | system=SYSTEMKEYWORD | self=SELFOP | mtc=MTCKEYWORD;

ComponentOrDefaultReference:
	variable=VariableRef | function=FunctionInstance /*| preFunction=PreDefFunction*/;
@@ -516,22 +516,22 @@ AllCompsAllPortsSpec:
	LPAREN ALLKEYWORD COMPONENTKEYWORD COLON ALLKEYWORD PORTKEYWORD RPAREN;

AllPortsSpec:
	LPAREN ComponentRef COLON ALLKEYWORD PORTKEYWORD RPAREN;
	LPAREN component=ComponentRef COLON ALLKEYWORD PORTKEYWORD RPAREN;

MapStatement:
	MAPKEYWORD SingleConnectionSpec clause=ParamClause?;
	MAPKEYWORD spec=SingleConnectionSpec clause=ParamClause?;

ParamClause:
	PARAMKEYWORD FunctionActualParList;
	PARAMKEYWORD list=FunctionActualParList;

ConnectStatement:
	CONNECTKEYWORD SingleConnectionSpec;
	CONNECTKEYWORD spec=SingleConnectionSpec;

SingleConnectionSpec:
	LPAREN port1=PortRef COMMA port2=PortRef RPAREN;

PortRef:
	component=ComponentRef COLON array=ArrayIdentifierRef;
	component=ComponentRef COLON port=[PortElement|IDENTIFIER];

CommunicationStatements:
	send=SendStatement | call=CallStatement | reply=ReplyStatement | raise=RaiseStatement | receive=ReceiveStatement |
@@ -922,11 +922,11 @@ ValueofOp:
	VALUEOFKEYWORD LPAREN template=InLineTemplate RPAREN;

ConfigurationOps:
	CreateOp | {ConfigurationOps} SELFOP | {ConfigurationOps} SYSTEMKEYWORD | {ConfigurationOps} MTCKEYWORD | AliveOp |
	RunningOp;
	create=CreateOp | {ConfigurationOps} SELFOP | {ConfigurationOps} SYSTEMKEYWORD | {ConfigurationOps} MTCKEYWORD |
	alive=AliveOp | running=RunningOp;

CreateOp:
	{CreateOp} => (type=[ComponentDef|IDENTIFIER] DOT CREATEKEYWORD) (LPAREN (expr1=SingleExpression | MINUS) (COMMA
	type=[ComponentDef|IDENTIFIER] DOT CREATEKEYWORD (LPAREN (expr1=SingleExpression | MINUS) (COMMA
	expr2=SingleExpression)? RPAREN)? ALIVEKEYWORD?;

RunningOp:
+15 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import static org.eclipse.xtext.scoping.Scopes.*
import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.*
import de.ugoe.cs.swe.tTCN3.FieldExpressionSpec
import de.ugoe.cs.swe.tTCN3.SendStatement
import de.ugoe.cs.swe.tTCN3.PortRef

class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {

@@ -242,4 +243,18 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {
		}
		scopeFor(list)
	}

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

		if (pRef.component.mtc != null) {
			testcase.spec.runsOn.component.componentScopePorts(list)
		} else if (pRef.component.system != null) {
			if (testcase.spec.systemSpec != null) {
				testcase.spec.systemSpec.component.componentScopePorts(list)
			}
		}
		scopeFor(list)
	}
}