@@ -700,7 +700,11 @@ namespace Sass {
700
700
if (auto str = dynamic_cast <String_Quoted*>(value)) {
701
701
value = new (ctx.mem ) String_Quoted (*str);
702
702
} else if (auto str = dynamic_cast <String_Constant*>(value)) {
703
- value = new (ctx.mem ) String_Constant (*str);
703
+ if (str->quote_mark ()) {
704
+ value = new (ctx.mem ) String_Quoted (str->pstate (), str->perform (&to_string));
705
+ } else {
706
+ value = new (ctx.mem ) String_Constant (str->pstate (), unquote (str->value ()));
707
+ }
704
708
}
705
709
}
706
710
else if (value->concrete_type () == Expression::LIST) {
@@ -812,12 +816,18 @@ namespace Sass {
812
816
string Eval::interpolation (Expression* s) {
813
817
if (String_Quoted* str_quoted = dynamic_cast <String_Quoted*>(s)) {
814
818
if (str_quoted->quote_mark ()) {
815
- return string_escape (str_quoted->value ());
819
+ if (str_quoted->quote_mark () == ' *' || str_quoted->is_delayed ()) {
820
+ return interpolation (new (ctx.mem ) String_Constant (*str_quoted));
821
+ } else {
822
+ return string_escape (quote (str_quoted->value (), str_quoted->quote_mark ()));
823
+ }
816
824
} else {
817
825
return evacuate_escapes (str_quoted->value ());
818
826
}
819
827
} else if (String_Constant* str_constant = dynamic_cast <String_Constant*>(s)) {
820
- return evacuate_escapes (str_constant->value ());
828
+ string str = str_constant->value ();
829
+ if (!str_constant->quote_mark ()) str = unquote (str);
830
+ return evacuate_escapes (str);
821
831
} else if (String_Schema* str_schema = dynamic_cast <String_Schema*>(s)) {
822
832
string res = " " ;
823
833
for (auto i : str_schema->elements ())
0 commit comments