Don <> changed:

           What    |Removed                     |Added
                 CC|                            |

--- Comment #1 from Don <> 2011-05-06 01:47:34 PDT ---
This is probably related to bug 4910, and also to bug 4269 ("invalid type
accepted if evaluated while errors are gagged")

There's a problem with the gagging system.

One difficulty is that if there has been a forward reference, CTFE needs to run
semantic3 on the function. If errors are gagged from inside
VarDeclaration::semantic, the gagging should only apply to CTFE; the semantic3
errors should not be gagged.
The problem is, the gagging system doesn't have any mechanism for ungagging.
If we instantiated a template from inside is(typeof()), semantic errors should
be gagged; we don't yet know if the template will be instantiated. Let's call
this an investigative template instantiation. This is recursive; any template
instantiated from inside a investigative template is also investigative.
BUT, any semantic run on anything other than a investigative template should
NOT be gagged. The simple incrementing and decrementing of global.gag doesn't
quite work.

The other side of the problem is bug 4269: failed templates are not removed. If
there is an attempt to instantiate them from a non-gagged state, the original
(previously suppressed) error messages should be shown.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to