mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2025-02-26 11:53:19 +03:00
41 lines
1.6 KiB
Plaintext
41 lines
1.6 KiB
Plaintext
// Copyright 2023 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// This is a "No Compile Test" suite.
|
|
// https://dev.chromium.org/developers/testing/no-compile-tests
|
|
|
|
#include "base/logging.h"
|
|
|
|
// LOG(FATAL) must be understood as [[noreturn]].
|
|
int Foo() {
|
|
LOG(FATAL) << "I am [[noreturn]]!";
|
|
return 42; // expected-error {{'return' will never be executed}}
|
|
}
|
|
|
|
int Foo2() {
|
|
LOG_ASSERT(false) << "I am [[noreturn]] (sometimes)!";
|
|
return 42; // expected-error {{'return' will never be executed}}
|
|
}
|
|
|
|
// It's important that our logging macros agree on [[noreturn]] in all build
|
|
// configurations (or dead-code warnings become impossible to satisfy). As such
|
|
// neither LOG(DFATAL) or DLOG(FATAL) may be understood as [[noreturn]]. This
|
|
// non-void function not returning a value after LOG(DFATAL) and DLOG(FATAL)
|
|
// should always be a compile error due to a missing return statement.
|
|
int Bar() {
|
|
// No LOG(DFATAL) macros should be understood as [[noreturn]] under any build
|
|
// configurations.
|
|
LOG(DFATAL) << "I am not [[noreturn]]!";
|
|
LOG_IF(DFATAL, true) << "I am not [[noreturn]]!";
|
|
PLOG(DFATAL) << "I am not [[noreturn]]!";
|
|
PLOG_IF(DFATAL, true) << "I am not [[noreturn]]!";
|
|
|
|
// Same as above but DLOG(FATAL) instead of LOG(DFATAL).
|
|
DLOG(FATAL) << "I am not [[noreturn]]!";
|
|
DLOG_IF(FATAL, true) << "I am not [[noreturn]]!";
|
|
DPLOG(FATAL) << "I am not [[noreturn]]!";
|
|
DPLOG_IF(FATAL, true) << "I am not [[noreturn]]!";
|
|
DLOG_ASSERT(false) << "I am not [[noreturn]]!";
|
|
} // expected-error {{non-void function does not return a value}}
|