/src/libsass/src/check_nesting.hpp
Line | Count | Source |
1 | | #ifndef SASS_CHECK_NESTING_H |
2 | | #define SASS_CHECK_NESTING_H |
3 | | |
4 | | // sass.hpp must go before all system headers to get the |
5 | | // __EXTENSIONS__ fix on Solaris. |
6 | | #include "sass.hpp" |
7 | | #include "ast.hpp" |
8 | | #include "operation.hpp" |
9 | | #include <vector> |
10 | | |
11 | | namespace Sass { |
12 | | |
13 | | class CheckNesting : public Operation_CRTP<Statement*, CheckNesting> { |
14 | | |
15 | | sass::vector<Statement*> parents; |
16 | | Backtraces traces; |
17 | | Statement* parent; |
18 | | Definition* current_mixin_definition; |
19 | | |
20 | | Statement* before(Statement*); |
21 | | Statement* visit_children(Statement*); |
22 | | |
23 | | public: |
24 | | CheckNesting(); |
25 | 8 | ~CheckNesting() { } |
26 | | |
27 | | Statement* operator()(Block*); |
28 | | Statement* operator()(Definition*); |
29 | | Statement* operator()(If*); |
30 | | |
31 | | template <typename U> |
32 | 16 | Statement* fallback(U x) { |
33 | 16 | Statement* s = Cast<Statement>(x); |
34 | 16 | if (s && this->should_visit(s)) { |
35 | 16 | Block* b1 = Cast<Block>(s); |
36 | 16 | ParentStatement* b2 = Cast<ParentStatement>(s); |
37 | 16 | if (b1 || b2) return visit_children(s); |
38 | 16 | } |
39 | 6 | return s; |
40 | 16 | } Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Block*>(Sass::Block*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::If*>(Sass::If*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Definition*>(Sass::Definition*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::AST_Node*>(Sass::AST_Node*) Sass::Statement* Sass::CheckNesting::fallback<Sass::StyleRule*>(Sass::StyleRule*) Line | Count | Source | 32 | 6 | Statement* fallback(U x) { | 33 | 6 | Statement* s = Cast<Statement>(x); | 34 | 6 | if (s && this->should_visit(s)) { | 35 | 6 | Block* b1 = Cast<Block>(s); | 36 | 6 | ParentStatement* b2 = Cast<ParentStatement>(s); | 37 | 6 | if (b1 || b2) return visit_children(s); | 38 | 6 | } | 39 | 0 | return s; | 40 | 6 | } |
Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Bubble*>(Sass::Bubble*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Trace*>(Sass::Trace*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::SupportsRule*>(Sass::SupportsRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::MediaRule*>(Sass::MediaRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::CssMediaRule*>(Sass::CssMediaRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::CssMediaQuery*>(Sass::CssMediaQuery*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::AtRootRule*>(Sass::AtRootRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::AtRule*>(Sass::AtRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Keyframe_Rule*>(Sass::Keyframe_Rule*) Sass::Statement* Sass::CheckNesting::fallback<Sass::Declaration*>(Sass::Declaration*) Line | Count | Source | 32 | 4 | Statement* fallback(U x) { | 33 | 4 | Statement* s = Cast<Statement>(x); | 34 | 4 | if (s && this->should_visit(s)) { | 35 | 4 | Block* b1 = Cast<Block>(s); | 36 | 4 | ParentStatement* b2 = Cast<ParentStatement>(s); | 37 | 4 | if (b1 || b2) return visit_children(s); | 38 | 4 | } | 39 | 0 | return s; | 40 | 4 | } |
Sass::Statement* Sass::CheckNesting::fallback<Sass::Assignment*>(Sass::Assignment*) Line | Count | Source | 32 | 6 | Statement* fallback(U x) { | 33 | 6 | Statement* s = Cast<Statement>(x); | 34 | 6 | if (s && this->should_visit(s)) { | 35 | 6 | Block* b1 = Cast<Block>(s); | 36 | 6 | ParentStatement* b2 = Cast<ParentStatement>(s); | 37 | 6 | if (b1 || b2) return visit_children(s); | 38 | 6 | } | 39 | 6 | return s; | 40 | 6 | } |
Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Import*>(Sass::Import*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Import_Stub*>(Sass::Import_Stub*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::WarningRule*>(Sass::WarningRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::ErrorRule*>(Sass::ErrorRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::DebugRule*>(Sass::DebugRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Comment*>(Sass::Comment*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::ForRule*>(Sass::ForRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::EachRule*>(Sass::EachRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::WhileRule*>(Sass::WhileRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Return*>(Sass::Return*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Content*>(Sass::Content*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::ExtendRule*>(Sass::ExtendRule*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Mixin_Call*>(Sass::Mixin_Call*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Null*>(Sass::Null*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::List*>(Sass::List*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Map*>(Sass::Map*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Function*>(Sass::Function*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Binary_Expression*>(Sass::Binary_Expression*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Unary_Expression*>(Sass::Unary_Expression*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Function_Call*>(Sass::Function_Call*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Custom_Warning*>(Sass::Custom_Warning*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Custom_Error*>(Sass::Custom_Error*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Variable*>(Sass::Variable*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Number*>(Sass::Number*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Color*>(Sass::Color*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Color_RGBA*>(Sass::Color_RGBA*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Color_HSLA*>(Sass::Color_HSLA*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Boolean*>(Sass::Boolean*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::String_Schema*>(Sass::String_Schema*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::String_Quoted*>(Sass::String_Quoted*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::String_Constant*>(Sass::String_Constant*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::SupportsCondition*>(Sass::SupportsCondition*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::SupportsOperation*>(Sass::SupportsOperation*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::SupportsNegation*>(Sass::SupportsNegation*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::SupportsDeclaration*>(Sass::SupportsDeclaration*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Supports_Interpolation*>(Sass::Supports_Interpolation*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Media_Query*>(Sass::Media_Query*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Media_Query_Expression*>(Sass::Media_Query_Expression*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::At_Root_Query*>(Sass::At_Root_Query*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Parent_Reference*>(Sass::Parent_Reference*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Parameter*>(Sass::Parameter*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Parameters*>(Sass::Parameters*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Argument*>(Sass::Argument*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Arguments*>(Sass::Arguments*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::Selector_Schema*>(Sass::Selector_Schema*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::PlaceholderSelector*>(Sass::PlaceholderSelector*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::TypeSelector*>(Sass::TypeSelector*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::ClassSelector*>(Sass::ClassSelector*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::IDSelector*>(Sass::IDSelector*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::AttributeSelector*>(Sass::AttributeSelector*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::PseudoSelector*>(Sass::PseudoSelector*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::SelectorComponent*>(Sass::SelectorComponent*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::SelectorCombinator*>(Sass::SelectorCombinator*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::CompoundSelector*>(Sass::CompoundSelector*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::ComplexSelector*>(Sass::ComplexSelector*) Unexecuted instantiation: Sass::Statement* Sass::CheckNesting::fallback<Sass::SelectorList*>(Sass::SelectorList*) |
41 | | |
42 | | private: |
43 | | void invalid_content_parent(Statement*, AST_Node*); |
44 | | void invalid_charset_parent(Statement*, AST_Node*); |
45 | | void invalid_extend_parent(Statement*, AST_Node*); |
46 | | // void invalid_import_parent(Statement*); |
47 | | void invalid_mixin_definition_parent(Statement*, AST_Node*); |
48 | | void invalid_function_parent(Statement*, AST_Node*); |
49 | | |
50 | | void invalid_function_child(Statement*); |
51 | | void invalid_prop_child(Statement*); |
52 | | void invalid_prop_parent(Statement*, AST_Node*); |
53 | | void invalid_return_parent(Statement*, AST_Node*); |
54 | | void invalid_value_child(AST_Node*); |
55 | | |
56 | | bool is_transparent_parent(Statement*, Statement*); |
57 | | |
58 | | bool should_visit(Statement*); |
59 | | |
60 | | bool is_charset(Statement*); |
61 | | bool is_mixin(Statement*); |
62 | | bool is_function(Statement*); |
63 | | bool is_root_node(Statement*); |
64 | | bool is_at_root_node(Statement*); |
65 | | bool is_directive_node(Statement*); |
66 | | }; |
67 | | |
68 | | } |
69 | | |
70 | | #endif |