@@ -14,6 +14,12 @@ class A
1414 m_private
1515 end
1616
17+ memoize
18+ def m_different_line
19+ CALLS << :m_different_line
20+ :m_different_line
21+ end
22+
1723 def not_memoized ; end
1824
1925 memoize def m_nil
@@ -80,6 +86,13 @@ module M
8086 :m
8187 end
8288
89+ memoize
90+
91+ def m_different_line
92+ CALLS << :m_different_line
93+ :m_different_line
94+ end
95+
8396 def not_memoized ; end
8497
8598 private
@@ -170,6 +183,14 @@ class H
170183 end
171184 end
172185
186+ context "methods without args memoize on new line" do
187+ specify do
188+ values = [ a . m_different_line , a . m_nil , a . m_different_line , a . m_nil ]
189+ expect ( values ) . to eq ( [ :m_different_line , nil , :m_different_line , nil ] )
190+ expect ( CALLS ) . to eq ( [ :m_different_line , nil ] )
191+ end
192+ end
193+
173194 context "flushing cache" do
174195 specify do
175196 values = [ a . m , a . m ]
@@ -294,6 +315,12 @@ class H
294315 expect ( CALLS ) . to eq ( [ :m ] )
295316 end
296317
318+ specify do
319+ values = [ c . m_different_line , c . m_different_line , c . m_different_line ]
320+ expect ( values ) . to eq ( [ :m_different_line , :m_different_line , :m_different_line ] )
321+ expect ( CALLS ) . to eq ( [ :m_different_line ] )
322+ end
323+
297324 context "memoization in class" do
298325 specify do
299326 values = [ c . m_class , c . m_class , c . m_class ]
@@ -480,6 +507,12 @@ class H
480507 it { is_expected . to be true }
481508 end
482509
510+ context "memoize is on a different line" do
511+ let ( :method_name ) { :m_different_line }
512+
513+ it { is_expected . to be true }
514+ end
515+
483516 context "private memoized method" do
484517 let ( :method_name ) { :m_private }
485518
0 commit comments