[Issue 13242] New: imported aliases should be analyzed lazily

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Fri Aug 1 21:43:05 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=13242

          Issue ID: 13242
           Summary: imported aliases should be analyzed lazily
           Product: D
           Version: unspecified
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: DMD
          Assignee: nobody at puremagic.com
          Reporter: code at dawg.eu

The following problem is pretty frequent.

lib.d

alias apiSymbol = expensiveTemplate!SomeArgs;
void cheapFunc() {}

client.d
import lib;
void main() { cheapFunc(); }

Although the client only uses cheapFunc the compiler will still run semantic on
the expensive template instance. This is a major slowdown and it also makes it
useless to localize additional imports in the template.
The semantic of the aliased symbol should be deferred until the alias is
actually used. Even if it's used we should not generate code for the template,
because that was already done when compiling lib. To allow this deferring
should only happen for aliases in non-root modules.

I think it a sane proposal and it will have a big impact on compile times.

--


More information about the Digitalmars-d-bugs mailing list