diff --git a/eo-integration-tests/src/test/resources/org/eolang/snippets/compact-array.yaml b/eo-integration-tests/src/test/resources/org/eolang/snippets/compact-array.yaml new file mode 100644 index 00000000000..d63fc547dae --- /dev/null +++ b/eo-integration-tests/src/test/resources/org/eolang/snippets/compact-array.yaml @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com +# SPDX-License-Identifier: MIT +--- +# yamllint disable rule:line-length +out: + - ".*Hello, 上海.*" +file: program.eo +args: ["org.eolang.snippets.program", "上海"] +target: "eoc" +eo: | + +alias org.eolang.io.stdout + +package org.eolang.snippets + + [args] > program + io.stdout > @ + tt.sprintf *1 + "Hello, %s\n" + args.at 0 diff --git a/eo-maven-plugin/src/test/resources/org/eolang/maven/transpile-packs/compact-array.yaml b/eo-maven-plugin/src/test/resources/org/eolang/maven/transpile-packs/compact-array.yaml new file mode 100644 index 00000000000..6719dd1c732 --- /dev/null +++ b/eo-maven-plugin/src/test/resources/org/eolang/maven/transpile-packs/compact-array.yaml @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com +# SPDX-License-Identifier: MIT +--- +# yamllint disable rule:line-length +sheets: + - /org/eolang/maven/transpile/set-locators.xsl + - /org/eolang/maven/transpile/set-original-names.xsl + - /org/eolang/maven/transpile/classes.xsl + - /org/eolang/maven/transpile/package.xsl + - /org/eolang/maven/transpile/attrs.xsl + - /org/eolang/maven/transpile/data.xsl + - /org/eolang/maven/transpile/to-java.xsl +asserts: + - /object[not(errors)] + - //java[contains(text(), 'base="Φ.org.eolang.tt.sprintf"')] +input: | + +alias org.eolang.io.stdout + +package org.eolang.snippets + + [args] > program + io.stdout > @ + tt.sprintf *1 + "Hello, %s\n" + args.at 0 diff --git a/eo-parser/src/main/java/org/eolang/parser/CompactArrayFqn.java b/eo-parser/src/main/java/org/eolang/parser/CompactArrayFqn.java index e8ac5d03242..19959bcdc53 100644 --- a/eo-parser/src/main/java/org/eolang/parser/CompactArrayFqn.java +++ b/eo-parser/src/main/java/org/eolang/parser/CompactArrayFqn.java @@ -46,17 +46,13 @@ public String asString() { .map(ParseTree::getText) .collect(Collectors.joining(".")); final String fqn; - if (this.context.HOME() == null) { + if (this.context.HOME() == null && this.context.XI() == null) { fqn = name; - } else { + } else if (this.context.HOME() != null && this.context.XI() == null) { fqn = String.format("Φ.org.eolang.%s", name); - } - final String base; - if (this.context.XI() == null) { - base = fqn; } else { - base = String.format("ξ.%s", fqn); + fqn = String.format("ξ.%s", name); } - return base; + return fqn; } } diff --git a/eo-parser/src/main/resources/org/eolang/parser/parse/build-fqns.xsl b/eo-parser/src/main/resources/org/eolang/parser/parse/build-fqns.xsl index 4ca4faceca1..50f6ee52849 100644 --- a/eo-parser/src/main/resources/org/eolang/parser/parse/build-fqns.xsl +++ b/eo-parser/src/main/resources/org/eolang/parser/parse/build-fqns.xsl @@ -185,6 +185,34 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eo-parser/src/test/java/org/eolang/parser/CompactArrayFqnTest.java b/eo-parser/src/test/java/org/eolang/parser/CompactArrayFqnTest.java index 0eb28412963..70fad753981 100644 --- a/eo-parser/src/test/java/org/eolang/parser/CompactArrayFqnTest.java +++ b/eo-parser/src/test/java/org/eolang/parser/CompactArrayFqnTest.java @@ -20,6 +20,7 @@ final class CompactArrayFqnTest { @CsvSource( { "foo *1,foo", + "tt.x *55,tt.x", "QQ.foo.bar *42,Φ.org.eolang.foo.bar", "QQ.nan *52,Φ.org.eolang.nan", "$.seq *1,ξ.seq" diff --git a/eo-parser/src/test/resources/org/eolang/parser/eo-packs/parse/validate-resolve-before-stars.yaml b/eo-parser/src/test/resources/org/eolang/parser/eo-packs/parse/validate-resolve-before-stars.yaml index 10aa09a77d7..70d9f631118 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/eo-packs/parse/validate-resolve-before-stars.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/eo-packs/parse/validate-resolve-before-stars.yaml @@ -10,27 +10,27 @@ asserts: - //o[@name='first' and count(o)=1]/o[@base='Φ.org.eolang.tuple' and @star and count(o)=2] - //o[@name='second' and count(o)=2]/o[position()=2 and @base='Φ.org.eolang.tuple' and @star and count(o)=2] - //o[@name='third' and count(o)=3]/o[position()=3 and @base='Φ.org.eolang.tuple' and @star and count(o)=1] - - //o[@name='fourth' and count(o)=2]/o[@base='sprintf' and count(o)=1]/o[@base='Φ.org.eolang.tuple' and @star and count(o)=2] + - //o[@name='fourth' and count(o)=2]/o[@base='Φ.org.eolang.tt.sprintf' and count(o)=1]/o[@base='Φ.org.eolang.tuple' and @star and count(o)=2] - //o[@name='fourth']/o[@base='Φ.org.eolang.tuple' and @star and count(o)=1] - /object[count(//o[@before-star])=0] input: | # No comments. [] > foo - sprintf *2 > with-error + QQ.tt.sprintf *2 > with-error x - sprintf * > first + QQ.tt.sprintf * > first x y - sprintf *1 > second + QQ.tt.sprintf *1 > second x y z - sprintf *2 > third + QQ.tt.sprintf *2 > third x y z - sprintf *1 > fourth - sprintf * + QQ.tt.sprintf *1 > fourth + QQ.tt.sprintf * x y z diff --git a/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/compact-array-with-defined-first-part.yaml b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/compact-array-with-defined-first-part.yaml new file mode 100644 index 00000000000..487e9a35e5c --- /dev/null +++ b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/compact-array-with-defined-first-part.yaml @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com +# SPDX-License-Identifier: MIT +--- +# yamllint disable rule:line-length +sheets: [] +asserts: + - /object[not(errors)] + - //o[@base='foo.bar']/o[@base='Φ.org.eolang.x'] + - //o[@base='foo.bar']//o[@base='Φ.org.eolang.y'] +input: | + # No comments. + [] > app + boom > foo + foo.bar *1 > @ + x + y diff --git a/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/compact-array.yaml b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/compact-array.yaml new file mode 100644 index 00000000000..64c3e174f25 --- /dev/null +++ b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/compact-array.yaml @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com +# SPDX-License-Identifier: MIT +--- +# yamllint disable rule:line-length +sheets: [] +asserts: + - /object[not(errors)] + - //o[@base='Φ.org.eolang.tt.sprintf'] +input: | + +alias org.eolang.io.stdout + +package org.eolang.snippets + + [args] > program + io.stdout > @ + tt.sprintf *1 + "Hello, %s\n" + args.at 0 diff --git a/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/compact-sprintf-aliased.yaml b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/compact-sprintf-aliased.yaml new file mode 100644 index 00000000000..02598cc96e0 --- /dev/null +++ b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/compact-sprintf-aliased.yaml @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com +# SPDX-License-Identifier: MIT +--- +# yamllint disable rule:line-length +sheets: [] +asserts: + - /object[not(errors)] + - //o[@base='Φ.org.eolang.tt.sprintf']/o[@base='Φ.org.eolang.string'] +input: | + +alias org.eolang.io.stdout + +alias org.eolang.tt.sprintf + + # No comments. + [args] > simple + stdout > @ + sprintf *1 + "Hello, %s" + args.at 0 diff --git a/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/sugared-array-with-composite-name-aliased.yaml b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/sugared-array-with-composite-name-aliased.yaml new file mode 100644 index 00000000000..236061733f9 --- /dev/null +++ b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/sugared-array-with-composite-name-aliased.yaml @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com +# SPDX-License-Identifier: MIT +--- +# yamllint disable rule:line-length +sheets: [] +asserts: + - /object[not(errors)] + - //o[@base='Φ.org.eolang.foo.bar']/o[@base='Φ.org.eolang.x'] + - //o[@base='Φ.org.eolang.foo.bar']//o[@base='Φ.org.eolang.y'] +input: | + +alias org.eolang.foo.bar + + [] > app + bar *1 > @ + x + y diff --git a/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/sugared-array-with-composite-name.yaml b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/sugared-array-with-composite-name.yaml index cbe163e71ab..39b8c1e99a5 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/sugared-array-with-composite-name.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/eo-syntax/sugared-array-with-composite-name.yaml @@ -5,8 +5,8 @@ sheets: [] asserts: - /object[not(errors)] - - //o[@base='foo.bar']/o[@base='Φ.org.eolang.x'] - - //o[@base='foo.bar']//o[@base='Φ.org.eolang.y'] + - //o[@base='Φ.org.eolang.foo.bar']/o[@base='Φ.org.eolang.x'] + - //o[@base='Φ.org.eolang.foo.bar']//o[@base='Φ.org.eolang.y'] input: | # No comments. [] > app