Skip to content

Conversation

@maxonfjvipon
Copy link
Member

@maxonfjvipon maxonfjvipon commented Dec 21, 2025

Closes: #551

Summary by CodeRabbit

Release Notes

  • Documentation

    • Updated examples to reflect simplified API paths: Φ.org.eolang.string()Φ.string(), Φ.org.eolang.bytes()Φ.bytes(), Φ.org.eolang.number()Φ.number().
  • Tests

    • Updated test cases and resources to align with new API naming conventions.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 21, 2025

Walkthrough

This PR removes the QQ syntax and simplifies public API namespace paths from Φ.org.eolang.* to shorter forms (e.g., Φ.number, Φ.bytes). It eliminates the EX_DEF_PACKAGE type constructor, related pattern-matching clauses, and associated dataization logic, while renaming internal atom labels for numeric operations.

Changes

Cohort / File(s) Summary
Type Constructor Removal
src/CST.hs, test/LiningSpec.hs
Removed EX_DEF_PACKAGE constructor from EXPRESSION data type and its ToCST pattern match; removed corresponding test case from lining tests.
Rendering & Encoding
src/Render.hs, src/Encoding.hs
Removed EX_DEF_PACKAGE branch from EXPRESSION renderer and ASCII encoding (fallback to identity transformation).
Desugaring
src/Sugar.hs
Removed toSalty clause for EX_DEF_PACKAGE{} pattern.
Parsing & Pattern Matching
src/Parser.hs, src/Misc.hs
Removed special dispatch branch for nested ExDispatch (ExDispatch ExGlobal (AtLabel "org")) (AtLabel "eolang"); simplified matchBaseObject pattern to direct ExDispatch ExGlobal (AtLabel label).
Dataization & Atom Renaming
src/Dataize.hs
Removed guard for ExApplication (ExDispatch ExGlobal _) and nested PHI dispatch pathway in withTail; renamed numeric atom labels from L_org_eolang_number_* to L_number_* (plus, times, eq).
XMIR Data References
src/XMIR.hs
Updated base/namespace paths for DataNumber and DataString from Φ.org.eolang.bytes/Φ.org.eolang.number/Φ.org.eolang.string to Φ.bytes/Φ.number/Φ.string.
Documentation
README.md
Updated code examples to use simplified namespace paths (e.g., Φ.io.stdout instead of Φ.org.eolang.io.stdout).
Test Resources: Symbol Updates
test-resources/cst/printing-packs/jeo.yaml, test-resources/cst/printing-packs/primitives-without-rhos.yaml, test-resources/cst/to-ascii-packs/complex.yaml, test-resources/cst/to-salty-packs/*.yaml, test-resources/parser-packs/*.phi, test-resources/rewriter-packs/custom/*.yaml, test-resources/xmir-printing-packs/*.yaml
Replaced Φ̇, QQ, and Φ.org.eolang.* prefixes with Φ, Q, and shortened namespace forms (Φ.bytes, Φ.number, Φ.string, etc.).
Test Resources: File Deletion
test-resources/cst/to-salty-packs/default-package.yaml
Deleted test resource file (previously mapped QQ.baz to Φ.org.eolang.baz).
Test Specs: Expectations Updated
test/CLISpec.hs, test/DataizeSpec.hs, test/ParserSpec.hs
Updated test expectations to reflect new symbol names, namespace paths, and internal representations (e.g., desugar results now use ξ.x instead of Φ.org.eolang.*; numeric atom labels simplified).
Test Specs: SugarSpec Deleted
test/SugarSpec.hs
Removed entire Sugar module test suite covering sugar-to-salty transformations, CST manipulations, and formatting rules.
Configuration
phino.cabal
Removed SugarSpec from test-suite spec list.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Specific areas requiring extra attention:
    • src/Dataize.hs: Dispatch handling and atom label renaming modify control flow; verify numeric operations still resolve correctly to new atom identifiers.
    • src/CST.hs, src/Sugar.hs, src/Render.hs: Type constructor removal may leave non-exhaustive pattern matches; verify all dependent code paths are handled.
    • test/SugarSpec.hs deletion: Confirms removal of comprehensive test coverage for sugar-to-salty logic; ensure no untested edge cases remain.
    • src/Misc.hs dispatch pattern simplification: Verify that collapsed ExDispatch matching still correctly identifies base objects across all test resources.
    • Namespace renaming consistency: Confirm all Φ.org.eolang.* references are updated in both implementation and test expectations (widespread but largely homogeneous).

Possibly related PRs

Poem

🐰 QQ hops away on the morning dew,
While org.eolang shrinks to just a few,
Φ.number, Φ.bytes, cleaner and bright—
The namespace simplifies, oh what a sight!
Sugar dissolves, and atoms align,
A tidy refactor, no longer a sign! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR contains one significant out-of-scope change: the deletion of SugarSpec.hs test file is not required by issue #551 and removes valuable test coverage unrelated to QQ removal. Reconsider the deletion of test/SugarSpec.hs as it appears to be an unrelated cleanup that removes comprehensive test coverage for the Sugar module's functionality.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'bug(#551): remove QQ from phino' directly and specifically describes the main objective of removing QQ syntax from the codebase, which is reflected throughout the changeset.
Linked Issues check ✅ Passed The PR successfully addresses issue #551 by removing QQ syntax entirely and updating all references to use Q instead, as well as moving org.eolang references to shorter paths, with comprehensive updates across code, tests, and documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d2ab7b5 and f64fe2c.

📒 Files selected for processing (36)
  • README.md (2 hunks)
  • phino.cabal (0 hunks)
  • src/CST.hs (0 hunks)
  • src/Dataize.hs (3 hunks)
  • src/Encoding.hs (0 hunks)
  • src/Misc.hs (1 hunks)
  • src/Parser.hs (0 hunks)
  • src/Render.hs (0 hunks)
  • src/Sugar.hs (0 hunks)
  • src/XMIR.hs (2 hunks)
  • test-resources/cli/desugar.phi (1 hunks)
  • test-resources/cst/printing-packs/jeo.yaml (2 hunks)
  • test-resources/cst/printing-packs/primitives-without-rhos.yaml (1 hunks)
  • test-resources/cst/to-ascii-packs/complex.yaml (2 hunks)
  • test-resources/cst/to-salty-packs/application-with-alphas.yaml (1 hunks)
  • test-resources/cst/to-salty-packs/application.yaml (1 hunks)
  • test-resources/cst/to-salty-packs/default-package.yaml (0 hunks)
  • test-resources/cst/to-salty-packs/primitives-with-rhos.yaml (2 hunks)
  • test-resources/cst/to-salty-packs/with-num-and-void-rho.yaml (1 hunks)
  • test-resources/parser-packs/all-the-basics.phi (1 hunks)
  • test-resources/parser-packs/ascii-with-braces.phi (1 hunks)
  • test-resources/parser-packs/ascii-with-global.phi (1 hunks)
  • test-resources/parser-packs/salty-fibo.phi (1 hunks)
  • test-resources/parser-packs/simple.phi (1 hunks)
  • test-resources/rewriter-packs/custom/desugar-fibo.yaml (2 hunks)
  • test-resources/rewriter-packs/custom/desugar-strings.yaml (1 hunks)
  • test-resources/rewriter-packs/custom/desugares-without-match.yaml (1 hunks)
  • test-resources/rewriter-packs/custom/desugares.yaml (1 hunks)
  • test-resources/rewriter-packs/custom/java-boxed-method.yaml (2 hunks)
  • test-resources/xmir-printing-packs/application.yaml (1 hunks)
  • test-resources/xmir-printing-packs/simple.yaml (1 hunks)
  • test/CLISpec.hs (4 hunks)
  • test/DataizeSpec.hs (4 hunks)
  • test/LiningSpec.hs (0 hunks)
  • test/ParserSpec.hs (1 hunks)
  • test/SugarSpec.hs (0 hunks)
💤 Files with no reviewable changes (9)
  • src/Encoding.hs
  • test-resources/cst/to-salty-packs/default-package.yaml
  • src/CST.hs
  • test/SugarSpec.hs
  • src/Sugar.hs
  • src/Render.hs
  • src/Parser.hs
  • test/LiningSpec.hs
  • phino.cabal
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: cabal (windows-2022)
  • GitHub Check: cabal (macos-15)
  • GitHub Check: stack (windows-2022)
  • GitHub Check: stack (macos-15)
🔇 Additional comments (36)
test-resources/rewriter-packs/custom/java-boxed-method.yaml (2)

52-52: LGTM! Pattern updated to match new input syntax.

The pattern's 𝜏-flag binding correctly reflects the updated syntax Φ.true, ensuring it matches the corresponding input values at lines 15 and 22.


15-15: Namespace simplification applied consistently across test inputs and rules.

The change from Φ̇.true to Φ.true is applied correctly at lines 15 and 22 in the input sequences (i95 and i96) and at line 52 in the rules pattern. No remaining references to the old syntax in YAML test files.

test-resources/cst/to-salty-packs/application-with-alphas.yaml (1)

10-26: LGTM! Namespace simplification is consistent.

The updates from Φ.org.eolang.number to Φ.number and Φ.org.eolang.bytes to Φ.bytes align with the PR's objective to simplify public API paths. The test expectations correctly reflect the new base paths.

test-resources/xmir-printing-packs/simple.yaml (1)

20-20: LGTM! XPath expectation updated correctly.

The XPath condition update from Φ.org.eolang.number to Φ.number correctly aligns with the namespace simplification across the codebase.

test-resources/parser-packs/ascii-with-global.phi (1)

12-12: LGTM! QQ removal is consistent.

The update from QQ.txt.sprintf to Q.txt.sprintf correctly implements the PR's objective to remove the QQ syntax.

test-resources/rewriter-packs/custom/desugares.yaml (1)

13-17: LGTM! Desugaring expectations updated correctly.

The desugaring output correctly reflects the simplified namespace paths (Φ.number and Φ.bytes), maintaining the correct structure while adopting the new base identifiers.

test-resources/parser-packs/all-the-basics.phi (1)

37-37: LGTM! Dotted variant removed correctly.

The change from Φ̇.number(42) to Φ.number(42) correctly standardizes on the non-dotted notation, aligning with the PR's namespace simplification objectives.

test-resources/cst/printing-packs/jeo.yaml (1)

22-22: LGTM! Dotted variant consistently removed.

Both occurrences of Φ̇.bytes correctly updated to Φ.bytes, standardizing the notation throughout the test expectations.

Also applies to: 38-38

test-resources/cst/to-salty-packs/with-num-and-void-rho.yaml (1)

9-16: LGTM! Namespace paths simplified correctly.

The test expectations correctly reflect the simplified namespace paths from Φ.org.eolang.number and Φ.org.eolang.bytes to Φ.number and Φ.bytes, maintaining correct structure and argument mappings.

test-resources/parser-packs/simple.phi (1)

1-1: Verify alignment with PR objectives: should this be Q instead of Q.org.eolang?

The PR objectives state "Move Q.org.eolang to Q" and "remove QQ syntax entirely." However, this change replaces QQ with Q.org.eolang rather than simply Q. Please confirm whether this intermediate form is intentional or if the mapping should be simplified to just Q to fully align with the stated objectives.

#!/bin/bash
# Verify if Q.org.eolang is used elsewhere or if Q is the target
rg -n "Q\.org\.eolang" --type yaml
rg -n "foo ↦ Q[^.]" --type yaml
test-resources/rewriter-packs/custom/desugar-strings.yaml (1)

14-38: LGTM! Namespace simplification is consistent.

The changes correctly update all string and bytes constructor references from the qualified Φ.org.eolang.* paths to the simplified Φ.* paths. The internal structure and byte values remain unchanged, which is correct for this refactoring.

test-resources/rewriter-packs/custom/desugares-without-match.yaml (1)

13-17: LGTM! Number constructor path correctly simplified.

The namespace update from Φ.org.eolang.number to Φ.number and Φ.org.eolang.bytes to Φ.bytes is consistent with the PR objective. The test data and custom rules remain properly structured.

test-resources/cst/to-salty-packs/application.yaml (1)

10-26: LGTM! Application test case correctly updated.

All constructor references have been properly simplified from Φ.org.eolang.* to Φ.*. The test structure, including alpha attribute mappings and byte values, remains intact as expected.

test-resources/cst/to-ascii-packs/complex.yaml (2)

17-17: LGTM! ASCII representation correctly updated.

The changes properly reflect:

  1. Removal of the dotted Φ variant (Φ̇ → Φ)
  2. Simplification of QQ to Q in ASCII format

Both transformations align with the PR objectives.

Also applies to: 30-30


9-9: org in line 9 is a user-defined binding, not a namespace reference.

The pattern Φ.org.ρ.φ correctly represents a binding named org with attributes ρ and φ accessed on it. This is confirmed by the expected output on line 25 (b -> Q.org.^.@), which maintains org as a binding while using different syntax to access its attributes. This is intentional.

README.md (2)

142-149: LGTM! Documentation example correctly updated.

The rewrite example now demonstrates the simplified namespace paths (Φ.io.stdout, Φ.string, Φ.bytes), which accurately reflects the implementation changes. This will help users understand the new API structure.


312-312: LGTM! Function documentation updated.

The concat function description correctly reflects the new simplified path format for the resulting expression.

test-resources/rewriter-packs/custom/desugar-fibo.yaml (1)

28-55: LGTM! Fibonacci test case correctly refactored.

All three number literal desugaring instances have been properly updated from Φ.org.eolang.number/Φ.org.eolang.bytes to the simplified Φ.number/Φ.bytes paths. The complex nested structure of the Fibonacci example is preserved, with only the namespace paths updated as intended.

src/Misc.hs (1)

78-86: Verify complete removal of nested org.eolang dispatch paths.

The simplification of matchBaseObject from a nested three-level dispatch pattern ExDispatch (ExDispatch (ExDispatch ExGlobal "org") "eolang") label to a direct single-level pattern ExDispatch ExGlobal label is complete. No code references the old nested dispatch structure for this function. Nested dispatch patterns in test files are legitimately used for testing other functions like fqnToAttrs, ParserSpec, and MatcherSpec, which handle arbitrary dispatch nesting depths independent of matchBaseObject.

test-resources/cst/to-salty-packs/primitives-with-rhos.yaml (2)

7-11: LGTM! Consistent namespace simplification.

The input program correctly updates all references from QQ.* to Q.*, consistently applying the namespace simplification across number, bytes, and string constructors.


16-29: LGTM! Result expectations properly updated.

The expected transformation output correctly reflects the new simplified base paths (Φ.number, Φ.bytes, Φ.string instead of Φ.org.eolang.*), ensuring test expectations align with the refactored public API.

test-resources/parser-packs/ascii-with-braces.phi (1)

13-13: LGTM! Namespace prefix updated correctly.

Both references correctly migrated from QQ.* to Q.* syntax (txt.sprintf and io.text), aligning with the removal of QQ as a special syntactic sugar.

Also applies to: 17-17

test-resources/cli/desugar.phi (1)

3-3: LGTM! Test input updated to remove QQ reference.

The mapping changed from QQ (removed syntax) to x (regular identifier), which correctly removes dependency on the deprecated QQ construct. Based on the AI summary, test/CLISpec.hs expectations have been updated accordingly.

test-resources/parser-packs/salty-fibo.phi (1)

8-11: LGTM! Namespace paths simplified consistently.

All numeric literal constructions in the fibonacci implementation correctly updated from Φ.org.eolang.number and Φ.org.eolang.bytes to the simplified Φ.number and Φ.bytes forms. The changes maintain the same structure and semantics while using the new public API paths.

Also applies to: 17-21, 26-31

test-resources/xmir-printing-packs/application.yaml (1)

14-15: LGTM! XPath assertions updated for new base identifiers.

The XPath selectors correctly updated to match the simplified base attributes (Φ.number and Φ.string instead of Φ.org.eolang.*), ensuring XMIR output validation aligns with the refactored namespace structure.

test/ParserSpec.hs (1)

218-218: LGTM! Proper test coverage for QQ prohibition.

The test correctly adds QQ usage to the prohibits list, ensuring that the removed QQ syntactic sugar is now properly rejected by the parser. This aligns with the PR objective to eliminate QQ syntax entirely.

test-resources/cst/printing-packs/primitives-without-rhos.yaml (1)

7-8: LGTM! Input program updated to use Q namespace.

The test input correctly migrates from QQ.* to Q.* syntax for number, bytes, and string constructors, consistent with the namespace simplification across the repository.

test/DataizeSpec.hs (4)

128-143: LGTM! Fahrenheit test updated with simplified atoms.

Test expectations correctly updated with simplified bytes and number constructors and atom labels (L_number_plus, L_number_times), aligning with the namespace simplification throughout the codebase.


149-171: LGTM! Factorial test simplified consistently.

All atom labels properly updated to use the simplified naming scheme (L_number_times, L_number_plus, L_number_eq), matching the pattern established in other test cases.


192-198: LGTM! Five test uses simplified constructors.

The test correctly uses the simplified number(as-bytes) and bytes(data) constructor forms, maintaining consistency with the broader namespace refactoring.


111-121: LGTM! Test structure simplified for clarity.

The test program structure correctly updated to use simplified constructors (bytes(data) and number(as-bytes)) instead of nested org.eolang paths, with atom labels updated to L_number_plus, L_number_times, and L_number_eq. These labels are properly mapped in src/Dataize.hs with correct dataization implementations, maintaining equivalent semantics while improving readability.

test/CLISpec.hs (4)

264-264: Test expectations correctly updated for QQ removal.

The updated expectations now reflect the simplified desugaring output (ξ.x instead of Φ.org.eolang.*), consistent with the PR objective of removing QQ and simplifying namespace paths.

Also applies to: 267-268


318-323: LaTeX output expectations correctly updated.

The change from QQ.z to Q.z in the expected LaTeX output aligns with the removal of the QQ syntax. The test input and expected output are consistent.


746-746: Merge test expectation updated.

The expected output {⟦ foo ↦ x ⟧} reflects the simplified representation after QQ removal.


611-611: Node count change in debug output is accurate for COPY transformation.

The reduction from 20 → 17 nodes (delta of 3 nodes) in the debug output is correct. This is the only node count change present in the test expectation.

Likely an incorrect or invalid review comment.

src/Dataize.hs (1)

113-113: Simplified global dispatch handling.

The new pattern directly handles ExDispatch ExGlobal (AtLabel label) by invoking phiDispatch, which aligns with the simplified namespace structure after QQ removal. This is cleaner than the previous nested dispatch pathway.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/XMIR.hs (1)

101-128: XMIR serialization for DataNumber and DataString lacks corresponding parsing support—this breaks round-trip consistency.

The serialization side correctly produces "Φ.number" and "Φ.string" identifiers, but the parsing logic (xmirToExpression) treats these as generic dispatch expressions instead of reconstructing the original DataNumber and DataString types. The xmirToExpression' function splits on "." and builds ExDispatch chains without special handling for "number" or "string" suffixes, causing loss of type information during parsing.

To maintain round-trip consistency, the parsing logic needs to detect and reconstruct DataNumber and DataString patterns from the simplified Φ.number and Φ.string base paths, similar to how the serialization currently distinguishes them during expression writing.

src/Dataize.hs (1)

212-243: Update README.md with new atom names.

The atom name changes in src/Dataize.hs are correctly applied, but README.md still references the old names L_org_eolang_number_plus (lines 177, 199). These must be updated to L_number_plus to maintain consistency with the PR objective of moving Q.org.eolang to Q.

  • README.md:177 — change L_org_eolang_number_plus to L_number_plus
  • README.md:199 — change L_org_eolang_number_plus to L_number_plus
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d2ab7b5 and f64fe2c.

📒 Files selected for processing (36)
  • README.md (2 hunks)
  • phino.cabal (0 hunks)
  • src/CST.hs (0 hunks)
  • src/Dataize.hs (3 hunks)
  • src/Encoding.hs (0 hunks)
  • src/Misc.hs (1 hunks)
  • src/Parser.hs (0 hunks)
  • src/Render.hs (0 hunks)
  • src/Sugar.hs (0 hunks)
  • src/XMIR.hs (2 hunks)
  • test-resources/cli/desugar.phi (1 hunks)
  • test-resources/cst/printing-packs/jeo.yaml (2 hunks)
  • test-resources/cst/printing-packs/primitives-without-rhos.yaml (1 hunks)
  • test-resources/cst/to-ascii-packs/complex.yaml (2 hunks)
  • test-resources/cst/to-salty-packs/application-with-alphas.yaml (1 hunks)
  • test-resources/cst/to-salty-packs/application.yaml (1 hunks)
  • test-resources/cst/to-salty-packs/default-package.yaml (0 hunks)
  • test-resources/cst/to-salty-packs/primitives-with-rhos.yaml (2 hunks)
  • test-resources/cst/to-salty-packs/with-num-and-void-rho.yaml (1 hunks)
  • test-resources/parser-packs/all-the-basics.phi (1 hunks)
  • test-resources/parser-packs/ascii-with-braces.phi (1 hunks)
  • test-resources/parser-packs/ascii-with-global.phi (1 hunks)
  • test-resources/parser-packs/salty-fibo.phi (1 hunks)
  • test-resources/parser-packs/simple.phi (1 hunks)
  • test-resources/rewriter-packs/custom/desugar-fibo.yaml (2 hunks)
  • test-resources/rewriter-packs/custom/desugar-strings.yaml (1 hunks)
  • test-resources/rewriter-packs/custom/desugares-without-match.yaml (1 hunks)
  • test-resources/rewriter-packs/custom/desugares.yaml (1 hunks)
  • test-resources/rewriter-packs/custom/java-boxed-method.yaml (2 hunks)
  • test-resources/xmir-printing-packs/application.yaml (1 hunks)
  • test-resources/xmir-printing-packs/simple.yaml (1 hunks)
  • test/CLISpec.hs (4 hunks)
  • test/DataizeSpec.hs (4 hunks)
  • test/LiningSpec.hs (0 hunks)
  • test/ParserSpec.hs (1 hunks)
  • test/SugarSpec.hs (0 hunks)
💤 Files with no reviewable changes (9)
  • src/Encoding.hs
  • test-resources/cst/to-salty-packs/default-package.yaml
  • src/CST.hs
  • test/SugarSpec.hs
  • src/Sugar.hs
  • src/Render.hs
  • src/Parser.hs
  • test/LiningSpec.hs
  • phino.cabal
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: cabal (windows-2022)
  • GitHub Check: cabal (macos-15)
  • GitHub Check: stack (windows-2022)
  • GitHub Check: stack (macos-15)
🔇 Additional comments (36)
test-resources/rewriter-packs/custom/java-boxed-method.yaml (2)

52-52: LGTM! Pattern updated to match new input syntax.

The pattern's 𝜏-flag binding correctly reflects the updated syntax Φ.true, ensuring it matches the corresponding input values at lines 15 and 22.


15-15: Namespace simplification applied consistently across test inputs and rules.

The change from Φ̇.true to Φ.true is applied correctly at lines 15 and 22 in the input sequences (i95 and i96) and at line 52 in the rules pattern. No remaining references to the old syntax in YAML test files.

test-resources/cst/to-salty-packs/application-with-alphas.yaml (1)

10-26: LGTM! Namespace simplification is consistent.

The updates from Φ.org.eolang.number to Φ.number and Φ.org.eolang.bytes to Φ.bytes align with the PR's objective to simplify public API paths. The test expectations correctly reflect the new base paths.

test-resources/xmir-printing-packs/simple.yaml (1)

20-20: LGTM! XPath expectation updated correctly.

The XPath condition update from Φ.org.eolang.number to Φ.number correctly aligns with the namespace simplification across the codebase.

test-resources/parser-packs/ascii-with-global.phi (1)

12-12: LGTM! QQ removal is consistent.

The update from QQ.txt.sprintf to Q.txt.sprintf correctly implements the PR's objective to remove the QQ syntax.

test-resources/rewriter-packs/custom/desugares.yaml (1)

13-17: LGTM! Desugaring expectations updated correctly.

The desugaring output correctly reflects the simplified namespace paths (Φ.number and Φ.bytes), maintaining the correct structure while adopting the new base identifiers.

test-resources/parser-packs/all-the-basics.phi (1)

37-37: LGTM! Dotted variant removed correctly.

The change from Φ̇.number(42) to Φ.number(42) correctly standardizes on the non-dotted notation, aligning with the PR's namespace simplification objectives.

test-resources/cst/printing-packs/jeo.yaml (1)

22-22: LGTM! Dotted variant consistently removed.

Both occurrences of Φ̇.bytes correctly updated to Φ.bytes, standardizing the notation throughout the test expectations.

Also applies to: 38-38

test-resources/cst/to-salty-packs/with-num-and-void-rho.yaml (1)

9-16: LGTM! Namespace paths simplified correctly.

The test expectations correctly reflect the simplified namespace paths from Φ.org.eolang.number and Φ.org.eolang.bytes to Φ.number and Φ.bytes, maintaining correct structure and argument mappings.

test-resources/parser-packs/simple.phi (1)

1-1: Verify alignment with PR objectives: should this be Q instead of Q.org.eolang?

The PR objectives state "Move Q.org.eolang to Q" and "remove QQ syntax entirely." However, this change replaces QQ with Q.org.eolang rather than simply Q. Please confirm whether this intermediate form is intentional or if the mapping should be simplified to just Q to fully align with the stated objectives.

#!/bin/bash
# Verify if Q.org.eolang is used elsewhere or if Q is the target
rg -n "Q\.org\.eolang" --type yaml
rg -n "foo ↦ Q[^.]" --type yaml
test-resources/rewriter-packs/custom/desugar-strings.yaml (1)

14-38: LGTM! Namespace simplification is consistent.

The changes correctly update all string and bytes constructor references from the qualified Φ.org.eolang.* paths to the simplified Φ.* paths. The internal structure and byte values remain unchanged, which is correct for this refactoring.

test-resources/rewriter-packs/custom/desugares-without-match.yaml (1)

13-17: LGTM! Number constructor path correctly simplified.

The namespace update from Φ.org.eolang.number to Φ.number and Φ.org.eolang.bytes to Φ.bytes is consistent with the PR objective. The test data and custom rules remain properly structured.

test-resources/cst/to-salty-packs/application.yaml (1)

10-26: LGTM! Application test case correctly updated.

All constructor references have been properly simplified from Φ.org.eolang.* to Φ.*. The test structure, including alpha attribute mappings and byte values, remains intact as expected.

test-resources/cst/to-ascii-packs/complex.yaml (2)

17-17: LGTM! ASCII representation correctly updated.

The changes properly reflect:

  1. Removal of the dotted Φ variant (Φ̇ → Φ)
  2. Simplification of QQ to Q in ASCII format

Both transformations align with the PR objectives.

Also applies to: 30-30


9-9: org in line 9 is a user-defined binding, not a namespace reference.

The pattern Φ.org.ρ.φ correctly represents a binding named org with attributes ρ and φ accessed on it. This is confirmed by the expected output on line 25 (b -> Q.org.^.@), which maintains org as a binding while using different syntax to access its attributes. This is intentional.

README.md (2)

142-149: LGTM! Documentation example correctly updated.

The rewrite example now demonstrates the simplified namespace paths (Φ.io.stdout, Φ.string, Φ.bytes), which accurately reflects the implementation changes. This will help users understand the new API structure.


312-312: LGTM! Function documentation updated.

The concat function description correctly reflects the new simplified path format for the resulting expression.

test-resources/rewriter-packs/custom/desugar-fibo.yaml (1)

28-55: LGTM! Fibonacci test case correctly refactored.

All three number literal desugaring instances have been properly updated from Φ.org.eolang.number/Φ.org.eolang.bytes to the simplified Φ.number/Φ.bytes paths. The complex nested structure of the Fibonacci example is preserved, with only the namespace paths updated as intended.

src/Misc.hs (1)

78-86: Verify complete removal of nested org.eolang dispatch paths.

The simplification of matchBaseObject from a nested three-level dispatch pattern ExDispatch (ExDispatch (ExDispatch ExGlobal "org") "eolang") label to a direct single-level pattern ExDispatch ExGlobal label is complete. No code references the old nested dispatch structure for this function. Nested dispatch patterns in test files are legitimately used for testing other functions like fqnToAttrs, ParserSpec, and MatcherSpec, which handle arbitrary dispatch nesting depths independent of matchBaseObject.

test-resources/cst/to-salty-packs/primitives-with-rhos.yaml (2)

7-11: LGTM! Consistent namespace simplification.

The input program correctly updates all references from QQ.* to Q.*, consistently applying the namespace simplification across number, bytes, and string constructors.


16-29: LGTM! Result expectations properly updated.

The expected transformation output correctly reflects the new simplified base paths (Φ.number, Φ.bytes, Φ.string instead of Φ.org.eolang.*), ensuring test expectations align with the refactored public API.

test-resources/parser-packs/ascii-with-braces.phi (1)

13-13: LGTM! Namespace prefix updated correctly.

Both references correctly migrated from QQ.* to Q.* syntax (txt.sprintf and io.text), aligning with the removal of QQ as a special syntactic sugar.

Also applies to: 17-17

test-resources/cli/desugar.phi (1)

3-3: LGTM! Test input updated to remove QQ reference.

The mapping changed from QQ (removed syntax) to x (regular identifier), which correctly removes dependency on the deprecated QQ construct. Based on the AI summary, test/CLISpec.hs expectations have been updated accordingly.

test-resources/parser-packs/salty-fibo.phi (1)

8-11: LGTM! Namespace paths simplified consistently.

All numeric literal constructions in the fibonacci implementation correctly updated from Φ.org.eolang.number and Φ.org.eolang.bytes to the simplified Φ.number and Φ.bytes forms. The changes maintain the same structure and semantics while using the new public API paths.

Also applies to: 17-21, 26-31

test-resources/xmir-printing-packs/application.yaml (1)

14-15: LGTM! XPath assertions updated for new base identifiers.

The XPath selectors correctly updated to match the simplified base attributes (Φ.number and Φ.string instead of Φ.org.eolang.*), ensuring XMIR output validation aligns with the refactored namespace structure.

test/ParserSpec.hs (1)

218-218: LGTM! Proper test coverage for QQ prohibition.

The test correctly adds QQ usage to the prohibits list, ensuring that the removed QQ syntactic sugar is now properly rejected by the parser. This aligns with the PR objective to eliminate QQ syntax entirely.

test-resources/cst/printing-packs/primitives-without-rhos.yaml (1)

7-8: LGTM! Input program updated to use Q namespace.

The test input correctly migrates from QQ.* to Q.* syntax for number, bytes, and string constructors, consistent with the namespace simplification across the repository.

test/DataizeSpec.hs (4)

128-143: LGTM! Fahrenheit test updated with simplified atoms.

Test expectations correctly updated with simplified bytes and number constructors and atom labels (L_number_plus, L_number_times), aligning with the namespace simplification throughout the codebase.


149-171: LGTM! Factorial test simplified consistently.

All atom labels properly updated to use the simplified naming scheme (L_number_times, L_number_plus, L_number_eq), matching the pattern established in other test cases.


192-198: LGTM! Five test uses simplified constructors.

The test correctly uses the simplified number(as-bytes) and bytes(data) constructor forms, maintaining consistency with the broader namespace refactoring.


111-121: LGTM! Test structure simplified for clarity.

The test program structure correctly updated to use simplified constructors (bytes(data) and number(as-bytes)) instead of nested org.eolang paths, with atom labels updated to L_number_plus, L_number_times, and L_number_eq. These labels are properly mapped in src/Dataize.hs with correct dataization implementations, maintaining equivalent semantics while improving readability.

test/CLISpec.hs (4)

264-264: Test expectations correctly updated for QQ removal.

The updated expectations now reflect the simplified desugaring output (ξ.x instead of Φ.org.eolang.*), consistent with the PR objective of removing QQ and simplifying namespace paths.

Also applies to: 267-268


318-323: LaTeX output expectations correctly updated.

The change from QQ.z to Q.z in the expected LaTeX output aligns with the removal of the QQ syntax. The test input and expected output are consistent.


746-746: Merge test expectation updated.

The expected output {⟦ foo ↦ x ⟧} reflects the simplified representation after QQ removal.


611-611: Node count change in debug output is accurate for COPY transformation.

The reduction from 20 → 17 nodes (delta of 3 nodes) in the debug output is correct. This is the only node count change present in the test expectation.

Likely an incorrect or invalid review comment.

src/Dataize.hs (1)

113-113: Simplified global dispatch handling.

The new pattern directly handles ExDispatch ExGlobal (AtLabel label) by invoking phiDispatch, which aligns with the simplified namespace structure after QQ removal. This is cleaner than the previous nested dispatch pathway.

@maxonfjvipon
Copy link
Member Author

@rultor merge

@rultor
Copy link
Contributor

rultor commented Dec 21, 2025

@rultor merge

@maxonfjvipon OK, I'll try to merge now. You can check the progress of the merge here.

@rultor rultor merged commit f64fe2c into objectionary:master Dec 21, 2025
19 checks passed
@rultor
Copy link
Contributor

rultor commented Dec 21, 2025

@rultor merge

@maxonfjvipon Done! FYI, the full log is here (took me 11min).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

let's get rid of QQ

2 participants