aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-web
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2024-02-02 16:28:19 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2024-02-02 17:36:24 +0100
commit2dfcb286216419976368ad926f8ac7f018aa2bf9 (patch)
treeb9d235ebf2049e42e58126e743c782333d64681a /subprojects/language-web
parentrefactor: serialize solutions as modules (diff)
downloadrefinery-2dfcb286216419976368ad926f8ac7f018aa2bf9.tar.gz
refinery-2dfcb286216419976368ad926f8ac7f018aa2bf9.tar.zst
refinery-2dfcb286216419976368ad926f8ac7f018aa2bf9.zip
refactor(language): name disambiguation
* Use fully qualified names starting with :: (as in C++) to unambiguously refer to an element. * Name shadowing within modules.
Diffstat (limited to 'subprojects/language-web')
-rw-r--r--subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/PartialInterpretation2Json.java4
-rw-r--r--subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/metadata/MetadataCreator.java21
2 files changed, 12 insertions, 13 deletions
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/PartialInterpretation2Json.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/PartialInterpretation2Json.java
index efe04592..ff811033 100644
--- a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/PartialInterpretation2Json.java
+++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/PartialInterpretation2Json.java
@@ -1,5 +1,5 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2023-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
@@ -32,7 +32,7 @@ public class PartialInterpretation2Json {
32 var relation = entry.getKey(); 32 var relation = entry.getKey();
33 var partialSymbol = entry.getValue(); 33 var partialSymbol = entry.getValue();
34 var tuples = getTuplesJson(facade, partialSymbol); 34 var tuples = getTuplesJson(facade, partialSymbol);
35 var name = semanticsUtils.getName(relation).orElse(partialSymbol.name()); 35 var name = semanticsUtils.getNameWithoutRootPrefix(relation).orElse(partialSymbol.name());
36 json.add(name, tuples); 36 json.add(name, tuples);
37 cancellationToken.checkCancelled(); 37 cancellationToken.checkCancelled();
38 } 38 }
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/metadata/MetadataCreator.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/metadata/MetadataCreator.java
index 1f49b0d0..1858fc87 100644
--- a/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/metadata/MetadataCreator.java
+++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/semantics/metadata/MetadataCreator.java
@@ -7,6 +7,7 @@ package tools.refinery.language.web.semantics.metadata;
7 7
8import com.google.inject.Inject; 8import com.google.inject.Inject;
9import com.google.inject.Provider; 9import com.google.inject.Provider;
10import com.google.inject.name.Named;
10import org.eclipse.emf.ecore.EObject; 11import org.eclipse.emf.ecore.EObject;
11import org.eclipse.xtext.naming.IQualifiedNameConverter; 12import org.eclipse.xtext.naming.IQualifiedNameConverter;
12import org.eclipse.xtext.naming.IQualifiedNameProvider; 13import org.eclipse.xtext.naming.IQualifiedNameProvider;
@@ -14,6 +15,7 @@ import org.eclipse.xtext.naming.QualifiedName;
14import org.eclipse.xtext.scoping.IScope; 15import org.eclipse.xtext.scoping.IScope;
15import org.eclipse.xtext.scoping.IScopeProvider; 16import org.eclipse.xtext.scoping.IScopeProvider;
16import tools.refinery.language.model.problem.*; 17import tools.refinery.language.model.problem.*;
18import tools.refinery.language.naming.ProblemQualifiedNameProvider;
17import tools.refinery.language.semantics.ProblemTrace; 19import tools.refinery.language.semantics.ProblemTrace;
18import tools.refinery.language.semantics.TracedException; 20import tools.refinery.language.semantics.TracedException;
19import tools.refinery.language.utils.ProblemUtil; 21import tools.refinery.language.utils.ProblemUtil;
@@ -32,6 +34,7 @@ public class MetadataCreator {
32 private IScopeProvider scopeProvider; 34 private IScopeProvider scopeProvider;
33 35
34 @Inject 36 @Inject
37 @Named(ProblemQualifiedNameProvider.NAMED_DELEGATE)
35 private IQualifiedNameProvider qualifiedNameProvider; 38 private IQualifiedNameProvider qualifiedNameProvider;
36 39
37 @Inject 40 @Inject
@@ -122,17 +125,13 @@ public class MetadataCreator {
122 if (ProblemUtil.isBuiltIn(relation) && !ProblemUtil.isError(relation)) { 125 if (ProblemUtil.isBuiltIn(relation) && !ProblemUtil.isError(relation)) {
123 return getBuiltInDetail(); 126 return getBuiltInDetail();
124 } 127 }
125 if (relation instanceof ClassDeclaration classDeclaration) { 128 return switch (relation) {
126 return getClassDetail(classDeclaration); 129 case ClassDeclaration classDeclaration -> getClassDetail(classDeclaration);
127 } else if (relation instanceof ReferenceDeclaration) { 130 case ReferenceDeclaration ignored -> getReferenceDetail(partialRelation);
128 return getReferenceDetail(partialRelation); 131 case EnumDeclaration ignored -> getEnumDetail();
129 } else if (relation instanceof EnumDeclaration) { 132 case PredicateDefinition predicateDefinition -> getPredicateDetail(predicateDefinition);
130 return getEnumDetail(); 133 default -> throw new TracedException(relation, "Unknown relation");
131 } else if (relation instanceof PredicateDefinition predicateDefinition) { 134 };
132 return getPredicateDetail(predicateDefinition);
133 } else {
134 throw new TracedException(relation, "Unknown relation");
135 }
136 } 135 }
137 136
138 private RelationDetail getBuiltInDetail() { 137 private RelationDetail getBuiltInDetail() {