Commit 62d29185 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

- remove tail trail

parent 3da34d7f
Loading
Loading
Loading
Loading
+27 −21
Original line number Diff line number Diff line
@@ -652,6 +652,8 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {
				scopeFor(fields)	
			}
		} else {
			println("TODO::"+container)
			scopeFor(emptyList)
			//TODO: handle? 
//			tailTrail.putIfAbsent(it, 0);
//			tailTrailCurrent.putIfAbsent(it, 0);
@@ -797,29 +799,33 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider {

	private def dispatch Iterable<EObject> directTypeElements(SpecTypeElement it) {
		//TODO: quite a hack.. figure out something better
		//TODO: should not be used anymore..
		println("TODO::DTE::"+eContainer)
		
		if (it instanceof TypeReference && it.tail !== null) {
			var t = (it as TypeReference)
			var level = tailTrail.get(t.tail)
			println("TODO::DTE::TR::"+eContainer)
			var list = newLinkedList
			if (level === 0) {
				tailTrailCurrent.put(t.tail, level+1)
				var e = t.head.directTypeElements
				list.addAll(e)
				tailTrail.put(t.tail, level+1)
			} else {
				var nextTail = t.tail
				var l = 1
				while (nextTail !== null && l <= level) {
					if (l == level && tailTrailCurrent.get(t.tail) <= level) {
						tailTrailCurrent.put(t.tail, level+1)
						var e = nextTail.directTypeElements
						list.addAll(e)
						tailTrail.put(t.tail, level+1)
					}
					l++
					nextTail = nextTail.tail
				}
			}
//			var t = (it as TypeReference)
//			var level = tailTrail.get(t.tail)
//			if (level === 0) {
//				tailTrailCurrent.put(t.tail, level+1)
//				var e = t.head.directTypeElements
//				list.addAll(e)
//				tailTrail.put(t.tail, level+1)
//			} else {
//				var nextTail = t.tail
//				var l = 1
//				while (nextTail !== null && l <= level) {
//					if (l == level && tailTrailCurrent.get(t.tail) <= level) {
//						tailTrailCurrent.put(t.tail, level+1)
//						var e = nextTail.directTypeElements
//						list.addAll(e)
//						tailTrail.put(t.tail, level+1)
//					}
//					l++
//					nextTail = nextTail.tail
//				}
//			}
			//DONE?: This is a bit of a mess, as always the first tail is provided, 
			//		at first the type is not known but then it is resolved, 
			//		and only after the next one is resolved -> need to keep track