Thread overview
[Issue 22310] Template instantiation failures can be *very* costly
Sep 15
kinke
Sep 15
kinke
Sep 15
kinke
Sep 15
Dlang Bot
Sep 21
Dlang Bot
September 15
https://issues.dlang.org/show_bug.cgi?id=22310

--- Comment #1 from kinke <kinke@gmx.net> ---
(In reply to kinke from comment #0)
> Note that failing to instantiate BooleanTypeOf!T for non-bool T also seems to lead to all successfully instantiated templates in there not to be cached (AliasThisTypeOf!T, OriginalType!T).

Scratch that, OriginalType!T *is* cached, only AliasThisTypeOf!T isn't,
possibly because of the speculative instantiation inside `static if (is(...))`.

--
September 15
https://issues.dlang.org/show_bug.cgi?id=22310

--- Comment #2 from kinke <kinke@gmx.net> ---
(In reply to kinke from comment #1)
> only AliasThisTypeOf!T isn't,
> possibly because of the speculative instantiation inside `static if
> (is(...))`.

... and scratch that too - that's most likely just another manifestation of the same issue, as all AliasThisTypeOf instantiations fail for the testcase.

--
September 15
https://issues.dlang.org/show_bug.cgi?id=22310

kinke <kinke@gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |performance

--
September 15
https://issues.dlang.org/show_bug.cgi?id=22310

Dlang Bot <dlang-bot@dlang.rocks> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull

--- Comment #3 from Dlang Bot <dlang-bot@dlang.rocks> ---
@kinke created dlang/dmd pull request #13075 "[stable] Fix Issue 22310 - Cache failed template instantiations" fixing this issue:

- Fix Issue 22310 - Cache failed template instantiations

  Semantic is re-run anyway for error messages in case errors were
  gagged for the first instantiation but aren't gagged for the current
  instantiation, see line 5645.

https://github.com/dlang/dmd/pull/13075

--
September 21
https://issues.dlang.org/show_bug.cgi?id=22310

--- Comment #4 from Dlang Bot <dlang-bot@dlang.rocks> ---
@kinke created dlang/dmd pull request #13093 "Fix Issue 22310 - Cache failed template instantiations" fixing this issue:

- Fix Issue 22310 - Cache failed template instantiations

  Only allow one retry attempt for gagged (speculative) instantiations,
  which seems to be crucial to make Phobos unittests compile.

https://github.com/dlang/dmd/pull/13093

--