Skip to content
Snippets Groups Projects
Commit 59da3add authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Fix argument-dependent lookup syntax, thanks to clang

(the bad code is incorrectly compiled by g++)
parent 246d8a38
No related branches found
No related tags found
1 merge request!116Add tests for EmbeddedIDiscreteFunctionUtils
#ifndef FIXTURES_FOR_BUILTIN_T_HPP
#define FIXTURES_FOR_BUILTIN_T_HPP
#include <language/utils/ASTNodeDataTypeTraits.hpp>
#include <memory>
#include <stdexcept>
template <>
inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const double>> =
ASTNodeDataType::build<ASTNodeDataType::type_id_t>("builtin_t");
const auto builtin_data_type = ast_node_data_type_from<std::shared_ptr<const double>>;
inline std::shared_ptr<const double>
operator-(const std::shared_ptr<const double>& p_a)
{
return std::make_shared<double>(-*p_a);
}
inline std::shared_ptr<const double>
operator+(const std::shared_ptr<const double>& p_a, const std::shared_ptr<const double>& p_b)
{
return std::make_shared<double>(*p_a + *p_b);
}
inline std::shared_ptr<const double>
operator+(std::shared_ptr<const double> p_a, double b)
{
return std::make_shared<double>(*p_a + b);
}
inline std::shared_ptr<const double>
operator+(double a, const std::shared_ptr<const double>& p_b)
{
return std::make_shared<double>(a + *p_b);
}
inline std::shared_ptr<const double>
operator/(const std::shared_ptr<const double>&, const std::shared_ptr<const double>&)
{
throw std::runtime_error("runtime error both");
}
inline std::shared_ptr<const double>
operator/(const std::shared_ptr<const double>&, double)
{
throw std::runtime_error("runtime error lhs");
}
inline std::shared_ptr<const double>
operator/(double, const std::shared_ptr<const double>&)
{
throw std::runtime_error("runtime error rhs");
}
#endif // FIXTURES_FOR_BUILTIN_T_HPP
This diff is collapsed.
#include <catch2/catch_test_macros.hpp> #include <catch2/catch_test_macros.hpp>
#include <catch2/matchers/catch_matchers_all.hpp> #include <catch2/matchers/catch_matchers_all.hpp>
#include <FixturesForBuiltinT.hpp>
#include <language/ast/ASTBuilder.hpp> #include <language/ast/ASTBuilder.hpp>
#include <language/ast/ASTModulesImporter.hpp> #include <language/ast/ASTModulesImporter.hpp>
#include <language/ast/ASTNodeDataTypeBuilder.hpp> #include <language/ast/ASTNodeDataTypeBuilder.hpp>
...@@ -63,17 +65,6 @@ ...@@ -63,17 +65,6 @@
REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, error_message); \ REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, error_message); \
} }
template <>
inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const double>> =
ASTNodeDataType::build<ASTNodeDataType::type_id_t>("builtin_t");
const auto builtin_data_type = ast_node_data_type_from<std::shared_ptr<const double>>;
inline std::shared_ptr<const double>
operator-(const std::shared_ptr<const double>& p_a)
{
return std::make_shared<double>(-*p_a);
}
// clazy:excludeall=non-pod-global-static // clazy:excludeall=non-pod-global-static
TEST_CASE("UnaryExpressionProcessor", "[language]") TEST_CASE("UnaryExpressionProcessor", "[language]")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment