Skip to content

Four COM Interfaces pages, vb6run, 13 new bug reproducers, and a faster waitForCompile - #219

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

KubaO merged 17 commits into
twinbasic:mainfrom
KubaO:staging

Conversation

@KubaO

@KubaO KubaO commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

Adds four COM Interfaces pages, a tool that runs documentation samples in VB6, and 13 bug entries with reproducers, and shortens the IDE compile wait.

  • docs: COM Interfaces gains IUnknown, IDispatch, IErrorInfo and IConnectionPoint (each with its companion interface), checked on BETA 995: 917 to 921 pages.
  • docs, corrections:
    • ObjPtr returns the pointer of the interface the variable is declared as, not the IUnknown identity; Is tests identity.
    • Err.Raise states its defaults (Source empty, Description from the number, an omitted argument reset), and Raise, Source and Description list the VBA differences.
    • A call through stdole.IDispatch is late-bound by name and raises &H80020006; it does not end the run.
    • ErrorContext, ErrorCallstack and ErrorStackFrame say that no code can obtain them on BETA 995.
  • bugs: 13 new entries, each with a run-mode reproducer (late-bound calls issued twice, error 438, Err.Raise defaults, IConnectionPoint crashes and HRESULTs, New on an Interface). Filed upstream and moved to bugs/filed/: the two enumerator entries (IEnumConnections.Next returns one item when asked for two with two connections present twinbasic#2461, The IEnumConnectionPoints of a twinBASIC class raises E_FAIL at the end of the list, and Skip and Clone raise E_NOTIMPL twinbasic#2462) and the earlier wv2-headers-foreach-crash (For Each over WebView2 request or response headers crashes in WebView2HeadersCollection.Next twinbasic#2460). 45 reproducers become 58: 31 filed, 27 queued.
  • vb6run: scripts/vb6run.mjs (new) builds and runs VB6 code without a shell, from a file or with --docs, which builds the check_run fences in VB6 and reports each as same, differs, not VB6, error or refused. A projname= group becomes a VB6 project of its own. Nothing can open a dialog: Debug.Print is rewritten to Print #, the build is unattended, and a sample that calls MsgBox or InputBox or contains End is refused.
  • bug_repro: a reproducer can hold a vb6/ project. new --with-vb6 makes it, pack zips it as <slug>-vb6.zip, and vb6 builds and runs it in a temp copy. Six reproducers have one, the two enumerators among them, where VB6 follows the contract on every call.
  • tb-ide: waitForCompile ends once the page's traffic, read through CDP (tb-wire.mjs, new), shows the compile has ended and the window agrees, with the five-second still check as fallback. An IDE start per project goes from 8–11 s to 6–8 s, and examples.bat from about 120 s to 80 s.
  • tb-click: a click throws, naming the element, when its press lands outside the target, and scrolls a target only when part of it is hidden. The assert lane now waits for the error panel to stop moving before it presses Stop.

vb6run and bug_repro vb6 need VB6, and waitForCompile a twinBASIC install, so they stay outside every gate and CI, like examples.bat. The probes and command-line cases for the VB6 tools need no VB6 and run in test.bat.

KubaO added 17 commits October 3, 2026 21:12
… CDP, shows the compile has ended and the window agrees; about 5 s less per project
…rtErrorInfo and IConnectionPoint/IConnectionPointContainer, checked on BETA 995; ObjPtr returns the declared interface's pointer, not the IUnknown identity
… or --docs to compare the check_run fences with VB6; probes and command-line cases
…h a run-mode reproducer (995); Raise, Source and Description state twinBASIC's Err.Raise defaults, with the VBA differences; IDispatch: stdole.IDispatch calls are late-bound by name
…, which follows the contract on every call; VB6 project in bugs/enum-connections-one-item/vb6/
… own, slot=file fences translated to class and standard modules
…d run with 'bug_repro vb6' through lib/vb6.mjs; new --with-vb6; the three VB6 comparisons moved into their reproducers
…efaults, inherited ones crash (995, 983); reproducer bugs/new-on-interface/
@KubaO
KubaO merged commit 412b393 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