aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping')
-rw-r--r--org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemGlobalScopeProvider.java25
-rw-r--r--org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemLocalScopeProvider.java40
-rw-r--r--org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemScopeProvider.java83
3 files changed, 0 insertions, 148 deletions
diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemGlobalScopeProvider.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemGlobalScopeProvider.java
deleted file mode 100644
index 05da277a..00000000
--- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemGlobalScopeProvider.java
+++ /dev/null
@@ -1,25 +0,0 @@
1package org.eclipse.viatra.solver.language.scoping;
2
3import java.util.LinkedHashSet;
4
5import org.eclipse.emf.common.util.URI;
6import org.eclipse.emf.ecore.resource.Resource;
7import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider;
8
9public class ProblemGlobalScopeProvider extends ImportUriGlobalScopeProvider {
10 public static final String BUILTIN_LIBRARY_NAME = "builtin";
11
12 public static final URI BULTIN_LIBRARY_URI = getLibraryUri(BUILTIN_LIBRARY_NAME);
13
14 @Override
15 protected LinkedHashSet<URI> getImportedUris(Resource resource) {
16 LinkedHashSet<URI> importedUris = new LinkedHashSet<>();
17 importedUris.add(BULTIN_LIBRARY_URI);
18 return importedUris;
19 }
20
21 private static URI getLibraryUri(String libraryName) {
22 return URI.createURI(ProblemGlobalScopeProvider.class.getClassLoader()
23 .getResource("org/eclipse/viatra/solver/language/" + libraryName + ".problem").toString());
24 }
25}
diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemLocalScopeProvider.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemLocalScopeProvider.java
deleted file mode 100644
index e832bb09..00000000
--- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemLocalScopeProvider.java
+++ /dev/null
@@ -1,40 +0,0 @@
1package org.eclipse.viatra.solver.language.scoping;
2
3import java.util.List;
4
5import org.eclipse.emf.ecore.EObject;
6import org.eclipse.emf.ecore.resource.Resource;
7import org.eclipse.xtext.naming.QualifiedName;
8import org.eclipse.xtext.resource.IResourceDescriptions;
9import org.eclipse.xtext.resource.IResourceDescriptionsProvider;
10import org.eclipse.xtext.resource.ISelectable;
11import org.eclipse.xtext.scoping.impl.ImportNormalizer;
12import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider;
13
14import com.google.inject.Inject;
15
16public class ProblemLocalScopeProvider extends ImportedNamespaceAwareLocalScopeProvider {
17 private static final QualifiedName BUILTIN_LIBRARY_QUALIFIED_NAME = QualifiedName
18 .create(ProblemGlobalScopeProvider.BUILTIN_LIBRARY_NAME);
19
20 @Inject
21 private IResourceDescriptionsProvider resourceDescriptionsProvider;
22
23 @Override
24 protected List<ImportNormalizer> getImplicitImports(boolean ignoreCase) {
25 return List.of(doCreateImportNormalizer(BUILTIN_LIBRARY_QUALIFIED_NAME, true, ignoreCase));
26 }
27
28 @Override
29 protected List<ImportNormalizer> getImportedNamespaceResolvers(EObject context, boolean ignoreCase) {
30 return List.of();
31 }
32
33 @Override
34 protected ISelectable internalGetAllDescriptions(Resource resource) {
35 // Force the use of ProblemResourceDescriptionStrategy to include all QualifiedNames of objects.
36 IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider
37 .getResourceDescriptions(resource.getResourceSet());
38 return resourceDescriptions.getResourceDescription(resource.getURI());
39 }
40}
diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemScopeProvider.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemScopeProvider.java
deleted file mode 100644
index fc4034ae..00000000
--- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemScopeProvider.java
+++ /dev/null
@@ -1,83 +0,0 @@
1/*
2 * generated by Xtext 2.25.0
3 */
4package org.eclipse.viatra.solver.language.scoping;
5
6import java.util.ArrayList;
7import java.util.Collection;
8import java.util.List;
9
10import org.eclipse.emf.ecore.EObject;
11import org.eclipse.emf.ecore.EReference;
12import org.eclipse.viatra.solver.language.ProblemUtil;
13import org.eclipse.viatra.solver.language.model.problem.Argument;
14import org.eclipse.viatra.solver.language.model.problem.ClassDeclaration;
15import org.eclipse.viatra.solver.language.model.problem.ExistentialQuantifier;
16import org.eclipse.viatra.solver.language.model.problem.PredicateDefinition;
17import org.eclipse.viatra.solver.language.model.problem.ProblemPackage;
18import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration;
19import org.eclipse.viatra.solver.language.model.problem.Relation;
20import org.eclipse.viatra.solver.language.model.problem.Variable;
21import org.eclipse.xtext.EcoreUtil2;
22import org.eclipse.xtext.scoping.IScope;
23import org.eclipse.xtext.scoping.Scopes;
24
25/**
26 * This class contains custom scoping description.
27 *
28 * See
29 * https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping
30 * on how and when to use it.
31 */
32public class ProblemScopeProvider extends AbstractProblemScopeProvider {
33
34 @Override
35 public IScope getScope(EObject context, EReference reference) {
36 IScope scope = super.getScope(context, reference);
37 if (reference == ProblemPackage.Literals.ARGUMENT__VARIABLE_OR_NODE) {
38 return getVariableScope(context, scope);
39 } else if (reference == ProblemPackage.Literals.REFERENCE_DECLARATION__OPPOSITE) {
40 return getOppositeScope(context, scope);
41 }
42 return scope;
43 }
44
45 protected IScope getVariableScope(EObject context, IScope delegateScope) {
46 List<Variable> variables = new ArrayList<>();
47 EObject currentContext = context;
48 if (context instanceof Argument) {
49 Argument argument = (Argument) context;
50 Variable singletonVariable = argument.getSingletonVariable();
51 if (singletonVariable != null) {
52 variables.add(singletonVariable);
53 }
54 }
55 while (currentContext != null && !(currentContext instanceof PredicateDefinition)) {
56 if (currentContext instanceof ExistentialQuantifier) {
57 ExistentialQuantifier quantifier = (ExistentialQuantifier) currentContext;
58 variables.addAll(quantifier.getImplicitVariables());
59 }
60 currentContext = currentContext.eContainer();
61 }
62 if (currentContext instanceof PredicateDefinition) {
63 PredicateDefinition definition = (PredicateDefinition) currentContext;
64 variables.addAll(definition.getParameters());
65 }
66 return Scopes.scopeFor(variables, delegateScope);
67 }
68
69 protected IScope getOppositeScope(EObject context, IScope delegateScope) {
70 ReferenceDeclaration referenceDeclaration = EcoreUtil2.getContainerOfType(context, ReferenceDeclaration.class);
71 if (referenceDeclaration == null) {
72 return delegateScope;
73 }
74 Relation relation = referenceDeclaration.getReferenceType();
75 if (!(relation instanceof ClassDeclaration)) {
76 return delegateScope;
77 }
78 ClassDeclaration classDeclaration = (ClassDeclaration) relation;
79 Collection<ReferenceDeclaration> referenceDeclarations = ProblemUtil
80 .getAllReferenceDeclarations(classDeclaration);
81 return Scopes.scopeFor(referenceDeclarations, delegateScope);
82 }
83}