[Mesa-dev] [PATCH] glsl: Remove unused ast copy constructors.
Ilia Mirkin
imirkin at alum.mit.edu
Fri Nov 21 10:57:40 PST 2014
On Fri, Nov 21, 2014 at 1:56 PM, Matt Turner <mattst88 at gmail.com> wrote:
> On Fri, Nov 21, 2014 at 10:52 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> On Fri, Nov 21, 2014 at 1:47 PM, Matt Turner <mattst88 at gmail.com> wrote:
>>> These were added in commits a760c738 and 43757135 to be used in
>>> implementing C-style aggregate initializers (commit 1b0d6aef). Paul
>>> rewrote that code in commit 0da1a2cc to use GLSL types, rather than
>>> AST types, leaving these copy constructors unused.
>>>
>>> Tested by making them private and providing no definition.
>>> ---
>>> src/glsl/ast.h | 29 -----------------------------
>>> 1 file changed, 29 deletions(-)
>>>
>>> diff --git a/src/glsl/ast.h b/src/glsl/ast.h
>>> index 15bf086..6995ae8 100644
>>> --- a/src/glsl/ast.h
>>> +++ b/src/glsl/ast.h
>>> @@ -640,19 +640,6 @@ class ast_declarator_list;
>>>
>>> class ast_struct_specifier : public ast_node {
>>> public:
>>> - /**
>>> - * \brief Make a shallow copy of an ast_struct_specifier.
>>> - *
>>> - * Use only if the objects are allocated from the same context and will not
>>> - * be modified. Zeros the inherited ast_node's fields.
>>> - */
>>> - ast_struct_specifier(const ast_struct_specifier& that):
>>> - ast_node(), name(that.name), declarations(that.declarations),
>>> - is_declaration(that.is_declaration)
>>> - {
>>> - /* empty */
>>> - }
>>> -
>>
>> Not sure what the style in mesa is, but IME, C++ copy constructors can
>> spring up on you at fairly unexpected times, esp implicit ones. It
>> will also happily generate a default one for you, which is almost
>> never what you want. The style I've usually seen is to create private
>> copy constructors without definition to catch such situations.
>
> That's true, but they were added for usage in one place and that one
> place has been removed, and we've never needed it anywhere else.
Exactly. That's why I'm suggesting making a private version without
definition and leaving it in. That way accidental uses won't be added,
which tends to be easy to do due to implicit copy constructors.
-ilia
More information about the mesa-dev
mailing list