diff --git a/functions/core_math_accuracy_test.cpp b/functions/core_math_accuracy_test.cpp index 599c3f45df..ab7a9c4f98 100644 --- a/functions/core_math_accuracy_test.cpp +++ b/functions/core_math_accuracy_test.cpp @@ -4,6 +4,7 @@ #include "core-math/cos.h" #include "core-math/sin.h" +#include "functions/multiprecision.hpp" #include "glog/logging.h" #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -13,9 +14,10 @@ namespace principia { namespace functions { -namespace _multiprecision { +namespace _core_math_accuracy_test { using namespace boost::multiprecision; +using namespace principia::functions::_multiprecision; using namespace principia::testing_utilities::_approximate_quantity; using namespace principia::testing_utilities::_is_near; diff --git a/functions/sin_cos_test.cpp b/functions/sin_cos_test.cpp index 1acdc2c77c..c888e1d60a 100644 --- a/functions/sin_cos_test.cpp +++ b/functions/sin_cos_test.cpp @@ -9,18 +9,28 @@ #include "glog/logging.h" #include "gtest/gtest.h" #include "numerics/next.hpp" -#include "quantities/numbers.hpp" +#include "testing_utilities/almost_equals.hpp" +#include "numerics/sin_cos.hpp" +#include "quantities/numbers.hpp" // 🧙 For π. #include "testing_utilities/almost_equals.hpp" // This test lives in `functions` to avoid pulling `boost` into `numerics`. +// It uses neither the `functions` nor the `numerics` namespace so that the Sin +// and Cos from both (`principia::functions::_multiprecision` and +// `principia::numerics::_sin_cos`) are made visible by the using directives +// below. + namespace principia { -namespace numerics { -namespace _sin_cos { +namespace numerics_multiprecision_tests { using namespace boost::multiprecision; +using namespace principia::functions::_multiprecision; using namespace principia::numerics::_next; +using namespace principia::numerics::_sin_cos; using namespace principia::testing_utilities::_almost_equals; +namespace { + class SinCosTest : public ::testing::Test {}; TEST_F(SinCosTest, Random) { @@ -44,8 +54,7 @@ TEST_F(SinCosTest, Random) { double const principia_argument = uniformly_at(random); auto const boost_argument = cpp_rational(principia_argument); { - auto const boost_sin = - functions::_multiprecision::Sin(boost_argument); + auto const boost_sin = Sin(boost_argument); double const principia_sin = Sin(principia_argument); auto const sin_error = abs(boost_sin - static_cast(principia_sin)); @@ -61,8 +70,7 @@ TEST_F(SinCosTest, Random) { } } { - auto const boost_cos = - functions::_multiprecision::Cos(boost_argument); + auto const boost_cos = Cos(boost_argument); double const principia_cos = Cos(principia_argument); auto const cos_error = abs(boost_cos - static_cast(principia_cos)); @@ -143,6 +151,6 @@ TEST_F(SinCosTest, HardReduction) { AlmostEquals(-4.687165924254627611122582801963884e-19, 0)); } -} // namespace _sin_cos -} // namespace numerics +} // namespace +} // namespace numerics_multiprecision_tests } // namespace principia diff --git a/geometry/serialization_body.hpp b/geometry/serialization_body.hpp index feea4e0b95..9236f988f1 100644 --- a/geometry/serialization_body.hpp +++ b/geometry/serialization_body.hpp @@ -6,6 +6,7 @@ #include "geometry/grassmann.hpp" #include "geometry/point.hpp" #include "quantities/quantities.hpp" +#include "quantities/serialization.hpp" namespace principia { namespace geometry { diff --git a/sourcerer/include_what_you_using.cs b/sourcerer/include_what_you_using.cs index 27aab28820..3fdb6793e0 100644 --- a/sourcerer/include_what_you_using.cs +++ b/sourcerer/include_what_you_using.cs @@ -186,7 +186,10 @@ private static void FixIncludes(Parser.File file, foreach (string ns in using_namespaces) { var segments = ns.Split("::", StringSplitOptions.RemoveEmptyEntries); var include_path = Array.Empty(); - bool skip = false; + if (ns == file.file_namespace_full_name) { + // Don't add an include for our own header. This matters for tests. + continue; + } foreach (string segment in segments) { if (segment == "principia") { continue; @@ -195,24 +198,17 @@ private static void FixIncludes(Parser.File file, segment == "std") { // We have using directives for namespaces in absl or std, don't emit // an include for them. - skip = true; - continue; + goto next_using_directive; } else if (segment[0] == '_') { - // Don't add an include for our own header. This matters for tests. - if (segment == file.file_namespace_simple_name) { - skip = true; - } else { - string header_filename = Regex.Replace(segment, @"^_", ""); - include_path = include_path.Append(header_filename).ToArray(); - } + string header_filename = Regex.Replace(segment, @"^_", ""); + include_path = include_path.Append(header_filename).ToArray(); break; } else { include_path = include_path.Append(segment).ToArray(); } } - if (!skip) { - new_include_paths.Add(include_path); - } + new_include_paths.Add(include_path); + next_using_directive: {} } // Extract the includes.