diff options
author | Kristóf Marussy <kristof@marussy.com> | 2021-06-27 01:43:59 +0200 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2021-06-27 02:01:19 +0200 |
commit | b88c842ba625753ea185e6166cd967e694160798 (patch) | |
tree | 51931f892dff12d253f7697179e137bdfe705155 /org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/scoping/ProblemScopeProvider.java | |
parent | Opposite reference scope (diff) | |
download | refinery-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.java | 10 |
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; | |||
16 | import org.eclipse.viatra.solver.language.model.problem.PredicateDefinition; | 16 | import org.eclipse.viatra.solver.language.model.problem.PredicateDefinition; |
17 | import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; | 17 | import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; |
18 | import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration; | 18 | import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration; |
19 | import org.eclipse.viatra.solver.language.model.problem.Relation; | ||
19 | import org.eclipse.viatra.solver.language.model.problem.Variable; | 20 | import org.eclipse.viatra.solver.language.model.problem.Variable; |
20 | import org.eclipse.xtext.EcoreUtil2; | 21 | import org.eclipse.xtext.EcoreUtil2; |
21 | import org.eclipse.xtext.scoping.IScope; | 22 | import 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); |