Skip to content

Reproducer projects for bug reports, check_run for code samples, and a COM Interfaces section - #218

Merged
KubaO merged 35 commits into
twinbasic:mainfrom
KubaO:staging
Oct 3, 2026
Merged

KubaO merged 35 commits into
twinbasic:mainfrom
KubaO:staging

Conversation

@KubaO

@KubaO KubaO commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

Puts a reproducer project behind every bug report, runs documentation samples and checks what they print, and adds a Custom Enumerators page and a COM Interfaces section.

  • bugs: scripts/bug_repro.mjs (new) gives each entry of BUGS-TO-REPORT.md a reproducer under bugs/<slug>/: a source tree, the .twinproj packed from it, and a repro.json saying what a reproduction looks like. new can start from a template, such as a form with a WebView2 control; verify asks the newest beta whether each still reproduces; file moves a filed entry to bugs/filed/. 45 entries have one: 28 filed, each citing its GitHub issue, and 17 queued.
  • scripts: tbrun --llvm compiles the probe with LLVM, and --exe also builds it and runs the exe. tbrun exits 5 when the probe ended before it returned, and 6 when the exe exited non-zero or outlived --timeout. tbbuild and check_examples gain --build and --llvm, because a compile asks only the front end and code generation runs in a build. Each IDE gets a temp folder of its own: builds sharing one failed to write the type library in 8 of 192, against 0 of 192 with a folder each.
  • check_examples: check_run (new) builds and runs a statement sample and compares what it prints with the page: a trailing comment on a Debug.Print line, or the comment lines under ' Output:. A Sub Main in a class slot is now a finding, and the Form, MDIForm and NamedPipeServer samples that had one are split.
  • docs: a Custom Enumerators page ([Enumerator], writing an IEnumVARIANT, what For Each calls) and a COM Interfaces section, whose first page, IEnumVARIANT, gives each method's contract and a full enumerator: 914 to 917 pages. InStr, InStrRev and those two pages carry the first check_run samples.
  • docs, corrections:
    • InStr and InStrRev list their return values in the order they apply, as VB6 and BETA 995 give them; InStrRev raises 94 on Null.
    • Line's F fills with the outline colour and B alone with FillColor and FillStyle, on all six drawing surfaces.
    • Forms(i) can return another object, depending on the expression around it. Static with a constructor fails only when the class is declared later.
    • The LLVM page says an error is lost between procedures when either is LLVM-compiled, and that a handled Err.Raise in an LLVM procedure reads back as &HEAEAEA01.
    • The WebView2 header pages warn that For Each over headers crashes in BETA 995, and name GetHeader and Contains instead.
  • docs, rule: the docs state what twinBASIC does, never that it was measured, probed or observed; the pages that broke the rule are reworded.

bug_repro verify and check_run need a twinBASIC install, so they stay outside every gate and CI, like examples.bat. check_run's probes need none and run in test.bat.

KubaO added 30 commits October 1, 2026 19:42
…; the Desktop heading without its instruction
…licate-names-shipped verified from the install
…n return another object, and the expression decides; the filed report records the narrowing
…ds the kept IDE, for cmd and PowerShell and for Git Bash
…e after the sentinel no longer reads as exit 5
…or/FillStyle, on all six drawing surfaces, as VB6 and Graphics.twin do
…res what they print with the page; tbrun's capture moves to lib/tb-run.mjs
…handler per call; a sample that handles its own error returns with Err still set, in VB6 and twinBASIC
…BETA 995 give them; InStrRev raises 94 on Null; check_run examples
… For Each's calls), linked from For Each and Attributes; Attributes' example returns [_NewEnum], as VB6 needs
…tion.Next (null pCeltFetched), with a run-mode reproducer
KubaO added 5 commits October 3, 2026 20:12
… its twinBASIC declarations, how For Each calls it, and a full enumerator; Custom Enumerators links it
…-form: a form with one WebView2 control); run's probe clears the harness's WEBVIEW2_* variables while Main runs
…n BETA 995, and name GetHeader and Contains instead
…measured, probed or observed; applied to the pages
@KubaO
KubaO merged commit 704cee9 into twinbasic:main Oct 3, 2026
1 check passed
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.

1 participant