sassc 2.2.1 → 2.3.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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +13 -0
  4. data/Rakefile +1 -3
  5. data/ext/extconf.rb +13 -5
  6. data/ext/libsass/VERSION +1 -1
  7. data/ext/libsass/include/sass/base.h +2 -1
  8. data/ext/libsass/include/sass/context.h +1 -0
  9. data/ext/libsass/src/ast.cpp +49 -59
  10. data/ext/libsass/src/ast.hpp +263 -102
  11. data/ext/libsass/src/ast_def_macros.hpp +8 -0
  12. data/ext/libsass/src/ast_fwd_decl.cpp +2 -1
  13. data/ext/libsass/src/ast_fwd_decl.hpp +40 -116
  14. data/ext/libsass/src/ast_helpers.hpp +292 -0
  15. data/ext/libsass/src/ast_sel_cmp.cpp +209 -722
  16. data/ext/libsass/src/ast_sel_super.cpp +539 -0
  17. data/ext/libsass/src/ast_sel_unify.cpp +207 -212
  18. data/ext/libsass/src/ast_sel_weave.cpp +616 -0
  19. data/ext/libsass/src/ast_selectors.cpp +559 -1001
  20. data/ext/libsass/src/ast_selectors.hpp +311 -367
  21. data/ext/libsass/src/ast_supports.cpp +1 -17
  22. data/ext/libsass/src/ast_values.cpp +216 -29
  23. data/ext/libsass/src/ast_values.hpp +42 -33
  24. data/ext/libsass/src/bind.cpp +1 -1
  25. data/ext/libsass/src/cencode.c +4 -6
  26. data/ext/libsass/src/check_nesting.cpp +5 -6
  27. data/ext/libsass/src/check_nesting.hpp +4 -0
  28. data/ext/libsass/src/color_maps.cpp +11 -10
  29. data/ext/libsass/src/color_maps.hpp +0 -8
  30. data/ext/libsass/src/constants.cpp +5 -0
  31. data/ext/libsass/src/constants.hpp +6 -0
  32. data/ext/libsass/src/context.cpp +30 -60
  33. data/ext/libsass/src/context.hpp +8 -20
  34. data/ext/libsass/src/cssize.cpp +36 -120
  35. data/ext/libsass/src/cssize.hpp +4 -10
  36. data/ext/libsass/src/dart_helpers.hpp +199 -0
  37. data/ext/libsass/src/debugger.hpp +364 -207
  38. data/ext/libsass/src/emitter.cpp +3 -4
  39. data/ext/libsass/src/emitter.hpp +0 -2
  40. data/ext/libsass/src/environment.hpp +5 -0
  41. data/ext/libsass/src/error_handling.cpp +21 -0
  42. data/ext/libsass/src/error_handling.hpp +25 -3
  43. data/ext/libsass/src/eval.cpp +33 -153
  44. data/ext/libsass/src/eval.hpp +11 -13
  45. data/ext/libsass/src/eval_selectors.cpp +75 -0
  46. data/ext/libsass/src/expand.cpp +214 -167
  47. data/ext/libsass/src/expand.hpp +26 -6
  48. data/ext/libsass/src/extender.cpp +1186 -0
  49. data/ext/libsass/src/extender.hpp +399 -0
  50. data/ext/libsass/src/extension.cpp +43 -0
  51. data/ext/libsass/src/extension.hpp +89 -0
  52. data/ext/libsass/src/file.cpp +15 -14
  53. data/ext/libsass/src/file.hpp +5 -12
  54. data/ext/libsass/src/fn_colors.cpp +12 -10
  55. data/ext/libsass/src/fn_lists.cpp +12 -11
  56. data/ext/libsass/src/fn_miscs.cpp +22 -34
  57. data/ext/libsass/src/fn_numbers.cpp +13 -6
  58. data/ext/libsass/src/fn_selectors.cpp +94 -124
  59. data/ext/libsass/src/fn_strings.cpp +16 -14
  60. data/ext/libsass/src/fn_utils.cpp +5 -6
  61. data/ext/libsass/src/fn_utils.hpp +9 -3
  62. data/ext/libsass/src/inspect.cpp +154 -117
  63. data/ext/libsass/src/inspect.hpp +10 -8
  64. data/ext/libsass/src/lexer.cpp +17 -81
  65. data/ext/libsass/src/lexer.hpp +5 -16
  66. data/ext/libsass/src/listize.cpp +22 -36
  67. data/ext/libsass/src/listize.hpp +8 -9
  68. data/ext/libsass/src/memory/SharedPtr.hpp +39 -5
  69. data/ext/libsass/src/operation.hpp +27 -17
  70. data/ext/libsass/src/operators.cpp +1 -0
  71. data/ext/libsass/src/ordered_map.hpp +112 -0
  72. data/ext/libsass/src/output.cpp +30 -49
  73. data/ext/libsass/src/output.hpp +1 -1
  74. data/ext/libsass/src/parser.cpp +211 -381
  75. data/ext/libsass/src/parser.hpp +17 -15
  76. data/ext/libsass/src/parser_selectors.cpp +189 -0
  77. data/ext/libsass/src/permutate.hpp +140 -0
  78. data/ext/libsass/src/position.hpp +1 -1
  79. data/ext/libsass/src/prelexer.cpp +6 -6
  80. data/ext/libsass/src/remove_placeholders.cpp +55 -56
  81. data/ext/libsass/src/remove_placeholders.hpp +21 -18
  82. data/ext/libsass/src/sass.hpp +1 -0
  83. data/ext/libsass/src/sass2scss.cpp +4 -4
  84. data/ext/libsass/src/sass_context.cpp +42 -91
  85. data/ext/libsass/src/sass_context.hpp +2 -2
  86. data/ext/libsass/src/sass_functions.cpp +1 -1
  87. data/ext/libsass/src/sass_values.cpp +0 -1
  88. data/ext/libsass/src/stylesheet.cpp +22 -0
  89. data/ext/libsass/src/stylesheet.hpp +57 -0
  90. data/ext/libsass/src/to_value.cpp +2 -2
  91. data/ext/libsass/src/to_value.hpp +1 -1
  92. data/ext/libsass/src/units.cpp +5 -3
  93. data/ext/libsass/src/util.cpp +10 -12
  94. data/ext/libsass/src/util.hpp +2 -3
  95. data/ext/libsass/src/util_string.cpp +111 -61
  96. data/ext/libsass/src/util_string.hpp +61 -8
  97. data/lib/sassc/engine.rb +5 -3
  98. data/lib/sassc/functions_handler.rb +8 -8
  99. data/lib/sassc/native.rb +1 -1
  100. data/lib/sassc/script.rb +4 -4
  101. data/lib/sassc/version.rb +1 -1
  102. data/test/functions_test.rb +18 -1
  103. data/test/native_test.rb +1 -1
  104. metadata +17 -12
  105. data/ext/libsass/src/extend.cpp +0 -2132
  106. data/ext/libsass/src/extend.hpp +0 -86
  107. data/ext/libsass/src/node.cpp +0 -322
  108. data/ext/libsass/src/node.hpp +0 -118
  109. data/ext/libsass/src/paths.hpp +0 -71
  110. data/ext/libsass/src/sass_util.cpp +0 -152
  111. data/ext/libsass/src/sass_util.hpp +0 -256
  112. data/ext/libsass/src/subset_map.cpp +0 -58
  113. data/ext/libsass/src/subset_map.hpp +0 -76
@@ -1,10 +1,9 @@
1
+ // sass.hpp must go before all system headers to get the
2
+ // __EXTENSIONS__ fix on Solaris.
1
3
  #include "sass.hpp"
2
- #include "util.hpp"
3
- #include "context.hpp"
4
- #include "output.hpp"
5
4
  #include "emitter.hpp"
6
5
  #include "util_string.hpp"
7
- #include "utf8_string.hpp"
6
+ #include "util.hpp"
8
7
 
9
8
  namespace Sass {
10
9
 
@@ -5,8 +5,6 @@
5
5
  // __EXTENSIONS__ fix on Solaris.
6
6
  #include "sass.hpp"
7
7
 
8
- #include <string>
9
-
10
8
  #include "sass/base.h"
11
9
  #include "source_map.hpp"
12
10
  #include "ast_fwd_decl.hpp"
@@ -1,6 +1,11 @@
1
1
  #ifndef SASS_ENVIRONMENT_H
2
2
  #define SASS_ENVIRONMENT_H
3
3
 
4
+ // sass.hpp must go before all system headers to get the
5
+ // __EXTENSIONS__ fix on Solaris.
6
+ #include "sass.hpp"
7
+
8
+ #include <map>
4
9
  #include <string>
5
10
  #include "ast_fwd_decl.hpp"
6
11
  #include "ast_def_macros.hpp"
@@ -132,6 +132,27 @@ namespace Sass {
132
132
  prefix = err.errtype();
133
133
  }
134
134
 
135
+ TopLevelParent::TopLevelParent(Backtraces traces, ParserState pstate)
136
+ : Base(pstate, "Top-level selectors may not contain the parent selector \"&\".", traces)
137
+ {
138
+
139
+ }
140
+
141
+ UnsatisfiedExtend::UnsatisfiedExtend(Backtraces traces, Extension extension)
142
+ : Base(extension.target->pstate(), "The target selector was not found.\n"
143
+ "Use \"@extend " + extension.target->to_string() + " !optional\" to avoid this error.", traces)
144
+ {
145
+
146
+ }
147
+
148
+ ExtendAcrossMedia::ExtendAcrossMedia(Backtraces traces, Extension extension)
149
+ : Base(extension.target->pstate(), "You may not @extend selectors across media queries.\n"
150
+ "Use \"@extend " + extension.target->to_string() + " !optional\" to avoid this error.", traces)
151
+ {
152
+
153
+ }
154
+
155
+
135
156
  }
136
157
 
137
158
 
@@ -1,6 +1,10 @@
1
1
  #ifndef SASS_ERROR_HANDLING_H
2
2
  #define SASS_ERROR_HANDLING_H
3
3
 
4
+ // sass.hpp must go before all system headers to get the
5
+ // __EXTENSIONS__ fix on Solaris.
6
+ #include "sass.hpp"
7
+
4
8
  #include <string>
5
9
  #include <sstream>
6
10
  #include <stdexcept>
@@ -205,9 +209,27 @@ namespace Sass {
205
209
  };
206
210
 
207
211
  class SassValueError : public Base {
208
- public:
209
- SassValueError(Backtraces traces, ParserState pstate, OperationError& err);
210
- virtual ~SassValueError() throw() {};
212
+ public:
213
+ SassValueError(Backtraces traces, ParserState pstate, OperationError& err);
214
+ virtual ~SassValueError() throw() {};
215
+ };
216
+
217
+ class TopLevelParent : public Base {
218
+ public:
219
+ TopLevelParent(Backtraces traces, ParserState pstate);
220
+ virtual ~TopLevelParent() throw() {};
221
+ };
222
+
223
+ class UnsatisfiedExtend : public Base {
224
+ public:
225
+ UnsatisfiedExtend(Backtraces traces, Extension extension);
226
+ virtual ~UnsatisfiedExtend() throw() {};
227
+ };
228
+
229
+ class ExtendAcrossMedia : public Base {
230
+ public:
231
+ ExtendAcrossMedia(Backtraces traces, Extension extension);
232
+ virtual ~ExtendAcrossMedia() throw() {};
211
233
  };
212
234
 
213
235
  }
@@ -72,28 +72,11 @@ namespace Sass {
72
72
  return exp.env_stack;
73
73
  }
74
74
 
75
- Selector_List_Obj Eval::selector()
76
- {
77
- return exp.selector();
78
- }
79
-
80
75
  std::vector<Sass_Callee>& Eval::callee_stack()
81
76
  {
82
77
  return ctx.callee_stack;
83
78
  }
84
79
 
85
-
86
- SelectorStack& Eval::selector_stack()
87
- {
88
- return exp.selector_stack;
89
- }
90
-
91
- bool& Eval::old_at_root_without_rule()
92
- {
93
- return exp.old_at_root_without_rule;
94
- }
95
-
96
-
97
80
  Expression* Eval::operator()(Block* b)
98
81
  {
99
82
  Expression* val = 0;
@@ -251,9 +234,8 @@ namespace Sass {
251
234
  if (expr->concrete_type() == Expression::MAP) {
252
235
  map = Cast<Map>(expr);
253
236
  }
254
- else if (Selector_List* ls = Cast<Selector_List>(expr)) {
255
- Listize listize;
256
- Expression_Obj rv = ls->perform(&listize);
237
+ else if (SelectorList * ls = Cast<SelectorList>(expr)) {
238
+ Expression_Obj rv = Listize::perform(ls);
257
239
  list = Cast<List>(rv);
258
240
  }
259
241
  else if (expr->concrete_type() != Expression::LIST) {
@@ -286,7 +268,7 @@ namespace Sass {
286
268
  }
287
269
  }
288
270
  else {
289
- if (list->length() == 1 && Cast<Selector_List>(list)) {
271
+ if (list->length() == 1 && Cast<SelectorList>(list)) {
290
272
  list = Cast<List>(list);
291
273
  }
292
274
  for (size_t i = 0, L = list->length(); i < L; ++i) {
@@ -490,6 +472,7 @@ namespace Sass {
490
472
  return 0;
491
473
  }
492
474
 
475
+
493
476
  Expression* Eval::operator()(List* l)
494
477
  {
495
478
  // special case for unevaluated map
@@ -707,9 +690,9 @@ namespace Sass {
707
690
  b->op(), s_l->last(), b->right());
708
691
  bin_ex->is_delayed(b->left()->is_delayed() || b->right()->is_delayed()); // unverified
709
692
  for (size_t i = 0; i < s_l->length() - 1; ++i) {
710
- ret_schema->append(Cast<PreValue>(s_l->at(i)->perform(this)));
693
+ ret_schema->append(s_l->at(i)->perform(this));
711
694
  }
712
- ret_schema->append(Cast<PreValue>(bin_ex->perform(this)));
695
+ ret_schema->append(bin_ex->perform(this));
713
696
  return ret_schema->perform(this);
714
697
  }
715
698
  }
@@ -720,9 +703,9 @@ namespace Sass {
720
703
  Binary_Expression_Obj bin_ex = SASS_MEMORY_NEW(Binary_Expression, b->pstate(),
721
704
  b->op(), b->left(), s_r->first());
722
705
  bin_ex->is_delayed(b->left()->is_delayed() || b->right()->is_delayed()); // verified
723
- ret_schema->append(Cast<PreValue>(bin_ex->perform(this)));
706
+ ret_schema->append(bin_ex->perform(this));
724
707
  for (size_t i = 1; i < s_r->length(); ++i) {
725
- ret_schema->append(Cast<PreValue>(s_r->at(i)->perform(this)));
708
+ ret_schema->append(s_r->at(i)->perform(this));
726
709
  }
727
710
  return ret_schema->perform(this);
728
711
  }
@@ -933,7 +916,7 @@ namespace Sass {
933
916
  return nr.detach();
934
917
  }
935
918
  else {
936
- // Special cases: +/- variables which evaluate to null ouput just +/-,
919
+ // Special cases: +/- variables which evaluate to null output just +/-,
937
920
  // but +/- null itself outputs the string
938
921
  if (operand->concrete_type() == Expression::NULL_VAL && Cast<Variable>(u->operand())) {
939
922
  u->operand(SASS_MEMORY_NEW(String_Quoted, u->pstate(), ""));
@@ -942,12 +925,19 @@ namespace Sass {
942
925
  else if (Color* color = Cast<Color>(operand)) {
943
926
  // Use the color name if this was eval with one
944
927
  if (color->disp().length() > 0) {
945
- operand = SASS_MEMORY_NEW(String_Constant, operand->pstate(), color->disp());
946
- u->operand(operand);
928
+ Unary_Expression_Obj cpy = SASS_MEMORY_COPY(u);
929
+ cpy->operand(SASS_MEMORY_NEW(String_Constant, operand->pstate(), color->disp()));
930
+ return SASS_MEMORY_NEW(String_Quoted,
931
+ cpy->pstate(),
932
+ cpy->inspect());
947
933
  }
948
934
  }
949
935
  else {
950
- u->operand(operand);
936
+ Unary_Expression_Obj cpy = SASS_MEMORY_COPY(u);
937
+ cpy->operand(operand);
938
+ return SASS_MEMORY_NEW(String_Quoted,
939
+ cpy->pstate(),
940
+ cpy->inspect());
951
941
  }
952
942
 
953
943
  return SASS_MEMORY_NEW(String_Quoted,
@@ -995,7 +985,7 @@ namespace Sass {
995
985
  c->name(),
996
986
  args);
997
987
  if (args->has_named_arguments()) {
998
- error("Function " + c->name() + " doesn't support keyword arguments", c->pstate(), traces);
988
+ error("Plain CSS function " + c->name() + " doesn't support keyword arguments", c->pstate(), traces);
999
989
  }
1000
990
  String_Quoted* str = SASS_MEMORY_NEW(String_Quoted,
1001
991
  c->pstate(),
@@ -1065,7 +1055,7 @@ namespace Sass {
1065
1055
  result = body->perform(this);
1066
1056
  }
1067
1057
  else if (func) {
1068
- result = func(fn_env, *env, ctx, def->signature(), c->pstate(), traces, exp.selector_stack);
1058
+ result = func(fn_env, *env, ctx, def->signature(), c->pstate(), traces, exp.getSelectorStack(), exp.originalStack);
1069
1059
  }
1070
1060
  if (!result) {
1071
1061
  error(std::string("Function ") + c->name() + " finished without @return", c->pstate(), traces);
@@ -1214,11 +1204,6 @@ namespace Sass {
1214
1204
 
1215
1205
  if (Cast<Null>(ex)) { return; }
1216
1206
 
1217
- // parent selector needs another go
1218
- if (Cast<Parent_Selector>(ex)) {
1219
- // XXX: this is never hit via spec tests
1220
- ex = ex->perform(this);
1221
- }
1222
1207
  // parent selector needs another go
1223
1208
  if (Cast<Parent_Reference>(ex)) {
1224
1209
  // XXX: this is never hit via spec tests
@@ -1254,7 +1239,6 @@ namespace Sass {
1254
1239
  // Selector_List
1255
1240
  // String_Quoted
1256
1241
  // String_Constant
1257
- // Parent_Selector
1258
1242
  // Binary_Expression
1259
1243
  else {
1260
1244
  // ex = ex->perform(this);
@@ -1512,69 +1496,7 @@ namespace Sass {
1512
1496
  return 0;
1513
1497
  }
1514
1498
 
1515
- Selector_List* Eval::operator()(Selector_List* s)
1516
- {
1517
- SelectorStack rv;
1518
- Selector_List_Obj sl = SASS_MEMORY_NEW(Selector_List, s->pstate());
1519
- sl->is_optional(s->is_optional());
1520
- sl->media_block(s->media_block());
1521
- sl->is_optional(s->is_optional());
1522
- for (size_t i = 0, iL = s->length(); i < iL; ++i) {
1523
- rv.push_back(operator()((*s)[i]));
1524
- }
1525
-
1526
- // we should actually permutate parent first
1527
- // but here we have permutated the selector first
1528
- size_t round = 0;
1529
- while (round != std::string::npos) {
1530
- bool abort = true;
1531
- for (size_t i = 0, iL = rv.size(); i < iL; ++i) {
1532
- if (rv[i]->length() > round) {
1533
- sl->append((*rv[i])[round]);
1534
- abort = false;
1535
- }
1536
- }
1537
- if (abort) {
1538
- round = std::string::npos;
1539
- } else {
1540
- ++ round;
1541
- }
1542
-
1543
- }
1544
- return sl.detach();
1545
- }
1546
-
1547
-
1548
- Selector_List* Eval::operator()(Complex_Selector* s)
1549
- {
1550
- bool implicit_parent = !exp.old_at_root_without_rule;
1551
- if (is_in_selector_schema) exp.selector_stack.push_back({});
1552
- Selector_List_Obj resolved = s->resolve_parent_refs(exp.selector_stack, traces, implicit_parent);
1553
- if (is_in_selector_schema) exp.selector_stack.pop_back();
1554
- for (size_t i = 0; i < resolved->length(); i++) {
1555
- Complex_Selector* is = resolved->at(i)->mutable_first();
1556
- while (is) {
1557
- if (is->head()) {
1558
- is->head(operator()(is->head()));
1559
- }
1560
- is = is->tail();
1561
- }
1562
- }
1563
- return resolved.detach();
1564
- }
1565
-
1566
- Compound_Selector* Eval::operator()(Compound_Selector* s)
1567
- {
1568
- for (size_t i = 0; i < s->length(); i++) {
1569
- Simple_Selector* ss = s->at(i);
1570
- // skip parents here (called via resolve_parent_refs)
1571
- if (ss == NULL || Cast<Parent_Selector>(ss)) continue;
1572
- s->at(i) = Cast<Simple_Selector>(ss->perform(this));
1573
- }
1574
- return s;
1575
- }
1576
-
1577
- Selector_List* Eval::operator()(Selector_Schema* s)
1499
+ SelectorList* Eval::operator()(Selector_Schema* s)
1578
1500
  {
1579
1501
  LOCAL_FLAG(is_in_selector_schema, true);
1580
1502
  // the parser will look for a brace to end the selector
@@ -1584,74 +1506,32 @@ namespace Sass {
1584
1506
  char* temp_cstr = sass_copy_c_string(result_str.c_str());
1585
1507
  ctx.strings.push_back(temp_cstr); // attach to context
1586
1508
  Parser p = Parser::from_c_str(temp_cstr, ctx, traces, s->pstate());
1587
- p.last_media_block = s->media_block();
1588
- // a selector schema may or may not connect to parent?
1589
- bool chroot = s->connect_parent() == false;
1590
- Selector_List_Obj sl = p.parse_selector_list(chroot);
1591
- flag_is_in_selector_schema.reset();
1592
- return operator()(sl);
1593
- }
1594
1509
 
1595
- Expression* Eval::operator()(Parent_Selector* p)
1596
- {
1597
- if (Selector_List_Obj pr = selector()) {
1598
- exp.selector_stack.pop_back();
1599
- Selector_List_Obj rv = operator()(pr);
1600
- exp.selector_stack.push_back(rv);
1601
- return rv.detach();
1602
- } else {
1603
- return SASS_MEMORY_NEW(Null, p->pstate());
1604
- }
1510
+ // If a schema contains a reference to parent it is already
1511
+ // connected to it, so don't connect implicitly anymore
1512
+ SelectorListObj parsed = p.parseSelectorList(true);
1513
+ flag_is_in_selector_schema.reset();
1514
+ return parsed.detach();
1605
1515
  }
1606
1516
 
1607
1517
  Expression* Eval::operator()(Parent_Reference* p)
1608
1518
  {
1609
- if (Selector_List_Obj pr = selector()) {
1610
- exp.selector_stack.pop_back();
1611
- Selector_List_Obj rv = operator()(pr);
1612
- exp.selector_stack.push_back(rv);
1613
- return rv.detach();
1519
+ if (SelectorListObj pr = exp.original()) {
1520
+ return operator()(pr);
1614
1521
  } else {
1615
1522
  return SASS_MEMORY_NEW(Null, p->pstate());
1616
1523
  }
1617
1524
  }
1618
1525
 
1619
- Simple_Selector* Eval::operator()(Simple_Selector* s)
1526
+ SimpleSelector* Eval::operator()(SimpleSelector* s)
1620
1527
  {
1621
1528
  return s;
1622
1529
  }
1623
1530
 
1624
- // hotfix to avoid invalid nested `:not` selectors
1625
- // probably the wrong place, but this should ultimately
1626
- // be fixed by implement superselector correctly for `:not`
1627
- // first use of "find" (ATM only implemented for selectors)
1628
- bool hasNotSelector(AST_Node_Obj obj) {
1629
- if (Wrapped_Selector* w = Cast<Wrapped_Selector>(obj)) {
1630
- return w->name() == ":not";
1631
- }
1632
- return false;
1633
- }
1634
-
1635
- Wrapped_Selector* Eval::operator()(Wrapped_Selector* s)
1531
+ Pseudo_Selector* Eval::operator()(Pseudo_Selector* pseudo)
1636
1532
  {
1637
-
1638
- if (s->name() == ":not") {
1639
- if (exp.selector_stack.back()) {
1640
- if (s->selector()->find(hasNotSelector)) {
1641
- s->selector()->clear();
1642
- s->name(" ");
1643
- } else {
1644
- for (size_t i = 0; i < s->selector()->length(); ++i) {
1645
- Complex_Selector* cs = s->selector()->at(i);
1646
- if (cs->tail()) {
1647
- s->selector()->clear();
1648
- s->name(" ");
1649
- }
1650
- }
1651
- }
1652
- }
1653
- }
1654
- return s;
1533
+ // ToDo: should we eval selector?
1534
+ return pseudo;
1655
1535
  };
1656
1536
 
1657
1537
  }
@@ -1,7 +1,11 @@
1
1
  #ifndef SASS_EVAL_H
2
2
  #define SASS_EVAL_H
3
3
 
4
+ // sass.hpp must go before all system headers to get the
5
+ // __EXTENSIONS__ fix on Solaris.
6
+ #include "sass.hpp"
4
7
  #include "ast.hpp"
8
+
5
9
  #include "context.hpp"
6
10
  #include "listize.hpp"
7
11
  #include "operation.hpp"
@@ -31,12 +35,8 @@ namespace Sass {
31
35
  Env* environment();
32
36
  EnvStack& env_stack();
33
37
  const std::string cwd();
34
- Selector_List_Obj selector();
35
38
  CalleeStack& callee_stack();
36
- SelectorStack& selector_stack();
37
- bool& old_at_root_without_rule();
38
39
  struct Sass_Inspect_Options& options();
39
- struct Sass_Inspect_Options options2();
40
40
  struct Sass_Compiler* compiler();
41
41
 
42
42
  // for evaluating function bodies
@@ -64,7 +64,6 @@ namespace Sass {
64
64
  Expression* operator()(String_Schema*);
65
65
  Expression* operator()(String_Quoted*);
66
66
  Expression* operator()(String_Constant*);
67
- // Expression* operator()(Selector_List*);
68
67
  Media_Query* operator()(Media_Query*);
69
68
  Expression* operator()(Media_Query_Expression*);
70
69
  Expression* operator()(At_Root_Query*);
@@ -78,23 +77,22 @@ namespace Sass {
78
77
  Expression* operator()(Comment*);
79
78
 
80
79
  // these will return selectors
81
- Selector_List* operator()(Selector_List*);
82
- Selector_List* operator()(Complex_Selector*);
83
- Compound_Selector* operator()(Compound_Selector*);
84
- Simple_Selector* operator()(Simple_Selector* s);
85
- Wrapped_Selector* operator()(Wrapped_Selector* s);
80
+ SelectorList* operator()(SelectorList*);
81
+ SelectorList* operator()(ComplexSelector*);
82
+ CompoundSelector* operator()(CompoundSelector*);
83
+ SelectorComponent* operator()(SelectorComponent*);
84
+ SimpleSelector* operator()(SimpleSelector* s);
85
+ Pseudo_Selector* operator()(Pseudo_Selector* s);
86
86
 
87
87
  // they don't have any specific implementation (yet)
88
88
  Id_Selector* operator()(Id_Selector* s) { return s; };
89
89
  Class_Selector* operator()(Class_Selector* s) { return s; };
90
- Pseudo_Selector* operator()(Pseudo_Selector* s) { return s; };
91
90
  Type_Selector* operator()(Type_Selector* s) { return s; };
92
91
  Attribute_Selector* operator()(Attribute_Selector* s) { return s; };
93
92
  Placeholder_Selector* operator()(Placeholder_Selector* s) { return s; };
94
93
 
95
94
  // actual evaluated selectors
96
- Selector_List* operator()(Selector_Schema*);
97
- Expression* operator()(Parent_Selector*);
95
+ SelectorList* operator()(Selector_Schema*);
98
96
  Expression* operator()(Parent_Reference*);
99
97
 
100
98
  // generic fallback