Stephan Bergmann af34108d90 Use C++20 consteval for the Color(sal_uInt32) ctor
...to make it more obvious that, since 63a68064bb33f180b8a231f7524d99405d910226
"make the Color constructors explicitly specify transparency", it should only be
called when the argument is known at compile-time to have no transparency/alpha
channel.

(This revealed a GCC bug causing bogus

> xmloff/source/chart/ColorPropertySet.cxx: In constructor ‘xmloff:💹:ColorPropertySet::ColorPropertySet(Color)’:
> xmloff/source/chart/ColorPropertySet.cxx:81:9: error: ‘this’ is not a constant expression
>    81 |         m_nDefaultColor( 0x0099ccff )  // blue 8
>       |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

so in configure.ac suppress HAVE_CPP_CONSTEVAL when the compiler is found
broken.)

Change-Id: I68df7bd5fbd9b2dcf2243b5a4bde4064d3d665fd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109697
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2021-01-21 07:58:02 +01:00

26 lines
826 B
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include "sal/config.h"
#include "tools/color.hxx"
int main()
{
constexpr Color col1;
Color col2;
col2 = sal_Int32(
col1); // expected-error@-1 {{redundant double conversion [loplugin:doubleconvert]}}
(void)col2;
// expected-error@+1 {{redundant double conversion [loplugin:doubleconvert]}}
Color col3 = sal_Int32(Color());
(void)col3;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */