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
@@ -54,35 +54,35 @@ namespace Sass {
54
54
 
55
55
  private:
56
56
 
57
- std::vector<CssMediaQuery_Obj> mergeMediaQueries(const std::vector<CssMediaQuery_Obj>& lhs, const std::vector<CssMediaQuery_Obj>& rhs);
57
+ sass::vector<CssMediaQuery_Obj> mergeMediaQueries(const sass::vector<CssMediaQuery_Obj>& lhs, const sass::vector<CssMediaQuery_Obj>& rhs);
58
58
 
59
59
  public:
60
60
  Expand(Context&, Env*, SelectorStack* stack = nullptr, SelectorStack* original = nullptr);
61
61
  ~Expand() { }
62
62
 
63
63
  Block* operator()(Block*);
64
- Statement* operator()(Ruleset*);
64
+ Statement* operator()(StyleRule*);
65
65
 
66
66
  Statement* operator()(MediaRule*);
67
67
 
68
- // Css Ruleset is already static
68
+ // Css StyleRule is already static
69
69
  // Statement* operator()(CssMediaRule*);
70
70
 
71
- Statement* operator()(Supports_Block*);
72
- Statement* operator()(At_Root_Block*);
73
- Statement* operator()(Directive*);
71
+ Statement* operator()(SupportsRule*);
72
+ Statement* operator()(AtRootRule*);
73
+ Statement* operator()(AtRule*);
74
74
  Statement* operator()(Declaration*);
75
75
  Statement* operator()(Assignment*);
76
76
  Statement* operator()(Import*);
77
77
  Statement* operator()(Import_Stub*);
78
- Statement* operator()(Warning*);
79
- Statement* operator()(Error*);
80
- Statement* operator()(Debug*);
78
+ Statement* operator()(WarningRule*);
79
+ Statement* operator()(ErrorRule*);
80
+ Statement* operator()(DebugRule*);
81
81
  Statement* operator()(Comment*);
82
82
  Statement* operator()(If*);
83
- Statement* operator()(For*);
84
- Statement* operator()(Each*);
85
- Statement* operator()(While*);
83
+ Statement* operator()(ForRule*);
84
+ Statement* operator()(EachRule*);
85
+ Statement* operator()(WhileRule*);
86
86
  Statement* operator()(Return*);
87
87
  Statement* operator()(ExtendRule*);
88
88
  Statement* operator()(Definition*);
@@ -142,10 +142,12 @@ namespace Sass {
142
142
  // ##########################################################################
143
143
  bool Extender::checkForUnsatisfiedExtends(Extension& unsatisfied) const
144
144
  {
145
+ if (selectors.empty()) return false;
145
146
  ExtSmplSelSet originals = getSimpleSelectors();
146
147
  for (auto target : extensions) {
147
148
  SimpleSelector* key = target.first;
148
149
  ExtSelExtMapEntry& val = target.second;
150
+ if (val.empty()) continue;
149
151
  if (originals.find(key) == originals.end()) {
150
152
  const Extension& extension = val.front().second;
151
153
  if (extension.isOptional) continue;
@@ -387,7 +389,7 @@ namespace Sass {
387
389
  CssMediaRuleObj mediaContext;
388
390
  if (mediaContexts.hasKey(rule)) mediaContext = mediaContexts.get(rule);
389
391
  SelectorListObj ext = extendList(rule, newExtensions, mediaContext);
390
- // If no extends actually happenedit (for example becaues unification
392
+ // If no extends actually happened (for example because unification
391
393
  // failed), we don't need to re-register the selector.
392
394
  if (ObjEqualityFn(oldValue, ext)) continue;
393
395
  rule->elements(ext->elements());
@@ -417,7 +419,7 @@ namespace Sass {
417
419
  // ##########################################################################
418
420
  ExtSelExtMap Extender::extendExistingExtensions(
419
421
  // Taking in a reference here makes MSVC debug stuck!?
420
- const std::vector<Extension>& oldExtensions,
422
+ const sass::vector<Extension>& oldExtensions,
421
423
  const ExtSelExtMap& newExtensions)
422
424
  {
423
425
 
@@ -429,7 +431,7 @@ namespace Sass {
429
431
  for (size_t i = 0, iL = oldExtensions.size(); i < iL; i += 1) {
430
432
  const Extension& extension = oldExtensions[i];
431
433
  ExtSelExtMapEntry& sources = extensions[extension.target];
432
- std::vector<ComplexSelectorObj> selectors(extendComplex(
434
+ sass::vector<ComplexSelectorObj> selectors(extendComplex(
433
435
  extension.extender,
434
436
  newExtensions,
435
437
  extension.mediaContext
@@ -503,10 +505,10 @@ namespace Sass {
503
505
 
504
506
  // This could be written more simply using [List.map], but we want to
505
507
  // avoid any allocations in the common case where no extends apply.
506
- std::vector<ComplexSelectorObj> extended;
508
+ sass::vector<ComplexSelectorObj> extended;
507
509
  for (size_t i = 0; i < list->length(); i++) {
508
510
  const ComplexSelectorObj& complex = list->get(i);
509
- std::vector<ComplexSelectorObj> result =
511
+ sass::vector<ComplexSelectorObj> result =
510
512
  extendComplex(complex, extensions, mediaQueryContext);
511
513
  if (result.empty()) {
512
514
  if (!extended.empty()) {
@@ -540,7 +542,7 @@ namespace Sass {
540
542
  // Extends [complex] using [extensions], and
541
543
  // returns the contents of a [SelectorList].
542
544
  // ##########################################################################
543
- std::vector<ComplexSelectorObj> Extender::extendComplex(
545
+ sass::vector<ComplexSelectorObj> Extender::extendComplex(
544
546
  // Taking in a reference here makes MSVC debug stuck!?
545
547
  const ComplexSelectorObj& complex,
546
548
  const ExtSelExtMap& extensions,
@@ -565,13 +567,13 @@ namespace Sass {
565
567
  // This could be written more simply using [List.map], but we want to avoid
566
568
  // any allocations in the common case where no extends apply.
567
569
 
568
- std::vector<ComplexSelectorObj> result;
569
- std::vector<std::vector<ComplexSelectorObj>> extendedNotExpanded;
570
+ sass::vector<ComplexSelectorObj> result;
571
+ sass::vector<sass::vector<ComplexSelectorObj>> extendedNotExpanded;
570
572
  bool isOriginal = originals.find(complex) != originals.end();
571
573
  for (size_t i = 0; i < complex->length(); i += 1) {
572
574
  const SelectorComponentObj& component = complex->get(i);
573
575
  if (CompoundSelector* compound = Cast<CompoundSelector>(component)) {
574
- std::vector<ComplexSelectorObj> extended = extendCompound(
576
+ sass::vector<ComplexSelectorObj> extended = extendCompound(
575
577
  compound, extensions, mediaQueryContext, isOriginal);
576
578
  if (extended.empty()) {
577
579
  if (!extendedNotExpanded.empty()) {
@@ -610,19 +612,19 @@ namespace Sass {
610
612
  bool first = true;
611
613
 
612
614
  // ToDo: either change weave or paths to work with the same data?
613
- std::vector<std::vector<ComplexSelectorObj>>
615
+ sass::vector<sass::vector<ComplexSelectorObj>>
614
616
  paths = permutate(extendedNotExpanded);
615
617
 
616
- for (const std::vector<ComplexSelectorObj>& path : paths) {
618
+ for (const sass::vector<ComplexSelectorObj>& path : paths) {
617
619
  // Unpack the inner complex selector to component list
618
- std::vector<std::vector<SelectorComponentObj>> _paths;
620
+ sass::vector<sass::vector<SelectorComponentObj>> _paths;
619
621
  for (const ComplexSelectorObj& sel : path) {
620
622
  _paths.insert(_paths.end(), sel->elements());
621
623
  }
622
624
 
623
- std::vector<std::vector<SelectorComponentObj>> weaved = weave(_paths);
625
+ sass::vector<sass::vector<SelectorComponentObj>> weaved = weave(_paths);
624
626
 
625
- for (std::vector<SelectorComponentObj>& components : weaved) {
627
+ for (sass::vector<SelectorComponentObj>& components : weaved) {
626
628
 
627
629
  ComplexSelectorObj cplx = SASS_MEMORY_NEW(ComplexSelector, "[phony]");
628
630
  cplx->hasPreLineFeed(complex->hasPreLineFeed());
@@ -671,9 +673,9 @@ namespace Sass {
671
673
  // ##########################################################################
672
674
  Extension Extender::extensionForCompound(
673
675
  // Taking in a reference here makes MSVC debug stuck!?
674
- const std::vector<SimpleSelectorObj>& simples) const
676
+ const sass::vector<SimpleSelectorObj>& simples) const
675
677
  {
676
- CompoundSelectorObj compound = SASS_MEMORY_NEW(CompoundSelector, ParserState("[ext]"));
678
+ CompoundSelectorObj compound = SASS_MEMORY_NEW(CompoundSelector, SourceSpan("[ext]"));
677
679
  compound->concat(simples);
678
680
  Extension extension(compound->wrapInComplex());
679
681
  // extension.specificity = sourceSpecificity[simple];
@@ -688,7 +690,7 @@ namespace Sass {
688
690
  // indicates whether this is in an original complex selector,
689
691
  // meaning that [compound] should not be trimmed out.
690
692
  // ##########################################################################
691
- std::vector<ComplexSelectorObj> Extender::extendCompound(
693
+ sass::vector<ComplexSelectorObj> Extender::extendCompound(
692
694
  const CompoundSelectorObj& compound,
693
695
  const ExtSelExtMap& extensions,
694
696
  const CssMediaRuleObj& mediaQueryContext,
@@ -705,9 +707,9 @@ namespace Sass {
705
707
  targetsUsed = &targetsUsed2;
706
708
  }
707
709
 
708
- std::vector<ComplexSelectorObj> result;
710
+ sass::vector<ComplexSelectorObj> result;
709
711
  // The complex selectors produced from each component of [compound].
710
- std::vector<std::vector<Extension>> options;
712
+ sass::vector<sass::vector<Extension>> options;
711
713
 
712
714
  for (size_t i = 0; i < compound->length(); i++) {
713
715
  const SimpleSelectorObj& simple = compound->get(i);
@@ -720,7 +722,7 @@ namespace Sass {
720
722
  else {
721
723
  if (options.empty()) {
722
724
  if (i != 0) {
723
- std::vector<SimpleSelectorObj> in;
725
+ sass::vector<SimpleSelectorObj> in;
724
726
  for (size_t n = 0; n < i; n += 1) {
725
727
  in.push_back(compound->get(n));
726
728
  }
@@ -750,7 +752,7 @@ namespace Sass {
750
752
  // Optimize for the simple case of a single simple
751
753
  // selector that doesn't need any unification.
752
754
  if (options.size() == 1) {
753
- std::vector<Extension> exts = options[0];
755
+ sass::vector<Extension> exts = options[0];
754
756
  for (size_t n = 0; n < exts.size(); n += 1) {
755
757
  exts[n].assertCompatibleMediaContext(mediaQueryContext, traces);
756
758
  result.push_back(exts[n].extender);
@@ -784,12 +786,12 @@ namespace Sass {
784
786
  // ]
785
787
 
786
788
  bool first = mode != ExtendMode::REPLACE;
787
- std::vector<ComplexSelectorObj> unifiedPaths;
788
- std::vector<std::vector<Extension>> prePaths = permutate(options);
789
+ sass::vector<ComplexSelectorObj> unifiedPaths;
790
+ sass::vector<sass::vector<Extension>> prePaths = permutate(options);
789
791
 
790
792
  for (size_t i = 0; i < prePaths.size(); i += 1) {
791
- std::vector<std::vector<SelectorComponentObj>> complexes;
792
- const std::vector<Extension>& path = prePaths[i];
793
+ sass::vector<sass::vector<SelectorComponentObj>> complexes;
794
+ const sass::vector<Extension>& path = prePaths[i];
793
795
  if (first) {
794
796
  // The first path is always the original selector. We can't just
795
797
  // return [compound] directly because pseudo selectors may be
@@ -806,8 +808,8 @@ namespace Sass {
806
808
  complexes.push_back({ mergedSelector });
807
809
  }
808
810
  else {
809
- std::vector<SimpleSelectorObj> originals;
810
- std::vector<std::vector<SelectorComponentObj>> toUnify;
811
+ sass::vector<SimpleSelectorObj> originals;
812
+ sass::vector<sass::vector<SelectorComponentObj>> toUnify;
811
813
 
812
814
  for (auto& state : path) {
813
815
  if (state.isOriginal) {
@@ -841,7 +843,7 @@ namespace Sass {
841
843
  // specificity = math.max(specificity, state.specificity);
842
844
  }
843
845
 
844
- for (std::vector<SelectorComponentObj>& components : complexes) {
846
+ for (sass::vector<SelectorComponentObj>& components : complexes) {
845
847
  auto sel = SASS_MEMORY_NEW(ComplexSelector, "[ext]");
846
848
  sel->hasPreLineFeed(lineBreak);
847
849
  sel->elements(components);
@@ -858,7 +860,7 @@ namespace Sass {
858
860
  // Extends [simple] without extending the
859
861
  // contents of any selector pseudos it contains.
860
862
  // ##########################################################################
861
- std::vector<Extension> Extender::extendWithoutPseudo(
863
+ sass::vector<Extension> Extender::extendWithoutPseudo(
862
864
  const SimpleSelectorObj& simple,
863
865
  const ExtSelExtMap& extensions,
864
866
  ExtSmplSelSet* targetsUsed) const
@@ -875,9 +877,9 @@ namespace Sass {
875
877
  return extenders.values();
876
878
  }
877
879
 
878
- const std::vector<Extension>&
880
+ const sass::vector<Extension>&
879
881
  values = extenders.values();
880
- std::vector<Extension> result;
882
+ sass::vector<Extension> result;
881
883
  result.reserve(values.size() + 1);
882
884
  result.push_back(extensionForSimple(simple));
883
885
  result.insert(result.end(), values.begin(), values.end());
@@ -889,20 +891,20 @@ namespace Sass {
889
891
  // Extends [simple] and also extending the
890
892
  // contents of any selector pseudos it contains.
891
893
  // ##########################################################################
892
- std::vector<std::vector<Extension>> Extender::extendSimple(
894
+ sass::vector<sass::vector<Extension>> Extender::extendSimple(
893
895
  const SimpleSelectorObj& simple,
894
896
  const ExtSelExtMap& extensions,
895
897
  const CssMediaRuleObj& mediaQueryContext,
896
898
  ExtSmplSelSet* targetsUsed)
897
899
  {
898
- if (Pseudo_Selector* pseudo = Cast<Pseudo_Selector>(simple)) {
900
+ if (PseudoSelector* pseudo = Cast<PseudoSelector>(simple)) {
899
901
  if (pseudo->selector()) {
900
- std::vector<std::vector<Extension>> merged;
901
- std::vector<Pseudo_Selector_Obj> extended =
902
+ sass::vector<sass::vector<Extension>> merged;
903
+ sass::vector<PseudoSelectorObj> extended =
902
904
  extendPseudo(pseudo, extensions, mediaQueryContext);
903
- for (Pseudo_Selector_Obj& extend : extended) {
905
+ for (PseudoSelectorObj& extend : extended) {
904
906
  SimpleSelectorObj simple = extend;
905
- std::vector<Extension> result =
907
+ sass::vector<Extension> result =
906
908
  extendWithoutPseudo(simple, extensions, targetsUsed);
907
909
  if (result.empty()) result = { extensionForSimple(extend) };
908
910
  merged.push_back(result);
@@ -912,7 +914,7 @@ namespace Sass {
912
914
  }
913
915
  }
914
916
  }
915
- std::vector<Extension> result =
917
+ sass::vector<Extension> result =
916
918
  extendWithoutPseudo(simple, extensions, targetsUsed);
917
919
  if (result.empty()) return {};
918
920
  return { result };
@@ -922,9 +924,9 @@ namespace Sass {
922
924
  // ##########################################################################
923
925
  // Inner loop helper for [extendPseudo] function
924
926
  // ##########################################################################
925
- std::vector<ComplexSelectorObj> Extender::extendPseudoComplex(
927
+ sass::vector<ComplexSelectorObj> Extender::extendPseudoComplex(
926
928
  const ComplexSelectorObj& complex,
927
- const Pseudo_Selector_Obj& pseudo,
929
+ const PseudoSelectorObj& pseudo,
928
930
  const CssMediaRuleObj& mediaQueryContext)
929
931
  {
930
932
 
@@ -932,11 +934,11 @@ namespace Sass {
932
934
  auto compound = Cast<CompoundSelector>(complex->get(0));
933
935
  if (compound == nullptr) { return { complex }; }
934
936
  if (compound->length() != 1) { return { complex }; }
935
- auto innerPseudo = Cast<Pseudo_Selector>(compound->get(0));
937
+ auto innerPseudo = Cast<PseudoSelector>(compound->get(0));
936
938
  if (innerPseudo == nullptr) { return { complex }; }
937
939
  if (!innerPseudo->selector()) { return { complex }; }
938
940
 
939
- std::string name(pseudo->normalized());
941
+ sass::string name(pseudo->normalized());
940
942
 
941
943
  if (name == "not") {
942
944
  // In theory, if there's a `:not` nested within another `:not`, the
@@ -972,8 +974,8 @@ namespace Sass {
972
974
  // Extends [pseudo] using [extensions], and returns
973
975
  // a list of resulting pseudo selectors.
974
976
  // ##########################################################################
975
- std::vector<Pseudo_Selector_Obj> Extender::extendPseudo(
976
- const Pseudo_Selector_Obj& pseudo,
977
+ sass::vector<PseudoSelectorObj> Extender::extendPseudo(
978
+ const PseudoSelectorObj& pseudo,
977
979
  const ExtSelExtMap& extensions,
978
980
  const CssMediaRuleObj& mediaQueryContext)
979
981
  {
@@ -988,7 +990,7 @@ namespace Sass {
988
990
  // writing. We can keep them if either the original selector had a complex
989
991
  // selector, or the result of extending has only complex selectors, because
990
992
  // either way we aren't breaking anything that isn't already broken.
991
- std::vector<ComplexSelectorObj> complexes = extended->elements();
993
+ sass::vector<ComplexSelectorObj> complexes = extended->elements();
992
994
 
993
995
  if (pseudo->normalized() == "not") {
994
996
  if (!hasAny(pseudo->selector()->elements(), hasMoreThanOne)) {
@@ -1003,7 +1005,7 @@ namespace Sass {
1003
1005
  }
1004
1006
  }
1005
1007
 
1006
- std::vector<ComplexSelectorObj> expanded = expand(
1008
+ sass::vector<ComplexSelectorObj> expanded = expand(
1007
1009
  complexes, extendPseudoComplex, pseudo, mediaQueryContext);
1008
1010
 
1009
1011
  // Older browsers support `:not`, but only with a single complex selector.
@@ -1011,7 +1013,7 @@ namespace Sass {
1011
1013
  // unless it originally contained a selector list.
1012
1014
  if (pseudo->normalized() == "not") {
1013
1015
  if (pseudo->selector()->length() == 1) {
1014
- std::vector<Pseudo_Selector_Obj> pseudos;
1016
+ sass::vector<PseudoSelectorObj> pseudos;
1015
1017
  for (size_t i = 0; i < expanded.size(); i += 1) {
1016
1018
  pseudos.push_back(pseudo->withSelector(
1017
1019
  expanded[i]->wrapInList()
@@ -1033,7 +1035,7 @@ namespace Sass {
1033
1035
  // one index higher, looping the final element back to [start].
1034
1036
  // ##########################################################################
1035
1037
  void Extender::rotateSlice(
1036
- std::vector<ComplexSelectorObj>& list,
1038
+ sass::vector<ComplexSelectorObj>& list,
1037
1039
  size_t start, size_t end)
1038
1040
  {
1039
1041
  auto element = list[end - 1];
@@ -1053,8 +1055,8 @@ namespace Sass {
1053
1055
  // Note: for adaption I pass in the set directly, there is some
1054
1056
  // code path in selector-trim that might need this special callback
1055
1057
  // ##########################################################################
1056
- std::vector<ComplexSelectorObj> Extender::trim(
1057
- const std::vector<ComplexSelectorObj>& selectors,
1058
+ sass::vector<ComplexSelectorObj> Extender::trim(
1059
+ const sass::vector<ComplexSelectorObj>& selectors,
1058
1060
  const ExtCplxSelSet& existing) const
1059
1061
  {
1060
1062
 
@@ -1062,17 +1064,17 @@ namespace Sass {
1062
1064
  // TODO(nweiz): I think there may be a way to get perfect trimming
1063
1065
  // without going quadratic by building some sort of trie-like
1064
1066
  // data structure that can be used to look up superselectors.
1065
- // TODO(mgreter): Check how this perfoms in C++ (up the limit)
1067
+ // TODO(mgreter): Check how this performs in C++ (up the limit)
1066
1068
  if (selectors.size() > 100) return selectors;
1067
1069
 
1068
1070
  // This is n² on the sequences, but only comparing between separate sequences
1069
1071
  // should limit the quadratic behavior. We iterate from last to first and reverse
1070
1072
  // the result so that, if two selectors are identical, we keep the first one.
1071
- std::vector<ComplexSelectorObj> result; size_t numOriginals = 0;
1073
+ sass::vector<ComplexSelectorObj> result; size_t numOriginals = 0;
1072
1074
 
1073
1075
  size_t i = selectors.size();
1074
1076
  outer: // Use label to continue loop
1075
- while (--i != std::string::npos) {
1077
+ while (--i != sass::string::npos) {
1076
1078
 
1077
1079
  const ComplexSelectorObj& complex1 = selectors[i];
1078
1080
  // Check if selector in known in existing "originals"
@@ -60,7 +60,7 @@ namespace Sass {
60
60
 
61
61
  typedef std::unordered_map <
62
62
  SimpleSelectorObj,
63
- std::vector<
63
+ sass::vector<
64
64
  Extension
65
65
  >,
66
66
  ObjHash,
@@ -267,7 +267,7 @@ namespace Sass {
267
267
  // ##########################################################################
268
268
  ExtSelExtMap extendExistingExtensions(
269
269
  // Taking in a reference here makes MSVC debug stuck!?
270
- const std::vector<Extension>& extensions,
270
+ const sass::vector<Extension>& extensions,
271
271
  const ExtSelExtMap& newExtensions);
272
272
 
273
273
  // ##########################################################################
@@ -282,7 +282,7 @@ namespace Sass {
282
282
  // Extends [complex] using [extensions], and
283
283
  // returns the contents of a [SelectorList].
284
284
  // ##########################################################################
285
- std::vector<ComplexSelectorObj> extendComplex(
285
+ sass::vector<ComplexSelectorObj> extendComplex(
286
286
  // Taking in a reference here makes MSVC debug stuck!?
287
287
  const ComplexSelectorObj& list,
288
288
  const ExtSelExtMap& extensions,
@@ -301,7 +301,7 @@ namespace Sass {
301
301
  // ##########################################################################
302
302
  Extension extensionForCompound(
303
303
  // Taking in a reference here makes MSVC debug stuck!?
304
- const std::vector<SimpleSelectorObj>& simples) const;
304
+ const sass::vector<SimpleSelectorObj>& simples) const;
305
305
 
306
306
  // ##########################################################################
307
307
  // Extends [compound] using [extensions], and returns the
@@ -309,7 +309,7 @@ namespace Sass {
309
309
  // indicates whether this is in an original complex selector,
310
310
  // meaning that [compound] should not be trimmed out.
311
311
  // ##########################################################################
312
- std::vector<ComplexSelectorObj> extendCompound(
312
+ sass::vector<ComplexSelectorObj> extendCompound(
313
313
  const CompoundSelectorObj& compound,
314
314
  const ExtSelExtMap& extensions,
315
315
  const CssMediaRuleObj& mediaQueryContext,
@@ -319,7 +319,7 @@ namespace Sass {
319
319
  // Extends [simple] without extending the
320
320
  // contents of any selector pseudos it contains.
321
321
  // ##########################################################################
322
- std::vector<Extension> extendWithoutPseudo(
322
+ sass::vector<Extension> extendWithoutPseudo(
323
323
  const SimpleSelectorObj& simple,
324
324
  const ExtSelExtMap& extensions,
325
325
  ExtSmplSelSet* targetsUsed) const;
@@ -328,7 +328,7 @@ namespace Sass {
328
328
  // Extends [simple] and also extending the
329
329
  // contents of any selector pseudos it contains.
330
330
  // ##########################################################################
331
- std::vector<std::vector<Extension>> extendSimple(
331
+ sass::vector<sass::vector<Extension>> extendSimple(
332
332
  const SimpleSelectorObj& simple,
333
333
  const ExtSelExtMap& extensions,
334
334
  const CssMediaRuleObj& mediaQueryContext,
@@ -337,17 +337,17 @@ namespace Sass {
337
337
  // ##########################################################################
338
338
  // Inner loop helper for [extendPseudo] function
339
339
  // ##########################################################################
340
- static std::vector<ComplexSelectorObj> extendPseudoComplex(
340
+ static sass::vector<ComplexSelectorObj> extendPseudoComplex(
341
341
  const ComplexSelectorObj& complex,
342
- const Pseudo_Selector_Obj& pseudo,
342
+ const PseudoSelectorObj& pseudo,
343
343
  const CssMediaRuleObj& mediaQueryContext);
344
344
 
345
345
  // ##########################################################################
346
346
  // Extends [pseudo] using [extensions], and returns
347
347
  // a list of resulting pseudo selectors.
348
348
  // ##########################################################################
349
- std::vector<Pseudo_Selector_Obj> extendPseudo(
350
- const Pseudo_Selector_Obj& pseudo,
349
+ sass::vector<PseudoSelectorObj> extendPseudo(
350
+ const PseudoSelectorObj& pseudo,
351
351
  const ExtSelExtMap& extensions,
352
352
  const CssMediaRuleObj& mediaQueryContext);
353
353
 
@@ -356,7 +356,7 @@ namespace Sass {
356
356
  // one index higher, looping the final element back to [start].
357
357
  // ##########################################################################
358
358
  static void rotateSlice(
359
- std::vector<ComplexSelectorObj>& list,
359
+ sass::vector<ComplexSelectorObj>& list,
360
360
  size_t start, size_t end);
361
361
 
362
362
  // ##########################################################################
@@ -364,8 +364,8 @@ namespace Sass {
364
364
  // elements. The [isOriginal] callback indicates which selectors are
365
365
  // original to the document, and thus should never be trimmed.
366
366
  // ##########################################################################
367
- std::vector<ComplexSelectorObj> trim(
368
- const std::vector<ComplexSelectorObj>& selectors,
367
+ sass::vector<ComplexSelectorObj> trim(
368
+ const sass::vector<ComplexSelectorObj>& selectors,
369
369
  const ExtCplxSelSet& set) const;
370
370
 
371
371
  // ##########################################################################