Commit 997ca666 authored by Daniel Honsel's avatar Daniel Honsel
Browse files

minor improvements

parent c394f3ce
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -384,9 +384,9 @@ class TTCN3ScopeHelper {
		}
	}
	
	def static Iterable<RefValueElement> scopeReferencedFields(TypeReference type) {
	def static Iterable<RefValueElement> scopeReferencedFields(ReferencedType type) {
		val List<RefValueElement> list = newArrayList
		val ReferencedType originalType = findOriginalType(getReferencedType(type))
		val ReferencedType originalType = findOriginalType(type)

		if (originalType == null)
			return list;
@@ -409,6 +409,10 @@ class TTCN3ScopeHelper {
		return list		
	}	
	
	def static Iterable<RefValueElement> scopeReferencedFields(TypeReference type) {
		scopeReferencedFields(getReferencedType(type))
	}

	def static Iterable<RefValueElement> templateFieldScope(TypeReference ref) {
		val ArrayList<RefValueElement> list = newArrayList

@@ -433,7 +437,7 @@ class TTCN3ScopeHelper {
	}

	// TODO: consider nested types
	private def static ReferencedType findOriginalType(ReferencedType type) {
	public def static ReferencedType findOriginalType(ReferencedType type) {
		if (type != null && typeof(SubTypeDefNamed).isAssignableFrom(type.class)) {
			findOriginalType(getReferencedType((type as SubTypeDefNamed).type.ref))
		} else if (type != null && typeof(RecordOfDefNamed).isAssignableFrom(type.class)) {
+6 −19
Original line number Diff line number Diff line
@@ -67,6 +67,8 @@ import static org.eclipse.xtext.scoping.Scopes.*

import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.*
import static extension org.eclipse.xtext.EcoreUtil2.*
import org.eclipse.xtend.typesystem.emf.EcoreUtil2
import de.ugoe.cs.swe.tTCN3.SubTypeDefNamed

class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {
	private final static Logger LOG = Logger.getLogger(TTCN3LocalScopeProvider);
@@ -452,28 +454,13 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {
	}

	def IScope scope_TypeReference_field(TypeReference tr, EReference ref) {
		val parent = tr.eContainer
		if (parent instanceof TypeReference) {
			if (parent.field == null) {
				scopeFor(parent.tail.scopeReferencedFields)
			} else {
				IScope.NULLSCOPE
			}
		}
		//TODO: test other nested possibilities
		if (!(tr.head instanceof TTCN3Module))
			scopeFor(tr.head.scopeReferencedFields)
	}

	def IScope scope_TypeReference_head(TypeReference tr, EReference ref) {
		val parent = tr.eContainer
		if (parent instanceof TypeReference) {
			if (parent.field == null) {
				scopeFor(parent.tail.getAllContentsOfType(ReferencedType))
			} else {
				IScope.NULLSCOPE
			}
		} else {
			val module = tr.findDesiredParent(TTCN3Module)
			delegate.getScope(module, ref)
		}
		// TODO: fix me!
	}

	def IScope scope_Head_target(Head value, EReference ref) {