On Mon, 27 May 2013 13:32:46 -0700 Walter Bright <[email protected]> wrote:
> On 5/27/2013 4:32 AM, Russel Winder wrote: > > Using rdmd, it appears that the first error in the code can lead the > > parsing and template handling of everything following to be wrong. I > > keep finding that I am getting spurious errors about things nothing > > to do with the actual error, that simply go away when the real > > error is fixed. This would imply that most errors reported are > > generally spurious? > > The usual approach to handling errors in a compiler is to guess at > what the user actually meant, repair the AST according to that guess, > then continue on. Unfortunately, the guess is usually wrong and the > result is cascaded errors, of which only the first is meaningful. > > DMD has been gradually switching over to a more novel approach, one > that I haven't seen elsewhere. Once an error is discovered, the AST > is marked as "erroneous". That erroneous state propagates upwards to > the root of the AST, and that any AST that relies on an erroneous AST > is itself erroneous, and no further error messages are emitted for it. > > The result should be that only "original sin" errors are reported. > > This has already resulted in a great reduction of spurious error > messages, but clearly we have more work to do. > Is this what all the "error gagging" stuff is all about, or is there more to that?
