Commit 869384f1 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ scoping and formatting refinements

parent 3344f9ee
Loading
Loading
Loading
Loading
+32 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import org.etsi.mts.tdl.ExceptionalBehaviour
import org.etsi.mts.tdl.DataUse
import org.etsi.mts.tdl.ParameterBinding
import org.etsi.mts.tdl.DataInstanceUse
import org.etsi.mts.tdl.StructuredDataType

class TDLan2Formatter extends AbstractFormatter2 {
	
@@ -71,6 +72,25 @@ class TDLan2Formatter extends AbstractFormatter2 {
        	p.regionFor.keyword('}').prepend[newLine],
        	[indent]
    	)

        if (p instanceof StructuredDataType) {
//            interior(p, [indent]) 
            if (!p.member.empty) {
                interior(
                    p.regionFor.keyword('(').append[newLine],
                    p.regionFor.keyword(')').prepend[newLine],
                    [indent]
                )
            }  
            for (m : p.member) {
                m.prepend[newLine]
            }          
        } 
        for (Comment comment : p.getComment()) {
            comment.surround[newLine]
            comment.format;
        }

	}

	def dispatch void format(TestConfiguration e, extension IFormattableDocument document) {
@@ -85,6 +105,13 @@ class TDLan2Formatter extends AbstractFormatter2 {
		for (c : e.connection) {
			c.format
		}
        for (Comment comment : e.getComment()) {
            //comment.prepend[space = "  "]
            comment.regionFor.keyword('Note').append[noSpace]
            //comment.regionFor.keyword('Note').append[space = "  "]
            comment.surround[newLine; indent]
            comment.format;
        }
	}

	def dispatch void format(ComponentInstance e, extension IFormattableDocument document) {
@@ -104,7 +131,10 @@ class TDLan2Formatter extends AbstractFormatter2 {
        	e.regionFor.keyword('}').prepend[newLine].append[newLine],
        	[indent]
    	)
    	e.regionFor.keyword('uses').prepend[newLine].surround[indent]
    	if (e.behaviourDescription !== null) {
    		e.behaviourDescription.behaviour.format
    	}

		for (c : e.getComment()) {
			c.format
@@ -346,6 +376,7 @@ class TDLan2Formatter extends AbstractFormatter2 {
	}

	def dispatch void format(Comment e, extension IFormattableDocument document) {
//		e.prepend[indent]
		e.prepend[newLine]
	}

+14 −5
Original line number Diff line number Diff line
package org.etsi.mts.tdl.scoping;

import java.util.stream.Collectors;

import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
@@ -167,12 +169,22 @@ public class TDLScopeProvider extends AbstractDeclarativeScopeProvider {
								}
							} else {
								//TODO: double check
								elements.addAll(c.getEndPoint());
								//TODO: Make sure this works in the normal use case too.. 
								//		-> seems to work
								var t = ((Message) context).getTarget().get(0).getTargetGate();
								if (t!=null) {
									if (t == c.getEndPoint().get(0)) {
										elements.add(c.getEndPoint().get(1));
									} else if (t == c.getEndPoint().get(1)) {
										elements.add(c.getEndPoint().get(0));
									}
								}
//								elements.addAll(c.getEndPoint());
							}
						}  else {
							//handle
						}
						
						//TODO: Why was this discarded? -> move above!
//						GateReference opposite = ((Message) context).getTarget().get(0).getTargetGate();
//						if (c.getEndPoint().get(0) == opposite) {
//							elements.add(c.getEndPoint().get(1));
@@ -194,9 +206,7 @@ public class TDLScopeProvider extends AbstractDeclarativeScopeProvider {
					} else {
						elements.addAll(c.getEndPoint());
					}
					
				}

				IScope scope = Scopes.scopeFor(elements, new Function<EObject, QualifiedName>() {
			        @Override 
			        public QualifiedName apply(EObject o) {
@@ -207,7 +217,6 @@ public class TDLScopeProvider extends AbstractDeclarativeScopeProvider {
			        }

			    }, IScope.NULLSCOPE); 

				return scope;
			}
		} else if (Parameter.class.isAssignableFrom(reference.getEType().getInstanceClass())) {