From 33956ec24074c0dc913221e83d856434d63ad425 Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Wed, 26 Aug 2026 13:24:57 +0100 Subject: [PATCH] fix(test): alias the second namespace the merged test file needs 1e341d5413 fixed half of this. The slice that assembled the union dropped `using namespace xrpl::telemetry;`, which supplied TWO names: `consensus` and `seg`. Aliasing only the first left ConsensusSpanNames.cpp:156 -- `seg::consensus` -- unresolved, and clang, gcc and MSVC all failed there. It was invisible in the previous round only because clang stops after 20 errors and the 50 `consensus` sites filled that budget, so the same defect had been present since the merge rather than being introduced by the partial fix. Why it was missed: the prefix scan behind the first fix sampled a line range that did not contain line 156. This time every leading namespace qualifier in the file was enumerated from comment- and string-stripped source and checked against the names the file makes available, with the line each becomes available: attr, val, op, part and span from the using-directive, consensus and seg from the aliases, AvalancheState from a function-local using-declaration inside the test that uses it, and std/xrpl needing nothing. Every one is declared before its first use, and nothing else is qualified anywhere in the file. The predicted hazard did not materialise. No `reference to 'attr' is ambiguous` error appeared in any of the three compilers, so keeping xrpl::telemetry out of scope and naming the two members explicitly was the right shape. This also clears the misc-include-cleaner error that came with it. clang-tidy reported SpanNames.h as not used directly and its exported fix deleted the include; that fix was wrong. `seg` is declared at SpanNames.h:103, so the alias makes the include genuinely used and the diagnostic goes away rather than needing the include removed. Verification: compiled. `c++ -fsyntax-only` with this file's real flags from its compile_commands.json entry exits 0. Proven non-vacuous by removing the alias again and reproducing CI's exact message -- "'seg' was not declared in this scope; did you mean 'xrpl::telemetry::seg'?" -- then restoring it and returning to exit 0. Braces balance 27/27 on stripped source, 17 TEST cases intact, pre-commit clean including clang-format and clang-tidy. The tests still have not RUN: this is a syntax-only check of one translation unit, so nothing linked and no assertion executed. --- src/tests/libxrpl/telemetry/ConsensusSpanNames.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tests/libxrpl/telemetry/ConsensusSpanNames.cpp b/src/tests/libxrpl/telemetry/ConsensusSpanNames.cpp index d598eebaa0..b636e1b622 100644 --- a/src/tests/libxrpl/telemetry/ConsensusSpanNames.cpp +++ b/src/tests/libxrpl/telemetry/ConsensusSpanNames.cpp @@ -56,7 +56,10 @@ using namespace xrpl::telemetry::consensus::span; // pull xrpl::telemetry::attr (SpanNames.h:117) into scope alongside // consensus::span::attr and make every bare `attr::` in the phase-span tests // ambiguous. +// `seg` is the other name that directive supplied, used once for the segment +// constant the span name is built from. namespace consensus = xrpl::telemetry::consensus; +namespace seg = xrpl::telemetry::seg; TEST(ConsensusSpanNames, phase_open_start_attribute_keys) {