@@ -9,8 +9,9 @@ module Prism
99 # A Location instance that represents the location of this node in the
1010 # source.
1111 def location
12- return @location if @location.is_a?(Location)
13- @location = Location.new(source, @location > > 32, @location & 0xFFFFFFFF)
12+ location = @location
13+ return location if location.is_a?(Location)
14+ @location = Location.new(source, location > > 32, location & 0xFFFFFFFF)
1415 end
1516
1617 def newline? # :nodoc:
@@ -196,18 +197,20 @@ module Prism
196197 <%- case field -%>
197198 <%- when Prism ::LocationField -%>
198199 def <%= field . name %>
199- return @<%= field . name %> if @<%= field . name %> .is_a?(Location)
200- @<%= field . name %> = Location.new(source, @<%= field . name %> > > 32, @<%= field . name %> & 0xFFFFFFFF)
200+ location = @<%= field . name %>
201+ return location if location.is_a?(Location)
202+ @<%= field . name %> = Location.new(source, location > > 32, location & 0xFFFFFFFF)
201203 end
202204 <%- when Prism ::OptionalLocationField -%>
203205 def <%= field . name %>
204- case @<%= field . name %>
206+ location = @<%= field . name %>
207+ case location
205208 when nil
206209 nil
207210 when Location
208- @ <%= field . name %>
211+ location
209212 else
210- @<%= field . name %> = Location.new(source, @ <%= field . name %> > > 32, @ <%= field . name %> & 0xFFFFFFFF)
213+ @<%= field . name %> = Location.new(source, location > > 32, location & 0xFFFFFFFF)
211214 end
212215 end
213216 <%- else -%>
0 commit comments