Some checks failed
CI / build-test-release (pull_request) Failing after 12m4s
One header per pass, asserting both directions — the objects that include it recompile, the ones that don't are untouched — then running the binary, since "was recompiled" only matters if the program agrees with itself. Covers the module interface (a macro in its global module fragment decides an exported class's layout), the implementation unit, a C source, an idle rebuild that must recompile nothing, and an object whose depfile is gone. The implementation unit's header has a space in its name so the depfile spells it escaped.
21 lines
830 B
C++
21 lines
830 B
C++
// SPDX-License-Identifier: LGPL-3.0-only
|
|
// SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts®
|
|
|
|
module;
|
|
// The whole point of the fixture: an input to this interface unit that the
|
|
// module scanner cannot see. WIDGET_SLOTS comes from a header, so the class
|
|
// layout below changes without Widget.cppm being touched.
|
|
#include "widget-layout.h"
|
|
export module Widget;
|
|
import std;
|
|
|
|
export struct Widget {
|
|
std::array<std::int64_t, WIDGET_SLOTS> slots;
|
|
};
|
|
|
|
// Out-of-line in the library's implementation unit, so the value reflects the
|
|
// layout the *library* was compiled against rather than the caller's — same
|
|
// reasoning as the IncrementalInterfaceChange fixture.
|
|
export std::size_t WidgetSizeInLibrary();
|
|
// Reads a macro from a header only the implementation unit includes.
|
|
export std::int64_t WidgetCountInLibrary();
|