test case: template<typename InputType> class NondeterministicInput : public NondeterministicInputBase { virtual const AtomicString& type() const override final { return InputTraits<InputType>::type(); } virtual InputQueue queue() const override final { return InputTraits<InputType>::queue(); } }; It suggests the opening brace of type() be on the same line. Maybe it's confused by override final?