| Commit | Date | |
|---|---|---|
|
[r13101]
by
mikeaubury
Fix mk_states_opt.c so it builds with gcc 14 Three pieces of pre-C99 style that newer compilers no longer accept, reported main() { -> int main (void) Implicit int was removed from the language in C99 and gcc 14 rejects it error: return type defaults to 'int' [-Wimplicit-int] get_nints is used only in this file, so static both silences the This program generates the parser state table, so the old and new versions were |
2026-09-07 15:11:55 | Tree |
|
[r13100]
by
mikeaubury
C# back end: reject a GOTO that jumps into a block C# allows a goto to leave blocks but not to enter one: the label has to be in error CS0159: No such label 'x' within the scope of the goto statement against generated code, which takes some tracing before it is clear that the | Error at line 529, character 19 Every command list is a block: entering one pushes a fresh id and leaving pops The prefix test is the point. Comparing nesting depth is not enough: in the A goto to a label that is declared nowhere is left alone. That is a different Checked against 160 programs: no program that compiled before fails now, and |
2026-09-07 10:33:05 | Tree |
|
[r13099]
by
mikeaubury
C# back end: a switch needs its labels to be the subject's type 4GL will test an INTEGER against "1", converting as it goes. C# requires the Where the subject and its labels disagree about being character data, the |
2026-09-06 13:53:00 | Tree |
|
[r13098]
by
mikeaubury
C# back end: restore three fixes lost to a revert These were committed in r13095 and then reverted out of the working copy while - a struct with a field initialiser needs an explicit parameterless The lesson is narrower than it looks: revert takes the whole file, so undoing |
2026-09-06 13:47:01 | Tree |
|
[r13097]
by
mikeaubury
C# back end: type a function from its widest RETURN A function not covered by the prototypes has its signature worked out by It now keeps the RETURN that yields the most values, matching how the compiler |
2026-09-06 13:16:19 | Tree |
|
[r13096]
by
mikeaubury
Choose deliberately between a function's return shapes A 4GL function may return different things on different paths - a value on one The widest now wins: a function returning SMALLINT on one path and DECIMAL on Ordering is SMALLINT < INTEGER < INT8 < DECIMAL < FLOAT < CHAR, comparing at No change to the C back end's output on the example suite - it accepts either |
2026-09-06 13:08:55 | Tree |
|
[r13095]
by
mikeaubury
C# back end: make ORDER BY reports compile The ordered report path was almost complete - it creates the temp table, - the reread cursor was used and never declared. Ordinary cursors become A4GL_cs_module_prefix exports that prefix for compile_cs_sql.c, which generates A report with an ORDER BY now compiles. Whether its rows come back sorted has |
2026-09-06 13:03:59 | Tree |
|
[r13094]
by
mikeaubury
C# runtime: date arithmetic, blob fetch, and two missing entry points DateAdd and DateDiff. A DATE is a day count in 4GL - day 0 is 31 December 1899 GetData(out byte[]?, int) for BYTE and TEXT columns. The generator used to pass UI.ClearWindow: the protocol message existed and the entry point did not. A report's COLUMN takes whatever the 4GL gave it, commonly a SMALLINT, rather |
2026-09-05 22:00:36 | Tree |
|
[r13093]
by
mikeaubury
C# back end: report generation fixes A report is emitted as a nested class, so the module's own members are not in startReportOrdered and finishReportReordered were called by the ORDER BY path outputMode was assigned unqualified in one place when it is a field on the "while (1)" is not a condition in C#. Note: r13092 carried more than its message describes. Besides the RUN ... |
2026-09-05 21:59:56 | Tree |
|
[r13092]
by
mikeaubury
C# back end: close the wrapper on RUN ... RETURNING decode_varbind in 'w' mode opens a conversion around an assignment target - L_stat = AsSmallInt(Fgl.ExecuteCmd(L_cmd); That is a parse error, so it took the whole module's diagnostics with it and |
2026-09-05 21:59:13 | Tree |