October 19, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

--- Comment #11 from b2.temp@gmx.com ---
The regression is still there (b2). Now that the alias is back inside the class a derived must be instantiated in order to trigger the error. So the procedure to see it is like in the first post:

$ if [ -d kheops ]; then
$     cd kheops
$     git pull
$     cd ..
$ else
$     git clone https://github.com/BBasile/kheops.git
$ fi
$ cd kheops/runnable
$ dub default_alignment.d

I think that you did not see it because the unittest config does nothing (it's
a static library).

--
October 20, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

--- Comment #12 from b2.temp@gmx.com ---
By the way Mr Nowak, I like to see how you're involved. But for this particular regression, maybe Kenji Hara could get in...

If at a certain point he's not able to fix the new compiler feature:

https://dlang.org/changelog/2.072.0.html#deferred_alias

Then let's revert this feature until he has the time to work on it.

--
October 24, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

--- Comment #13 from Martin Nowak <code@dawg.eu> ---
(In reply to b2.temp from comment #11)
> $ if [ -d kheops ]; then
> $     cd kheops
> $     git pull
> $     cd ..
> $ else
> $     git clone https://github.com/BBasile/kheops.git
> $ fi
> $ cd kheops/runnable
> $ dub default_alignment.d

Mmh, apparently you don't see the problem w/ your test case, so I'm saying this
explicit.
The moment you add a new commit, or any of the your project's dependencies gets
updated, the bug might no longer be reproducible.
I've already spend a lot of time trying to reproduce this bug w/ your ever
moving example. So please make sure that bug reports use "permalinks" including
the commit hash and dub.selections.json.

> I think that you did not see it because the unittest config does nothing
> (it's a static library).

I ran dub build, if I recall correctly.

(In reply to b2.temp from comment #12)
> By the way Mr Nowak, I like to see how you're involved. But for this particular regression, maybe Kenji Hara could get in...

Unlikely, he is hardly nowadays.

> If at a certain point he's not able to fix the new compiler feature:
> 
> https://dlang.org/changelog/2.072.0.html#deferred_alias
> 
> Then let's revert this feature until he has the time to work on it.

Well, your code involves a recursive template, and it's not clear whether it's
actually possible to be compiled.
Lazy alias analysis is a huge improvement for compile times, so we won't drop
it light-hearted.

--
October 25, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

--- Comment #14 from b2.temp@gmx.com ---
(In reply to Martin Nowak from comment #13)
> (In reply to b2.temp from comment #11)
> > $ if [ -d kheops ]; then
> > $     cd kheops
> > $     git pull
> > $     cd ..
> > $ else
> > $     git clone https://github.com/BBasile/kheops.git
> > $ fi
> > $ cd kheops/runnable
> > $ dub default_alignment.d
> 
> Mmh, apparently you don't see the problem w/ your test case, so I'm saying
> this explicit.
> The moment you add a new commit, or any of the your project's dependencies
> gets updated, the bug might no longer be reproducible.

$ if ! [ -d kheops ]; then
$     git clone https://github.com/BBasile/kheops.git
$ fi
$
$ cd kheops
$ git checkout a00f300c4281b2d4aaf95e7fabde48d3dc3816e9
$ cd runnable
$ dub default_alignment.d

> I've already spend a lot of time trying to reproduce this bug w/ your ever

So do I. I've manually compiled DMD and phobos about a hundred of times to find where default_alignment.d started not to work anymore. Also the (unfortunately) wrong reduction didn't pop from the magician hat.

> moving example. So please make sure that bug reports use "permalinks" including the commit hash and dub.selections.json.
> 
> > I think that you did not see it because the unittest config does nothing
> > (it's a static library).
> 
> I ran dub build, if I recall correctly.

'dub build --build=unittest' does nothing, you should have get  "Target is a library. Skipping execution.
October 25, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

--- Comment #15 from Martin Nowak <code@dawg.eu> ---
(In reply to b2.temp from comment #14)
> (In reply to Martin Nowak from comment #13)
> > (In reply to b2.temp from comment #11)
> > > $ if [ -d kheops ]; then
> > > $     cd kheops
> > > $     git pull
> > > $     cd ..
> > > $ else
> > > $     git clone https://github.com/BBasile/kheops.git
> > > $ fi
> > > $ cd kheops/runnable
> > > $ dub default_alignment.d
> > 
> > Mmh, apparently you don't see the problem w/ your test case, so I'm saying
> > this explicit.
> > The moment you add a new commit, or any of the your project's dependencies
> > gets updated, the bug might no longer be reproducible.
> 
> $ if ! [ -d kheops ]; then
> $     git clone https://github.com/BBasile/kheops.git
> $ fi
> $
> $ cd kheops
> $ git checkout a00f300c4281b2d4aaf95e7fabde48d3dc3816e9
> $ cd runnable
> $ dub default_alignment.d
> 
> > I've already spend a lot of time trying to reproduce this bug w/ your ever
> 
> So do I. I've manually compiled DMD and phobos about a hundred of times to find where default_alignment.d started not to work anymore. Also the (unfortunately) wrong reduction didn't pop from the magician hat.

I didn't mean to be unfriendly, it's just that such small formal problems eat a lot of time.

> 'dub build --build=unittest' does nothing, you should have get  "Target is a library.

Nevermind, I always ran the default_alignment.d test as posted in comment 1.

> He's the author of the feature.

That's not development in any organization should work, exactly b/c people can

> I have many others small applications like "default_alignment.d" that I run to track possible breakage. Once again I don't understand what you are trying to tell me. With DMD 2.071.2 they are all compiled, they run all.

Well, then it's a regression, but if you look at comment 6, it's rather confusing to follow. Last time I tested the project wasn't compiling with any version between 2.069 and 2.071 (see comment 8).

> > Lazy alias analysis is a huge improvement for compile times,
> 
> Certainly.
> 
> > so we won't drop it light-hearted.
> 
> So don't drop it and make your release but keep in mind that there's an issue. Soon or later it will show the tip of its nose again.

Well that's why I'm spending time here. It's not even sure that the lazy alias is the cause of this problem.

--
October 27, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

--- Comment #16 from Martin Nowak <code@dawg.eu> ---
Seems like the base classes symtab is empty or corrupted even though it's set to BASEOKsemanticdone.

--
November 10, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|nobody@puremagic.com        |code@dawg.eu

--
November 17, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

--- Comment #17 from Martin Nowak <code@dawg.eu> ---
The compiler fails to resolve the recursive DynPub field in CustomControl using
forward references, subsequently the CustomControl base class has Type.error
and the overload check fails.
Could be a problem with the change aliasSemantic code, but also the modified
determineFields/Size logic.
The recursion error seems to get triggered by a speculative IsExpression,
rooted in instantiating Array!ItemClass in the recursive PublishedObjectArray.

--
November 19, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

Martin Nowak <code@dawg.eu> changed:

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

--- Comment #18 from Martin Nowak <code@dawg.eu> ---
https://github.com/dlang/dmd/pull/6262

--
November 19, 2016
https://issues.dlang.org/show_bug.cgi?id=16574

--- Comment #19 from github-bugzilla@puremagic.com ---
Commits pushed to stable at https://github.com/dlang/dmd

https://github.com/dlang/dmd/commit/0aac63dc94ec9471d46e1cfc3de5c2f229db6977 fix Issue 16574 - forward reference issue with with speculative test

- must not set the type to Type.terror when determineSize is run speculatively

https://github.com/dlang/dmd/commit/b2691f3434ad4cbe506ff2a047aaac70c2e4ad3a Merge pull request #6262 from MartinNowak/fix16574

fix Issue 16574 - forward reference issue with with speculative test

--