@@ -770,6 +770,10 @@ namespace Sass {
770
770
{ concrete_type (LIST); }
771
771
string type () { return is_arglist_ ? " arglist" : " list" ; }
772
772
static string type_name () { return " list" ; }
773
+ const char * sep_string (bool compressed = false ) const {
774
+ return separator () == SASS_COMMA ?
775
+ (compressed ? " ," : " , " ) : " " ;
776
+ }
773
777
bool is_invisible () const { return empty (); }
774
778
Expression* value_at_index (size_t i);
775
779
@@ -779,12 +783,11 @@ namespace Sass {
779
783
780
784
virtual size_t hash ()
781
785
{
782
- if (hash_ > 0 ) return hash_;
783
-
784
- hash_ = std::hash<string>()(separator () == SASS_COMMA ? " comma" : " space" );
785
- for (size_t i = 0 , L = length (); i < L; ++i)
786
- hash_combine (hash_, (elements ()[i])->hash ());
787
-
786
+ if (hash_ == 0 ) {
787
+ hash_ = std::hash<string>()(sep_string ());
788
+ for (size_t i = 0 , L = length (); i < L; ++i)
789
+ hash_combine (hash_, (elements ()[i])->hash ());
790
+ }
788
791
return hash_;
789
792
}
790
793
@@ -832,11 +835,11 @@ namespace Sass {
832
835
833
836
virtual size_t hash ()
834
837
{
835
- if (hash_ > 0 ) return hash_;
836
-
837
- for ( auto key : keys ()) {
838
- hash_combine (hash_, key->hash ());
839
- hash_combine (hash_, at (key)-> hash ());
838
+ if (hash_ == 0 ) {
839
+ for ( auto key : keys ()) {
840
+ hash_combine (hash_, key-> hash ());
841
+ hash_combine (hash_, at ( key) ->hash ());
842
+ }
840
843
}
841
844
842
845
return hash_;
@@ -904,8 +907,11 @@ namespace Sass {
904
907
}
905
908
virtual size_t hash ()
906
909
{
907
- if (hash_ > 0 ) return hash_;
908
- hash_ = left ()->hash () ^ right ()->hash () ^ std::hash<size_t >()(type_);
910
+ if (hash_ == 0 ) {
911
+ hash_ = std::hash<size_t >()(type_);
912
+ hash_combine (hash_, left ()->hash ());
913
+ hash_combine (hash_, right ()->hash ());
914
+ }
909
915
return hash_;
910
916
}
911
917
ATTACH_OPERATIONS ()
@@ -950,8 +956,10 @@ namespace Sass {
950
956
}
951
957
virtual size_t hash ()
952
958
{
953
- if (hash_ > 0 ) return hash_;
954
- hash_ = operand ()->hash () ^ std::hash<size_t >()(type_);
959
+ if (hash_ == 0 ) {
960
+ hash_ = std::hash<size_t >()(type_);
961
+ hash_combine (hash_, operand ()->hash ());
962
+ };
955
963
return hash_;
956
964
}
957
965
ATTACH_OPERATIONS ()
@@ -992,10 +1000,10 @@ namespace Sass {
992
1000
993
1001
virtual size_t hash ()
994
1002
{
995
- if (hash_ > 0 ) return hash_;
996
-
997
- hash_ = std::hash<string>()( name ()) ^ value ()->hash ();
998
-
1003
+ if (hash_ == 0 ) {
1004
+ hash_ = std::hash<string>()( name ());
1005
+ hash_combine (hash_, value ()->hash () );
1006
+ }
999
1007
return hash_;
1000
1008
}
1001
1009
@@ -1060,12 +1068,11 @@ namespace Sass {
1060
1068
1061
1069
virtual size_t hash ()
1062
1070
{
1063
- if (hash_ > 0 ) return hash_;
1064
-
1065
- hash_ = std::hash<string>()(name ());
1066
- for (auto argument : arguments ()->elements ())
1067
- hash_combine (hash_, argument->hash ());
1068
-
1071
+ if (hash_ == 0 ) {
1072
+ hash_ = std::hash<string>()(name ());
1073
+ for (auto argument : arguments ()->elements ())
1074
+ hash_combine (hash_, argument->hash ());
1075
+ }
1069
1076
return hash_;
1070
1077
}
1071
1078
@@ -1150,7 +1157,10 @@ namespace Sass {
1150
1157
1151
1158
virtual size_t hash ()
1152
1159
{
1153
- if (hash_ == 0 ) hash_ = std::hash<string>()(value_) ^ std::hash<int >()(type_);
1160
+ if (hash_ == 0 ) {
1161
+ hash_ = std::hash<string>()(value_);
1162
+ hash_combine (hash_, std::hash<int >()(type_));
1163
+ }
1154
1164
return hash_;
1155
1165
}
1156
1166
@@ -1186,7 +1196,9 @@ namespace Sass {
1186
1196
1187
1197
virtual size_t hash ()
1188
1198
{
1189
- if (hash_ == 0 ) hash_ = std::hash<double >()(value_);
1199
+ if (hash_ == 0 ) {
1200
+ hash_ = std::hash<double >()(value_);
1201
+ }
1190
1202
return hash_;
1191
1203
}
1192
1204
@@ -1228,7 +1240,12 @@ namespace Sass {
1228
1240
1229
1241
virtual size_t hash ()
1230
1242
{
1231
- if (hash_ == 0 ) hash_ = std::hash<double >()(r_) ^ std::hash<double >()(g_) ^ std::hash<double >()(b_) ^ std::hash<double >()(a_);
1243
+ if (hash_ == 0 ) {
1244
+ hash_ = std::hash<double >()(a_);
1245
+ hash_combine (hash_, std::hash<double >()(r_));
1246
+ hash_combine (hash_, std::hash<double >()(g_));
1247
+ hash_combine (hash_, std::hash<double >()(b_));
1248
+ }
1232
1249
return hash_;
1233
1250
}
1234
1251
@@ -1267,7 +1284,9 @@ namespace Sass {
1267
1284
1268
1285
virtual size_t hash ()
1269
1286
{
1270
- if (hash_ == 0 ) hash_ = std::hash<bool >()(value_);
1287
+ if (hash_ == 0 ) {
1288
+ hash_ = std::hash<bool >()(value_);
1289
+ }
1271
1290
return hash_;
1272
1291
}
1273
1292
@@ -1323,11 +1342,10 @@ namespace Sass {
1323
1342
1324
1343
virtual size_t hash ()
1325
1344
{
1326
- if (hash_ > 0 ) return hash_;
1327
-
1328
- for (auto string : elements ())
1329
- hash_combine (hash_, string->hash ());
1330
-
1345
+ if (hash_ == 0 ) {
1346
+ for (auto string : elements ())
1347
+ hash_combine (hash_, string->hash ());
1348
+ }
1331
1349
return hash_;
1332
1350
}
1333
1351
@@ -1375,7 +1393,9 @@ namespace Sass {
1375
1393
1376
1394
virtual size_t hash ()
1377
1395
{
1378
- if (hash_ == 0 ) hash_ = std::hash<string>()(value_);
1396
+ if (hash_ == 0 ) {
1397
+ hash_ = std::hash<string>()(value_);
1398
+ }
1379
1399
return hash_;
1380
1400
}
1381
1401
0 commit comments