--- Comment #8 from Walter Bright <> 2010-04-27 
09:04:17 PDT ---
The problem is the code here in expression.c funcParameters():

                arg = p->defaultArg;
                arg = arg->copy();      <-- Danger, Will Robinson!
                arg = arg->resolveLoc(loc, sc);

The arg->copy() is the problem, as it will copy any DeclarationExp's resulting
in multiple declarations with the same name. A correct fix will be to do what
DeclarationExp::doInline() does, which is for any non-static declarations,
create another declaration.

A new expression tree walker has to be built to accomplish this. Perhaps a good
approach is to create a generic walker that accepts a lambda function to
operate on each node.

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

Reply via email to