Bug 19285 – false positive GC inferred

Status
RESOLVED
Resolution
FIXED
Severity
major
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2018-10-02T21:31:49Z
Last change time
2022-06-09T04:12:51Z
Keywords
pull
Assigned to
No Owner
Creator
Eyal

Comments

Comment #0 by eyal — 2018-10-02T21:31:49Z
No GC is actually used here: void f(bool cond, string s) @nogc { auto inner() { return s; } alias Unused1 = typeof(inner); // OK alias Unused2 = typeof(&inner); // INFERS GC } This is especially interesting when trying to use functionAttribute!inner and others that internally "take address" (not really) of the given function and wrongly infer GC is needed.
Comment #1 by dlang-bot — 2022-06-08T23:33:53Z
@maxhaton created dlang/dmd pull request #14195 "Fix Issue 19285 - False GC positive caused by AddressOf inside typeof…" fixing this issue: - Fix Issue 19285 - False GC positive caused by AddressOf inside typeof polluting global semantic state. https://github.com/dlang/dmd/pull/14195
Comment #2 by dlang-bot — 2022-06-09T04:12:51Z
dlang/dmd pull request #14195 "Fix Issue 19285 - False GC positive caused by AddressOf inside typeof…" was merged into master: - b06afb8bfebbb31d675171c7e7840bf0d40155e0 by mhh: Fix Issue 19285 - False GC positive caused by AddressOf inside typeof polluting global semantic state. This patch also adds a new method isFromSpeculativeSemanticContext to the Scope struct to avoid repition of this logic in the compiler. https://github.com/dlang/dmd/pull/14195