@@ -35,14 +35,21 @@ def to_proto(obj)
3535 )
3636 )
3737 when Sass ::Value ::ArgumentList
38- EmbeddedProtocol ::Value . new (
39- argument_list : EmbeddedProtocol ::Value ::ArgumentList . new (
40- id : obj . instance_variable_get ( :@id ) ,
41- contents : obj . to_a . map { |element | to_proto ( element ) } ,
42- keywords : obj . keywords . each_with_object ( { } ) { |( key , value ) , hash | hash [ key . to_s ] = to_proto ( value ) } ,
43- separator : ListSeparator . to_proto ( obj . separator )
38+ if obj . instance_variable_get ( :@environment ) == @function_registry . environment
39+ EmbeddedProtocol ::Value . new (
40+ argument_list : EmbeddedProtocol ::Value ::ArgumentList . new (
41+ id : obj . instance_variable_get ( :@id )
42+ )
4443 )
45- )
44+ else
45+ EmbeddedProtocol ::Value . new (
46+ argument_list : EmbeddedProtocol ::Value ::ArgumentList . new (
47+ contents : obj . to_a . map { |element | to_proto ( element ) } ,
48+ keywords : obj . keywords . each_with_object ( { } ) { |( key , value ) , hash | hash [ key . to_s ] = to_proto ( value ) } ,
49+ separator : ListSeparator . to_proto ( obj . separator )
50+ )
51+ )
52+ end
4653 when Sass ::Value ::List
4754 EmbeddedProtocol ::Value . new (
4855 list : EmbeddedProtocol ::Value ::List . new (
@@ -125,18 +132,18 @@ def from_proto(proto)
125132 obj . has_alpha? ? obj . alpha : nil
126133 )
127134 when :argument_list
128- Sass :: Value :: ArgumentList . new (
129- obj . contents . map do | element |
130- from_proto ( element )
131- end ,
132- obj . keywords . to_enum . with_object ( { } ) do | ( key , value ) , hash |
133- hash [ key . to_sym ] = from_proto ( value )
134- end ,
135- ListSeparator . from_proto ( obj . separator )
136- ) . instance_eval do
137- @id = obj . id
138- self
139- end
135+ compiler_value (
136+ Sass :: Value :: ArgumentList . new (
137+ obj . contents . map do | element |
138+ from_proto ( element )
139+ end ,
140+ obj . keywords . to_enum . with_object ( { } ) do | ( key , value ) , hash |
141+ hash [ key . to_sym ] = from_proto ( value )
142+ end ,
143+ ListSeparator . from_proto ( obj . separator )
144+ ) ,
145+ obj . id
146+ )
140147 when :list
141148 Sass ::Value ::List . new (
142149 obj . contents . map do |element |
@@ -152,11 +159,11 @@ def from_proto(proto)
152159 end
153160 )
154161 when :compiler_function
155- compiler_value ( Sass ::Value ::Function , obj . id )
162+ compiler_value ( Sass ::Value ::Function . allocate , obj . id )
156163 when :host_function
157164 raise Sass ::ScriptError , 'The compiler may not send Value.host_function to host'
158165 when :compiler_mixin
159- compiler_value ( Sass ::Value ::Mixin , obj . id )
166+ compiler_value ( Sass ::Value ::Mixin . allocate , obj . id )
160167 when :calculation
161168 Calculation . from_proto ( obj )
162169 when :singleton
@@ -185,8 +192,7 @@ def assert_compiler_value(value)
185192 value
186193 end
187194
188- def compiler_value ( klass , id )
189- value = klass . allocate
195+ def compiler_value ( value , id )
190196 value . instance_variable_set ( :@environment , @function_registry . environment )
191197 value . instance_variable_set ( :@id , id )
192198 value
0 commit comments