aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemScopeProvider.java
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-06-27 01:43:59 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-06-27 02:01:19 +0200
commitb88c842ba625753ea185e6166cd967e694160798 (patch)
tree51931f892dff12d253f7697179e137bdfe705155 /org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemScopeProvider.java
parentOpposite reference scope (diff)
downloadrefinery-b88c842ba625753ea185e6166cd967e694160798.tar.gz
refinery-b88c842ba625753ea185e6166cd967e694160798.tar.zst
refinery-b88c842ba625753ea185e6166cd967e694160798.zip
Add enum support
Diffstat (limited to 'org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemScopeProvider.java')
-rw-r--r--org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemScopeProvider.java10
1 files changed, 6 insertions, 4 deletions
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
index c639f24c..fc4034ae 100644
--- 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
@@ -16,6 +16,7 @@ import org.eclipse.viatra.solver.language.model.problem.ExistentialQuantifier;
16import org.eclipse.viatra.solver.language.model.problem.PredicateDefinition; 16import org.eclipse.viatra.solver.language.model.problem.PredicateDefinition;
17import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; 17import org.eclipse.viatra.solver.language.model.problem.ProblemPackage;
18import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration; 18import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration;
19import org.eclipse.viatra.solver.language.model.problem.Relation;
19import org.eclipse.viatra.solver.language.model.problem.Variable; 20import org.eclipse.viatra.solver.language.model.problem.Variable;
20import org.eclipse.xtext.EcoreUtil2; 21import org.eclipse.xtext.EcoreUtil2;
21import org.eclipse.xtext.scoping.IScope; 22import org.eclipse.xtext.scoping.IScope;
@@ -33,7 +34,7 @@ public class ProblemScopeProvider extends AbstractProblemScopeProvider {
33 @Override 34 @Override
34 public IScope getScope(EObject context, EReference reference) { 35 public IScope getScope(EObject context, EReference reference) {
35 IScope scope = super.getScope(context, reference); 36 IScope scope = super.getScope(context, reference);
36 if (reference == ProblemPackage.Literals.ARGUMENT__VARIABLE) { 37 if (reference == ProblemPackage.Literals.ARGUMENT__VARIABLE_OR_NODE) {
37 return getVariableScope(context, scope); 38 return getVariableScope(context, scope);
38 } else if (reference == ProblemPackage.Literals.REFERENCE_DECLARATION__OPPOSITE) { 39 } else if (reference == ProblemPackage.Literals.REFERENCE_DECLARATION__OPPOSITE) {
39 return getOppositeScope(context, scope); 40 return getOppositeScope(context, scope);
@@ -62,7 +63,7 @@ public class ProblemScopeProvider extends AbstractProblemScopeProvider {
62 PredicateDefinition definition = (PredicateDefinition) currentContext; 63 PredicateDefinition definition = (PredicateDefinition) currentContext;
63 variables.addAll(definition.getParameters()); 64 variables.addAll(definition.getParameters());
64 } 65 }
65 return Scopes.scopeFor(variables); 66 return Scopes.scopeFor(variables, delegateScope);
66 } 67 }
67 68
68 protected IScope getOppositeScope(EObject context, IScope delegateScope) { 69 protected IScope getOppositeScope(EObject context, IScope delegateScope) {
@@ -70,10 +71,11 @@ public class ProblemScopeProvider extends AbstractProblemScopeProvider {
70 if (referenceDeclaration == null) { 71 if (referenceDeclaration == null) {
71 return delegateScope; 72 return delegateScope;
72 } 73 }
73 ClassDeclaration classDeclaration = referenceDeclaration.getReferenceType(); 74 Relation relation = referenceDeclaration.getReferenceType();
74 if (classDeclaration == null) { 75 if (!(relation instanceof ClassDeclaration)) {
75 return delegateScope; 76 return delegateScope;
76 } 77 }
78 ClassDeclaration classDeclaration = (ClassDeclaration) relation;
77 Collection<ReferenceDeclaration> referenceDeclarations = ProblemUtil 79 Collection<ReferenceDeclaration> referenceDeclarations = ProblemUtil
78 .getAllReferenceDeclarations(classDeclaration); 80 .getAllReferenceDeclarations(classDeclaration);
79 return Scopes.scopeFor(referenceDeclarations, delegateScope); 81 return Scopes.scopeFor(referenceDeclarations, delegateScope);