| /* |
| * Copyright 2014 Google Inc. All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef FRUIT_INJECTION_DEBUG_ERRORS_H |
| #define FRUIT_INJECTION_DEBUG_ERRORS_H |
| |
| #include <fruit/impl/injection_errors.h> |
| |
| namespace fruit { |
| namespace impl { |
| namespace meta { |
| |
| template <typename... MissingProvides> |
| struct ComponentDoesNotEntailDueToProvidesError { |
| static_assert(AlwaysFalse<MissingProvides...>::value, ""); |
| }; |
| |
| struct ComponentDoesNotEntailDueToProvidesErrorTag { |
| template <typename... MissingProvides> |
| using apply = ComponentDoesNotEntailDueToProvidesError<MissingProvides...>; |
| }; |
| |
| template <typename... MissingInterfaceBindings> |
| struct ComponentDoesNotEntailDueToInterfaceBindingsError { |
| static_assert(AlwaysFalse<MissingInterfaceBindings...>::value, ""); |
| }; |
| |
| struct ComponentDoesNotEntailDueToInterfaceBindingsErrorTag { |
| template <typename... MissingInterfaceBindings> |
| using apply = ComponentDoesNotEntailDueToInterfaceBindingsError<MissingInterfaceBindings...>; |
| }; |
| |
| template <typename... AdditionalRequirements> |
| struct ComponentDoesNotEntailDueToRequirementsError { |
| static_assert(AlwaysFalse<AdditionalRequirements...>::value, ""); |
| }; |
| |
| struct ComponentDoesNotEntailDueToRequirementsErrorTag { |
| template <typename... AdditionalRequirements> |
| using apply = ComponentDoesNotEntailDueToProvidesError<AdditionalRequirements...>; |
| }; |
| |
| template <typename Deps, typename CandidateEntailedDeps> |
| struct ComponentDoesNotEntailDueToIncompatibleDepsError { |
| static_assert(AlwaysFalse<Deps>::value, ""); |
| }; |
| |
| struct ComponentDoesNotEntailDueToIncompatibleDepsErrorTag { |
| template <typename Deps, typename CandidateEntailedDeps> |
| using apply = ComponentDoesNotEntailDueToIncompatibleDepsError<Deps, CandidateEntailedDeps>; |
| }; |
| |
| template <typename... RequirementsWithConstMismatch> |
| struct ComponentDoesNotEntailDueToDifferentConstnessOfRequirementsError { |
| static_assert(AlwaysFalse<RequirementsWithConstMismatch...>::value, ""); |
| }; |
| |
| struct ComponentDoesNotEntailDueToDifferentConstnessOfRequirementsErrorTag { |
| template <typename... RequirementsWithConstMismatch> |
| using apply = ComponentDoesNotEntailDueToDifferentConstnessOfRequirementsError<RequirementsWithConstMismatch...>; |
| }; |
| |
| template <typename... ProvidesWithConstMismatch> |
| struct ComponentDoesNotEntailDueToDifferentConstnessOfProvidesError { |
| static_assert(AlwaysFalse<ProvidesWithConstMismatch...>::value, ""); |
| }; |
| |
| struct ComponentDoesNotEntailDueToDifferentConstnessOfProvidesErrorTag { |
| template <typename... ProvidesWithConstMismatch> |
| using apply = ComponentDoesNotEntailDueToDifferentConstnessOfProvidesError<ProvidesWithConstMismatch...>; |
| }; |
| |
| template <typename ProofTh, typename ForestThs> |
| struct ProofNotEntailedByForestBecauseThNotFoundError { |
| static_assert(AlwaysFalse<ProofTh>::value, ""); |
| }; |
| |
| struct ProofNotEntailedByForestBecauseThNotFoundErrorTag { |
| template <typename ProofTh, typename ForestThs> |
| using apply = ProofNotEntailedByForestBecauseThNotFoundError<ProofTh, ForestThs>; |
| }; |
| |
| template <typename ForestHps, typename ProofHps, typename Difference> |
| struct ProofNotEntailedByForestBecauseHpsNotASubsetError { |
| static_assert(AlwaysFalse<ForestHps>::value, ""); |
| }; |
| |
| struct ProofNotEntailedByForestBecauseHpsNotASubsetErrorTag { |
| template <typename ForestHps, typename ProofHps, typename Difference> |
| using apply = ProofNotEntailedByForestBecauseHpsNotASubsetError<ForestHps, ProofHps, Difference>; |
| }; |
| |
| } // namespace meta |
| } // namespace impl |
| } // namespace fruit |
| |
| #endif // FRUIT_INJECTION_DEBUG_ERRORS_H |