From d88ad7e53aeecd5b295003e9cb3a010bf09a515b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martti=20K=C3=A4=C3=A4rik?= <martti.kaarik@elvior.com>
Date: Thu, 13 Jun 2024 14:40:24 +0300
Subject: [PATCH] MemberReference for Function use is based on return type.

---
 .../src/org/etsi/mts/tdl/scoping/TDLScopeProvider.java     | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/plugins/org.etsi.mts.tdl.common/src/org/etsi/mts/tdl/scoping/TDLScopeProvider.java b/plugins/org.etsi.mts.tdl.common/src/org/etsi/mts/tdl/scoping/TDLScopeProvider.java
index 4238bbde..904cd360 100644
--- a/plugins/org.etsi.mts.tdl.common/src/org/etsi/mts/tdl/scoping/TDLScopeProvider.java
+++ b/plugins/org.etsi.mts.tdl.common/src/org/etsi/mts/tdl/scoping/TDLScopeProvider.java
@@ -564,8 +564,11 @@ public class TDLScopeProvider extends AbstractDeclarativeScopeProvider {
 					NamedElement dataElement = ((DataElementUse) context.eContainer()).getDataElement();
 					//TODO: duplicated from above ->extract
 					if (dataElement instanceof org.etsi.mts.tdl.Function) {
-						IScope scope = Scopes.scopeFor(((org.etsi.mts.tdl.Function)dataElement).getFormalParameter());
-						return scope;
+						DataType returnType = ((org.etsi.mts.tdl.Function)dataElement).getReturnType();
+						if (returnType instanceof StructuredDataType) {
+							IScope scope = Scopes.scopeFor(((StructuredDataType)returnType).allMembers());
+							return scope;
+						}
 					} else if (dataElement instanceof FormalParameter) {
 						IScope scope = Scopes.scopeFor(((StructuredDataType)((FormalParameter) dataElement).getDataType()).allMembers());
 						return scope;
-- 
GitLab