Bash++
Bash++ compiler internal documentation
detail.h
Go to the documentation of this file.
1
7#pragma once
8
9#include <type_traits>
10#include <concepts>
11
12#include <AST/ASTNode.h>
13#include <AST/Nodes/Nodes.h>
14#include <bpp_include/bpp.h>
15
16namespace bpp::detail {
17template <typename T>
18concept ASTNodePtrType = std::is_same_v<std::shared_ptr<AST::ASTNode>, T> ||
19 std::is_base_of_v<AST::ASTNode, typename T::element_type>;
20
21template <typename T>
22concept ASTStringToken = std::is_same_v<AST::Token<std::string>, T>;
23
24template <typename T>
25concept ASTParameterToken = std::is_same_v<AST::Token<AST::MethodDefinition::Parameter>, T>;
26
27template <typename T>
29
30template <typename T>
31concept ErrorReportableListener = requires(T t) {
32 { t.get_program() } -> std::same_as<std::shared_ptr<bpp::bpp_program>>;
33 { t.get_include_stack() } -> std::same_as<const std::vector<std::string>&>;
34 { t.get_source_file() } -> std::same_as<std::string>;
35 { t.get_lsp_mode() } -> std::same_as<bool>;
36};
37
38} // namespace bpp::detail
Definition detail.h:28
Definition detail.h:18
Definition detail.h:25
Definition detail.h:22
Definition detail.h:16