Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ScopeProvider.xtend +27 −21 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 Loading Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ScopeProvider.xtend +27 −21 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 Loading