I don’t like style rules that prevent doing useful things, and this seems like a useful thing.
-Filip > On Mar 21, 2019, at 2:12 PM, Alex Christensen <achristen...@apple.com> wrote: > > A more specific example of why I object is that I want to do things like add > a pointer to the thread an object was created on if ASSERT_DISABLED is false > so I can assert if things are done on invalid threads. If I do this in a > class like RefCounted, this rule would make me add a guarded initializer to > every RefCounted class. > >> On Mar 21, 2019, at 1:37 PM, Alex Christensen <achristen...@apple.com> wrote: >> >> I object. I don’t find using { *this } in a header disorienting at all. I >> think it’s better than adding many duplicate lines in each constructor and >> risking forgetting one. I think if we were to remove all the >> m_attributeOwnerProxy initializers in WebKit it would add lots of >> duplication with little benefit. If it were a class with a default >> constructor we would have a high risk of forgetting a constructor somewhere. >> >>> On Mar 20, 2019, at 9:22 AM, Simon Fraser <simon.fra...@apple.com> wrote: >>> >>>> On Mar 14, 2019, at 1:06 PM, Filip Pizlo <fpi...@apple.com> wrote: >>>> >>>> I like to draw this distinction: is the initializer a constant? >>>> >>>> It’s not a constant if it relies on arguments to the constructor. “This” >>>> is an argument to the constructor. >>>> >>>> It’s also not a constant if it involves reading the heap. >>>> >>>> So, like you, I would want to see this code done in the constructor. But >>>> I’m not sure that my general rule is the same as everyone’s. >>> >>> This seems like a reasonable proposal to me: only use initializers when >>> their input is constant data. >>> >>> Any objections? >>> >>> Simon >>> >>>> >>>> -Filip >>>> >>>>> On Mar 14, 2019, at 12:59 PM, Simon Fraser <simon.fra...@apple.com> wrote: >>>>> >>>>> I've seen some code recently that initializes non-POD members via >>>>> initializers. For example, SVGAElement has: >>>>> >>>>> AttributeOwnerProxy m_attributeOwnerProxy { *this }; >>>>> >>>>> I find this a little disorientating, and would normally expect to see >>>>> this in the constructor as m_attributeOwnerProxy(*this), as it makes it >>>>> easier to find places to set breakpoints, and the ordering of >>>>> initialization is easier to see. >>>>> >>>>> Are people OK with this pattern, or should we discourage it via the style >>>>> guidelines (and style checker)? >>>>> >>>>> Simon >>>>> >>>>> _______________________________________________ >>>>> webkit-dev mailing list >>>>> webkit-dev@lists.webkit.org >>>>> https://lists.webkit.org/mailman/listinfo/webkit-dev >>> >>> _______________________________________________ >>> webkit-dev mailing list >>> webkit-dev@lists.webkit.org >>> https://lists.webkit.org/mailman/listinfo/webkit-dev >> >> _______________________________________________ >> webkit-dev mailing list >> webkit-dev@lists.webkit.org >> https://lists.webkit.org/mailman/listinfo/webkit-dev > > _______________________________________________ > webkit-dev mailing list > webkit-dev@lists.webkit.org > https://lists.webkit.org/mailman/listinfo/webkit-dev _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev