Skip to content

Commit

Permalink
Merge branch '__rultor'
Browse files Browse the repository at this point in the history
  • Loading branch information
rultor committed Mar 15, 2024
2 parents 4be7736 + 4004422 commit 517a922
Show file tree
Hide file tree
Showing 28 changed files with 691 additions and 8 deletions.
48 changes: 41 additions & 7 deletions eo-maven-plugin/src/main/java/org/eolang/maven/PhiMojo.java
Expand Up @@ -34,6 +34,7 @@
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
Expand Down Expand Up @@ -124,7 +125,19 @@ public void exec() {
String.format(".%s", PhiMojo.EXT)
)
);
home.save(PhiMojo.translated(train, xml), relative);
try {
home.save(PhiMojo.translated(train, xml), relative);
} catch (final ImpossibleToPhiTranslationException exception) {
Logger.debug(
this,
"XML is not translatable to phi:\n%s",
xml.toString()
);
throw new IllegalStateException(
String.format("Couldn't translate %s to phi", processed),
exception
);
}
Logger.info(
this,
"Translated to phi: %[file]s (%[size]s) -> %[file]s (%[size]s)",
Expand Down Expand Up @@ -157,13 +170,34 @@ count, new Rel(this.phiInputDir), new Rel(this.phiOutputDir)
* @param train Train that optimize and traslates given xmir
* @param xmir Text of xmir
* @return Translated xmir
* @throws ImpossibleToPhiTranslationException If fails to translate given XMIR to phi
*/
private static String translated(final Train<Shift> train, final XML xmir) {
return new Xsline(
private static String translated(final Train<Shift> train, final XML xmir)
throws ImpossibleToPhiTranslationException {
final XML translated = new Xsline(
train.with(new StClasspath("/org/eolang/maven/phi/to-phi.xsl"))
)
.pass(xmir)
.xpath("phi/text()")
.get(0);
).pass(xmir);
Logger.debug(PhiMojo.class, "XML after translation to phi:\n%s", translated);
final List<String> phi = translated.xpath("phi/text()");
if (phi.isEmpty()) {
throw new ImpossibleToPhiTranslationException(
"Xpath 'phi/text()' is not found in translated XMIR"
);
}
return phi.get(0);
}

/**
* Exception which indicates that translation to phi can't be processed.
* @since 0.36.0
*/
private static class ImpossibleToPhiTranslationException extends Exception {
/**
* Ctor.
* @param cause Cause of the exception.
*/
ImpossibleToPhiTranslationException(final String cause) {
super(cause);
}
}
}
15 changes: 14 additions & 1 deletion eo-maven-plugin/src/test/java/org/eolang/maven/PhiMojoTest.java
Expand Up @@ -23,12 +23,16 @@
*/
package org.eolang.maven;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Map;
import org.cactoos.text.TextOf;
import org.eolang.jucs.ClasspathSource;
import org.eolang.maven.util.HmBase;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
Expand Down Expand Up @@ -63,7 +67,16 @@ void createsFiles(@TempDir final Path temp) throws Exception {
}

@ParameterizedTest
@ClasspathSource(value = "org/eolang/maven/phi", glob = "**.yaml")
@ClasspathSource(value = "org/eolang/maven/phi/xmir", glob = "**.xmir")
void convertsXmirsToPhiWithoutErrors(final String xmir, @TempDir final Path temp)
throws IOException {
final FakeMaven maven = new FakeMaven(temp);
new HmBase(temp).save(xmir, Paths.get("target/2-optimize/test.xmir"));
Assertions.assertDoesNotThrow(() -> maven.execute(PhiMojo.class));
}

@ParameterizedTest
@ClasspathSource(value = "org/eolang/maven/phi/yaml", glob = "**.yaml")
void checksPhiPacks(final String pack, @TempDir final Path temp) throws Exception {
final Map<String, Object> map = new Yaml().load(pack);
if (map.get("skip") != null) {
Expand Down
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<program dob="2024-03-13T13:49:54.999144Z"
ms="1710337794999"
name="j$OriginalException"
revision="0.0.0"
time="2024-03-13T13:49:54.999144Z"
version="0.0.0">
<listing>yv66vgAAADQAFwoAAgADBwAEDAAFAAYBABpqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbgEABjxpbml0PgEAFShMamF2YS9sYW5nL1N0cmluZzspVgoAAgAIDAAFAAkBACooTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9UaHJvd2FibGU7KVYHAAsBAChvcmcvZW9sYW5nL2luaGVyaXRhbmNlL09yaWdpbmFsRXhjZXB0aW9uAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBACpMb3JnL2VvbGFuZy9pbmhlcml0YW5jZS9PcmlnaW5hbEV4Y2VwdGlvbjsBAAdtZXNzYWdlAQASTGphdmEvbGFuZy9TdHJpbmc7AQAFY2F1c2UBABVMamF2YS9sYW5nL1Rocm93YWJsZTsBAApTb3VyY2VGaWxlAQAWT3JpZ2luYWxFeGNlcHRpb24uamF2YQAgAAoAAgAAAAAAAgABAAUABgABAAwAAAA+AAIAAgAAAAYqK7cAAbEAAAACAA0AAAAKAAIAAAAdAAUAHgAOAAAAFgACAAAABgAPABAAAAAAAAYAEQASAAEAAQAFAAkAAQAMAAAASQADAAMAAAAHKisstwAHsQAAAAIADQAAAAoAAgAAACEABgAiAA4AAAAgAAMAAAAHAA8AEAAAAAAABwARABIAAQAAAAcAEwAUAAIAAQAVAAAAAgAW</listing>
<errors/>
<sheets/>
<license/>
<metas>
<meta>
<head>package</head>
<tail>org.eolang.inheritance</tail>
<part>org.eolang.inheritance</part>
</meta>
<meta>
<head>alias</head>
<tail>org.eolang.jeo.opcode</tail>
<part>org.eolang.jeo.opcode</part>
</meta>
<meta>
<head>alias</head>
<tail>org.eolang.jeo.label</tail>
<part>org.eolang.jeo.label</part>
</meta>
</metas>
<objects>
<o abstract="" name="j$OriginalException">
<o base="int" data="bytes" name="access">00 00 00 00 00 00 00 20</o>
<o base="string" data="bytes" name="supername">6A 61 76 61 2F 6C 61 6E 67 2F 52 75 6E 74 69 6D 65 45 78 63 65 70 74 69 6F 6E</o>
<o base="tuple" name="interfaces" star=""/>
<o abstract="" name="new">
<o base="int" data="bytes" name="access">00 00 00 00 00 00 00 01</o>
<o base="string" data="bytes" name="descriptor">28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 56</o>
<o base="string" data="bytes" name="signature"/>
<o base="tuple" name="exceptions" star=""/>
<o abstract="" name="arg__Ljava/lang/String;__0"/>
<o base="seq" name="@">
<o base="tuple" star="">
<o base="label" data="bytes">35 32 62 66 66 37 36 30 2D 34 62 63 38 2D 34 37 61 64 2D 62 63 35 65 2D 34 38 38 32 33 32 65 64 66 30 35 37</o>
<o base="opcode" line="999" name="ALOAD-8C">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 00</o>
</o>
<o base="opcode" line="999" name="ALOAD-8D">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 01</o>
</o>
<o base="opcode" line="999" name="INVOKESPECIAL-8E">
<o base="int" data="bytes">00 00 00 00 00 00 00 B7</o>
<o base="string" data="bytes">6A 61 76 61 2F 6C 61 6E 67 2F 52 75 6E 74 69 6D 65 45 78 63 65 70 74 69 6F 6E</o>
<o base="string" data="bytes">3C 69 6E 69 74 3E</o>
<o base="string" data="bytes">28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 56</o>
</o>
<o base="label" data="bytes">65 62 61 62 36 62 36 36 2D 61 31 30 66 2D 34 65 35 32 2D 38 66 64 64 2D 34 64 66 35 33 62 62 37 38 61 31 62</o>
<o base="opcode" line="999" name="RETURN-8F">
<o base="int" data="bytes">00 00 00 00 00 00 00 B1</o>
</o>
<o base="label" data="bytes">34 64 66 65 61 32 63 39 2D 37 37 65 30 2D 34 64 36 65 2D 38 31 63 38 2D 65 66 65 34 65 38 62 31 61 37 61 64</o>
</o>
</o>
</o>
<o abstract="" name="new">
<o base="int" data="bytes" name="access">00 00 00 00 00 00 00 01</o>
<o base="string" data="bytes" name="descriptor">28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 54 68 72 6F 77 61 62 6C 65 3B 29 56</o>
<o base="string" data="bytes" name="signature"/>
<o base="tuple" name="exceptions" star=""/>
<o abstract="" name="arg__Ljava/lang/String;__0"/>
<o abstract="" name="arg__Ljava/lang/Throwable;__1"/>
<o base="seq" name="@">
<o base="tuple" star="">
<o base="label" data="bytes">39 31 33 64 39 63 65 64 2D 35 65 34 65 2D 34 34 36 31 2D 61 30 64 31 2D 33 37 64 31 34 30 32 38 65 37 64 63</o>
<o base="opcode" line="999" name="ALOAD-90">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 00</o>
</o>
<o base="opcode" line="999" name="ALOAD-91">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 01</o>
</o>
<o base="opcode" line="999" name="ALOAD-92">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 02</o>
</o>
<o base="opcode" line="999" name="INVOKESPECIAL-93">
<o base="int" data="bytes">00 00 00 00 00 00 00 B7</o>
<o base="string" data="bytes">6A 61 76 61 2F 6C 61 6E 67 2F 52 75 6E 74 69 6D 65 45 78 63 65 70 74 69 6F 6E</o>
<o base="string" data="bytes">3C 69 6E 69 74 3E</o>
<o base="string" data="bytes">28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 54 68 72 6F 77 61 62 6C 65 3B 29 56</o>
</o>
<o base="label" data="bytes">33 65 62 62 30 63 65 65 2D 66 61 30 31 2D 34 66 62 35 2D 62 34 30 37 2D 33 30 34 34 37 33 66 62 36 33 38 62</o>
<o base="opcode" line="999" name="RETURN-94">
<o base="int" data="bytes">00 00 00 00 00 00 00 B1</o>
</o>
<o base="label" data="bytes">38 63 66 30 30 63 32 31 2D 64 61 33 34 2D 34 64 38 33 2D 38 37 34 64 2D 38 35 61 39 37 66 66 39 63 31 34 61</o>
</o>
</o>
</o>
</o>
</objects>
</program>
@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<program dob="2024-03-13T13:49:54.981860Z"
ms="1710337794981"
name="j$SomeException"
revision="0.0.0"
time="2024-03-13T13:49:54.981860Z"
version="0.0.0">
<listing>yv66vgAAADQAHAoAAgADBwAEDAAFAAYBAChvcmcvZW9sYW5nL2luaGVyaXRhbmNlL09yaWdpbmFsRXhjZXB0aW9uAQAGPGluaXQ+AQAVKExqYXZhL2xhbmcvU3RyaW5nOylWCgACAAgMAAUACQEAKihMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1Rocm93YWJsZTspVgcACwEAJG9yZy9lb2xhbmcvaW5oZXJpdGFuY2UvU29tZUV4Y2VwdGlvbgEAEHNlcmlhbFZlcnNpb25VSUQBAAFKAQANQ29uc3RhbnRWYWx1ZQX////////P6QEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAmTG9yZy9lb2xhbmcvaW5oZXJpdGFuY2UvU29tZUV4Y2VwdGlvbjsBAAFzAQASTGphdmEvbGFuZy9TdHJpbmc7AQABdAEAFUxqYXZhL2xhbmcvVGhyb3dhYmxlOwEAClNvdXJjZUZpbGUBABJTb21lRXhjZXB0aW9uLmphdmEAIAAKAAIAAAABABoADAANAAEADgAAAAIADwACAAEABQAGAAEAEQAAADoAAgACAAAABiortwABsQAAAAIAEgAAAAYAAQAAAB4AEwAAABYAAgAAAAYAFAAVAAAAAAAGABYAFwABAAEABQAJAAEAEQAAAEUAAwADAAAAByorLLcAB7EAAAACABIAAAAGAAEAAAAgABMAAAAgAAMAAAAHABQAFQAAAAAABwAWABcAAQAAAAcAGAAZAAIAAQAaAAAAAgAb</listing>
<errors/>
<sheets/>
<license/>
<metas>
<meta>
<head>package</head>
<tail>org.eolang.inheritance</tail>
<part>org.eolang.inheritance</part>
</meta>
<meta>
<head>alias</head>
<tail>org.eolang.jeo.opcode</tail>
<part>org.eolang.jeo.opcode</part>
</meta>
<meta>
<head>alias</head>
<tail>org.eolang.jeo.label</tail>
<part>org.eolang.jeo.label</part>
</meta>
</metas>
<objects>
<o abstract="" name="j$SomeException">
<o base="int" data="bytes" name="access">00 00 00 00 00 00 00 20</o>
<o base="string" data="bytes" name="supername">6F 72 67 2F 65 6F 6C 61 6E 67 2F 69 6E 68 65 72 69 74 61 6E 63 65 2F 4F 72 69 67 69 6E 61 6C 45 78 63 65 70 74 69 6F 6E</o>
<o base="tuple" name="interfaces" star=""/>
<o base="field" name="j$serialVersionUID">
<o base="int" data="bytes">00 00 00 00 00 00 00 1A</o>
<o base="string" data="bytes">4A</o>
<o base="string" data="bytes"/>
<o base="long" data="bytes">FF FF FF FF FF FF CF E9</o>
</o>
<o abstract="" name="new">
<o base="int" data="bytes" name="access">00 00 00 00 00 00 00 01</o>
<o base="string" data="bytes" name="descriptor">28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 56</o>
<o base="string" data="bytes" name="signature"/>
<o base="tuple" name="exceptions" star=""/>
<o abstract="" name="arg__Ljava/lang/String;__0"/>
<o base="seq" name="@">
<o base="tuple" star="">
<o base="label" data="bytes">65 31 35 31 61 36 34 65 2D 30 64 39 37 2D 34 66 64 34 2D 62 37 61 34 2D 63 64 35 35 30 35 61 63 39 65 37 31</o>
<o base="opcode" line="999" name="ALOAD-83">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 00</o>
</o>
<o base="opcode" line="999" name="ALOAD-84">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 01</o>
</o>
<o base="opcode" line="999" name="INVOKESPECIAL-85">
<o base="int" data="bytes">00 00 00 00 00 00 00 B7</o>
<o base="string" data="bytes">6F 72 67 2F 65 6F 6C 61 6E 67 2F 69 6E 68 65 72 69 74 61 6E 63 65 2F 4F 72 69 67 69 6E 61 6C 45 78 63 65 70 74 69 6F 6E</o>
<o base="string" data="bytes">3C 69 6E 69 74 3E</o>
<o base="string" data="bytes">28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 56</o>
</o>
<o base="opcode" line="999" name="RETURN-86">
<o base="int" data="bytes">00 00 00 00 00 00 00 B1</o>
</o>
<o base="label" data="bytes">66 33 30 35 34 34 63 65 2D 39 38 61 30 2D 34 32 30 62 2D 62 38 36 61 2D 30 61 38 66 38 34 35 31 32 63 37 34</o>
</o>
</o>
</o>
<o abstract="" name="new">
<o base="int" data="bytes" name="access">00 00 00 00 00 00 00 01</o>
<o base="string" data="bytes" name="descriptor">28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 54 68 72 6F 77 61 62 6C 65 3B 29 56</o>
<o base="string" data="bytes" name="signature"/>
<o base="tuple" name="exceptions" star=""/>
<o abstract="" name="arg__Ljava/lang/String;__0"/>
<o abstract="" name="arg__Ljava/lang/Throwable;__1"/>
<o base="seq" name="@">
<o base="tuple" star="">
<o base="label" data="bytes">64 32 32 33 36 63 30 64 2D 39 65 63 31 2D 34 33 34 35 2D 39 61 37 30 2D 66 61 36 34 39 62 35 35 36 33 63 36</o>
<o base="opcode" line="999" name="ALOAD-87">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 00</o>
</o>
<o base="opcode" line="999" name="ALOAD-88">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 01</o>
</o>
<o base="opcode" line="999" name="ALOAD-89">
<o base="int" data="bytes">00 00 00 00 00 00 00 19</o>
<o base="int" data="bytes">00 00 00 00 00 00 00 02</o>
</o>
<o base="opcode" line="999" name="INVOKESPECIAL-8A">
<o base="int" data="bytes">00 00 00 00 00 00 00 B7</o>
<o base="string" data="bytes">6F 72 67 2F 65 6F 6C 61 6E 67 2F 69 6E 68 65 72 69 74 61 6E 63 65 2F 4F 72 69 67 69 6E 61 6C 45 78 63 65 70 74 69 6F 6E</o>
<o base="string" data="bytes">3C 69 6E 69 74 3E</o>
<o base="string" data="bytes">28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 54 68 72 6F 77 61 62 6C 65 3B 29 56</o>
</o>
<o base="opcode" line="999" name="RETURN-8B">
<o base="int" data="bytes">00 00 00 00 00 00 00 B1</o>
</o>
<o base="label" data="bytes">65 64 39 36 65 38 31 30 2D 39 63 62 61 2D 34 36 36 63 2D 38 66 36 38 2D 65 31 62 64 38 36 37 61 63 62 35 64</o>
</o>
</o>
</o>
</o>
</objects>
</program>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<program dob="2024-03-15T08:31:41.639381Z"
ms="1710491501639"
name="j$Top$1"
revision="0.0.0"
time="2024-03-15T08:31:41.639381Z"
version="0.0.0">
<listing>yv66vgAAADQACwcAAgEAHW9yZy9lb2xhbmcvaW5uZXJjbGFzc2VzL1RvcCQxBwAEAQAQamF2YS9sYW5nL09iamVjdAEAClNvdXJjZUZpbGUBAAhUb3AuamF2YQEAD0VuY2xvc2luZ01ldGhvZAcACQEAG29yZy9lb2xhbmcvaW5uZXJjbGFzc2VzL1RvcAEADElubmVyQ2xhc3NlcxAgAAEAAwAAAAAAAAADAAUAAAACAAYABwAAAAQACAAAAAoAAAAKAAEAAQAAAAAQCA==</listing>
<errors/>
<sheets/>
<license/>
<metas>
<meta>
<head>package</head>
<tail>org.eolang.innerclasses</tail>
<part>org.eolang.innerclasses</part>
</meta>
<meta>
<head>alias</head>
<tail>org.eolang.jeo.opcode</tail>
<part>org.eolang.jeo.opcode</part>
</meta>
<meta>
<head>alias</head>
<tail>org.eolang.jeo.label</tail>
<part>org.eolang.jeo.label</part>
</meta>
</metas>
<objects>
<o abstract="" name="j$Top$1">
<o base="int" data="bytes" name="access">00 00 00 00 00 00 10 20</o>
<o base="string" data="bytes" name="supername">6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74</o>
<o base="tuple" name="interfaces" star=""/>
</o>
</objects>
</program>

0 comments on commit 517a922

Please sign in to comment.