Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +1 −1 Original line number Diff line number Diff line Loading @@ -1064,7 +1064,7 @@ Value: predef=PredefinedValue | ref=ReferencedValue; ReferencedValue: Head fields+=ExtendedFieldReference*; head=Head fields+=ExtendedFieldReference*; RefValueHead: RefValue | GroupDef; Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ScopeProvider.xtend +74 −2 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import de.ugoe.cs.swe.tTCN3.FieldConstExpressionSpec import de.ugoe.cs.swe.tTCN3.FieldExpressionSpec import de.ugoe.cs.swe.tTCN3.FieldReference import de.ugoe.cs.swe.tTCN3.FieldSpec import de.ugoe.cs.swe.tTCN3.ForStatement import de.ugoe.cs.swe.tTCN3.FormalTemplatePar import de.ugoe.cs.swe.tTCN3.FormalTimerPar import de.ugoe.cs.swe.tTCN3.FormalValuePar Loading @@ -20,7 +21,9 @@ import de.ugoe.cs.swe.tTCN3.FunctionFormalParList import de.ugoe.cs.swe.tTCN3.GroupDef import de.ugoe.cs.swe.tTCN3.Head import de.ugoe.cs.swe.tTCN3.InLineTemplate import de.ugoe.cs.swe.tTCN3.Initial import de.ugoe.cs.swe.tTCN3.ModuleControlBody import de.ugoe.cs.swe.tTCN3.ModuleControlPart import de.ugoe.cs.swe.tTCN3.ModuleDefinition import de.ugoe.cs.swe.tTCN3.ModulePar import de.ugoe.cs.swe.tTCN3.ModuleParDef Loading @@ -39,6 +42,9 @@ import de.ugoe.cs.swe.tTCN3.SendStatement import de.ugoe.cs.swe.tTCN3.SingleTempVarInstance import de.ugoe.cs.swe.tTCN3.SingleVarInstance import de.ugoe.cs.swe.tTCN3.SpecElement import de.ugoe.cs.swe.tTCN3.StatementBlock import de.ugoe.cs.swe.tTCN3.StructFieldDef import de.ugoe.cs.swe.tTCN3.TTCN3Module import de.ugoe.cs.swe.tTCN3.TemplateDef import de.ugoe.cs.swe.tTCN3.TestcaseDef import de.ugoe.cs.swe.tTCN3.TimerRefOrAny Loading @@ -56,7 +62,6 @@ import static org.eclipse.xtext.scoping.Scopes.* import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.* import static extension org.eclipse.xtext.EcoreUtil2.* import de.ugoe.cs.swe.tTCN3.StructFieldDef class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { Loading Loading @@ -365,7 +370,74 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { IScope.NULLSCOPE } } else { tr.polymorphicFindScopeForClassName(ref) val module = tr.findDesiredParent(TTCN3Module) module.getScope(ref) } } def IScope scope_Head_target(Head value, EReference ref) { value.scope_ReferencedValueHead(ref) } private def IScope scope_ReferencedValueHead(EObject value, EReference ref) { val list = newArrayList(); if (value == null) return IScope.NULLSCOPE if (value instanceof TTCN3Module) { value.defs.scopeModuleVariable(list) for (ModuleDefinition g : value.defs.definitions.filter[it.def instanceof GroupDef]) { val GroupDef group = g.def as GroupDef if (group.list != null) { group.list.scopeModuleVariable(list) } } scopeFor(list, value.getScope(ref)) } else if (value instanceof StatementBlock) { value.scopeStatementBlock(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof Initial) { value.scopeInitial(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof ForStatement) { value.init.scopeInitial(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof FunctionDef) { if(value.parameterList != null) value.parameterList.scopeFunctionParameterValue(list) if (value.runsOn != null) { value.runsOn.component.componentScopeValueRefs(list, false, true) } scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof ModuleControlPart) { value.scopeModuleControlPart(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof ComponentDef) { value.componentScopeValueRefs(list, false, true) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof TestcaseDef) { val ComponentDef comp = value.spec.runsOn.component value.parList.scopeTemplateOrValueFormalParList(list) comp.componentScopeValueRefs(list, false, true) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof AltstepDef) { if (value.params != null) { value.params.scopeFunctionParameterValue(list) } value.scopeAltstepExtendedDefList(list) value.local.scopeAltstepLocalDefList(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof GroupDef) { value.list.scopeModuleVariable(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof ModuleParDef) { value.scopeModuleParDef(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof TemplateDef) { value.scopeTemplateParameter(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else { scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } } Loading Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +1 −1 Original line number Diff line number Diff line Loading @@ -1064,7 +1064,7 @@ Value: predef=PredefinedValue | ref=ReferencedValue; ReferencedValue: Head fields+=ExtendedFieldReference*; head=Head fields+=ExtendedFieldReference*; RefValueHead: RefValue | GroupDef; Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ScopeProvider.xtend +74 −2 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import de.ugoe.cs.swe.tTCN3.FieldConstExpressionSpec import de.ugoe.cs.swe.tTCN3.FieldExpressionSpec import de.ugoe.cs.swe.tTCN3.FieldReference import de.ugoe.cs.swe.tTCN3.FieldSpec import de.ugoe.cs.swe.tTCN3.ForStatement import de.ugoe.cs.swe.tTCN3.FormalTemplatePar import de.ugoe.cs.swe.tTCN3.FormalTimerPar import de.ugoe.cs.swe.tTCN3.FormalValuePar Loading @@ -20,7 +21,9 @@ import de.ugoe.cs.swe.tTCN3.FunctionFormalParList import de.ugoe.cs.swe.tTCN3.GroupDef import de.ugoe.cs.swe.tTCN3.Head import de.ugoe.cs.swe.tTCN3.InLineTemplate import de.ugoe.cs.swe.tTCN3.Initial import de.ugoe.cs.swe.tTCN3.ModuleControlBody import de.ugoe.cs.swe.tTCN3.ModuleControlPart import de.ugoe.cs.swe.tTCN3.ModuleDefinition import de.ugoe.cs.swe.tTCN3.ModulePar import de.ugoe.cs.swe.tTCN3.ModuleParDef Loading @@ -39,6 +42,9 @@ import de.ugoe.cs.swe.tTCN3.SendStatement import de.ugoe.cs.swe.tTCN3.SingleTempVarInstance import de.ugoe.cs.swe.tTCN3.SingleVarInstance import de.ugoe.cs.swe.tTCN3.SpecElement import de.ugoe.cs.swe.tTCN3.StatementBlock import de.ugoe.cs.swe.tTCN3.StructFieldDef import de.ugoe.cs.swe.tTCN3.TTCN3Module import de.ugoe.cs.swe.tTCN3.TemplateDef import de.ugoe.cs.swe.tTCN3.TestcaseDef import de.ugoe.cs.swe.tTCN3.TimerRefOrAny Loading @@ -56,7 +62,6 @@ import static org.eclipse.xtext.scoping.Scopes.* import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.* import static extension org.eclipse.xtext.EcoreUtil2.* import de.ugoe.cs.swe.tTCN3.StructFieldDef class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { Loading Loading @@ -365,7 +370,74 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { IScope.NULLSCOPE } } else { tr.polymorphicFindScopeForClassName(ref) val module = tr.findDesiredParent(TTCN3Module) module.getScope(ref) } } def IScope scope_Head_target(Head value, EReference ref) { value.scope_ReferencedValueHead(ref) } private def IScope scope_ReferencedValueHead(EObject value, EReference ref) { val list = newArrayList(); if (value == null) return IScope.NULLSCOPE if (value instanceof TTCN3Module) { value.defs.scopeModuleVariable(list) for (ModuleDefinition g : value.defs.definitions.filter[it.def instanceof GroupDef]) { val GroupDef group = g.def as GroupDef if (group.list != null) { group.list.scopeModuleVariable(list) } } scopeFor(list, value.getScope(ref)) } else if (value instanceof StatementBlock) { value.scopeStatementBlock(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof Initial) { value.scopeInitial(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof ForStatement) { value.init.scopeInitial(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof FunctionDef) { if(value.parameterList != null) value.parameterList.scopeFunctionParameterValue(list) if (value.runsOn != null) { value.runsOn.component.componentScopeValueRefs(list, false, true) } scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof ModuleControlPart) { value.scopeModuleControlPart(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof ComponentDef) { value.componentScopeValueRefs(list, false, true) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof TestcaseDef) { val ComponentDef comp = value.spec.runsOn.component value.parList.scopeTemplateOrValueFormalParList(list) comp.componentScopeValueRefs(list, false, true) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof AltstepDef) { if (value.params != null) { value.params.scopeFunctionParameterValue(list) } value.scopeAltstepExtendedDefList(list) value.local.scopeAltstepLocalDefList(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof GroupDef) { value.list.scopeModuleVariable(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof ModuleParDef) { value.scopeModuleParDef(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else if (value instanceof TemplateDef) { value.scopeTemplateParameter(list) scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } else { scopeFor(list, value.eContainer.scope_ReferencedValueHead(ref)) } } Loading