sassc 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -15,25 +15,25 @@ namespace Sass {
15
15
  bool compoundIsSuperselector(
16
16
  const CompoundSelectorObj& compound1,
17
17
  const CompoundSelectorObj& compound2,
18
- const std::vector<SelectorComponentObj>& parents);
18
+ const sass::vector<SelectorComponentObj>& parents);
19
19
 
20
20
  bool complexIsParentSuperselector(
21
- const std::vector<SelectorComponentObj>& complex1,
22
- const std::vector<SelectorComponentObj>& complex2);
21
+ const sass::vector<SelectorComponentObj>& complex1,
22
+ const sass::vector<SelectorComponentObj>& complex2);
23
23
 
24
- std::vector<std::vector<SelectorComponentObj>> weave(
25
- const std::vector<std::vector<SelectorComponentObj>>& complexes);
24
+ sass::vector<sass::vector<SelectorComponentObj>> weave(
25
+ const sass::vector<sass::vector<SelectorComponentObj>>& complexes);
26
26
 
27
- std::vector<std::vector<SelectorComponentObj>> weaveParents(
28
- std::vector<SelectorComponentObj> parents1,
29
- std::vector<SelectorComponentObj> parents2);
27
+ sass::vector<sass::vector<SelectorComponentObj>> weaveParents(
28
+ sass::vector<SelectorComponentObj> parents1,
29
+ sass::vector<SelectorComponentObj> parents2);
30
30
 
31
- std::vector<SimpleSelectorObj> unifyCompound(
32
- const std::vector<SimpleSelectorObj>& compound1,
33
- const std::vector<SimpleSelectorObj>& compound2);
31
+ sass::vector<SimpleSelectorObj> unifyCompound(
32
+ const sass::vector<SimpleSelectorObj>& compound1,
33
+ const sass::vector<SimpleSelectorObj>& compound2);
34
34
 
35
- std::vector<std::vector<SelectorComponentObj>> unifyComplex(
36
- const std::vector<std::vector<SelectorComponentObj>>& complexes);
35
+ sass::vector<sass::vector<SelectorComponentObj>> unifyComplex(
36
+ const sass::vector<sass::vector<SelectorComponentObj>>& complexes);
37
37
 
38
38
  /////////////////////////////////////////
39
39
  // Abstract base class for CSS selectors.
@@ -42,7 +42,7 @@ namespace Sass {
42
42
  protected:
43
43
  mutable size_t hash_;
44
44
  public:
45
- Selector(ParserState pstate);
45
+ Selector(SourceSpan pstate);
46
46
  virtual ~Selector() = 0;
47
47
  size_t hash() const override = 0;
48
48
  virtual bool has_real_parent_ref() const;
@@ -68,7 +68,7 @@ namespace Sass {
68
68
  // store computed hash
69
69
  mutable size_t hash_;
70
70
  public:
71
- Selector_Schema(ParserState pstate, String_Obj c);
71
+ Selector_Schema(SourceSpan pstate, String_Obj c);
72
72
 
73
73
  bool has_real_parent_ref() const;
74
74
  // selector schema is not yet a final selector, so we do not
@@ -93,13 +93,15 @@ namespace Sass {
93
93
  PLACEHOLDER_SEL,
94
94
  };
95
95
  public:
96
- HASH_CONSTREF(std::string, ns)
97
- HASH_CONSTREF(std::string, name)
96
+ HASH_CONSTREF(sass::string, ns)
97
+ HASH_CONSTREF(sass::string, name)
98
98
  ADD_PROPERTY(Simple_Type, simple_type)
99
99
  HASH_PROPERTY(bool, has_ns)
100
100
  public:
101
- SimpleSelector(ParserState pstate, std::string n = "");
102
- virtual std::string ns_name() const;
101
+ SimpleSelector(SourceSpan pstate, sass::string n = "");
102
+ // ordering within parent (peudos go last)
103
+ virtual int getSortOrder() const = 0;
104
+ virtual sass::string ns_name() const;
103
105
  size_t hash() const override;
104
106
  virtual bool empty() const;
105
107
  // namespace compare functions
@@ -117,9 +119,9 @@ namespace Sass {
117
119
  virtual CompoundSelector* unifyWith(CompoundSelector*);
118
120
 
119
121
  /* helper function for syntax sugar */
120
- virtual Id_Selector* getIdSelector() { return NULL; }
121
- virtual Type_Selector* getTypeSelector() { return NULL; }
122
- virtual Pseudo_Selector* getPseudoSelector() { return NULL; }
122
+ virtual IDSelector* getIdSelector() { return NULL; }
123
+ virtual TypeSelector* getTypeSelector() { return NULL; }
124
+ virtual PseudoSelector* getPseudoSelector() { return NULL; }
123
125
 
124
126
  ComplexSelectorObj wrapInComplex();
125
127
  CompoundSelectorObj wrapInCompound();
@@ -144,77 +146,82 @@ namespace Sass {
144
146
  /////////////////////////////////////////////////////////////////////////
145
147
  // Placeholder selectors (e.g., "%foo") for use in extend-only selectors.
146
148
  /////////////////////////////////////////////////////////////////////////
147
- class Placeholder_Selector final : public SimpleSelector {
149
+ class PlaceholderSelector final : public SimpleSelector {
148
150
  public:
149
- Placeholder_Selector(ParserState pstate, std::string n);
151
+ PlaceholderSelector(SourceSpan pstate, sass::string n);
152
+ int getSortOrder() const override final { return 0; }
150
153
  bool isInvisible() const override { return true; }
151
154
  virtual unsigned long specificity() const override;
152
155
  virtual bool has_placeholder() override;
153
156
  bool operator==(const SimpleSelector& rhs) const override;
154
- ATTACH_CMP_OPERATIONS(Placeholder_Selector)
155
- ATTACH_AST_OPERATIONS(Placeholder_Selector)
157
+ ATTACH_CMP_OPERATIONS(PlaceholderSelector)
158
+ ATTACH_AST_OPERATIONS(PlaceholderSelector)
156
159
  ATTACH_CRTP_PERFORM_METHODS()
157
160
  };
158
161
 
159
162
  /////////////////////////////////////////////////////////////////////
160
163
  // Type selectors (and the universal selector) -- e.g., div, span, *.
161
164
  /////////////////////////////////////////////////////////////////////
162
- class Type_Selector final : public SimpleSelector {
165
+ class TypeSelector final : public SimpleSelector {
163
166
  public:
164
- Type_Selector(ParserState pstate, std::string n);
167
+ TypeSelector(SourceSpan pstate, sass::string n);
168
+ int getSortOrder() const override final { return 1; }
165
169
  virtual unsigned long specificity() const override;
166
170
  SimpleSelector* unifyWith(const SimpleSelector*);
167
171
  CompoundSelector* unifyWith(CompoundSelector*) override;
168
- Type_Selector* getTypeSelector() override { return this; }
172
+ TypeSelector* getTypeSelector() override { return this; }
169
173
  bool operator==(const SimpleSelector& rhs) const final override;
170
- ATTACH_CMP_OPERATIONS(Type_Selector)
171
- ATTACH_AST_OPERATIONS(Type_Selector)
174
+ ATTACH_CMP_OPERATIONS(TypeSelector)
175
+ ATTACH_AST_OPERATIONS(TypeSelector)
172
176
  ATTACH_CRTP_PERFORM_METHODS()
173
177
  };
174
178
 
175
179
  ////////////////////////////////////////////////
176
180
  // Class selectors -- i.e., .foo.
177
181
  ////////////////////////////////////////////////
178
- class Class_Selector final : public SimpleSelector {
182
+ class ClassSelector final : public SimpleSelector {
179
183
  public:
180
- Class_Selector(ParserState pstate, std::string n);
184
+ ClassSelector(SourceSpan pstate, sass::string n);
185
+ int getSortOrder() const override final { return 3; }
181
186
  virtual unsigned long specificity() const override;
182
187
  bool operator==(const SimpleSelector& rhs) const final override;
183
- ATTACH_CMP_OPERATIONS(Class_Selector)
184
- ATTACH_AST_OPERATIONS(Class_Selector)
188
+ ATTACH_CMP_OPERATIONS(ClassSelector)
189
+ ATTACH_AST_OPERATIONS(ClassSelector)
185
190
  ATTACH_CRTP_PERFORM_METHODS()
186
191
  };
187
192
 
188
193
  ////////////////////////////////////////////////
189
194
  // ID selectors -- i.e., #foo.
190
195
  ////////////////////////////////////////////////
191
- class Id_Selector final : public SimpleSelector {
196
+ class IDSelector final : public SimpleSelector {
192
197
  public:
193
- Id_Selector(ParserState pstate, std::string n);
198
+ IDSelector(SourceSpan pstate, sass::string n);
199
+ int getSortOrder() const override final { return 2; }
194
200
  virtual unsigned long specificity() const override;
195
201
  CompoundSelector* unifyWith(CompoundSelector*) override;
196
- Id_Selector* getIdSelector() final override { return this; }
202
+ IDSelector* getIdSelector() final override { return this; }
197
203
  bool operator==(const SimpleSelector& rhs) const final override;
198
- ATTACH_CMP_OPERATIONS(Id_Selector)
199
- ATTACH_AST_OPERATIONS(Id_Selector)
204
+ ATTACH_CMP_OPERATIONS(IDSelector)
205
+ ATTACH_AST_OPERATIONS(IDSelector)
200
206
  ATTACH_CRTP_PERFORM_METHODS()
201
207
  };
202
208
 
203
209
  ///////////////////////////////////////////////////
204
210
  // Attribute selectors -- e.g., [src*=".jpg"], etc.
205
211
  ///////////////////////////////////////////////////
206
- class Attribute_Selector final : public SimpleSelector {
207
- ADD_CONSTREF(std::string, matcher)
212
+ class AttributeSelector final : public SimpleSelector {
213
+ ADD_CONSTREF(sass::string, matcher)
208
214
  // this cannot be changed to obj atm!!!!!!????!!!!!!!
209
215
  ADD_PROPERTY(String_Obj, value) // might be interpolated
210
216
  ADD_PROPERTY(char, modifier);
211
217
  public:
212
- Attribute_Selector(ParserState pstate, std::string n, std::string m, String_Obj v, char o = 0);
218
+ AttributeSelector(SourceSpan pstate, sass::string n, sass::string m, String_Obj v, char o = 0);
219
+ int getSortOrder() const override final { return 4; }
213
220
  size_t hash() const override;
214
221
  virtual unsigned long specificity() const override;
215
222
  bool operator==(const SimpleSelector& rhs) const final override;
216
- ATTACH_CMP_OPERATIONS(Attribute_Selector)
217
- ATTACH_AST_OPERATIONS(Attribute_Selector)
223
+ ATTACH_CMP_OPERATIONS(AttributeSelector)
224
+ ATTACH_AST_OPERATIONS(AttributeSelector)
218
225
  ATTACH_CRTP_PERFORM_METHODS()
219
226
  };
220
227
 
@@ -222,14 +229,15 @@ namespace Sass {
222
229
  // Pseudo selectors -- e.g., :first-child, :nth-of-type(...), etc.
223
230
  //////////////////////////////////////////////////////////////////
224
231
  // Pseudo Selector cannot have any namespace?
225
- class Pseudo_Selector final : public SimpleSelector {
226
- ADD_PROPERTY(std::string, normalized)
232
+ class PseudoSelector final : public SimpleSelector {
233
+ ADD_PROPERTY(sass::string, normalized)
227
234
  ADD_PROPERTY(String_Obj, argument)
228
235
  ADD_PROPERTY(SelectorListObj, selector)
229
236
  ADD_PROPERTY(bool, isSyntacticClass)
230
237
  ADD_PROPERTY(bool, isClass)
231
238
  public:
232
- Pseudo_Selector(ParserState pstate, std::string n, bool element = false);
239
+ PseudoSelector(SourceSpan pstate, sass::string n, bool element = false);
240
+ int getSortOrder() const override final { return 5; }
233
241
  virtual bool is_pseudo_element() const override;
234
242
  size_t hash() const override;
235
243
 
@@ -246,13 +254,13 @@ namespace Sass {
246
254
  bool isSyntacticElement() const { return !isSyntacticClass(); }
247
255
 
248
256
  virtual unsigned long specificity() const override;
249
- Pseudo_Selector_Obj withSelector(SelectorListObj selector);
257
+ PseudoSelectorObj withSelector(SelectorListObj selector);
250
258
 
251
259
  CompoundSelector* unifyWith(CompoundSelector*) override;
252
- Pseudo_Selector* getPseudoSelector() final override { return this; }
260
+ PseudoSelector* getPseudoSelector() final override { return this; }
253
261
  bool operator==(const SimpleSelector& rhs) const final override;
254
- ATTACH_CMP_OPERATIONS(Pseudo_Selector)
255
- ATTACH_AST_OPERATIONS(Pseudo_Selector)
262
+ ATTACH_CMP_OPERATIONS(PseudoSelector)
263
+ ATTACH_AST_OPERATIONS(PseudoSelector)
256
264
  void cloneChildren() override;
257
265
  ATTACH_CRTP_PERFORM_METHODS()
258
266
  };
@@ -269,7 +277,7 @@ namespace Sass {
269
277
  // line break before list separator
270
278
  ADD_PROPERTY(bool, hasPreLineFeed)
271
279
  public:
272
- ComplexSelector(ParserState pstate);
280
+ ComplexSelector(SourceSpan pstate);
273
281
 
274
282
  // Returns true if the first components
275
283
  // is a compound selector and fullfills
@@ -310,7 +318,7 @@ namespace Sass {
310
318
  // line break after list separator
311
319
  ADD_PROPERTY(bool, hasPostLineBreak)
312
320
  public:
313
- SelectorComponent(ParserState pstate, bool postLineBreak = false);
321
+ SelectorComponent(SourceSpan pstate, bool postLineBreak = false);
314
322
  size_t hash() const override = 0;
315
323
  void cloneChildren() override;
316
324
 
@@ -357,7 +365,7 @@ namespace Sass {
357
365
  HASH_CONSTREF(Combinator, combinator)
358
366
 
359
367
  public:
360
- SelectorCombinator(ParserState pstate, Combinator combinator, bool postLineBreak = false);
368
+ SelectorCombinator(SourceSpan pstate, Combinator combinator, bool postLineBreak = false);
361
369
 
362
370
  bool has_real_parent_ref() const override { return false; }
363
371
  bool has_placeholder() const override { return false; }
@@ -407,7 +415,7 @@ namespace Sass {
407
415
  ADD_PROPERTY(bool, hasRealParent)
408
416
  ADD_PROPERTY(bool, extended)
409
417
  public:
410
- CompoundSelector(ParserState pstate, bool postLineBreak = false);
418
+ CompoundSelector(SourceSpan pstate, bool postLineBreak = false);
411
419
 
412
420
  // Returns true if this compound selector
413
421
  // fullfills various criteria.
@@ -424,12 +432,12 @@ namespace Sass {
424
432
  CompoundSelector* getCompound() final override { return this; }
425
433
  const CompoundSelector* getCompound() const final override { return this; }
426
434
 
427
- bool isSuperselectorOf(const CompoundSelector* sub, std::string wrapped = "") const;
435
+ bool isSuperselectorOf(const CompoundSelector* sub, sass::string wrapped = "") const;
428
436
 
429
437
  void cloneChildren() override;
430
438
  bool has_real_parent_ref() const override;
431
439
  bool has_placeholder() const override;
432
- std::vector<ComplexSelectorObj> resolve_parent_refs(SelectorStack pstack, Backtraces& traces, bool implicit_parent = true);
440
+ sass::vector<ComplexSelectorObj> resolve_parent_refs(SelectorStack pstack, Backtraces& traces, bool implicit_parent = true);
433
441
 
434
442
  virtual bool isCompound() const override { return true; };
435
443
  virtual unsigned long specificity() const override;
@@ -445,6 +453,8 @@ namespace Sass {
445
453
  bool operator==(const ComplexSelector& rhs) const;
446
454
  bool operator==(const SimpleSelector& rhs) const;
447
455
 
456
+ void sortChildren();
457
+
448
458
  ATTACH_CMP_OPERATIONS(CompoundSelector)
449
459
  ATTACH_AST_OPERATIONS(CompoundSelector)
450
460
  ATTACH_CRTP_PERFORM_METHODS()
@@ -459,8 +469,8 @@ namespace Sass {
459
469
  // ToDo: should be at ExtendRule?
460
470
  ADD_PROPERTY(bool, is_optional)
461
471
  public:
462
- SelectorList(ParserState pstate, size_t s = 0);
463
- std::string type() const override { return "list"; }
472
+ SelectorList(SourceSpan pstate, size_t s = 0);
473
+ sass::string type() const override { return "list"; }
464
474
  size_t hash() const override;
465
475
 
466
476
  SelectorList* unifyWith(SelectorList*);
@@ -501,8 +511,8 @@ namespace Sass {
501
511
  ADD_PROPERTY(SelectorListObj, selector)
502
512
  ADD_PROPERTY(Selector_Schema_Obj, schema)
503
513
  public:
504
- ExtendRule(ParserState pstate, SelectorListObj s);
505
- ExtendRule(ParserState pstate, Selector_Schema_Obj s);
514
+ ExtendRule(SourceSpan pstate, SelectorListObj s);
515
+ ExtendRule(SourceSpan pstate, Selector_Schema_Obj s);
506
516
  ATTACH_AST_OPERATIONS(ExtendRule)
507
517
  ATTACH_CRTP_PERFORM_METHODS()
508
518
  };
@@ -9,75 +9,75 @@ namespace Sass {
9
9
  /////////////////////////////////////////////////////////////////////////
10
10
  /////////////////////////////////////////////////////////////////////////
11
11
 
12
- Supports_Block::Supports_Block(ParserState pstate, Supports_Condition_Obj condition, Block_Obj block)
13
- : Has_Block(pstate, block), condition_(condition)
12
+ SupportsRule::SupportsRule(SourceSpan pstate, SupportsConditionObj condition, Block_Obj block)
13
+ : ParentStatement(pstate, block), condition_(condition)
14
14
  { statement_type(SUPPORTS); }
15
- Supports_Block::Supports_Block(const Supports_Block* ptr)
16
- : Has_Block(ptr), condition_(ptr->condition_)
15
+ SupportsRule::SupportsRule(const SupportsRule* ptr)
16
+ : ParentStatement(ptr), condition_(ptr->condition_)
17
17
  { statement_type(SUPPORTS); }
18
- bool Supports_Block::bubbles() { return true; }
18
+ bool SupportsRule::bubbles() { return true; }
19
19
 
20
20
  /////////////////////////////////////////////////////////////////////////
21
21
  /////////////////////////////////////////////////////////////////////////
22
22
 
23
- Supports_Condition::Supports_Condition(ParserState pstate)
23
+ SupportsCondition::SupportsCondition(SourceSpan pstate)
24
24
  : Expression(pstate)
25
25
  { }
26
26
 
27
- Supports_Condition::Supports_Condition(const Supports_Condition* ptr)
27
+ SupportsCondition::SupportsCondition(const SupportsCondition* ptr)
28
28
  : Expression(ptr)
29
29
  { }
30
30
 
31
31
  /////////////////////////////////////////////////////////////////////////
32
32
  /////////////////////////////////////////////////////////////////////////
33
33
 
34
- Supports_Operator::Supports_Operator(ParserState pstate, Supports_Condition_Obj l, Supports_Condition_Obj r, Operand o)
35
- : Supports_Condition(pstate), left_(l), right_(r), operand_(o)
34
+ SupportsOperation::SupportsOperation(SourceSpan pstate, SupportsConditionObj l, SupportsConditionObj r, Operand o)
35
+ : SupportsCondition(pstate), left_(l), right_(r), operand_(o)
36
36
  { }
37
- Supports_Operator::Supports_Operator(const Supports_Operator* ptr)
38
- : Supports_Condition(ptr),
37
+ SupportsOperation::SupportsOperation(const SupportsOperation* ptr)
38
+ : SupportsCondition(ptr),
39
39
  left_(ptr->left_),
40
40
  right_(ptr->right_),
41
41
  operand_(ptr->operand_)
42
42
  { }
43
43
 
44
- bool Supports_Operator::needs_parens(Supports_Condition_Obj cond) const
44
+ bool SupportsOperation::needs_parens(SupportsConditionObj cond) const
45
45
  {
46
- if (Supports_Operator_Obj op = Cast<Supports_Operator>(cond)) {
46
+ if (SupportsOperationObj op = Cast<SupportsOperation>(cond)) {
47
47
  return op->operand() != operand();
48
48
  }
49
- return Cast<Supports_Negation>(cond) != NULL;
49
+ return Cast<SupportsNegation>(cond) != NULL;
50
50
  }
51
51
 
52
52
  /////////////////////////////////////////////////////////////////////////
53
53
  /////////////////////////////////////////////////////////////////////////
54
54
 
55
- Supports_Negation::Supports_Negation(ParserState pstate, Supports_Condition_Obj c)
56
- : Supports_Condition(pstate), condition_(c)
55
+ SupportsNegation::SupportsNegation(SourceSpan pstate, SupportsConditionObj c)
56
+ : SupportsCondition(pstate), condition_(c)
57
57
  { }
58
- Supports_Negation::Supports_Negation(const Supports_Negation* ptr)
59
- : Supports_Condition(ptr), condition_(ptr->condition_)
58
+ SupportsNegation::SupportsNegation(const SupportsNegation* ptr)
59
+ : SupportsCondition(ptr), condition_(ptr->condition_)
60
60
  { }
61
61
 
62
- bool Supports_Negation::needs_parens(Supports_Condition_Obj cond) const
62
+ bool SupportsNegation::needs_parens(SupportsConditionObj cond) const
63
63
  {
64
- return Cast<Supports_Negation>(cond) ||
65
- Cast<Supports_Operator>(cond);
64
+ return Cast<SupportsNegation>(cond) ||
65
+ Cast<SupportsOperation>(cond);
66
66
  }
67
67
 
68
68
  /////////////////////////////////////////////////////////////////////////
69
69
  /////////////////////////////////////////////////////////////////////////
70
70
 
71
- Supports_Declaration::Supports_Declaration(ParserState pstate, Expression_Obj f, Expression_Obj v)
72
- : Supports_Condition(pstate), feature_(f), value_(v)
71
+ SupportsDeclaration::SupportsDeclaration(SourceSpan pstate, ExpressionObj f, ExpressionObj v)
72
+ : SupportsCondition(pstate), feature_(f), value_(v)
73
73
  { }
74
- Supports_Declaration::Supports_Declaration(const Supports_Declaration* ptr)
75
- : Supports_Condition(ptr),
74
+ SupportsDeclaration::SupportsDeclaration(const SupportsDeclaration* ptr)
75
+ : SupportsCondition(ptr),
76
76
  feature_(ptr->feature_),
77
77
  value_(ptr->value_)
78
78
  { }
79
79
 
80
- bool Supports_Declaration::needs_parens(Supports_Condition_Obj cond) const
80
+ bool SupportsDeclaration::needs_parens(SupportsConditionObj cond) const
81
81
  {
82
82
  return false;
83
83
  }
@@ -85,15 +85,15 @@ namespace Sass {
85
85
  /////////////////////////////////////////////////////////////////////////
86
86
  /////////////////////////////////////////////////////////////////////////
87
87
 
88
- Supports_Interpolation::Supports_Interpolation(ParserState pstate, Expression_Obj v)
89
- : Supports_Condition(pstate), value_(v)
88
+ Supports_Interpolation::Supports_Interpolation(SourceSpan pstate, ExpressionObj v)
89
+ : SupportsCondition(pstate), value_(v)
90
90
  { }
91
91
  Supports_Interpolation::Supports_Interpolation(const Supports_Interpolation* ptr)
92
- : Supports_Condition(ptr),
92
+ : SupportsCondition(ptr),
93
93
  value_(ptr->value_)
94
94
  { }
95
95
 
96
- bool Supports_Interpolation::needs_parens(Supports_Condition_Obj cond) const
96
+ bool Supports_Interpolation::needs_parens(SupportsConditionObj cond) const
97
97
  {
98
98
  return false;
99
99
  }
@@ -101,11 +101,11 @@ namespace Sass {
101
101
  /////////////////////////////////////////////////////////////////////////
102
102
  /////////////////////////////////////////////////////////////////////////
103
103
 
104
- IMPLEMENT_AST_OPERATORS(Supports_Block);
105
- IMPLEMENT_AST_OPERATORS(Supports_Condition);
106
- IMPLEMENT_AST_OPERATORS(Supports_Operator);
107
- IMPLEMENT_AST_OPERATORS(Supports_Negation);
108
- IMPLEMENT_AST_OPERATORS(Supports_Declaration);
104
+ IMPLEMENT_AST_OPERATORS(SupportsRule);
105
+ IMPLEMENT_AST_OPERATORS(SupportsCondition);
106
+ IMPLEMENT_AST_OPERATORS(SupportsOperation);
107
+ IMPLEMENT_AST_OPERATORS(SupportsNegation);
108
+ IMPLEMENT_AST_OPERATORS(SupportsDeclaration);
109
109
  IMPLEMENT_AST_OPERATORS(Supports_Interpolation);
110
110
 
111
111
  /////////////////////////////////////////////////////////////////////////
@@ -39,79 +39,79 @@ namespace Sass {
39
39
  ////////////////////
40
40
  // `@supports` rule.
41
41
  ////////////////////
42
- class Supports_Block : public Has_Block {
43
- ADD_PROPERTY(Supports_Condition_Obj, condition)
42
+ class SupportsRule : public ParentStatement {
43
+ ADD_PROPERTY(SupportsConditionObj, condition)
44
44
  public:
45
- Supports_Block(ParserState pstate, Supports_Condition_Obj condition, Block_Obj block = {});
45
+ SupportsRule(SourceSpan pstate, SupportsConditionObj condition, Block_Obj block = {});
46
46
  bool bubbles() override;
47
- ATTACH_AST_OPERATIONS(Supports_Block)
47
+ ATTACH_AST_OPERATIONS(SupportsRule)
48
48
  ATTACH_CRTP_PERFORM_METHODS()
49
49
  };
50
50
 
51
51
  //////////////////////////////////////////////////////
52
52
  // The abstract superclass of all Supports conditions.
53
53
  //////////////////////////////////////////////////////
54
- class Supports_Condition : public Expression {
54
+ class SupportsCondition : public Expression {
55
55
  public:
56
- Supports_Condition(ParserState pstate);
57
- virtual bool needs_parens(Supports_Condition_Obj cond) const { return false; }
58
- ATTACH_AST_OPERATIONS(Supports_Condition)
56
+ SupportsCondition(SourceSpan pstate);
57
+ virtual bool needs_parens(SupportsConditionObj cond) const { return false; }
58
+ ATTACH_AST_OPERATIONS(SupportsCondition)
59
59
  ATTACH_CRTP_PERFORM_METHODS()
60
60
  };
61
61
 
62
62
  ////////////////////////////////////////////////////////////
63
63
  // An operator condition (e.g. `CONDITION1 and CONDITION2`).
64
64
  ////////////////////////////////////////////////////////////
65
- class Supports_Operator : public Supports_Condition {
65
+ class SupportsOperation : public SupportsCondition {
66
66
  public:
67
67
  enum Operand { AND, OR };
68
68
  private:
69
- ADD_PROPERTY(Supports_Condition_Obj, left);
70
- ADD_PROPERTY(Supports_Condition_Obj, right);
69
+ ADD_PROPERTY(SupportsConditionObj, left);
70
+ ADD_PROPERTY(SupportsConditionObj, right);
71
71
  ADD_PROPERTY(Operand, operand);
72
72
  public:
73
- Supports_Operator(ParserState pstate, Supports_Condition_Obj l, Supports_Condition_Obj r, Operand o);
74
- virtual bool needs_parens(Supports_Condition_Obj cond) const override;
75
- ATTACH_AST_OPERATIONS(Supports_Operator)
73
+ SupportsOperation(SourceSpan pstate, SupportsConditionObj l, SupportsConditionObj r, Operand o);
74
+ virtual bool needs_parens(SupportsConditionObj cond) const override;
75
+ ATTACH_AST_OPERATIONS(SupportsOperation)
76
76
  ATTACH_CRTP_PERFORM_METHODS()
77
77
  };
78
78
 
79
79
  //////////////////////////////////////////
80
80
  // A negation condition (`not CONDITION`).
81
81
  //////////////////////////////////////////
82
- class Supports_Negation : public Supports_Condition {
82
+ class SupportsNegation : public SupportsCondition {
83
83
  private:
84
- ADD_PROPERTY(Supports_Condition_Obj, condition);
84
+ ADD_PROPERTY(SupportsConditionObj, condition);
85
85
  public:
86
- Supports_Negation(ParserState pstate, Supports_Condition_Obj c);
87
- virtual bool needs_parens(Supports_Condition_Obj cond) const override;
88
- ATTACH_AST_OPERATIONS(Supports_Negation)
86
+ SupportsNegation(SourceSpan pstate, SupportsConditionObj c);
87
+ virtual bool needs_parens(SupportsConditionObj cond) const override;
88
+ ATTACH_AST_OPERATIONS(SupportsNegation)
89
89
  ATTACH_CRTP_PERFORM_METHODS()
90
90
  };
91
91
 
92
92
  /////////////////////////////////////////////////////
93
93
  // A declaration condition (e.g. `(feature: value)`).
94
94
  /////////////////////////////////////////////////////
95
- class Supports_Declaration : public Supports_Condition {
95
+ class SupportsDeclaration : public SupportsCondition {
96
96
  private:
97
- ADD_PROPERTY(Expression_Obj, feature);
98
- ADD_PROPERTY(Expression_Obj, value);
97
+ ADD_PROPERTY(ExpressionObj, feature);
98
+ ADD_PROPERTY(ExpressionObj, value);
99
99
  public:
100
- Supports_Declaration(ParserState pstate, Expression_Obj f, Expression_Obj v);
101
- virtual bool needs_parens(Supports_Condition_Obj cond) const override;
102
- ATTACH_AST_OPERATIONS(Supports_Declaration)
100
+ SupportsDeclaration(SourceSpan pstate, ExpressionObj f, ExpressionObj v);
101
+ virtual bool needs_parens(SupportsConditionObj cond) const override;
102
+ ATTACH_AST_OPERATIONS(SupportsDeclaration)
103
103
  ATTACH_CRTP_PERFORM_METHODS()
104
104
  };
105
105
 
106
106
  ///////////////////////////////////////////////
107
107
  // An interpolation condition (e.g. `#{$var}`).
108
108
  ///////////////////////////////////////////////
109
- class Supports_Interpolation : public Supports_Condition {
109
+ class Supports_Interpolation : public SupportsCondition {
110
110
  private:
111
- ADD_PROPERTY(Expression_Obj, value);
111
+ ADD_PROPERTY(ExpressionObj, value);
112
112
  public:
113
- Supports_Interpolation(ParserState pstate, Expression_Obj v);
114
- virtual bool needs_parens(Supports_Condition_Obj cond) const override;
113
+ Supports_Interpolation(SourceSpan pstate, ExpressionObj v);
114
+ virtual bool needs_parens(SupportsConditionObj cond) const override;
115
115
  ATTACH_AST_OPERATIONS(Supports_Interpolation)
116
116
  ATTACH_CRTP_PERFORM_METHODS()
117
117
  };