Resolves the TStringList.Objects / TList<T> retention question from the bug backlog as an explicit design decision (language-rationale, 'Collection Ownership'): - TList<T>/TStack<T>/TQueue<T> managed elements ARE retained on store — this already works (generic stores lower to ARC-aware pointer writes); TE2ETListTests.TestRun_TList_ClassElements_RetainedAcrossScope now pins it on both backends (object survives its creating scope). - TStringList.Objects[] stays NON-OWNING by design: the API type is Pointer and the integer-cast idiom (TObject(PtrUInt(N)), used in 27 places in the compiler itself) makes blind retention impossible. Convention documented at the declaration and in the rationale. - Known limitation recorded: generic Clear/Destroy do not yet release remaining managed elements (needs a Default(T)-style zero-store); tracked in the leak backlog. Suite: 2946 OK; FIXPOINT_OK; NATIVE_FIXPOINT_OK. |
||
|---|---|---|
| .. | ||
| benchmark.txt | ||
| bif-format.adoc | ||
| design.adoc | ||
| extending-ast.adoc | ||
| future-improvements.adoc | ||
| grammar.ebnf | ||
| language-rationale.adoc | ||
| name-mangling.adoc | ||
| native-const-arg-arc-port.adoc | ||
| testing-strategy.adoc | ||