diff options
author | 2024-02-02 16:28:19 +0100 | |
---|---|---|
committer | 2024-02-02 17:36:24 +0100 | |
commit | 2dfcb286216419976368ad926f8ac7f018aa2bf9 (patch) | |
tree | b9d235ebf2049e42e58126e743c782333d64681a /subprojects/language-web | |
parent | refactor: serialize solutions as modules (diff) | |
download | refinery-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')
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 | ||
8 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
9 | import com.google.inject.Provider; | 9 | import com.google.inject.Provider; |
10 | import com.google.inject.name.Named; | ||
10 | import org.eclipse.emf.ecore.EObject; | 11 | import org.eclipse.emf.ecore.EObject; |
11 | import org.eclipse.xtext.naming.IQualifiedNameConverter; | 12 | import org.eclipse.xtext.naming.IQualifiedNameConverter; |
12 | import org.eclipse.xtext.naming.IQualifiedNameProvider; | 13 | import org.eclipse.xtext.naming.IQualifiedNameProvider; |
@@ -14,6 +15,7 @@ import org.eclipse.xtext.naming.QualifiedName; | |||
14 | import org.eclipse.xtext.scoping.IScope; | 15 | import org.eclipse.xtext.scoping.IScope; |
15 | import org.eclipse.xtext.scoping.IScopeProvider; | 16 | import org.eclipse.xtext.scoping.IScopeProvider; |
16 | import tools.refinery.language.model.problem.*; | 17 | import tools.refinery.language.model.problem.*; |
18 | import tools.refinery.language.naming.ProblemQualifiedNameProvider; | ||
17 | import tools.refinery.language.semantics.ProblemTrace; | 19 | import tools.refinery.language.semantics.ProblemTrace; |
18 | import tools.refinery.language.semantics.TracedException; | 20 | import tools.refinery.language.semantics.TracedException; |
19 | import tools.refinery.language.utils.ProblemUtil; | 21 | import 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() { |