Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/common/TTCN3DeclarativeQualifiedNameProvider.java +36 −13 Original line number Diff line number Diff line package de.ugoe.cs.swe.common; import java.util.Collections; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.EcoreUtil2; import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider; import org.eclipse.xtext.naming.IQualifiedNameConverter; import org.eclipse.xtext.naming.QualifiedName; import com.google.common.collect.Lists; import com.google.inject.Inject; import de.ugoe.cs.swe.tTCN3.FormalPortPar; import de.ugoe.cs.swe.tTCN3.FormalTemplatePar; import de.ugoe.cs.swe.tTCN3.FormalTimerPar; import de.ugoe.cs.swe.tTCN3.FormalValuePar; import de.ugoe.cs.swe.tTCN3.GroupDef; import de.ugoe.cs.swe.tTCN3.RefValue; import de.ugoe.cs.swe.tTCN3.TTCN3Module; /** * Loading @@ -36,4 +45,18 @@ public class TTCN3DeclarativeQualifiedNameProvider extends DefaultDeclarativeQua protected QualifiedName qualifiedName(FormalPortPar ele) { return converter.toQualifiedName(ele.getName()); } protected QualifiedName qualifiedName(RefValue ele) { List<String> groupNames = Lists.newArrayList(); GroupDef group = EcoreUtil2.getContainerOfType(ele, GroupDef.class); groupNames.add(ele.getName()); while (group != null) { groupNames.add(group.getName()); group = EcoreUtil2.getContainerOfType(group.eContainer(), GroupDef.class); } TTCN3Module module = EcoreUtil2.getContainerOfType(ele, TTCN3Module.class); groupNames.add(module.getName()); Collections.reverse(groupNames); return QualifiedName.create(groupNames); } } de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ScopeProvider.xtend +7 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,12 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { scopeFor(inner, template.polymorphicFindScopeForClassName(ref)) } def IScope scope_ReferencedValue_ref(ComponentDef component, EReference ref) { val inner = newArrayList component.componentScopeValueRefs(inner, false, true) scopeFor(inner, component.polymorphicFindScopeForClassName(ref)) } def IScope scope_FieldSpec_ref(FieldSpec spec, EReference ref) { val template = spec.findDesiredParent(TemplateDef) val variable = spec.findDesiredParent(VarInstance) Loading Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/common/TTCN3DeclarativeQualifiedNameProvider.java +36 −13 Original line number Diff line number Diff line package de.ugoe.cs.swe.common; import java.util.Collections; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.EcoreUtil2; import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider; import org.eclipse.xtext.naming.IQualifiedNameConverter; import org.eclipse.xtext.naming.QualifiedName; import com.google.common.collect.Lists; import com.google.inject.Inject; import de.ugoe.cs.swe.tTCN3.FormalPortPar; import de.ugoe.cs.swe.tTCN3.FormalTemplatePar; import de.ugoe.cs.swe.tTCN3.FormalTimerPar; import de.ugoe.cs.swe.tTCN3.FormalValuePar; import de.ugoe.cs.swe.tTCN3.GroupDef; import de.ugoe.cs.swe.tTCN3.RefValue; import de.ugoe.cs.swe.tTCN3.TTCN3Module; /** * Loading @@ -36,4 +45,18 @@ public class TTCN3DeclarativeQualifiedNameProvider extends DefaultDeclarativeQua protected QualifiedName qualifiedName(FormalPortPar ele) { return converter.toQualifiedName(ele.getName()); } protected QualifiedName qualifiedName(RefValue ele) { List<String> groupNames = Lists.newArrayList(); GroupDef group = EcoreUtil2.getContainerOfType(ele, GroupDef.class); groupNames.add(ele.getName()); while (group != null) { groupNames.add(group.getName()); group = EcoreUtil2.getContainerOfType(group.eContainer(), GroupDef.class); } TTCN3Module module = EcoreUtil2.getContainerOfType(ele, TTCN3Module.class); groupNames.add(module.getName()); Collections.reverse(groupNames); return QualifiedName.create(groupNames); } }
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ScopeProvider.xtend +7 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,12 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { scopeFor(inner, template.polymorphicFindScopeForClassName(ref)) } def IScope scope_ReferencedValue_ref(ComponentDef component, EReference ref) { val inner = newArrayList component.componentScopeValueRefs(inner, false, true) scopeFor(inner, component.polymorphicFindScopeForClassName(ref)) } def IScope scope_FieldSpec_ref(FieldSpec spec, EReference ref) { val template = spec.findDesiredParent(TemplateDef) val variable = spec.findDesiredParent(VarInstance) Loading