summaryrefslogtreecommitdiffstats
path: root/rba.tool.editor/src/rba/tool/editor/scoping/internal/RBAModelMemberOperationScopes.xtend
blob: da833ec12a6b1a43c477c481f0ee83fd8efd0732 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package rba.tool.editor.scoping.internal

import com.google.inject.Inject
import org.eclipse.emf.ecore.EObject
import org.eclipse.xtext.scoping.IScope
import org.eclipse.xtext.scoping.impl.SimpleScope
import rba.tool.editor.scoping.IExpressionScope

class RBAModelMemberOperationScopes implements IMemberFeatureScopes {

	private RBAModelMemberOperationRegistry operationRegistry;

	@Inject
	new(RBAModelMemberOperationRegistry operationRegistry) {
		this.operationRegistry = operationRegistry;
	}

	override createFeatureScope(EObject model) {
		return createFeatureScope(model, IExpressionScope.Anchor.UNKNOWN, IScope.NULLSCOPE);
	}

	override createFeatureScope(EObject model, IExpressionScope.Anchor anchor, IScope outer) {
		val descriptions = operationRegistry.getOperations(model, anchor);
		return new SimpleScope(outer, descriptions ?: newHashSet());
	}

}