sassc 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +5 -0
- data/ext/libsass/VERSION +1 -1
- data/ext/libsass/include/sass/context.h +3 -0
- data/ext/libsass/src/MurmurHash2.hpp +91 -0
- data/ext/libsass/src/ast.cpp +117 -117
- data/ext/libsass/src/ast.hpp +160 -162
- data/ext/libsass/src/ast_def_macros.hpp +10 -10
- data/ext/libsass/src/ast_fwd_decl.cpp +2 -2
- data/ext/libsass/src/ast_fwd_decl.hpp +61 -52
- data/ext/libsass/src/ast_helpers.hpp +5 -5
- data/ext/libsass/src/ast_sel_cmp.cpp +18 -18
- data/ext/libsass/src/ast_sel_super.cpp +52 -52
- data/ext/libsass/src/ast_sel_unify.cpp +16 -16
- data/ext/libsass/src/ast_sel_weave.cpp +62 -62
- data/ext/libsass/src/ast_selectors.cpp +87 -77
- data/ext/libsass/src/ast_selectors.hpp +72 -62
- data/ext/libsass/src/ast_supports.cpp +35 -35
- data/ext/libsass/src/ast_supports.hpp +29 -29
- data/ext/libsass/src/ast_values.cpp +58 -58
- data/ext/libsass/src/ast_values.hpp +75 -75
- data/ext/libsass/src/backtrace.cpp +9 -9
- data/ext/libsass/src/backtrace.hpp +5 -5
- data/ext/libsass/src/base64vlq.cpp +2 -2
- data/ext/libsass/src/base64vlq.hpp +1 -1
- data/ext/libsass/src/bind.cpp +17 -17
- data/ext/libsass/src/bind.hpp +1 -1
- data/ext/libsass/src/c2ast.cpp +3 -3
- data/ext/libsass/src/c2ast.hpp +1 -1
- data/ext/libsass/src/check_nesting.cpp +36 -36
- data/ext/libsass/src/check_nesting.hpp +2 -2
- data/ext/libsass/src/color_maps.cpp +5 -5
- data/ext/libsass/src/color_maps.hpp +1 -1
- data/ext/libsass/src/context.cpp +63 -60
- data/ext/libsass/src/context.hpp +33 -33
- data/ext/libsass/src/cssize.cpp +30 -29
- data/ext/libsass/src/cssize.hpp +13 -13
- data/ext/libsass/src/dart_helpers.hpp +5 -5
- data/ext/libsass/src/debugger.hpp +127 -128
- data/ext/libsass/src/emitter.cpp +12 -12
- data/ext/libsass/src/emitter.hpp +10 -10
- data/ext/libsass/src/environment.cpp +27 -27
- data/ext/libsass/src/environment.hpp +24 -24
- data/ext/libsass/src/error_handling.cpp +42 -42
- data/ext/libsass/src/error_handling.hpp +38 -50
- data/ext/libsass/src/eval.cpp +138 -132
- data/ext/libsass/src/eval.hpp +17 -17
- data/ext/libsass/src/eval_selectors.cpp +3 -3
- data/ext/libsass/src/expand.cpp +70 -64
- data/ext/libsass/src/expand.hpp +12 -12
- data/ext/libsass/src/extender.cpp +55 -53
- data/ext/libsass/src/extender.hpp +14 -14
- data/ext/libsass/src/file.cpp +66 -58
- data/ext/libsass/src/file.hpp +23 -25
- data/ext/libsass/src/fn_colors.cpp +9 -9
- data/ext/libsass/src/fn_lists.cpp +18 -18
- data/ext/libsass/src/fn_maps.cpp +3 -3
- data/ext/libsass/src/fn_miscs.cpp +15 -15
- data/ext/libsass/src/fn_numbers.cpp +7 -7
- data/ext/libsass/src/fn_selectors.cpp +8 -8
- data/ext/libsass/src/fn_strings.cpp +34 -22
- data/ext/libsass/src/fn_utils.cpp +29 -26
- data/ext/libsass/src/fn_utils.hpp +10 -10
- data/ext/libsass/src/inspect.cpp +35 -34
- data/ext/libsass/src/inspect.hpp +21 -21
- data/ext/libsass/src/lexer.cpp +3 -1
- data/ext/libsass/src/listize.cpp +2 -2
- data/ext/libsass/src/mapping.hpp +1 -0
- data/ext/libsass/src/memory.hpp +12 -0
- data/ext/libsass/src/memory/allocator.cpp +48 -0
- data/ext/libsass/src/memory/allocator.hpp +138 -0
- data/ext/libsass/src/memory/config.hpp +20 -0
- data/ext/libsass/src/memory/memory_pool.hpp +186 -0
- data/ext/libsass/src/memory/{SharedPtr.cpp → shared_ptr.cpp} +2 -2
- data/ext/libsass/src/memory/{SharedPtr.hpp → shared_ptr.hpp} +18 -6
- data/ext/libsass/src/operation.hpp +44 -44
- data/ext/libsass/src/operators.cpp +18 -18
- data/ext/libsass/src/operators.hpp +11 -11
- data/ext/libsass/src/ordered_map.hpp +18 -18
- data/ext/libsass/src/output.cpp +16 -16
- data/ext/libsass/src/output.hpp +5 -5
- data/ext/libsass/src/parser.cpp +327 -345
- data/ext/libsass/src/parser.hpp +77 -87
- data/ext/libsass/src/parser_selectors.cpp +6 -6
- data/ext/libsass/src/permutate.hpp +39 -15
- data/ext/libsass/src/plugins.cpp +7 -7
- data/ext/libsass/src/plugins.hpp +8 -8
- data/ext/libsass/src/position.cpp +7 -26
- data/ext/libsass/src/position.hpp +44 -21
- data/ext/libsass/src/remove_placeholders.cpp +4 -4
- data/ext/libsass/src/remove_placeholders.hpp +3 -3
- data/ext/libsass/src/sass.cpp +16 -15
- data/ext/libsass/src/sass.hpp +9 -5
- data/ext/libsass/src/sass_context.cpp +52 -34
- data/ext/libsass/src/sass_values.cpp +8 -10
- data/ext/libsass/src/settings.hpp +19 -0
- data/ext/libsass/src/source.cpp +69 -0
- data/ext/libsass/src/source.hpp +95 -0
- data/ext/libsass/src/source_data.hpp +32 -0
- data/ext/libsass/src/source_map.cpp +22 -18
- data/ext/libsass/src/source_map.hpp +12 -9
- data/ext/libsass/src/units.cpp +19 -19
- data/ext/libsass/src/units.hpp +8 -8
- data/ext/libsass/src/utf8_string.cpp +9 -10
- data/ext/libsass/src/utf8_string.hpp +7 -6
- data/ext/libsass/src/util.cpp +38 -38
- data/ext/libsass/src/util.hpp +18 -18
- data/ext/libsass/src/util_string.cpp +13 -13
- data/ext/libsass/src/util_string.hpp +9 -8
- data/ext/libsass/src/values.cpp +12 -12
- data/lib/sassc/native.rb +3 -5
- data/lib/sassc/version.rb +1 -1
- data/test/native_test.rb +4 -4
- metadata +14 -5
- data/lib/sassc/native/lib_c.rb +0 -21
@@ -2,20 +2,20 @@
|
|
2
2
|
|
3
3
|
namespace Sass {
|
4
4
|
|
5
|
-
const
|
5
|
+
const sass::string traces_to_string(Backtraces traces, sass::string indent) {
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
sass::ostream ss;
|
8
|
+
sass::string cwd(File::get_cwd());
|
9
9
|
|
10
10
|
bool first = true;
|
11
11
|
size_t i_beg = traces.size() - 1;
|
12
|
-
size_t i_end =
|
12
|
+
size_t i_end = sass::string::npos;
|
13
13
|
for (size_t i = i_beg; i != i_end; i --) {
|
14
14
|
|
15
15
|
const Backtrace& trace = traces[i];
|
16
16
|
|
17
17
|
// make path relative to the current directory
|
18
|
-
|
18
|
+
sass::string rel_path(File::abs2rel(trace.pstate.getPath(), cwd, cwd));
|
19
19
|
|
20
20
|
// skip functions on error cases (unsure why ruby sass does this)
|
21
21
|
// if (trace.caller.substr(0, 6) == ", in f") continue;
|
@@ -23,9 +23,9 @@ namespace Sass {
|
|
23
23
|
if (first) {
|
24
24
|
ss << indent;
|
25
25
|
ss << "on line ";
|
26
|
-
ss << trace.pstate.
|
26
|
+
ss << trace.pstate.getLine();
|
27
27
|
ss << ":";
|
28
|
-
ss << trace.pstate.
|
28
|
+
ss << trace.pstate.getColumn();
|
29
29
|
ss << " of " << rel_path;
|
30
30
|
// ss << trace.caller;
|
31
31
|
first = false;
|
@@ -34,9 +34,9 @@ namespace Sass {
|
|
34
34
|
ss << std::endl;
|
35
35
|
ss << indent;
|
36
36
|
ss << "from line ";
|
37
|
-
ss << trace.pstate.
|
37
|
+
ss << trace.pstate.getLine();
|
38
38
|
ss << ":";
|
39
|
-
ss << trace.pstate.
|
39
|
+
ss << trace.pstate.getColumn();
|
40
40
|
ss << " of " << rel_path;
|
41
41
|
}
|
42
42
|
|
@@ -10,19 +10,19 @@ namespace Sass {
|
|
10
10
|
|
11
11
|
struct Backtrace {
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
SourceSpan pstate;
|
14
|
+
sass::string caller;
|
15
15
|
|
16
|
-
Backtrace(
|
16
|
+
Backtrace(SourceSpan pstate, sass::string c = "")
|
17
17
|
: pstate(pstate),
|
18
18
|
caller(c)
|
19
19
|
{ }
|
20
20
|
|
21
21
|
};
|
22
22
|
|
23
|
-
typedef
|
23
|
+
typedef sass::vector<Backtrace> Backtraces;
|
24
24
|
|
25
|
-
const
|
25
|
+
const sass::string traces_to_string(Backtraces traces, sass::string indent = "\t");
|
26
26
|
|
27
27
|
}
|
28
28
|
|
data/ext/libsass/src/bind.cpp
CHANGED
@@ -11,11 +11,11 @@
|
|
11
11
|
|
12
12
|
namespace Sass {
|
13
13
|
|
14
|
-
void bind(
|
14
|
+
void bind(sass::string type, sass::string name, Parameters_Obj ps, Arguments_Obj as, Env* env, Eval* eval, Backtraces& traces)
|
15
15
|
{
|
16
|
-
|
16
|
+
sass::string callee(type + " " + name);
|
17
17
|
|
18
|
-
std::map<
|
18
|
+
std::map<sass::string, Parameter_Obj> param_map;
|
19
19
|
List_Obj varargs = SASS_MEMORY_NEW(List, as->pstate());
|
20
20
|
varargs->is_arglist(true); // enable keyword size handling
|
21
21
|
|
@@ -52,7 +52,7 @@ namespace Sass {
|
|
52
52
|
}
|
53
53
|
}
|
54
54
|
}
|
55
|
-
|
55
|
+
sass::ostream msg;
|
56
56
|
msg << "wrong number of arguments (" << LA << " for " << LP << ")";
|
57
57
|
msg << " for `" << name << "'";
|
58
58
|
return error(msg.str(), as->pstate(), traces);
|
@@ -73,7 +73,7 @@ namespace Sass {
|
|
73
73
|
rest->separator(),
|
74
74
|
true);
|
75
75
|
// wrap each item from list as an argument
|
76
|
-
for (
|
76
|
+
for (ExpressionObj item : rest->elements()) {
|
77
77
|
if (Argument_Obj arg = Cast<Argument>(item)) {
|
78
78
|
arglist->append(SASS_MEMORY_COPY(arg)); // copy
|
79
79
|
} else {
|
@@ -100,7 +100,7 @@ namespace Sass {
|
|
100
100
|
Map_Obj argmap = Cast<Map>(a->value());
|
101
101
|
for (auto key : argmap->keys()) {
|
102
102
|
if (String_Constant_Obj str = Cast<String_Constant>(key)) {
|
103
|
-
|
103
|
+
sass::string param = unquote(str->value());
|
104
104
|
arglist->append(SASS_MEMORY_NEW(Argument,
|
105
105
|
key->pstate(),
|
106
106
|
argmap->at(key),
|
@@ -130,7 +130,7 @@ namespace Sass {
|
|
130
130
|
// skip any list completely if empty
|
131
131
|
if (ls && ls->empty() && a->is_rest_argument()) continue;
|
132
132
|
|
133
|
-
|
133
|
+
ExpressionObj value = a->value();
|
134
134
|
if (Argument_Obj arg = Cast<Argument>(value)) {
|
135
135
|
arglist->append(arg);
|
136
136
|
}
|
@@ -141,7 +141,7 @@ namespace Sass {
|
|
141
141
|
arglist->separator(rest->separator());
|
142
142
|
|
143
143
|
for (size_t i = 0, L = rest->length(); i < L; ++i) {
|
144
|
-
|
144
|
+
ExpressionObj obj = rest->value_at_index(i);
|
145
145
|
arglist->append(SASS_MEMORY_NEW(Argument,
|
146
146
|
obj->pstate(),
|
147
147
|
obj,
|
@@ -177,7 +177,7 @@ namespace Sass {
|
|
177
177
|
// normal param and rest arg
|
178
178
|
List_Obj arglist = Cast<List>(a->value());
|
179
179
|
if (!arglist) {
|
180
|
-
if (
|
180
|
+
if (ExpressionObj arg = Cast<Expression>(a->value())) {
|
181
181
|
arglist = SASS_MEMORY_NEW(List, a->pstate(), 1);
|
182
182
|
arglist->append(arg);
|
183
183
|
}
|
@@ -189,7 +189,7 @@ namespace Sass {
|
|
189
189
|
} else {
|
190
190
|
if (arglist->length() > LP - ip && !ps->has_rest_parameter()) {
|
191
191
|
size_t arg_count = (arglist->length() + LA - 1);
|
192
|
-
|
192
|
+
sass::ostream msg;
|
193
193
|
msg << callee << " takes " << LP;
|
194
194
|
msg << (LP == 1 ? " argument" : " arguments");
|
195
195
|
msg << " but " << arg_count;
|
@@ -202,7 +202,7 @@ namespace Sass {
|
|
202
202
|
}
|
203
203
|
}
|
204
204
|
// otherwise move one of the rest args into the param, converting to argument if necessary
|
205
|
-
|
205
|
+
ExpressionObj obj = arglist->at(0);
|
206
206
|
if (!(a = Cast<Argument>(obj))) {
|
207
207
|
Expression* a_to_convert = obj;
|
208
208
|
a = SASS_MEMORY_NEW(Argument,
|
@@ -226,10 +226,10 @@ namespace Sass {
|
|
226
226
|
traces.push_back(Backtrace(key->pstate()));
|
227
227
|
throw Exception::InvalidVarKwdType(key->pstate(), traces, key->inspect(), a);
|
228
228
|
}
|
229
|
-
|
229
|
+
sass::string param = "$" + unquote(val->value());
|
230
230
|
|
231
231
|
if (!param_map.count(param)) {
|
232
|
-
|
232
|
+
sass::ostream msg;
|
233
233
|
msg << callee << " has no parameter named " << param;
|
234
234
|
error(msg.str(), a->pstate(), traces);
|
235
235
|
}
|
@@ -243,7 +243,7 @@ namespace Sass {
|
|
243
243
|
|
244
244
|
if (a->name().empty()) {
|
245
245
|
if (env->has_local(p->name())) {
|
246
|
-
|
246
|
+
sass::ostream msg;
|
247
247
|
msg << "parameter " << p->name()
|
248
248
|
<< " provided more than once in call to " << callee;
|
249
249
|
error(msg.str(), a->pstate(), traces);
|
@@ -258,21 +258,21 @@ namespace Sass {
|
|
258
258
|
if (ps->has_rest_parameter()) {
|
259
259
|
varargs->append(a);
|
260
260
|
} else {
|
261
|
-
|
261
|
+
sass::ostream msg;
|
262
262
|
msg << callee << " has no parameter named " << a->name();
|
263
263
|
error(msg.str(), a->pstate(), traces);
|
264
264
|
}
|
265
265
|
}
|
266
266
|
if (param_map[a->name()]) {
|
267
267
|
if (param_map[a->name()]->is_rest_parameter()) {
|
268
|
-
|
268
|
+
sass::ostream msg;
|
269
269
|
msg << "argument " << a->name() << " of " << callee
|
270
270
|
<< "cannot be used as named argument";
|
271
271
|
error(msg.str(), a->pstate(), traces);
|
272
272
|
}
|
273
273
|
}
|
274
274
|
if (env->has_local(a->name())) {
|
275
|
-
|
275
|
+
sass::ostream msg;
|
276
276
|
msg << "parameter " << p->name()
|
277
277
|
<< "provided more than once in call to " << callee;
|
278
278
|
error(msg.str(), a->pstate(), traces);
|
data/ext/libsass/src/bind.hpp
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
namespace Sass {
|
10
10
|
|
11
|
-
void bind(
|
11
|
+
void bind(sass::string type, sass::string name, Parameters_Obj, Arguments_Obj, Env*, Eval*, Backtraces& traces);
|
12
12
|
|
13
13
|
}
|
14
14
|
|
data/ext/libsass/src/c2ast.cpp
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
namespace Sass {
|
10
10
|
|
11
|
-
Value* c2ast(union Sass_Value* v, Backtraces traces,
|
11
|
+
Value* c2ast(union Sass_Value* v, Backtraces traces, SourceSpan pstate)
|
12
12
|
{
|
13
13
|
using std::strlen;
|
14
14
|
using std::strcpy;
|
@@ -51,10 +51,10 @@ namespace Sass {
|
|
51
51
|
e = SASS_MEMORY_NEW(Null, pstate);
|
52
52
|
} break;
|
53
53
|
case SASS_ERROR: {
|
54
|
-
error("Error in C function: " +
|
54
|
+
error("Error in C function: " + sass::string(sass_error_get_message(v)), pstate, traces);
|
55
55
|
} break;
|
56
56
|
case SASS_WARNING: {
|
57
|
-
error("Warning in C function: " +
|
57
|
+
error("Warning in C function: " + sass::string(sass_warning_get_message(v)), pstate, traces);
|
58
58
|
} break;
|
59
59
|
default: break;
|
60
60
|
}
|
data/ext/libsass/src/c2ast.hpp
CHANGED
@@ -7,12 +7,12 @@
|
|
7
7
|
namespace Sass {
|
8
8
|
|
9
9
|
CheckNesting::CheckNesting()
|
10
|
-
: parents(
|
11
|
-
traces(
|
10
|
+
: parents(sass::vector<Statement*>()),
|
11
|
+
traces(sass::vector<Backtrace>()),
|
12
12
|
parent(0), current_mixin_definition(0)
|
13
13
|
{ }
|
14
14
|
|
15
|
-
void error(AST_Node* node, Backtraces traces,
|
15
|
+
void error(AST_Node* node, Backtraces traces, sass::string msg) {
|
16
16
|
traces.push_back(Backtrace(node->pstate()));
|
17
17
|
throw Exception::InvalidSass(node->pstate(), traces, msg);
|
18
18
|
}
|
@@ -21,9 +21,9 @@ namespace Sass {
|
|
21
21
|
{
|
22
22
|
Statement* old_parent = this->parent;
|
23
23
|
|
24
|
-
if (
|
25
|
-
|
26
|
-
|
24
|
+
if (AtRootRule* root = Cast<AtRootRule>(parent)) {
|
25
|
+
sass::vector<Statement*> old_parents = this->parents;
|
26
|
+
sass::vector<Statement*> new_parents;
|
27
27
|
|
28
28
|
for (size_t i = 0, L = this->parents.size(); i < L; i++) {
|
29
29
|
Statement* p = this->parents.at(i);
|
@@ -45,7 +45,7 @@ namespace Sass {
|
|
45
45
|
}
|
46
46
|
}
|
47
47
|
|
48
|
-
|
48
|
+
AtRootRule* ar = Cast<AtRootRule>(parent);
|
49
49
|
Block* ret = ar->block();
|
50
50
|
|
51
51
|
if (ret != NULL) {
|
@@ -75,7 +75,7 @@ namespace Sass {
|
|
75
75
|
}
|
76
76
|
|
77
77
|
if (!b) {
|
78
|
-
if (
|
78
|
+
if (ParentStatement* bb = Cast<ParentStatement>(parent)) {
|
79
79
|
b = bb->block();
|
80
80
|
}
|
81
81
|
}
|
@@ -192,7 +192,7 @@ namespace Sass {
|
|
192
192
|
void CheckNesting::invalid_extend_parent(Statement* parent, AST_Node* node)
|
193
193
|
{
|
194
194
|
if (!(
|
195
|
-
Cast<
|
195
|
+
Cast<StyleRule>(parent) ||
|
196
196
|
Cast<Mixin_Call>(parent) ||
|
197
197
|
is_mixin(parent)
|
198
198
|
)) {
|
@@ -204,10 +204,10 @@ namespace Sass {
|
|
204
204
|
// {
|
205
205
|
// for (auto pp : this->parents) {
|
206
206
|
// if (
|
207
|
-
// Cast<
|
208
|
-
// Cast<
|
207
|
+
// Cast<EachRule>(pp) ||
|
208
|
+
// Cast<ForRule>(pp) ||
|
209
209
|
// Cast<If>(pp) ||
|
210
|
-
// Cast<
|
210
|
+
// Cast<WhileRule>(pp) ||
|
211
211
|
// Cast<Trace>(pp) ||
|
212
212
|
// Cast<Mixin_Call>(pp) ||
|
213
213
|
// is_mixin(pp)
|
@@ -229,10 +229,10 @@ namespace Sass {
|
|
229
229
|
{
|
230
230
|
for (Statement* pp : this->parents) {
|
231
231
|
if (
|
232
|
-
Cast<
|
233
|
-
Cast<
|
232
|
+
Cast<EachRule>(pp) ||
|
233
|
+
Cast<ForRule>(pp) ||
|
234
234
|
Cast<If>(pp) ||
|
235
|
-
Cast<
|
235
|
+
Cast<WhileRule>(pp) ||
|
236
236
|
Cast<Trace>(pp) ||
|
237
237
|
Cast<Mixin_Call>(pp) ||
|
238
238
|
is_mixin(pp)
|
@@ -246,10 +246,10 @@ namespace Sass {
|
|
246
246
|
{
|
247
247
|
for (Statement* pp : this->parents) {
|
248
248
|
if (
|
249
|
-
Cast<
|
250
|
-
Cast<
|
249
|
+
Cast<EachRule>(pp) ||
|
250
|
+
Cast<ForRule>(pp) ||
|
251
251
|
Cast<If>(pp) ||
|
252
|
-
Cast<
|
252
|
+
Cast<WhileRule>(pp) ||
|
253
253
|
Cast<Trace>(pp) ||
|
254
254
|
Cast<Mixin_Call>(pp) ||
|
255
255
|
is_mixin(pp)
|
@@ -262,19 +262,19 @@ namespace Sass {
|
|
262
262
|
void CheckNesting::invalid_function_child(Statement* child)
|
263
263
|
{
|
264
264
|
if (!(
|
265
|
-
Cast<
|
266
|
-
Cast<
|
265
|
+
Cast<EachRule>(child) ||
|
266
|
+
Cast<ForRule>(child) ||
|
267
267
|
Cast<If>(child) ||
|
268
|
-
Cast<
|
268
|
+
Cast<WhileRule>(child) ||
|
269
269
|
Cast<Trace>(child) ||
|
270
270
|
Cast<Comment>(child) ||
|
271
|
-
Cast<
|
271
|
+
Cast<DebugRule>(child) ||
|
272
272
|
Cast<Return>(child) ||
|
273
273
|
Cast<Variable>(child) ||
|
274
274
|
// Ruby Sass doesn't distinguish variables and assignments
|
275
275
|
Cast<Assignment>(child) ||
|
276
|
-
Cast<
|
277
|
-
Cast<
|
276
|
+
Cast<WarningRule>(child) ||
|
277
|
+
Cast<ErrorRule>(child)
|
278
278
|
)) {
|
279
279
|
error(child, traces, "Functions can only contain variable declarations and control directives.");
|
280
280
|
}
|
@@ -283,10 +283,10 @@ namespace Sass {
|
|
283
283
|
void CheckNesting::invalid_prop_child(Statement* child)
|
284
284
|
{
|
285
285
|
if (!(
|
286
|
-
Cast<
|
287
|
-
Cast<
|
286
|
+
Cast<EachRule>(child) ||
|
287
|
+
Cast<ForRule>(child) ||
|
288
288
|
Cast<If>(child) ||
|
289
|
-
Cast<
|
289
|
+
Cast<WhileRule>(child) ||
|
290
290
|
Cast<Trace>(child) ||
|
291
291
|
Cast<Comment>(child) ||
|
292
292
|
Cast<Declaration>(child) ||
|
@@ -301,7 +301,7 @@ namespace Sass {
|
|
301
301
|
if (!(
|
302
302
|
is_mixin(parent) ||
|
303
303
|
is_directive_node(parent) ||
|
304
|
-
Cast<
|
304
|
+
Cast<StyleRule>(parent) ||
|
305
305
|
Cast<Keyframe_Rule>(parent) ||
|
306
306
|
Cast<Declaration>(parent) ||
|
307
307
|
Cast<Mixin_Call>(parent)
|
@@ -343,17 +343,17 @@ namespace Sass {
|
|
343
343
|
!is_at_root_node(grandparent);
|
344
344
|
|
345
345
|
return Cast<Import>(parent) ||
|
346
|
-
Cast<
|
347
|
-
Cast<
|
346
|
+
Cast<EachRule>(parent) ||
|
347
|
+
Cast<ForRule>(parent) ||
|
348
348
|
Cast<If>(parent) ||
|
349
|
-
Cast<
|
349
|
+
Cast<WhileRule>(parent) ||
|
350
350
|
Cast<Trace>(parent) ||
|
351
351
|
valid_bubble_node;
|
352
352
|
}
|
353
353
|
|
354
354
|
bool CheckNesting::is_charset(Statement* n)
|
355
355
|
{
|
356
|
-
|
356
|
+
AtRule* d = Cast<AtRule>(n);
|
357
357
|
return d && d->keyword() == "charset";
|
358
358
|
}
|
359
359
|
|
@@ -371,7 +371,7 @@ namespace Sass {
|
|
371
371
|
|
372
372
|
bool CheckNesting::is_root_node(Statement* n)
|
373
373
|
{
|
374
|
-
if (Cast<
|
374
|
+
if (Cast<StyleRule>(n)) return false;
|
375
375
|
|
376
376
|
Block* b = Cast<Block>(n);
|
377
377
|
return b && b->is_root();
|
@@ -379,15 +379,15 @@ namespace Sass {
|
|
379
379
|
|
380
380
|
bool CheckNesting::is_at_root_node(Statement* n)
|
381
381
|
{
|
382
|
-
return Cast<
|
382
|
+
return Cast<AtRootRule>(n) != NULL;
|
383
383
|
}
|
384
384
|
|
385
385
|
bool CheckNesting::is_directive_node(Statement* n)
|
386
386
|
{
|
387
|
-
return Cast<
|
387
|
+
return Cast<AtRule>(n) ||
|
388
388
|
Cast<Import>(n) ||
|
389
389
|
Cast<MediaRule>(n) ||
|
390
390
|
Cast<CssMediaRule>(n) ||
|
391
|
-
Cast<
|
391
|
+
Cast<SupportsRule>(n);
|
392
392
|
}
|
393
393
|
}
|