/* -*- 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 #include #include #include #include #include template struct Sequence { Sequence(std::initializer_list); }; template struct Wrap1 { T element; }; template struct Wrap2 { Wrap2(T const& e) : element(e) { } T element; }; bool g(); void h(bool); void f() { // expected-error@+1 {{implicit conversion (IntegralCast) from 'bool' to 'int' [loplugin:implicitboolconversion]}} int i = false; // expected-error@+1 {{implicit conversion (IntegralCast) from 'bool' to 'int' [loplugin:implicitboolconversion]}} i = true; (void)i; std::atomic b = false; (void)b; //TODO: Emit only one diagnostic here: // expected-error@+2 {{implicit conversion (ConstructorConversion) from 'bool' to 'std::atomic' [loplugin:implicitboolconversion]}} // expected-error-re@+1 {{implicit conversion (IntegralCast) from 'bool' to {{.+}} [loplugin:implicitboolconversion]}} std::atomic a = false; (void)a; bool b2 = true; b2 &= g(); (void)b2; Sequence s1{ false }; (void)s1; Sequence> s2{ { false } }; (void)s2; // expected-error@+1 {{implicit conversion (IntegralCast) from 'bool' to 'const int' [loplugin:implicitboolconversion]}} Sequence s3{ false }; (void)s3; // expected-error@+1 {{implicit conversion (IntegralCast) from 'bool' to 'const int' [loplugin:implicitboolconversion]}} Sequence> s4{ { false } }; (void)s4; Wrap1 w1{ false }; Sequence> s5{ { false } }; (void)s5; Wrap2 w2{ false }; (void)w2; Sequence> s6{ { false } }; (void)s6; h(w1.element); css::uno::Sequence s7(1); h(s7[0]); std::array s8; s8[0] = false; } /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */