Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/common/TTCN3ScopeHelper.xtend +31 −13 Original line number Diff line number Diff line Loading @@ -508,7 +508,7 @@ class TTCN3ScopeHelper { def static Iterable<EObject> scopeReferencedFields(ReferencedType type) { val List<EObject> list = newArrayList val ReferencedType originalType = findOriginalType(type) val EObject originalType = findOriginalType(type) if (originalType === null) return list; Loading @@ -527,7 +527,10 @@ class TTCN3ScopeHelper { // should be impossible, ... or not? } else if (originalType instanceof SetOfDefNamed) { // should be impossible, ... or not? } else if (originalType instanceof NestedTypeDef) { list.addAll(originalType.nestedTypeFieldElements) } //TODO: handle nested return list } Loading Loading @@ -573,18 +576,33 @@ class TTCN3ScopeHelper { if (typeof(SignatureDef).isAssignableFrom(originalType.class)) { list.addAll((type as SignatureDef).paramList.params) } if (originalType instanceof NestedTypeDef) { list.addAll(originalType.nestedTypeFieldElements) } } list } def static EObject findOriginalForRef(EObject ref) { if (ref instanceof ReferencedType) { findOriginalType(ref) } else { ref } } // TODO: consider nested types 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)) { findOriginalType(getReferencedType((type as RecordOfDefNamed).type.ref)) } else if (type != null && typeof(SetOfDefNamed).isAssignableFrom(type.class)) { findOriginalType(getReferencedType((type as SetOfDefNamed).type.ref)) def static EObject findOriginalType(ReferencedType type) { //TODO: handle nested types -> document if (type !== null && typeof(SubTypeDefNamed).isAssignableFrom(type.class)) { var ref = getReferencedOrNestedTypeWithTail((type as SubTypeDefNamed).type.ref) findOriginalForRef(ref) } else if (type !== null && typeof(RecordOfDefNamed).isAssignableFrom(type.class)) { var ref = getReferencedOrNestedTypeWithTail((type as RecordOfDefNamed).type.ref) findOriginalForRef(ref) } else if (type !== null && typeof(SetOfDefNamed).isAssignableFrom(type.class)) { var ref = getReferencedOrNestedTypeWithTail((type as SetOfDefNamed).type.ref) findOriginalForRef(ref) } else { return type; } Loading @@ -595,16 +613,16 @@ class TTCN3ScopeHelper { // TODO; consider missing nested types switch it { NestedRecordOfDef: { if (it.type != null) { if (it.type !== null) { return it.type.ref; } else if (it.nested != null) { } else if (it.nested !== null) { it.nested.findUsedType } } NestedSetOfDef: { if (it.type != null) { if (it.type !== null) { return it.type.ref; } else if (it.nested != null) { } else if (it.nested !== null) { it.nested.findUsedType } } Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ScopeProvider.xtend +32 −3 Original line number Diff line number Diff line Loading @@ -115,6 +115,12 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { val nType = fieldRef.nestedType.findUsedType if (nType !== null) { nType.scopeReferencedFields } else { //not nested record of or set of? //TODO: what if nested record of with nested record or similar? //TODO: why does it not work with the default return? var fields = fieldRef.nestedType.getFields.map[it as EObject] return fields } } } Loading @@ -132,6 +138,12 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { val nType = fieldRef.nestedType.findUsedType if (nType !== null) { nType.scopeReferencedFields } else { //not nested record of or set of? //TODO: what if nested record of with nested record or similar? //TODO: why does it not work with the default return? var fields = fieldRef.nestedType.getFields.map[it as EObject] return fields } } } Loading @@ -148,6 +160,10 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { val nType = fieldRef.nestedType.findUsedType if (nType !== null) { list.addAll(nType.scopeReferencedFields) } else { //not nested record of or set of? //TODO: what if nested record of with nested record or similar? list.addAll(fieldRef.nestedType.getFields) } } } Loading @@ -163,6 +179,10 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { val nType = fieldRef.nestedType.findUsedType if (nType !== null) { list.addAll(nType.scopeReferencedFields) } else { //not nested record of or set of? //TODO: what if nested record of with nested record or similar? list.addAll(fieldRef.nestedType.getFields) } } } Loading Loading @@ -801,11 +821,18 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { return res } private def Iterable<EObject> nestedFieldTypeElements(StructFieldDef field) { private def Iterable<EObject> nestedFieldTypeElements(FieldReference field) { //TODO: this has to be unified.. val List<EObject> list = newArrayList if (field instanceof StructFieldDef) { if (field.nestedType !== null) { list.addAll(field.nestedType.nestedTypeFieldElements) } } else if (field instanceof UnionFieldDef) { if (field.nestedType !== null) { list.addAll(field.nestedType.nestedTypeFieldElements) } } return list } Loading @@ -828,6 +855,8 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { } else if (field instanceof UnionFieldDef) { if (field.type !== null) { field.type.ref.scopeReferencedFields } else if (field.nestedType !== null) { field.nestedFieldTypeElements } } } Loading Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/common/TTCN3ScopeHelper.xtend +31 −13 Original line number Diff line number Diff line Loading @@ -508,7 +508,7 @@ class TTCN3ScopeHelper { def static Iterable<EObject> scopeReferencedFields(ReferencedType type) { val List<EObject> list = newArrayList val ReferencedType originalType = findOriginalType(type) val EObject originalType = findOriginalType(type) if (originalType === null) return list; Loading @@ -527,7 +527,10 @@ class TTCN3ScopeHelper { // should be impossible, ... or not? } else if (originalType instanceof SetOfDefNamed) { // should be impossible, ... or not? } else if (originalType instanceof NestedTypeDef) { list.addAll(originalType.nestedTypeFieldElements) } //TODO: handle nested return list } Loading Loading @@ -573,18 +576,33 @@ class TTCN3ScopeHelper { if (typeof(SignatureDef).isAssignableFrom(originalType.class)) { list.addAll((type as SignatureDef).paramList.params) } if (originalType instanceof NestedTypeDef) { list.addAll(originalType.nestedTypeFieldElements) } } list } def static EObject findOriginalForRef(EObject ref) { if (ref instanceof ReferencedType) { findOriginalType(ref) } else { ref } } // TODO: consider nested types 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)) { findOriginalType(getReferencedType((type as RecordOfDefNamed).type.ref)) } else if (type != null && typeof(SetOfDefNamed).isAssignableFrom(type.class)) { findOriginalType(getReferencedType((type as SetOfDefNamed).type.ref)) def static EObject findOriginalType(ReferencedType type) { //TODO: handle nested types -> document if (type !== null && typeof(SubTypeDefNamed).isAssignableFrom(type.class)) { var ref = getReferencedOrNestedTypeWithTail((type as SubTypeDefNamed).type.ref) findOriginalForRef(ref) } else if (type !== null && typeof(RecordOfDefNamed).isAssignableFrom(type.class)) { var ref = getReferencedOrNestedTypeWithTail((type as RecordOfDefNamed).type.ref) findOriginalForRef(ref) } else if (type !== null && typeof(SetOfDefNamed).isAssignableFrom(type.class)) { var ref = getReferencedOrNestedTypeWithTail((type as SetOfDefNamed).type.ref) findOriginalForRef(ref) } else { return type; } Loading @@ -595,16 +613,16 @@ class TTCN3ScopeHelper { // TODO; consider missing nested types switch it { NestedRecordOfDef: { if (it.type != null) { if (it.type !== null) { return it.type.ref; } else if (it.nested != null) { } else if (it.nested !== null) { it.nested.findUsedType } } NestedSetOfDef: { if (it.type != null) { if (it.type !== null) { return it.type.ref; } else if (it.nested != null) { } else if (it.nested !== null) { it.nested.findUsedType } } Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ScopeProvider.xtend +32 −3 Original line number Diff line number Diff line Loading @@ -115,6 +115,12 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { val nType = fieldRef.nestedType.findUsedType if (nType !== null) { nType.scopeReferencedFields } else { //not nested record of or set of? //TODO: what if nested record of with nested record or similar? //TODO: why does it not work with the default return? var fields = fieldRef.nestedType.getFields.map[it as EObject] return fields } } } Loading @@ -132,6 +138,12 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { val nType = fieldRef.nestedType.findUsedType if (nType !== null) { nType.scopeReferencedFields } else { //not nested record of or set of? //TODO: what if nested record of with nested record or similar? //TODO: why does it not work with the default return? var fields = fieldRef.nestedType.getFields.map[it as EObject] return fields } } } Loading @@ -148,6 +160,10 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { val nType = fieldRef.nestedType.findUsedType if (nType !== null) { list.addAll(nType.scopeReferencedFields) } else { //not nested record of or set of? //TODO: what if nested record of with nested record or similar? list.addAll(fieldRef.nestedType.getFields) } } } Loading @@ -163,6 +179,10 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { val nType = fieldRef.nestedType.findUsedType if (nType !== null) { list.addAll(nType.scopeReferencedFields) } else { //not nested record of or set of? //TODO: what if nested record of with nested record or similar? list.addAll(fieldRef.nestedType.getFields) } } } Loading Loading @@ -801,11 +821,18 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { return res } private def Iterable<EObject> nestedFieldTypeElements(StructFieldDef field) { private def Iterable<EObject> nestedFieldTypeElements(FieldReference field) { //TODO: this has to be unified.. val List<EObject> list = newArrayList if (field instanceof StructFieldDef) { if (field.nestedType !== null) { list.addAll(field.nestedType.nestedTypeFieldElements) } } else if (field instanceof UnionFieldDef) { if (field.nestedType !== null) { list.addAll(field.nestedType.nestedTypeFieldElements) } } return list } Loading @@ -828,6 +855,8 @@ class TTCN3ScopeProvider extends AbstractDeclarativeScopeProvider { } else if (field instanceof UnionFieldDef) { if (field.type !== null) { field.type.ref.scopeReferencedFields } else if (field.nestedType !== null) { field.nestedFieldTypeElements } } } Loading