sassc 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +5 -0
  4. data/ext/libsass/VERSION +1 -1
  5. data/ext/libsass/include/sass/context.h +3 -0
  6. data/ext/libsass/src/MurmurHash2.hpp +91 -0
  7. data/ext/libsass/src/ast.cpp +117 -117
  8. data/ext/libsass/src/ast.hpp +160 -162
  9. data/ext/libsass/src/ast_def_macros.hpp +10 -10
  10. data/ext/libsass/src/ast_fwd_decl.cpp +2 -2
  11. data/ext/libsass/src/ast_fwd_decl.hpp +61 -52
  12. data/ext/libsass/src/ast_helpers.hpp +5 -5
  13. data/ext/libsass/src/ast_sel_cmp.cpp +18 -18
  14. data/ext/libsass/src/ast_sel_super.cpp +52 -52
  15. data/ext/libsass/src/ast_sel_unify.cpp +16 -16
  16. data/ext/libsass/src/ast_sel_weave.cpp +62 -62
  17. data/ext/libsass/src/ast_selectors.cpp +87 -77
  18. data/ext/libsass/src/ast_selectors.hpp +72 -62
  19. data/ext/libsass/src/ast_supports.cpp +35 -35
  20. data/ext/libsass/src/ast_supports.hpp +29 -29
  21. data/ext/libsass/src/ast_values.cpp +58 -58
  22. data/ext/libsass/src/ast_values.hpp +75 -75
  23. data/ext/libsass/src/backtrace.cpp +9 -9
  24. data/ext/libsass/src/backtrace.hpp +5 -5
  25. data/ext/libsass/src/base64vlq.cpp +2 -2
  26. data/ext/libsass/src/base64vlq.hpp +1 -1
  27. data/ext/libsass/src/bind.cpp +17 -17
  28. data/ext/libsass/src/bind.hpp +1 -1
  29. data/ext/libsass/src/c2ast.cpp +3 -3
  30. data/ext/libsass/src/c2ast.hpp +1 -1
  31. data/ext/libsass/src/check_nesting.cpp +36 -36
  32. data/ext/libsass/src/check_nesting.hpp +2 -2
  33. data/ext/libsass/src/color_maps.cpp +5 -5
  34. data/ext/libsass/src/color_maps.hpp +1 -1
  35. data/ext/libsass/src/context.cpp +63 -60
  36. data/ext/libsass/src/context.hpp +33 -33
  37. data/ext/libsass/src/cssize.cpp +30 -29
  38. data/ext/libsass/src/cssize.hpp +13 -13
  39. data/ext/libsass/src/dart_helpers.hpp +5 -5
  40. data/ext/libsass/src/debugger.hpp +127 -128
  41. data/ext/libsass/src/emitter.cpp +12 -12
  42. data/ext/libsass/src/emitter.hpp +10 -10
  43. data/ext/libsass/src/environment.cpp +27 -27
  44. data/ext/libsass/src/environment.hpp +24 -24
  45. data/ext/libsass/src/error_handling.cpp +42 -42
  46. data/ext/libsass/src/error_handling.hpp +38 -50
  47. data/ext/libsass/src/eval.cpp +138 -132
  48. data/ext/libsass/src/eval.hpp +17 -17
  49. data/ext/libsass/src/eval_selectors.cpp +3 -3
  50. data/ext/libsass/src/expand.cpp +70 -64
  51. data/ext/libsass/src/expand.hpp +12 -12
  52. data/ext/libsass/src/extender.cpp +55 -53
  53. data/ext/libsass/src/extender.hpp +14 -14
  54. data/ext/libsass/src/file.cpp +66 -58
  55. data/ext/libsass/src/file.hpp +23 -25
  56. data/ext/libsass/src/fn_colors.cpp +9 -9
  57. data/ext/libsass/src/fn_lists.cpp +18 -18
  58. data/ext/libsass/src/fn_maps.cpp +3 -3
  59. data/ext/libsass/src/fn_miscs.cpp +15 -15
  60. data/ext/libsass/src/fn_numbers.cpp +7 -7
  61. data/ext/libsass/src/fn_selectors.cpp +8 -8
  62. data/ext/libsass/src/fn_strings.cpp +34 -22
  63. data/ext/libsass/src/fn_utils.cpp +29 -26
  64. data/ext/libsass/src/fn_utils.hpp +10 -10
  65. data/ext/libsass/src/inspect.cpp +35 -34
  66. data/ext/libsass/src/inspect.hpp +21 -21
  67. data/ext/libsass/src/lexer.cpp +3 -1
  68. data/ext/libsass/src/listize.cpp +2 -2
  69. data/ext/libsass/src/mapping.hpp +1 -0
  70. data/ext/libsass/src/memory.hpp +12 -0
  71. data/ext/libsass/src/memory/allocator.cpp +48 -0
  72. data/ext/libsass/src/memory/allocator.hpp +138 -0
  73. data/ext/libsass/src/memory/config.hpp +20 -0
  74. data/ext/libsass/src/memory/memory_pool.hpp +186 -0
  75. data/ext/libsass/src/memory/{SharedPtr.cpp → shared_ptr.cpp} +2 -2
  76. data/ext/libsass/src/memory/{SharedPtr.hpp → shared_ptr.hpp} +18 -6
  77. data/ext/libsass/src/operation.hpp +44 -44
  78. data/ext/libsass/src/operators.cpp +18 -18
  79. data/ext/libsass/src/operators.hpp +11 -11
  80. data/ext/libsass/src/ordered_map.hpp +18 -18
  81. data/ext/libsass/src/output.cpp +16 -16
  82. data/ext/libsass/src/output.hpp +5 -5
  83. data/ext/libsass/src/parser.cpp +327 -345
  84. data/ext/libsass/src/parser.hpp +77 -87
  85. data/ext/libsass/src/parser_selectors.cpp +6 -6
  86. data/ext/libsass/src/permutate.hpp +39 -15
  87. data/ext/libsass/src/plugins.cpp +7 -7
  88. data/ext/libsass/src/plugins.hpp +8 -8
  89. data/ext/libsass/src/position.cpp +7 -26
  90. data/ext/libsass/src/position.hpp +44 -21
  91. data/ext/libsass/src/remove_placeholders.cpp +4 -4
  92. data/ext/libsass/src/remove_placeholders.hpp +3 -3
  93. data/ext/libsass/src/sass.cpp +16 -15
  94. data/ext/libsass/src/sass.hpp +9 -5
  95. data/ext/libsass/src/sass_context.cpp +52 -34
  96. data/ext/libsass/src/sass_values.cpp +8 -10
  97. data/ext/libsass/src/settings.hpp +19 -0
  98. data/ext/libsass/src/source.cpp +69 -0
  99. data/ext/libsass/src/source.hpp +95 -0
  100. data/ext/libsass/src/source_data.hpp +32 -0
  101. data/ext/libsass/src/source_map.cpp +22 -18
  102. data/ext/libsass/src/source_map.hpp +12 -9
  103. data/ext/libsass/src/units.cpp +19 -19
  104. data/ext/libsass/src/units.hpp +8 -8
  105. data/ext/libsass/src/utf8_string.cpp +9 -10
  106. data/ext/libsass/src/utf8_string.hpp +7 -6
  107. data/ext/libsass/src/util.cpp +38 -38
  108. data/ext/libsass/src/util.hpp +18 -18
  109. data/ext/libsass/src/util_string.cpp +13 -13
  110. data/ext/libsass/src/util_string.hpp +9 -8
  111. data/ext/libsass/src/values.cpp +12 -12
  112. data/lib/sassc/native.rb +3 -5
  113. data/lib/sassc/version.rb +1 -1
  114. data/test/native_test.rb +4 -4
  115. metadata +14 -5
  116. data/lib/sassc/native/lib_c.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aebf2c0084662833c589a03cd0de02b8b72d3968f4c33a27d1b37c330a692bf2
4
- data.tar.gz: b828b00fb88f9ed8414cd7abfd86afdced6458f47e9560789690d8f9a3670c43
3
+ metadata.gz: 75155de90eb3449ed2a1214ca6ab2b82ffe69b144c2a8eaf8a6a4fd522b58ea4
4
+ data.tar.gz: 8575ebe24a2d56a9bea0e4574ebd23753e283d3b34bf571489f318a357bce2b9
5
5
  SHA512:
6
- metadata.gz: 802546b5350e0b550b8ba01a125e03dbe52ce9541003ae811782b4cf2c197e12b5056520376a5dbf5317a2b033f70808fafd1e62fe40ecd12cf2d56c52881c6e
7
- data.tar.gz: 864f16c8f74351159107fb1ccfd3abf837447b41a846a1c990481e7b28732222c4abde988aebe953fb500db2424a0d7d7ce2fc1c351ed2711aa1fa5ea88e37c1
6
+ metadata.gz: ae3eb9431fb5d9de9e1c1759844e1144aba73f59b7de40e1b06d77ba5567bc894a2f0a4ef2d3b6dcce9226044d52de5eeacb7759e715f3eb1bd4818b56b9876c
7
+ data.tar.gz: e4a07f5789ec2d9f4dbf04bfaf13b5d12224cf4ffd9f72721fac8edfd10eb2b7085af53d70248ce78112ee7af0ea06fb5e452388997eab810d07bd5a7de08a5c
@@ -10,6 +10,7 @@ rvm:
10
10
  - 2.4.6
11
11
  - 2.5.5
12
12
  - 2.6.3
13
+ - 2.7.0
13
14
  - truffleruby
14
15
  notifications:
15
16
  email: false
@@ -1,3 +1,8 @@
1
+ - **2.4.0**
2
+ - [Update libsass to 3.6.4](https://github.com/sass/sassc-ruby/pull/199)
3
+ - [Use FFI::MemoryPointer instead of libc's malloc()](https://github.com/sass/sassc-ruby/pull/205)
4
+ - [Test against Ruby 2.7.0](https://github.com/sass/sassc-ruby/pull/193)
5
+
1
6
  - **2.3.0**
2
7
  - [Fix rake gem:native task](https://github.com/sass/sassc-ruby/pull/196)
3
8
  - [disable lto flag for darwin + nix](https://github.com/sass/sassc-ruby/pull/166)
@@ -1 +1 @@
1
- 3.6.3
1
+ 3.6.4
@@ -125,6 +125,9 @@ ADDAPI char** ADDCALL sass_context_get_included_files (struct Sass_Context* ctx)
125
125
  // Getters for options include path array
126
126
  ADDAPI size_t ADDCALL sass_option_get_include_path_size(struct Sass_Options* options);
127
127
  ADDAPI const char* ADDCALL sass_option_get_include_path(struct Sass_Options* options, size_t i);
128
+ // Plugin paths to load dynamic libraries work the same
129
+ ADDAPI size_t ADDCALL sass_option_get_plugin_path_size(struct Sass_Options* options);
130
+ ADDAPI const char* ADDCALL sass_option_get_plugin_path(struct Sass_Options* options, size_t i);
128
131
 
129
132
  // Calculate the size of the stored null terminated array
130
133
  ADDAPI size_t ADDCALL sass_context_get_included_files_size (struct Sass_Context* ctx);
@@ -0,0 +1,91 @@
1
+ //-----------------------------------------------------------------------------
2
+ // MurmurHash2 was written by Austin Appleby, and is placed in the public
3
+ // domain. The author hereby disclaims copyright to this source code.
4
+ //-----------------------------------------------------------------------------
5
+ // LibSass only needs MurmurHash2, so we made this header only
6
+ //-----------------------------------------------------------------------------
7
+
8
+ #ifndef _MURMURHASH2_H_
9
+ #define _MURMURHASH2_H_
10
+
11
+ //-----------------------------------------------------------------------------
12
+ // Platform-specific functions and macros
13
+
14
+ // Microsoft Visual Studio
15
+
16
+ #if defined(_MSC_VER) && (_MSC_VER < 1600)
17
+
18
+ typedef unsigned char uint8_t;
19
+ typedef unsigned int uint32_t;
20
+ typedef unsigned __int64 uint64_t;
21
+
22
+ // Other compilers
23
+
24
+ #else // defined(_MSC_VER)
25
+
26
+ #include <stdint.h>
27
+
28
+ #endif // !defined(_MSC_VER)
29
+
30
+ //-----------------------------------------------------------------------------
31
+
32
+ inline uint32_t MurmurHash2 ( const void * key, int len, uint32_t seed )
33
+ {
34
+ // 'm' and 'r' are mixing constants generated offline.
35
+ // They're not really 'magic', they just happen to work well.
36
+
37
+ const uint32_t m = 0x5bd1e995;
38
+ const int r = 24;
39
+
40
+ // Initialize the hash to a 'random' value
41
+
42
+ uint32_t h = seed ^ len;
43
+
44
+ // Mix 4 bytes at a time into the hash
45
+
46
+ const unsigned char * data = (const unsigned char *)key;
47
+
48
+ while(len >= 4)
49
+ {
50
+ uint32_t k = *(uint32_t*)data;
51
+
52
+ k *= m;
53
+ k ^= k >> r;
54
+ k *= m;
55
+
56
+ h *= m;
57
+ h ^= k;
58
+
59
+ data += 4;
60
+ len -= 4;
61
+ }
62
+
63
+ // Handle the last few bytes of the input array
64
+
65
+ switch(len)
66
+ {
67
+ case 3:
68
+ h ^= data[2] << 16;
69
+ /* fall through */
70
+ case 2:
71
+ h ^= data[1] << 8;
72
+ /* fall through */
73
+ case 1:
74
+ h ^= data[0];
75
+ h *= m;
76
+ };
77
+
78
+ // Do a few final mixes of the hash to ensure the last few
79
+ // bytes are well-incorporated.
80
+
81
+ h ^= h >> 13;
82
+ h *= m;
83
+ h ^= h >> 15;
84
+
85
+ return h;
86
+ }
87
+
88
+ //-----------------------------------------------------------------------------
89
+
90
+ #endif // _MURMURHASH2_H_
91
+
@@ -6,7 +6,7 @@
6
6
 
7
7
  namespace Sass {
8
8
 
9
- static Null sass_null(ParserState("null"));
9
+ static Null sass_null(SourceSpan("null"));
10
10
 
11
11
  const char* sass_op_to_name(enum Sass_OP op) {
12
12
  switch (op) {
@@ -53,12 +53,12 @@ namespace Sass {
53
53
  /////////////////////////////////////////////////////////////////////////
54
54
  /////////////////////////////////////////////////////////////////////////
55
55
 
56
- void AST_Node::update_pstate(const ParserState& pstate)
56
+ void AST_Node::update_pstate(const SourceSpan& pstate)
57
57
  {
58
- pstate_.offset += pstate - pstate_ + pstate.offset;
58
+ pstate_.offset += pstate.position - pstate_.position + pstate.offset;
59
59
  }
60
60
 
61
- std::string AST_Node::to_string(Sass_Inspect_Options opt) const
61
+ sass::string AST_Node::to_string(Sass_Inspect_Options opt) const
62
62
  {
63
63
  Sass_Output_Options out(opt);
64
64
  Emitter emitter(out);
@@ -69,7 +69,7 @@ namespace Sass {
69
69
  return i.get_buffer();
70
70
  }
71
71
 
72
- std::string AST_Node::to_css(Sass_Inspect_Options opt) const
72
+ sass::string AST_Node::to_css(Sass_Inspect_Options opt) const
73
73
  {
74
74
  opt.output_style = TO_CSS;
75
75
  Sass_Output_Options out(opt);
@@ -81,7 +81,7 @@ namespace Sass {
81
81
  return i.get_buffer();
82
82
  }
83
83
 
84
- std::string AST_Node::to_string() const
84
+ sass::string AST_Node::to_string() const
85
85
  {
86
86
  return to_string({ NESTED, 5 });
87
87
  }
@@ -89,7 +89,7 @@ namespace Sass {
89
89
  /////////////////////////////////////////////////////////////////////////
90
90
  /////////////////////////////////////////////////////////////////////////
91
91
 
92
- Statement::Statement(ParserState pstate, Type st, size_t t)
92
+ Statement::Statement(SourceSpan pstate, Type st, size_t t)
93
93
  : AST_Node(pstate), statement_type_(st), tabs_(t), group_end_(false)
94
94
  { }
95
95
  Statement::Statement(const Statement* ptr)
@@ -117,7 +117,7 @@ namespace Sass {
117
117
  /////////////////////////////////////////////////////////////////////////
118
118
  /////////////////////////////////////////////////////////////////////////
119
119
 
120
- Block::Block(ParserState pstate, size_t s, bool r)
120
+ Block::Block(SourceSpan pstate, size_t s, bool r)
121
121
  : Statement(pstate),
122
122
  Vectorized<Statement_Obj>(s),
123
123
  is_root_(r)
@@ -147,14 +147,14 @@ namespace Sass {
147
147
  /////////////////////////////////////////////////////////////////////////
148
148
  /////////////////////////////////////////////////////////////////////////
149
149
 
150
- Has_Block::Has_Block(ParserState pstate, Block_Obj b)
150
+ ParentStatement::ParentStatement(SourceSpan pstate, Block_Obj b)
151
151
  : Statement(pstate), block_(b)
152
152
  { }
153
- Has_Block::Has_Block(const Has_Block* ptr)
153
+ ParentStatement::ParentStatement(const ParentStatement* ptr)
154
154
  : Statement(ptr), block_(ptr->block_)
155
155
  { }
156
156
 
157
- bool Has_Block::has_content()
157
+ bool ParentStatement::has_content()
158
158
  {
159
159
  return (block_ && block_->has_content()) || Statement::has_content();
160
160
  }
@@ -162,17 +162,17 @@ namespace Sass {
162
162
  /////////////////////////////////////////////////////////////////////////
163
163
  /////////////////////////////////////////////////////////////////////////
164
164
 
165
- Ruleset::Ruleset(ParserState pstate, SelectorListObj s, Block_Obj b)
166
- : Has_Block(pstate, b), selector_(s), schema_(), is_root_(false)
165
+ StyleRule::StyleRule(SourceSpan pstate, SelectorListObj s, Block_Obj b)
166
+ : ParentStatement(pstate, b), selector_(s), schema_(), is_root_(false)
167
167
  { statement_type(RULESET); }
168
- Ruleset::Ruleset(const Ruleset* ptr)
169
- : Has_Block(ptr),
168
+ StyleRule::StyleRule(const StyleRule* ptr)
169
+ : ParentStatement(ptr),
170
170
  selector_(ptr->selector_),
171
171
  schema_(ptr->schema_),
172
172
  is_root_(ptr->is_root_)
173
173
  { statement_type(RULESET); }
174
174
 
175
- bool Ruleset::is_invisible() const {
175
+ bool StyleRule::is_invisible() const {
176
176
  if (const SelectorList * sl = Cast<SelectorList>(selector())) {
177
177
  for (size_t i = 0, L = sl->length(); i < L; i += 1)
178
178
  if (!(*sl)[i]->isInvisible()) return false;
@@ -183,7 +183,7 @@ namespace Sass {
183
183
  /////////////////////////////////////////////////////////////////////////
184
184
  /////////////////////////////////////////////////////////////////////////
185
185
 
186
- Bubble::Bubble(ParserState pstate, Statement_Obj n, Statement_Obj g, size_t t)
186
+ Bubble::Bubble(SourceSpan pstate, Statement_Obj n, Statement_Obj g, size_t t)
187
187
  : Statement(pstate, Statement::BUBBLE, t), node_(n), group_end_(g == nullptr)
188
188
  { }
189
189
  Bubble::Bubble(const Bubble* ptr)
@@ -200,11 +200,11 @@ namespace Sass {
200
200
  /////////////////////////////////////////////////////////////////////////
201
201
  /////////////////////////////////////////////////////////////////////////
202
202
 
203
- Trace::Trace(ParserState pstate, std::string n, Block_Obj b, char type)
204
- : Has_Block(pstate, b), type_(type), name_(n)
203
+ Trace::Trace(SourceSpan pstate, sass::string n, Block_Obj b, char type)
204
+ : ParentStatement(pstate, b), type_(type), name_(n)
205
205
  { }
206
206
  Trace::Trace(const Trace* ptr)
207
- : Has_Block(ptr),
207
+ : ParentStatement(ptr),
208
208
  type_(ptr->type_),
209
209
  name_(ptr->name_)
210
210
  { }
@@ -212,25 +212,25 @@ namespace Sass {
212
212
  /////////////////////////////////////////////////////////////////////////
213
213
  /////////////////////////////////////////////////////////////////////////
214
214
 
215
- Directive::Directive(ParserState pstate, std::string kwd, SelectorListObj sel, Block_Obj b, Expression_Obj val)
216
- : Has_Block(pstate, b), keyword_(kwd), selector_(sel), value_(val) // set value manually if needed
215
+ AtRule::AtRule(SourceSpan pstate, sass::string kwd, SelectorListObj sel, Block_Obj b, ExpressionObj val)
216
+ : ParentStatement(pstate, b), keyword_(kwd), selector_(sel), value_(val) // set value manually if needed
217
217
  { statement_type(DIRECTIVE); }
218
- Directive::Directive(const Directive* ptr)
219
- : Has_Block(ptr),
218
+ AtRule::AtRule(const AtRule* ptr)
219
+ : ParentStatement(ptr),
220
220
  keyword_(ptr->keyword_),
221
221
  selector_(ptr->selector_),
222
222
  value_(ptr->value_) // set value manually if needed
223
223
  { statement_type(DIRECTIVE); }
224
224
 
225
- bool Directive::bubbles() { return is_keyframes() || is_media(); }
225
+ bool AtRule::bubbles() { return is_keyframes() || is_media(); }
226
226
 
227
- bool Directive::is_media() {
227
+ bool AtRule::is_media() {
228
228
  return keyword_.compare("@-webkit-media") == 0 ||
229
229
  keyword_.compare("@-moz-media") == 0 ||
230
230
  keyword_.compare("@-o-media") == 0 ||
231
231
  keyword_.compare("@media") == 0;
232
232
  }
233
- bool Directive::is_keyframes() {
233
+ bool AtRule::is_keyframes() {
234
234
  return keyword_.compare("@-webkit-keyframes") == 0 ||
235
235
  keyword_.compare("@-moz-keyframes") == 0 ||
236
236
  keyword_.compare("@-o-keyframes") == 0 ||
@@ -240,21 +240,21 @@ namespace Sass {
240
240
  /////////////////////////////////////////////////////////////////////////
241
241
  /////////////////////////////////////////////////////////////////////////
242
242
 
243
- Keyframe_Rule::Keyframe_Rule(ParserState pstate, Block_Obj b)
244
- : Has_Block(pstate, b), name_()
243
+ Keyframe_Rule::Keyframe_Rule(SourceSpan pstate, Block_Obj b)
244
+ : ParentStatement(pstate, b), name_()
245
245
  { statement_type(KEYFRAMERULE); }
246
246
  Keyframe_Rule::Keyframe_Rule(const Keyframe_Rule* ptr)
247
- : Has_Block(ptr), name_(ptr->name_)
247
+ : ParentStatement(ptr), name_(ptr->name_)
248
248
  { statement_type(KEYFRAMERULE); }
249
249
 
250
250
  /////////////////////////////////////////////////////////////////////////
251
251
  /////////////////////////////////////////////////////////////////////////
252
252
 
253
- Declaration::Declaration(ParserState pstate, String_Obj prop, Expression_Obj val, bool i, bool c, Block_Obj b)
254
- : Has_Block(pstate, b), property_(prop), value_(val), is_important_(i), is_custom_property_(c), is_indented_(false)
253
+ Declaration::Declaration(SourceSpan pstate, String_Obj prop, ExpressionObj val, bool i, bool c, Block_Obj b)
254
+ : ParentStatement(pstate, b), property_(prop), value_(val), is_important_(i), is_custom_property_(c), is_indented_(false)
255
255
  { statement_type(DECLARATION); }
256
256
  Declaration::Declaration(const Declaration* ptr)
257
- : Has_Block(ptr),
257
+ : ParentStatement(ptr),
258
258
  property_(ptr->property_),
259
259
  value_(ptr->value_),
260
260
  is_important_(ptr->is_important_),
@@ -271,7 +271,7 @@ namespace Sass {
271
271
  /////////////////////////////////////////////////////////////////////////
272
272
  /////////////////////////////////////////////////////////////////////////
273
273
 
274
- Assignment::Assignment(ParserState pstate, std::string var, Expression_Obj val, bool is_default, bool is_global)
274
+ Assignment::Assignment(SourceSpan pstate, sass::string var, ExpressionObj val, bool is_default, bool is_global)
275
275
  : Statement(pstate), variable_(var), value_(val), is_default_(is_default), is_global_(is_global)
276
276
  { statement_type(ASSIGNMENT); }
277
277
  Assignment::Assignment(const Assignment* ptr)
@@ -285,10 +285,10 @@ namespace Sass {
285
285
  /////////////////////////////////////////////////////////////////////////
286
286
  /////////////////////////////////////////////////////////////////////////
287
287
 
288
- Import::Import(ParserState pstate)
288
+ Import::Import(SourceSpan pstate)
289
289
  : Statement(pstate),
290
- urls_(std::vector<Expression_Obj>()),
291
- incs_(std::vector<Include>()),
290
+ urls_(sass::vector<ExpressionObj>()),
291
+ incs_(sass::vector<Include>()),
292
292
  import_queries_()
293
293
  { statement_type(IMPORT); }
294
294
  Import::Import(const Import* ptr)
@@ -298,56 +298,56 @@ namespace Sass {
298
298
  import_queries_(ptr->import_queries_)
299
299
  { statement_type(IMPORT); }
300
300
 
301
- std::vector<Include>& Import::incs() { return incs_; }
302
- std::vector<Expression_Obj>& Import::urls() { return urls_; }
301
+ sass::vector<Include>& Import::incs() { return incs_; }
302
+ sass::vector<ExpressionObj>& Import::urls() { return urls_; }
303
303
 
304
304
  /////////////////////////////////////////////////////////////////////////
305
305
  /////////////////////////////////////////////////////////////////////////
306
306
 
307
- Import_Stub::Import_Stub(ParserState pstate, Include res)
307
+ Import_Stub::Import_Stub(SourceSpan pstate, Include res)
308
308
  : Statement(pstate), resource_(res)
309
309
  { statement_type(IMPORT_STUB); }
310
310
  Import_Stub::Import_Stub(const Import_Stub* ptr)
311
311
  : Statement(ptr), resource_(ptr->resource_)
312
312
  { statement_type(IMPORT_STUB); }
313
313
  Include Import_Stub::resource() { return resource_; };
314
- std::string Import_Stub::imp_path() { return resource_.imp_path; };
315
- std::string Import_Stub::abs_path() { return resource_.abs_path; };
314
+ sass::string Import_Stub::imp_path() { return resource_.imp_path; };
315
+ sass::string Import_Stub::abs_path() { return resource_.abs_path; };
316
316
 
317
317
  /////////////////////////////////////////////////////////////////////////
318
318
  /////////////////////////////////////////////////////////////////////////
319
319
 
320
- Warning::Warning(ParserState pstate, Expression_Obj msg)
320
+ WarningRule::WarningRule(SourceSpan pstate, ExpressionObj msg)
321
321
  : Statement(pstate), message_(msg)
322
322
  { statement_type(WARNING); }
323
- Warning::Warning(const Warning* ptr)
323
+ WarningRule::WarningRule(const WarningRule* ptr)
324
324
  : Statement(ptr), message_(ptr->message_)
325
325
  { statement_type(WARNING); }
326
326
 
327
327
  /////////////////////////////////////////////////////////////////////////
328
328
  /////////////////////////////////////////////////////////////////////////
329
329
 
330
- Error::Error(ParserState pstate, Expression_Obj msg)
330
+ ErrorRule::ErrorRule(SourceSpan pstate, ExpressionObj msg)
331
331
  : Statement(pstate), message_(msg)
332
332
  { statement_type(ERROR); }
333
- Error::Error(const Error* ptr)
333
+ ErrorRule::ErrorRule(const ErrorRule* ptr)
334
334
  : Statement(ptr), message_(ptr->message_)
335
335
  { statement_type(ERROR); }
336
336
 
337
337
  /////////////////////////////////////////////////////////////////////////
338
338
  /////////////////////////////////////////////////////////////////////////
339
339
 
340
- Debug::Debug(ParserState pstate, Expression_Obj val)
340
+ DebugRule::DebugRule(SourceSpan pstate, ExpressionObj val)
341
341
  : Statement(pstate), value_(val)
342
342
  { statement_type(DEBUGSTMT); }
343
- Debug::Debug(const Debug* ptr)
343
+ DebugRule::DebugRule(const DebugRule* ptr)
344
344
  : Statement(ptr), value_(ptr->value_)
345
345
  { statement_type(DEBUGSTMT); }
346
346
 
347
347
  /////////////////////////////////////////////////////////////////////////
348
348
  /////////////////////////////////////////////////////////////////////////
349
349
 
350
- Comment::Comment(ParserState pstate, String_Obj txt, bool is_important)
350
+ Comment::Comment(SourceSpan pstate, String_Obj txt, bool is_important)
351
351
  : Statement(pstate), text_(txt), is_important_(is_important)
352
352
  { statement_type(COMMENT); }
353
353
  Comment::Comment(const Comment* ptr)
@@ -364,30 +364,30 @@ namespace Sass {
364
364
  /////////////////////////////////////////////////////////////////////////
365
365
  /////////////////////////////////////////////////////////////////////////
366
366
 
367
- If::If(ParserState pstate, Expression_Obj pred, Block_Obj con, Block_Obj alt)
368
- : Has_Block(pstate, con), predicate_(pred), alternative_(alt)
367
+ If::If(SourceSpan pstate, ExpressionObj pred, Block_Obj con, Block_Obj alt)
368
+ : ParentStatement(pstate, con), predicate_(pred), alternative_(alt)
369
369
  { statement_type(IF); }
370
370
  If::If(const If* ptr)
371
- : Has_Block(ptr),
371
+ : ParentStatement(ptr),
372
372
  predicate_(ptr->predicate_),
373
373
  alternative_(ptr->alternative_)
374
374
  { statement_type(IF); }
375
375
 
376
376
  bool If::has_content()
377
377
  {
378
- return Has_Block::has_content() || (alternative_ && alternative_->has_content());
378
+ return ParentStatement::has_content() || (alternative_ && alternative_->has_content());
379
379
  }
380
380
 
381
381
  /////////////////////////////////////////////////////////////////////////
382
382
  /////////////////////////////////////////////////////////////////////////
383
383
 
384
- For::For(ParserState pstate,
385
- std::string var, Expression_Obj lo, Expression_Obj hi, Block_Obj b, bool inc)
386
- : Has_Block(pstate, b),
384
+ ForRule::ForRule(SourceSpan pstate,
385
+ sass::string var, ExpressionObj lo, ExpressionObj hi, Block_Obj b, bool inc)
386
+ : ParentStatement(pstate, b),
387
387
  variable_(var), lower_bound_(lo), upper_bound_(hi), is_inclusive_(inc)
388
388
  { statement_type(FOR); }
389
- For::For(const For* ptr)
390
- : Has_Block(ptr),
389
+ ForRule::ForRule(const ForRule* ptr)
390
+ : ParentStatement(ptr),
391
391
  variable_(ptr->variable_),
392
392
  lower_bound_(ptr->lower_bound_),
393
393
  upper_bound_(ptr->upper_bound_),
@@ -397,27 +397,27 @@ namespace Sass {
397
397
  /////////////////////////////////////////////////////////////////////////
398
398
  /////////////////////////////////////////////////////////////////////////
399
399
 
400
- Each::Each(ParserState pstate, std::vector<std::string> vars, Expression_Obj lst, Block_Obj b)
401
- : Has_Block(pstate, b), variables_(vars), list_(lst)
400
+ EachRule::EachRule(SourceSpan pstate, sass::vector<sass::string> vars, ExpressionObj lst, Block_Obj b)
401
+ : ParentStatement(pstate, b), variables_(vars), list_(lst)
402
402
  { statement_type(EACH); }
403
- Each::Each(const Each* ptr)
404
- : Has_Block(ptr), variables_(ptr->variables_), list_(ptr->list_)
403
+ EachRule::EachRule(const EachRule* ptr)
404
+ : ParentStatement(ptr), variables_(ptr->variables_), list_(ptr->list_)
405
405
  { statement_type(EACH); }
406
406
 
407
407
  /////////////////////////////////////////////////////////////////////////
408
408
  /////////////////////////////////////////////////////////////////////////
409
409
 
410
- While::While(ParserState pstate, Expression_Obj pred, Block_Obj b)
411
- : Has_Block(pstate, b), predicate_(pred)
410
+ WhileRule::WhileRule(SourceSpan pstate, ExpressionObj pred, Block_Obj b)
411
+ : ParentStatement(pstate, b), predicate_(pred)
412
412
  { statement_type(WHILE); }
413
- While::While(const While* ptr)
414
- : Has_Block(ptr), predicate_(ptr->predicate_)
413
+ WhileRule::WhileRule(const WhileRule* ptr)
414
+ : ParentStatement(ptr), predicate_(ptr->predicate_)
415
415
  { statement_type(WHILE); }
416
416
 
417
417
  /////////////////////////////////////////////////////////////////////////
418
418
  /////////////////////////////////////////////////////////////////////////
419
419
 
420
- Return::Return(ParserState pstate, Expression_Obj val)
420
+ Return::Return(SourceSpan pstate, ExpressionObj val)
421
421
  : Statement(pstate), value_(val)
422
422
  { statement_type(RETURN); }
423
423
  Return::Return(const Return* ptr)
@@ -427,10 +427,10 @@ namespace Sass {
427
427
  /////////////////////////////////////////////////////////////////////////
428
428
  /////////////////////////////////////////////////////////////////////////
429
429
 
430
- ExtendRule::ExtendRule(ParserState pstate, SelectorListObj s)
430
+ ExtendRule::ExtendRule(SourceSpan pstate, SelectorListObj s)
431
431
  : Statement(pstate), isOptional_(false), selector_(s), schema_()
432
432
  { statement_type(EXTEND); }
433
- ExtendRule::ExtendRule(ParserState pstate, Selector_Schema_Obj s)
433
+ ExtendRule::ExtendRule(SourceSpan pstate, Selector_Schema_Obj s)
434
434
  : Statement(pstate), isOptional_(false), selector_(), schema_(s)
435
435
  {
436
436
  statement_type(EXTEND);
@@ -446,7 +446,7 @@ namespace Sass {
446
446
  /////////////////////////////////////////////////////////////////////////
447
447
 
448
448
  Definition::Definition(const Definition* ptr)
449
- : Has_Block(ptr),
449
+ : ParentStatement(ptr),
450
450
  name_(ptr->name_),
451
451
  parameters_(ptr->parameters_),
452
452
  environment_(ptr->environment_),
@@ -458,12 +458,12 @@ namespace Sass {
458
458
  signature_(ptr->signature_)
459
459
  { }
460
460
 
461
- Definition::Definition(ParserState pstate,
462
- std::string n,
461
+ Definition::Definition(SourceSpan pstate,
462
+ sass::string n,
463
463
  Parameters_Obj params,
464
464
  Block_Obj b,
465
465
  Type t)
466
- : Has_Block(pstate, b),
466
+ : ParentStatement(pstate, b),
467
467
  name_(n),
468
468
  parameters_(params),
469
469
  environment_(0),
@@ -475,13 +475,13 @@ namespace Sass {
475
475
  signature_(0)
476
476
  { }
477
477
 
478
- Definition::Definition(ParserState pstate,
478
+ Definition::Definition(SourceSpan pstate,
479
479
  Signature sig,
480
- std::string n,
480
+ sass::string n,
481
481
  Parameters_Obj params,
482
482
  Native_Function func_ptr,
483
483
  bool overload_stub)
484
- : Has_Block(pstate, {}),
484
+ : ParentStatement(pstate, {}),
485
485
  name_(n),
486
486
  parameters_(params),
487
487
  environment_(0),
@@ -493,12 +493,12 @@ namespace Sass {
493
493
  signature_(sig)
494
494
  { }
495
495
 
496
- Definition::Definition(ParserState pstate,
496
+ Definition::Definition(SourceSpan pstate,
497
497
  Signature sig,
498
- std::string n,
498
+ sass::string n,
499
499
  Parameters_Obj params,
500
500
  Sass_Function_Entry c_func)
501
- : Has_Block(pstate, {}),
501
+ : ParentStatement(pstate, {}),
502
502
  name_(n),
503
503
  parameters_(params),
504
504
  environment_(0),
@@ -513,11 +513,11 @@ namespace Sass {
513
513
  /////////////////////////////////////////////////////////////////////////
514
514
  /////////////////////////////////////////////////////////////////////////
515
515
 
516
- Mixin_Call::Mixin_Call(ParserState pstate, std::string n, Arguments_Obj args, Parameters_Obj b_params, Block_Obj b)
517
- : Has_Block(pstate, b), name_(n), arguments_(args), block_parameters_(b_params)
516
+ Mixin_Call::Mixin_Call(SourceSpan pstate, sass::string n, Arguments_Obj args, Parameters_Obj b_params, Block_Obj b)
517
+ : ParentStatement(pstate, b), name_(n), arguments_(args), block_parameters_(b_params)
518
518
  { }
519
519
  Mixin_Call::Mixin_Call(const Mixin_Call* ptr)
520
- : Has_Block(ptr),
520
+ : ParentStatement(ptr),
521
521
  name_(ptr->name_),
522
522
  arguments_(ptr->arguments_),
523
523
  block_parameters_(ptr->block_parameters_)
@@ -526,7 +526,7 @@ namespace Sass {
526
526
  /////////////////////////////////////////////////////////////////////////
527
527
  /////////////////////////////////////////////////////////////////////////
528
528
 
529
- Content::Content(ParserState pstate, Arguments_Obj args)
529
+ Content::Content(SourceSpan pstate, Arguments_Obj args)
530
530
  : Statement(pstate),
531
531
  arguments_(args)
532
532
  { statement_type(CONTENT); }
@@ -538,7 +538,7 @@ namespace Sass {
538
538
  /////////////////////////////////////////////////////////////////////////
539
539
  /////////////////////////////////////////////////////////////////////////
540
540
 
541
- Expression::Expression(ParserState pstate, bool d, bool e, bool i, Type ct)
541
+ Expression::Expression(SourceSpan pstate, bool d, bool e, bool i, Type ct)
542
542
  : AST_Node(pstate),
543
543
  is_delayed_(d),
544
544
  is_expanded_(e),
@@ -557,7 +557,7 @@ namespace Sass {
557
557
  /////////////////////////////////////////////////////////////////////////
558
558
  /////////////////////////////////////////////////////////////////////////
559
559
 
560
- Unary_Expression::Unary_Expression(ParserState pstate, Type t, Expression_Obj o)
560
+ Unary_Expression::Unary_Expression(SourceSpan pstate, Type t, ExpressionObj o)
561
561
  : Expression(pstate), optype_(t), operand_(o), hash_(0)
562
562
  { }
563
563
  Unary_Expression::Unary_Expression(const Unary_Expression* ptr)
@@ -566,7 +566,7 @@ namespace Sass {
566
566
  operand_(ptr->operand_),
567
567
  hash_(ptr->hash_)
568
568
  { }
569
- const std::string Unary_Expression::type_name() {
569
+ const sass::string Unary_Expression::type_name() {
570
570
  switch (optype_) {
571
571
  case PLUS: return "plus";
572
572
  case MINUS: return "minus";
@@ -602,7 +602,7 @@ namespace Sass {
602
602
  /////////////////////////////////////////////////////////////////////////
603
603
  /////////////////////////////////////////////////////////////////////////
604
604
 
605
- Argument::Argument(ParserState pstate, Expression_Obj val, std::string n, bool rest, bool keyword)
605
+ Argument::Argument(SourceSpan pstate, ExpressionObj val, sass::string n, bool rest, bool keyword)
606
606
  : Expression(pstate), value_(val), name_(n), is_rest_argument_(rest), is_keyword_argument_(keyword), hash_(0)
607
607
  {
608
608
  if (!name_.empty() && is_rest_argument_) {
@@ -646,7 +646,7 @@ namespace Sass {
646
646
  size_t Argument::hash() const
647
647
  {
648
648
  if (hash_ == 0) {
649
- hash_ = std::hash<std::string>()(name());
649
+ hash_ = std::hash<sass::string>()(name());
650
650
  hash_combine(hash_, value()->hash());
651
651
  }
652
652
  return hash_;
@@ -655,7 +655,7 @@ namespace Sass {
655
655
  /////////////////////////////////////////////////////////////////////////
656
656
  /////////////////////////////////////////////////////////////////////////
657
657
 
658
- Arguments::Arguments(ParserState pstate)
658
+ Arguments::Arguments(SourceSpan pstate)
659
659
  : Expression(pstate),
660
660
  Vectorized<Argument_Obj>(),
661
661
  has_named_arguments_(false),
@@ -738,13 +738,13 @@ namespace Sass {
738
738
  /////////////////////////////////////////////////////////////////////////
739
739
  /////////////////////////////////////////////////////////////////////////
740
740
 
741
- Media_Query::Media_Query(ParserState pstate, String_Obj t, size_t s, bool n, bool r)
742
- : Expression(pstate), Vectorized<Media_Query_Expression_Obj>(s),
741
+ Media_Query::Media_Query(SourceSpan pstate, String_Obj t, size_t s, bool n, bool r)
742
+ : Expression(pstate), Vectorized<Media_Query_ExpressionObj>(s),
743
743
  media_type_(t), is_negated_(n), is_restricted_(r)
744
744
  { }
745
745
  Media_Query::Media_Query(const Media_Query* ptr)
746
746
  : Expression(ptr),
747
- Vectorized<Media_Query_Expression_Obj>(*ptr),
747
+ Vectorized<Media_Query_ExpressionObj>(*ptr),
748
748
  media_type_(ptr->media_type_),
749
749
  is_negated_(ptr->is_negated_),
750
750
  is_restricted_(ptr->is_restricted_)
@@ -753,8 +753,8 @@ namespace Sass {
753
753
  /////////////////////////////////////////////////////////////////////////
754
754
  /////////////////////////////////////////////////////////////////////////
755
755
 
756
- Media_Query_Expression::Media_Query_Expression(ParserState pstate,
757
- Expression_Obj f, Expression_Obj v, bool i)
756
+ Media_Query_Expression::Media_Query_Expression(SourceSpan pstate,
757
+ ExpressionObj f, ExpressionObj v, bool i)
758
758
  : Expression(pstate), feature_(f), value_(v), is_interpolated_(i)
759
759
  { }
760
760
  Media_Query_Expression::Media_Query_Expression(const Media_Query_Expression* ptr)
@@ -767,7 +767,7 @@ namespace Sass {
767
767
  /////////////////////////////////////////////////////////////////////////
768
768
  /////////////////////////////////////////////////////////////////////////
769
769
 
770
- At_Root_Query::At_Root_Query(ParserState pstate, Expression_Obj f, Expression_Obj v, bool i)
770
+ At_Root_Query::At_Root_Query(SourceSpan pstate, ExpressionObj f, ExpressionObj v, bool i)
771
771
  : Expression(pstate), feature_(f), value_(v)
772
772
  { }
773
773
  At_Root_Query::At_Root_Query(const At_Root_Query* ptr)
@@ -776,11 +776,11 @@ namespace Sass {
776
776
  value_(ptr->value_)
777
777
  { }
778
778
 
779
- bool At_Root_Query::exclude(std::string str)
779
+ bool At_Root_Query::exclude(sass::string str)
780
780
  {
781
781
  bool with = feature() && unquote(feature()->to_string()).compare("with") == 0;
782
782
  List* l = static_cast<List*>(value().ptr());
783
- std::string v;
783
+ sass::string v;
784
784
 
785
785
  if (with)
786
786
  {
@@ -807,18 +807,18 @@ namespace Sass {
807
807
  /////////////////////////////////////////////////////////////////////////
808
808
  /////////////////////////////////////////////////////////////////////////
809
809
 
810
- At_Root_Block::At_Root_Block(ParserState pstate, Block_Obj b, At_Root_Query_Obj e)
811
- : Has_Block(pstate, b), expression_(e)
810
+ AtRootRule::AtRootRule(SourceSpan pstate, Block_Obj b, At_Root_Query_Obj e)
811
+ : ParentStatement(pstate, b), expression_(e)
812
812
  { statement_type(ATROOT); }
813
- At_Root_Block::At_Root_Block(const At_Root_Block* ptr)
814
- : Has_Block(ptr), expression_(ptr->expression_)
813
+ AtRootRule::AtRootRule(const AtRootRule* ptr)
814
+ : ParentStatement(ptr), expression_(ptr->expression_)
815
815
  { statement_type(ATROOT); }
816
816
 
817
- bool At_Root_Block::bubbles() {
817
+ bool AtRootRule::bubbles() {
818
818
  return true;
819
819
  }
820
820
 
821
- bool At_Root_Block::exclude_node(Statement_Obj s) {
821
+ bool AtRootRule::exclude_node(Statement_Obj s) {
822
822
  if (expression() == nullptr)
823
823
  {
824
824
  return s->statement_type() == Statement::RULESET;
@@ -826,9 +826,9 @@ namespace Sass {
826
826
 
827
827
  if (s->statement_type() == Statement::DIRECTIVE)
828
828
  {
829
- if (Directive_Obj dir = Cast<Directive>(s))
829
+ if (AtRuleObj dir = Cast<AtRule>(s))
830
830
  {
831
- std::string keyword(dir->keyword());
831
+ sass::string keyword(dir->keyword());
832
832
  if (keyword.length() > 0) keyword.erase(0, 1);
833
833
  return expression()->exclude(keyword);
834
834
  }
@@ -845,7 +845,7 @@ namespace Sass {
845
845
  {
846
846
  return expression()->exclude("supports");
847
847
  }
848
- if (Directive_Obj dir = Cast<Directive>(s))
848
+ if (AtRuleObj dir = Cast<AtRule>(s))
849
849
  {
850
850
  if (dir->is_keyframes()) return expression()->exclude("keyframes");
851
851
  }
@@ -855,7 +855,7 @@ namespace Sass {
855
855
  /////////////////////////////////////////////////////////////////////////
856
856
  /////////////////////////////////////////////////////////////////////////
857
857
 
858
- Parameter::Parameter(ParserState pstate, std::string n, Expression_Obj def, bool rest)
858
+ Parameter::Parameter(SourceSpan pstate, sass::string n, ExpressionObj def, bool rest)
859
859
  : AST_Node(pstate), name_(n), default_value_(def), is_rest_parameter_(rest)
860
860
  { }
861
861
  Parameter::Parameter(const Parameter* ptr)
@@ -868,7 +868,7 @@ namespace Sass {
868
868
  /////////////////////////////////////////////////////////////////////////
869
869
  /////////////////////////////////////////////////////////////////////////
870
870
 
871
- Parameters::Parameters(ParserState pstate)
871
+ Parameters::Parameters(SourceSpan pstate)
872
872
  : AST_Node(pstate),
873
873
  Vectorized<Parameter_Obj>(),
874
874
  has_optional_parameters_(false),
@@ -911,25 +911,25 @@ namespace Sass {
911
911
  // If you forget to add a class here you will get
912
912
  // undefined reference to `vtable for Sass::Class'
913
913
 
914
- IMPLEMENT_AST_OPERATORS(Ruleset);
914
+ IMPLEMENT_AST_OPERATORS(StyleRule);
915
915
  IMPLEMENT_AST_OPERATORS(MediaRule);
916
916
  IMPLEMENT_AST_OPERATORS(CssMediaRule);
917
917
  IMPLEMENT_AST_OPERATORS(CssMediaQuery);
918
918
  IMPLEMENT_AST_OPERATORS(Import);
919
919
  IMPLEMENT_AST_OPERATORS(Import_Stub);
920
- IMPLEMENT_AST_OPERATORS(Directive);
921
- IMPLEMENT_AST_OPERATORS(At_Root_Block);
922
- IMPLEMENT_AST_OPERATORS(While);
923
- IMPLEMENT_AST_OPERATORS(Each);
924
- IMPLEMENT_AST_OPERATORS(For);
920
+ IMPLEMENT_AST_OPERATORS(AtRule);
921
+ IMPLEMENT_AST_OPERATORS(AtRootRule);
922
+ IMPLEMENT_AST_OPERATORS(WhileRule);
923
+ IMPLEMENT_AST_OPERATORS(EachRule);
924
+ IMPLEMENT_AST_OPERATORS(ForRule);
925
925
  IMPLEMENT_AST_OPERATORS(If);
926
926
  IMPLEMENT_AST_OPERATORS(Mixin_Call);
927
927
  IMPLEMENT_AST_OPERATORS(ExtendRule);
928
928
  IMPLEMENT_AST_OPERATORS(Media_Query);
929
929
  IMPLEMENT_AST_OPERATORS(Media_Query_Expression);
930
- IMPLEMENT_AST_OPERATORS(Debug);
931
- IMPLEMENT_AST_OPERATORS(Error);
932
- IMPLEMENT_AST_OPERATORS(Warning);
930
+ IMPLEMENT_AST_OPERATORS(DebugRule);
931
+ IMPLEMENT_AST_OPERATORS(ErrorRule);
932
+ IMPLEMENT_AST_OPERATORS(WarningRule);
933
933
  IMPLEMENT_AST_OPERATORS(Assignment);
934
934
  IMPLEMENT_AST_OPERATORS(Return);
935
935
  IMPLEMENT_AST_OPERATORS(At_Root_Query);