aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-semantics/src
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2024-02-05 18:54:46 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2024-02-06 01:50:23 +0100
commit1ae461bd5319370e12878785d9c7ec9f89429406 (patch)
treea18797b520369a7f40ee13988308de67c66e046d /subprojects/language-semantics/src
parentRevert "refactor: simplify module name inference" (diff)
downloadrefinery-1ae461bd5319370e12878785d9c7ec9f89429406.tar.gz
refinery-1ae461bd5319370e12878785d9c7ec9f89429406.tar.zst
refinery-1ae461bd5319370e12878785d9c7ec9f89429406.zip
feat(language): automatic problem kind inference
Diffstat (limited to 'subprojects/language-semantics/src')
-rw-r--r--subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/SolutionSerializer.java14
-rw-r--r--subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java2
2 files changed, 4 insertions, 12 deletions
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/SolutionSerializer.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/SolutionSerializer.java
index dad867b8..2fb0a49d 100644
--- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/SolutionSerializer.java
+++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/SolutionSerializer.java
@@ -13,7 +13,6 @@ import org.eclipse.emf.common.util.URI;
13import org.eclipse.emf.ecore.util.EcoreUtil; 13import org.eclipse.emf.ecore.util.EcoreUtil;
14import org.eclipse.xtext.naming.IQualifiedNameProvider; 14import org.eclipse.xtext.naming.IQualifiedNameProvider;
15import org.eclipse.xtext.naming.QualifiedName; 15import org.eclipse.xtext.naming.QualifiedName;
16import org.eclipse.xtext.resource.FileExtensionProvider;
17import org.eclipse.xtext.resource.IResourceFactory; 16import org.eclipse.xtext.resource.IResourceFactory;
18import org.eclipse.xtext.resource.XtextResource; 17import org.eclipse.xtext.resource.XtextResource;
19import org.eclipse.xtext.resource.XtextResourceSet; 18import org.eclipse.xtext.resource.XtextResourceSet;
@@ -42,8 +41,6 @@ import java.util.function.Function;
42import java.util.stream.Collectors; 41import java.util.stream.Collectors;
43 42
44public class SolutionSerializer { 43public class SolutionSerializer {
45 private String fileExtension;
46
47 @Inject 44 @Inject
48 private Provider<XtextResourceSet> resourceSetProvider; 45 private Provider<XtextResourceSet> resourceSetProvider;
49 46
@@ -74,13 +71,8 @@ public class SolutionSerializer {
74 private NodeDeclaration nodeDeclaration; 71 private NodeDeclaration nodeDeclaration;
75 private final MutableIntObjectMap<Node> nodes = IntObjectMaps.mutable.empty(); 72 private final MutableIntObjectMap<Node> nodes = IntObjectMaps.mutable.empty();
76 73
77 @Inject
78 public void setFileExtensionProvider(FileExtensionProvider fileExtensionProvider) {
79 this.fileExtension = fileExtensionProvider.getPrimaryFileExtension();
80 }
81
82 public Problem serializeSolution(ProblemTrace trace, Model model) { 74 public Problem serializeSolution(ProblemTrace trace, Model model) {
83 var uri = URI.createURI("__synthetic." + fileExtension); 75 var uri = URI.createURI("__synthetic." + ProblemUtil.MODULE_EXTENSION);
84 return serializeSolution(trace, model, uri); 76 return serializeSolution(trace, model, uri);
85 } 77 }
86 78
@@ -135,8 +127,8 @@ public class SolutionSerializer {
135 private Problem copyProblem(Problem originalProblem, URI uri) { 127 private Problem copyProblem(Problem originalProblem, URI uri) {
136 var newResourceSet = resourceSetProvider.get(); 128 var newResourceSet = resourceSetProvider.get();
137 ImportAdapter.copySettings(originalProblem, newResourceSet); 129 ImportAdapter.copySettings(originalProblem, newResourceSet);
138 if (!fileExtension.equals(uri.fileExtension())) { 130 if (!ProblemUtil.MODULE_EXTENSION.equals(uri.fileExtension())) {
139 uri = uri.appendFileExtension(fileExtension); 131 uri = uri.appendFileExtension(ProblemUtil.MODULE_EXTENSION);
140 } 132 }
141 var newResource = resourceFactory.createResource(uri); 133 var newResource = resourceFactory.createResource(uri);
142 newResourceSet.getResources().add(newResource); 134 newResourceSet.getResources().add(newResource);
diff --git a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java
index 949b7047..be675a80 100644
--- a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java
+++ b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/SolutionSerializerTest.java
@@ -72,7 +72,7 @@ class SolutionSerializerTest {
72 solution.eResource().save(outputStream, Map.of()); 72 solution.eResource().save(outputStream, Map.of());
73 actualOutput = outputStream.toString(); 73 actualOutput = outputStream.toString();
74 } 74 }
75 assertThat(actualOutput, is("module.\n\n" + prefix + "\n" + expectedOutput)); 75 assertThat(actualOutput, is(prefix + "\n" + expectedOutput));
76 } 76 }
77 77
78 static Stream<Arguments> solutionSerializerTest() { 78 static Stream<Arguments> solutionSerializerTest() {