UnigramDev/Unigram/tdlib-list-t • 828d784 • 2 files, +72/-30
Expose every TDLib vector to WinRT from the schema
SettingsStoragePage binds Statistics.ByChat to ItemsSource and threw
E_INVALIDARG. TG1001 cannot see it: a binding assigns through the declared
IList<T>, so the concrete type is only known at runtime. The schema does know
it, and both parsers materialise a vector as List<T>, so the generator emits
the registration for every one of them - 188, nested vectors included.
That also settles the arrays that were listed by hand. A vector is never an
array, so none of them could ever be reached, and removing them leaves TG1001
reporting exactly one: PremiumGiftPaymentOption[], which the app builds
itself.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
UnigramDev/Unigram/tdlib-list-t • 636c91d • 2 files, +53/-7
Flag the collection expressions no registration can fix
Targeting a read-only interface, a collection expression compiles to a type
the compiler makes up, and nothing can generate a vtable for that. TG1001
never reaches it: the target is typed, so its reasoning says the generator has
the conversion covered - but the marshaller it emits still needs a CCW for
whatever concrete type turns up.
There are two of them and the element count picks which, so a call site that
works with two elements can break when one is removed. Measured rather than
assumed, along with the targets that are safe: List, IList and ICollection all
produce a real List, a mutable interface needing a mutable instance. That also
retires the reason the generated API used IList - new[] { x } is no longer the
only short spelling.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
UnigramDev/Unigram/tdlib-list-t • 2c74f62 • 4 files, +285/-20
Expose the TDLib vector instantiations from real source
CsWinRT reads these attributes in its own generator, and a generator cannot
see what another generator wrote, so emitting them was a no-op: the storage
page still threw. TDAPI003 now compares the schema against the attributes
actually present, for the next time TDLib adds a vector.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
UnigramDev/Unigram/tdlib-list-t • 224de7f • 25 files, +106/-67
Expose TDLib object vectors as List<T>
Objects are read - bound to ItemsSource, iterated per render - so List makes
the concrete type visible to the analyzer, stops foreach boxing an enumerator
and lets the indexer inline. Functions are only ever written and serialised,
and keep IList. Constructors take IList either way, so arrays and collection
expressions still bind, and a parsed response is cast rather than copied.
AnimatedImage draws no shimmer when Outline is null, hence the shared empty.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
#unigram
UnigramDev/Unigram/tdlib-list-t • 828d784 • 2 files, +72/-30 Expose every TDLib vector to WinRT from
Telegram github commits and releases
@tgappsupdatesBroadcast from the most important Telegram clients' repositories
4,538 מנויים
פתח בטלגרם