Relaxes the generated-filename PascalCase validator's uppercase-run cap
(>3 -> >4) so legitimate acronym type names (PluginAPIFlags, AuthNTLM)
stop crashing generation.
Fixes four compounding cross-module correctness bugs the larger tier-6
GIR set exposed at scale:
- The duplicate-of-dependency drop only checked simple-name collision,
wrongly dropping genuinely distinct C types that merely share a
post-namespace-stripping Swift name (Gst.Object/GstObject vs
GObject.Object/GObject, plus three tier-4/5 cases: Gdk.AppLaunchContext,
Gdk.Gravity, Gdk.Rectangle). Now also requires matching cType.
- Qualifying a cross-module reference as "GObject.X" broke wherever a
raw C struct also named GObject was in scope (every C target's import),
since Swift resolved the module name to the shadowing struct. GObject's
Support.swift now exports collision-free GLibObject/GLibValueArray
aliases used instead.
- Missing `override` keyword: added ancestor-method-selector detection
(name + parameter labels, same-module only, since none of these members
are open) so a subclass narrowing an ancestor's return type compiles.
- The pre-existing cross-module inherited-member dedup pass keyed
ancestors by bare Swift name; its cycle guard falsely self-terminated
once two classes shared a name, missing real inherited members (e.g.
GstObject's own ref()/unref() were never recognized as duplicating
GObject.Object's, producing an illegal redeclaration). Rewired to walk
by unambiguous GIR name via new ClassPlan.girName/parentGIRName fields.
Also fixes bitfield/enum-typed global constants (wraps the raw literal
in Type(rawValue:)) and a void-returning ref function
(gst_atomic_queue_ref, unlike GstBuffer/GObject's T*-returning
convention) via new RecordPlan.copyReturnsVoid.
Adds tier-6 smoke tests (Gst/Soup/Adw version calls against the real
linked libraries) and refreshes the tier-4/5 skip baselines for the
duplicate-detection fix's legitimate coverage growth. Zero skip-baseline
drift on tiers 1-6; 220/220 unit tests and all tier smoke suites pass.