This is an automated email from the ASF dual-hosted git repository. jimjag pushed a commit to branch openformula in repository https://gitbox.apache.org/repos/asf/openoffice.git
commit 1166e081342a169232edc7c7a50355039e3fcb6d Author: Jim Jagielski <[email protected]> AuthorDate: Fri Nov 13 09:21:45 2026 -0500 odf_docs: correct the OpenFormula notes after the INDEX and SKEW reverts Also fixes two expected values in the Small Group test inventory. --- odf_docs/openformula-conformance.md | 4 ++-- odf_docs/openformula-milestone-a-report.md | 3 +++ odf_docs/openformula-milestone-b-report.md | 3 +++ odf_docs/openformula-modernization-plan.md | 8 ++++---- odf_docs/openformula-small-group-1.4-tests.tsv | 4 ++-- odf_docs/openformula-small-group-test-plan.md | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/odf_docs/openformula-conformance.md b/odf_docs/openformula-conformance.md index 9bb04e8b72..f67733449d 100644 --- a/odf_docs/openformula-conformance.md +++ b/odf_docs/openformula-conformance.md @@ -55,7 +55,7 @@ AOO does not claim the Small Group. However, the Small Group audit (`openformula |------|-------------|----------------|--------| | DATE pre-1583 | #VALUE! before 15 Oct 1582 | impl-defined (§7.4) | IMPLEMENTATION-DEFINED:155; KNOWN-LIMITATIONS:74 | | CONVERT atm | Fixed: 101325.1 Pa | Matches ODF 1.4 table | Fixed in Milestone C; KNOWN-LIMITATIONS:72 | -| INDEX row-vector single-arg | Fixed: error per ODF 1.4 | Error (ODF 1.4 removed rule) | Fixed in Milestone A; KNOWN-LIMITATIONS:71 | +| INDEX row-vector single-arg | Returns the column (legacy rule kept) | Error (ODF 1.4 removed rule) | Known deviation; the Milestone A change was reverted; KNOWN-LIMITATIONS:71 | | Trailing empty param (`NPER(;;)`) | error except IF | ODF 1.4 rule | KNOWN-LIMITATIONS:73 | | Error cells on save | written as `office:value-type="string"` | ODF 1.4 adds `error` type (no `office:error` attr) | KNOWN-LIMITATIONS producer:2 | @@ -63,7 +63,7 @@ AOO does not claim the Small Group. However, the Small Group audit (`openformula - **Claimed conformance group: none.** AOO does not claim Small/Medium/Large. - **Confirmed missing functions: none.** All 110 Small Group functions (§2.3.2.E) are implemented. IFNA (Large Group) and SKEWP (Medium Group) were implemented in Milestone B. -- **Confirmed semantic discrepancies vs ODF 1.4:** INDEX row-vector rule (corrected in Milestone A), CONVERT `atm` (corrected in Milestone C), EASTERSUNDAY naming alias (behavior correct). +- **Confirmed semantic discrepancies vs ODF 1.4:** INDEX row-vector rule (kept as a known deviation; the Milestone A change was reverted), CONVERT `atm` (corrected in Milestone C), EASTERSUNDAY naming alias (behavior correct). - **Cannot certify any group** without runtime testing every mandatory requirement against the ODF 1.4 Part 4 normative text. ## 8. Recommended next step for conformance diff --git a/odf_docs/openformula-milestone-a-report.md b/odf_docs/openformula-milestone-a-report.md index e65ecfc65b..12bc731e5b 100644 --- a/odf_docs/openformula-milestone-a-report.md +++ b/odf_docs/openformula-milestone-a-report.md @@ -127,6 +127,9 @@ Result table (ODF 1.4, §6.14.6), using the sheet data documented in the test fi ## 5. INDEX compatibility findings and decision +**Update:** this decision was reversed later. `ScIndex` keeps the legacy row-vector rule, +`INDEX(H1:L1;3)` returns 30 again, and the case is listed as a known deviation. + **Finding:** AOO retains no document/formula-version information that `INDEX` evaluation can branch on. `ScDocOptions` (docoptio.hxx) tracks only formula-related toggles such as `bFormulaRegexEnabled`; there is no ODF 1.2 / 1.3 / 1.4 formula conformance setting per diff --git a/odf_docs/openformula-milestone-b-report.md b/odf_docs/openformula-milestone-b-report.md index 34fcfc8be9..992929cce9 100644 --- a/odf_docs/openformula-milestone-b-report.md +++ b/odf_docs/openformula-milestone-b-report.md @@ -89,6 +89,9 @@ When a direct error argument (e.g. `1/0`) was passed, `svError` fell into `CalculateSkew()`'s `default` → `SetError(errIllegalParameter)`, replacing the original error (e.g. `#DIV/0!`) with a generic "illegal parameter" error. +**Update:** both `CalculateSkew()` changes were taken out again later. Direct text is an +error, which ODF 1.4 allows, and `SKEW(1/0)` returns `#DIV/0!` without the `svError` case. + ## 4. Files Changed and Purpose | File | Change | Purpose | diff --git a/odf_docs/openformula-modernization-plan.md b/odf_docs/openformula-modernization-plan.md index 42f320593e..dede4f6182 100644 --- a/odf_docs/openformula-modernization-plan.md +++ b/odf_docs/openformula-modernization-plan.md @@ -1,6 +1,6 @@ # OpenFormula Modernization Plan — Apache OpenOffice Calc -AUDIT ONLY — no production code changes authorized in this phase. This plan is a prioritized roadmap derived from source evidence. Priority is by interoperability impact, not implementation convenience. +Written as an audit-only plan; later milestones did change production code, see the milestone reports. This plan is a prioritized roadmap derived from source evidence. Priority is by interoperability impact, not implementation convenience. Source-of-truth: `openformula-functions.tsv`, `openformula-operators.tsv`, `openformula-semantics.md`, `openformula-odf13-14-diff.md`, `openformula-conformance.md`, `openformula-test-gap-analysis.md`. @@ -23,11 +23,11 @@ Source-of-truth: `openformula-functions.tsv`, `openformula-operators.tsv`, `open - Files: `main/scaddins/source/analysis/analysishelper.cxx`. - Status: Complete. -**P2.2 INDEX row-vector single-argument** — Fixed in Milestone A. -- AOO previously returned column (legacy); ODF 1.4 requires error for single-arg row vector. +**P2.2 INDEX row-vector single-argument** — Milestone A change reverted. +- AOO returns the column (legacy); ODF 1.4 requires error for single-arg row vector. - Work: Regression-test against existing document corpus; consider compatibility option if needed. - Files: `main/sc/source/core/tool/interpr1.cxx` (ScIndex). -- Status: Implemented; regression risk documented. +- Status: Not changed. AOO keeps the legacy rule (returns the column), listed as a known deviation. **P2.3 BITAND/BITOR/BITXOR variadic & BITLSHIFT/BITRSHIFT negative shift** - Gap: `ScBitArithmeticOps` enforces exactly 2 params (`interpr1.cxx:1180`); `ScBitShiftOps` handles negative shift counts. diff --git a/odf_docs/openformula-small-group-1.4-tests.tsv b/odf_docs/openformula-small-group-1.4-tests.tsv index 2cdaae78de..5f4702d151 100644 --- a/odf_docs/openformula-small-group-1.4-tests.tsv +++ b/odf_docs/openformula-small-group-1.4-tests.tsv @@ -24,7 +24,7 @@ SG-SYN-003 5.3 SYN-003-sci =1.5e2 150 - UNVERIFIED Scientific notation literal SG-SYN-004 5.4 SYN-004-string ="hello" s:hello - UNVERIFIED String literal SG-SYN-004 5.4 SYN-004-quote ="he said ""hi""" s:he said "hi" - UNVERIFIED Quote escaping in string SG-SYN-005 5.5 SYN-005-precedence =2+3*4 14 - UNVERIFIED Operator precedence: * before + -SG-SYN-005 5.5 SYN-005-power =2^3^2 512 - UNVERIFIED Power operator right-associativity +SG-SYN-005 5.5 SYN-005-power =2^3^2 64 - UNVERIFIED Power operator left-associativity (5.5 Note 1) SG-SYN-006 5.6 SYN-006-func =ABS(-5) 5 - UNVERIFIED Function call with argument SG-SYN-007 5.7 SYN-007-nonstandard =NONEXISTENT() #ERR - UNVERIFIED Nonstandard function name error SG-SYN-008 5.8 SYN-008-ref =D1 10 - UNVERIFIED Cell reference resolves value (D1=10 per calcval fixture) @@ -56,7 +56,7 @@ SG-OP-014 6.4.11 OP-014-range =SUM(D1:D3) 60 - UNVERIFIED Reference range (D1:D3 # ===== Implicit Conversions (§6.3) ===== SG-CONV-001 6.3.14 CONV-001-text =TEXT(123;"0") s:123 - UNVERIFIED Number to text conversion SG-CONV-002 6.3.5 CONV-002-number =VALUE("123") 123 - UNVERIFIED Text to number conversion -SG-CONV-003 4.8 CONV-003-ref =N(A1) 10 - UNVERIFIED Reference to scalar conversion (A1=10) +SG-CONV-003 4.8 CONV-003-ref =N(D1) 10 - UNVERIFIED Reference to scalar conversion (D1=10) SG-CONV-004 6.3.12 CONV-004-logical =N(TRUE) 1 - UNVERIFIED Logical to number conversion SG-CONV-004 6.3.12 CONV-004-logical2 =IF(0;TRUE;FALSE) FALSE - UNVERIFIED Number to logical conversion (0 = FALSE) SG-CONV-005 5.12 CONV-005-error =ISERR(1/0) TRUE - UNVERIFIED Error propagation: division by zero diff --git a/odf_docs/openformula-small-group-test-plan.md b/odf_docs/openformula-small-group-test-plan.md index 5d1909a31f..b173f0963d 100644 --- a/odf_docs/openformula-small-group-test-plan.md +++ b/odf_docs/openformula-small-group-test-plan.md @@ -54,7 +54,7 @@ Each calcval case has 5 tab-separated columns: |----------|------|------------|-----------| | 1 | COUNTA/COUNTBLANK empty cells / empty string | `COUNTA.empty`, `COUNTA.emptystr`, `COUNTBLANK.empty`, `COUNTBLANK.range` (calcval14) and corresponding SG tests | ODF 1.4 §6.13.7 counts `""` as non-blank; §6.13.8 `""`-in-cell is impl-defined and not directly reproducible with current calcval fixtures | | 2 | DATE out-of-constraint/pre-1583 | `DATE.pre1583` / `FN-016-DATE-pre1583` | §6.10.2 constrains Year>=1904; `DATE(1500;1;1)` is impl-defined/diagnostic (not mandatory `#ERR`) | -| 3 | INDEX row-vector | `INDEX.rowvec.single`, `INDEX.rowvec.colarg`, `INDEX.row.outrange` | Milestone A fix; regression risk for legacy documents | +| 3 | INDEX row-vector | `INDEX.row.rowonly`, `INDEX.row.empty`, `INDEX.row.outrange` | Legacy rule kept as a known deviation (Milestone A change reverted) | | 4 | Bitwise functions | `BITLSHIFT.neg`, `BITRSHIFT.neg`, `BITAND.3params` | Parameter count and negative shift behavior | | 5 | Parser/operators | `SYN-005-precedence`, `SYN-005-power`, `OP-006-div0` | Operator precedence and associativity |
