Menu

SVN-Code Commit Log


Commit Date  
[r13036] by mikeaubury

An "object function" is no longer part of a class's dispatch table.

The grammar already marks these E_FTYPE_OBJECT and turns class lookup off
for them, but the code generator published every method the same way, so
a subclass's "object function sub" shadowed an inherited "function sub"
for ordinary instance calls. class.c now skips E_FTYPE_OBJECT in both
places it emits methods - memberFunctions[] and the
A4GL_add_datatype_function_i registrations - which leaves object
functions distinct from plain ones rather than a synonym for them.

Test 1818 passes. Suite: 1098 run, 23 failed, against 29 before today.

2026-09-01 17:32:07 Tree
[r13035] by mikeaubury

Fix negative DATETIME subtraction losing its magnitude.

Subtracting datetimes computed each field from the signed total, so a
negative difference gave every component its own minus sign:

seconds = -95703 -> "-1 -02:-35:-3"

which does not parse back, so the interval came out as zero with the sign
still attached - "-0 00:00" where "-1 02:35" was wanted. The positive
direction was always correct, which is why this went unnoticed.

Now the magnitude is split and a single leading sign applied. Test 1635
passes.

2026-09-01 17:11:08 Tree
[r13034] by mikeaubury

Fix tests 671, 672 and 673 - two defects in the tests themselves.

DATETIME FRACTION TO FRACTION is a degenerate qualifier and binding an
uninitialised one fails conversion, which aborted all three programs long
before they tested anything interesting. Removed those two fields; SECOND
TO SECOND and SECOND TO FRACTION are kept.

673 then failed with -217 on a second, older defect that the first had
been masking: its record field names and its CREATE TABLE column names had
drifted apart, and the explicit UPDATE/SELECT column lists used the record
spelling. Every name that differs is one the CREATE had shortened to fit
an 18 character identifier limit - aCharacterWithSize became
aCharacterWithSz, aIntervalMinPrecMin became aIntervalMinPreM, and so on -
so the lists asked for columns the table does not have. Corrected the 14
column-list entries; record definitions and r_. references are untouched.

All three now pass. Found with the debug trace restored in r13033.

2026-09-01 17:02:44 Tree
[r13033] by mikeaubury

Restore debug tracing, and make it the default again.

The runtime's tracing all sits inside #ifdef DEBUG, and nothing has been
defining DEBUG since the configure rewrite, so DEBUG=ALL has silently
produced nothing at all.

Three things were wrong. configure defaulted debug off, where the old
configure.in had it on unless --enable-optimised was given. --enable-debug
only added -g -O0 and never defined DEBUG, so the option did not work
either. And Makefile-common resets CFLAGS, so the flag cannot travel that
way - the template already had the right hook, DDEBUG=@DBGFLAG@, but
DBGFLAG was never substituted.

Now on by default, --enable-optimised to opt out. A run of test 671 that
previously gave no diagnostic at all now writes 450K of trace and names
the failing bind directly.

2026-09-01 16:55:09 Tree
[r13032] by mikeaubury

Mark the eight broken/invalid tests as expected failures.

484 491 527 674 contain no .4gl and no .expected at all - the directories
are empty, so there is nothing to run. 545 546 547 548 are CREATE/DROP
DATABASE tests whose own descriptions say the test is invalid.

All eight already declare obsolete_test=1, and functions_inc.sh has a skip
for that (IS_OBSOLETE_TEST), but it never fires - runs still report
Skipped: 0 and count them as failures. Listing them here uses the
mechanism that works; they can come back out if the skip is ever fixed.

Takes the unexpected-failure count from 18 to 10.

2026-09-01 13:29:59 Tree
[r13031] by mikeaubury

Test 1705 (ansi outer join) passes - drop it from the expected-to-fail lists.

Verified under -esqli -tui. It was listed in both the shared list and the
esqli one, and the shared list is unioned into every configuration, so it
had to come out of both.

2026-09-01 09:51:45 Tree
[r13030] by mikeaubury

Bump version to 1.8.1.

configure is regenerated along with it. configure.ac reads the version
with m4_esyscmd_s at autoreconf time, so a bump needs autoreconf before
configure - otherwise the build keeps writing plug-ins to the old
plugins-<version> directory while the runtime, which gets its version
from lib/generated/project.c at make time, looks in the new one.

2026-09-01 08:36:55 Tree
[r13029] by mikeaubury

Optional, consent-based build reporting in configure.

configure can now send one line to the project saying that a build
happened and which back ends were detected, so we have some idea how
many people build Aubit and which drivers are still worth maintaining.

It only asks on a terminal, defaults to no, and never runs in a scripted
or CI build. --enable-usage-report sends without asking,
--disable-usage-report never asks, and DO_NOT_TRACK is honoured. The
prompt shows exactly what would be sent, and nothing is sent when
building or running programs afterwards - only here, and only on a yes.

Note the prompt reads /dev/tty rather than stdin. Autoconf detaches
stdin near the top of every generated configure

test -n "$DJDIR" || exec 7<&0 </dev/null

so that configure can never block on input, which means a prompt reading
stdin silently does nothing at all.

2026-09-01 08:21:54 Tree
[r13028] by mikeaubury

Test 217: put the test's own directory on the library path.

217 builds libprog2.so with "4glpc --as-dll" and links prog.4gl against
it, but nothing added that directory to LD_LIBRARY_PATH and the program
carries no rpath, so it died with "cannot open shared object file". That
is what the README.fail has meant since 2004 by "don't know why yet".

Also drops 240 from EXPECT_TO_FAIL_TESTS - the USING fix in r13027 makes
it pass.

2026-08-31 19:28:39 Tree
[r13027] by mikeaubury

Fix USING floating signs and the window message line.

USING: a floating sign was landing in the wrong column. Informix puts it
on the rightmost of its own mask positions that the digits and currency
symbol have not taken, and a single occurrence does not float at all.

---,###.## -12.34 " - 12.34" its positions are 1-3 only
----,--$.&& -123.45 " -$123.45" 6-7 hold digits, so it stops at 4
(($$,$$$.&&) -1.23 " ( $1.23)" the paren stops at its own pair

A suppressed thousands separator counts as one of those positions only
where the run of signs carries on past it. Test 240 now passes and comes
off the expected-to-fail list, verified with -esqli -tui.

Message line: a message line past the bottom of a window was clamped to
the last line; Informix uses the first line inside the window. The
correct behaviour was already there behind MSGLINEFIXUP but was not the
default. Test 230 matches all 28 of its captured Informix screens now.
Set MSGLINEFIXUP to keep the old clamp.

Suite: 1098 run, 29 failed, against 32 before.

2026-08-31 19:28:25 Tree
Older >