Commit 0619e246 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ fix for scope provider issue with collection index, #151

parent c13af36f
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -469,8 +469,15 @@ public class TDLScopeProvider extends AbstractDeclarativeScopeProvider {
				}
				if (reduction != null && !reduction.isEmpty()) {
					int rIndex = reduction.indexOf(context);
					if (rIndex > 0)
						referenceType = reduction.get(rIndex - 1).getMember().getDataType();
					if (rIndex > 0) {
						MemberReference preceding = reduction.get(rIndex - 1);
						if (preceding.getMember()!=null) {
							referenceType = preceding.getMember().getDataType();
						} else {
							//TODO: handle, e.g. first reference 
							referenceType = ((DataUse)context.eContainer()).resolveBaseDataType();
						}
					}
				}
				if (referenceType instanceof CollectionDataType) {
					referenceType = ((CollectionDataType) referenceType).getItemType();
+1 −1
Original line number Diff line number Diff line
@@ -194,7 +194,7 @@
  <eClassifiers xsi:type="ecore:EClass" name="DataUse" abstract="true" eSuperTypes="#//Element">
    <eOperations name="resolveDataType" eType="#//DataType">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="&#xA;            &#x9;if (self.reduction->isEmpty()) then&#xA;                    self.resolveBaseDataType()&#xA;            &#x9;else&#xA;            &#x9;&#x9;self.reduction->last().member.dataType&#xA;                endif"/>
        <details key="body" value="&#xA;            &#x9;if (self.reduction->isEmpty()) then&#xA;                    self.resolveBaseDataType()&#xA;            &#x9;else&#xA;            &#x9;&#x9;if (self.reduction->last().member.oclIsUndefined()) then&#xA;&#x9;                    self.resolveBaseDataType().oclAsType(CollectionDataType).itemType&#xA;            &#x9;&#x9;else&#xA;&#x9;            &#x9;&#x9;self.reduction->last().member.dataType&#xA;            &#x9;&#x9;endif&#xA;                endif"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="resolveBaseDataType" eType="#//DataType">