<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="96416" data-post-id="96416">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="peerreynders" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/120/5826_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  peerreynders
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="prook" data-post="11" data-topic="16374">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/p/e480ec/48.png" class="avatar"> prook:</div>
<blockquote>
<p>This avoids ambiguous <code>SR.update/3</code> with <code>SR.commit/1</code> , which is specced clearly, and matches my spec/requirements.</p>
</blockquote>
</aside>
<p>Clearly the superior solution - but a solution that goes beyond the scope your original post was exploring <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="96416" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/confused-about-spec-dialyxir-invalid-type-specification-for-function/16374/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-96416" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="96416"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="96420" data-post-id="96420">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="prook" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  prook
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>True.</p>
<p>I’ve learned, thanks to you, <strong>what</strong> the problem was, came up with a way to <strong>avoid it</strong> …and then let it slip out of my mind with “the API is kind of weird there”.</p>
<p>But, to reiterate, I still don’t understand <strong>why</strong> or <strong>whether</strong> Dialyxir should not be able to infer (that is, to exclude Transaction.t from) the return type from the call. I see the required information is all there; in the spec of <code>SR.update/3</code> and in the call itself.</p>
<p>I guess that is the original scope of exploration, and I’d appreciate any insight on that.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="96420" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/confused-about-spec-dialyxir-invalid-type-specification-for-function/16374/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-96420" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="96420"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="96426" data-post-id="96426">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="peerreynders" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/120/5826_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  peerreynders
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="prook" data-post="13" data-topic="16374">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/p/e480ec/48.png" class="avatar"> prook:</div>
<blockquote>
<p>I’d appreciate any insight on that.</p>
</blockquote>
</aside>
<p>I don’t have any special insight into how Dialyzer works beyond what <a href="https://learnyousomeerlang.com/dialyzer" rel="noopener nofollow ugc">LYSE</a> has to say <a href="https://learnyousomeerlang.com/types-or-lack-thereof" rel="noopener nofollow ugc">about it</a> - and I don’t have access to your code to poke and prod it.</p>
<p>In any case I typically try to corral the problem into a fairly small code sample with which I can experiment fairly quickly and liberally and observe how Dialyzer reacts to any particular change. Once I figure out how it behaves it leads to stuff <a href="https://forum.elixirforum.com/t/type-and-spec-dialyzer-not-detecting-error/6608/6" rel="nofollow">like this</a>.</p>
<p>It’s one thing to assume to know how something works but with Dialyzer it’s usually instructive to test all assumptions.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="96426" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/confused-about-spec-dialyxir-invalid-type-specification-for-function/16374/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-96426" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="96426"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="96534" data-post-id="96534">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="prook" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  prook
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="peerreynders" data-post="14" data-topic="16374">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/48/5826_2.png" class="avatar"> peerreynders:</div>
<blockquote>
<p>try to corral the problem into a fairly small code sample</p>
</blockquote>
</aside>
<p>(8 hours ago: Hmmm, I should probably do that…)</p>
<p>This has gotten interesting. First, I’ve reduced the warning-inducing code to this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule WhatTheSpec do
  @type key :: atom()
  @type transaction :: map()

  def put(_, _, _ \\ nil)

  @spec put(one, key(), any()) :: transaction() when one: transaction()
  def put(t, _, _) when is_map(t), do: t

  @spec put(one, any(), Keyword.t()) :: :ok when one: key()
  def put(_, _, _), do: :ok

  @spec put_foo(any()) :: :ok
  def put_foo(value) do
    put(:foo, value)
  end
end
</code></pre>
<p>Next, I realized that <code>Keyword.t()</code> does not include <code>nil</code>, yet the third parameter may be <code>nil</code> indeed. So the spec</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">@spec put(one, any(), Keyword.t()) :: :ok when one: key()
</code></pre>
<p>should actually be</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">@spec put(one, any(), Keyword.t() | nil) :: :ok when one: key()
</code></pre>
<p>And sure enough, Dialyxir goes green! So it was lack of understanding on my part after all! Also, this means there’s a similar problem in <a href="https://github.com/nerves-project/system_registry/blob/master/lib/system_registry.ex#L84" rel="noopener nofollow ugc">SystemRegistry @spec of update/3</a>, which sent me on this trip! And furthermore, I point my finger at Dialyxir as well! <strong>*gasp!*</strong></p>
<p>Dialyxir’s warning is misleading to say the least:</p>
<blockquote>
<p>lib/spec.ex:13:invalid_contract<br>
Invalid type specification for function.</p>
<p>Function:<br>
WhatTheSpec.put_foo/1</p>
<p>Success typing:<br>
<a class="mention" href="/u/spec" rel="nofollow">@spec</a> put_foo(_) :: map()</p>
</blockquote>
<p>As I grok it, <code>@spec put_foo(_) :: map()</code> is not a success typing, as there is actually none. I reason this is a bug, as the complaint about <code>map()</code> being a return type goes away after the <code>| nil</code> fix. It should either stay there (no, it should not!), or never appear at all, right?</p>
<p>Also, changing <code>update_foo</code> from the original example (i. e., before the <code>| nil</code> fix) to</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  @spec put_foo(any()) :: :ok
  def put_foo(value) do
    put(:foo, value, nil) # note the explicit nil here
  end
</code></pre>
<p>makes Dialyxir barf completely:</p>
<blockquote>
<p>Please file a bug in <a href="https://github.com/jeremyjh/dialyxir/issues" class="inline-onebox" rel="noopener nofollow ugc">Issues · jeremyjh/dialyxir · GitHub</a> with this message.</p>
<p>Failed to format warning:<br>
“<a class="mention" href="/u/spec" rel="nofollow">@spec</a> a(:one, any(), Keyword.t()) :: 'ok’whenone :: key()\ndef a() do\n  :ok\nend\n”</p>
<p>Legacy warning:<br>
lib/spec.ex:7: The contract ‘Elixir.WhatTheSpec’:put(one,key(),any()) → transaction() when one :: transaction();(one,any(),‘Elixir.Keyword’:t()) → ‘ok’ when one :: key() cannot be right because the inferred return for put(‘foo’,_value@1::any(),‘nil’) on line 15 is ‘ok’ | map()</p>
<hr>
<p>lib/spec.ex:14:no_return<br>
Function put_foo/1 has no local return.</p>
<hr>
</blockquote>
<p><a class="mention" href="/u/jeremyjh" rel="nofollow">@jeremyjh</a>,  It seems I’ve hit some murky parts of Dialyxir with this. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="96534" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/confused-about-spec-dialyxir-invalid-type-specification-for-function/16374/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-96534" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="96534"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-solved cat-solved" title="Marked as solution"></div>
  </section>
</div>
    <div class="postbit" id="96547" data-post-id="96547">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jeremyjh" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/120/5995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jeremyjh
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="prook" data-post="15" data-topic="16374">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/p/e480ec/48.png" class="avatar"> prook:</div>
<blockquote>
<p>As I grok it, <code>@spec put_foo(_) :: map()</code> is not a success typing, as there is actually none. I reason this is a bug, as the complaint about <code>map()</code> being a return type goes away after the <code>| nil</code> fix. It should either stay there (no, it should not!), or never appear at all, right?</p>
<p><a class="mention" href="/u/jeremyjh" rel="nofollow">@jeremyjh</a>, It seems I’ve hit some murky parts of Dialyxir with this. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>Yeah. That success typing doesn’t make sense. I will dig into it in the morning, my brain is mush now. But definitely, we have a parser or formatter error in your last example. I think we may have a dialyzer bug in the first example, but I need to poke at it a bit and translate it to Erlang to be sure.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="96547" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/confused-about-spec-dialyxir-invalid-type-specification-for-function/16374/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-96547" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="96547"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="96741" data-post-id="96741">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jeremyjh" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/120/5995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jeremyjh
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think this maybe a bug in Erlang, but I will be honest, I’ve not used <code>when</code> clauses in specs before and I’m not sure I can expect this signature to work.</p>
<p>I decompiled this Elixir module to Erlang and cleaned it up, and can reproduce the issue with the following code:</p>
<pre data-code-wrap="erlang"><code class="lang-erlang">-module(watspec).

-compile(no_auto_import).

-export([put/2, put/3, put_foo/1]).

put(One, Value) -&gt; put(One, Value, nil).

-spec put(One, atom(), any()) -&gt; map() when One :: map();
         (Two, any(), list()) -&gt; ok when Two :: atom().
put(T, _, _) when erlang:is_map(T) -&gt; T;
put(_, _, _) -&gt; ok.

-spec put_foo(any()) -&gt; ok.
put_foo(Value) -&gt; put(foo, Value).
</code></pre>
<p>From shell you can run with:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">$ dialyzer --build_plt --output_plt error.plt --apps erts kernel stdlib
$ dialyzer -n --plt error.plt --src *.erl
</code></pre>
<p>You will get:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">watspec.erl:14: Invalid type specification for function watspec:put_foo/1. The success typing is (_) -&gt; map()
</code></pre>
<p>If I comment out the spec for put/3 I get no errors. If I run typer without that signature, it gives me this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">-spec put(_,_) -&gt; 'ok' | map().
-spec put(_,_,_) -&gt; 'ok' | map().
-spec put_foo(any()) -&gt; 'ok'.
</code></pre>
<p>The second issue you saw (the barfing) is definitely ours; I opened an <a href="https://github.com/asummers/erlex/issues/16" rel="noopener nofollow ugc">issue</a> to track it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="96741" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/confused-about-spec-dialyxir-invalid-type-specification-for-function/16374/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-96741" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="96741"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="96768" data-post-id="96768">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="prook" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  prook
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I just wanted to know how stuff works, not break half the universe. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>But yeah, Dialyzer reaction to that decompiled code is misleading in the same way.</p>
<p>I’ve slightly reduced the example (leaving the middle argument out, as it’s not part of the problem) to:</p>
<pre data-code-wrap="erlang"><code class="lang-erlang">-module(watspec).

-compile(no_auto_import).

-export([put/1, put/2, put_foo/0]).

put(One) -&gt; put(One, nil).

-spec put(One, any()) -&gt; map() when One :: map();
         (Two, list()) -&gt; ok when Two :: atom().
put(T, _) when erlang:is_map(T) -&gt; T;
put(_, _) -&gt; ok.

-spec put_foo() -&gt; ok.
put_foo() -&gt; put(foo).
</code></pre>
<p>But now I’m kinda clueless about what to do next… Should I ping someone here? File an issue on <a href="https://bugs.erlang.org" rel="nofollow">bugs.erlang.org</a>? Is this even worth fixing?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="96768" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/confused-about-spec-dialyxir-invalid-type-specification-for-function/16374/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-96768" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="96768"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="96807" data-post-id="96807">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jeremyjh" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeremyjh/120/5995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jeremyjh
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Everything is worth fixing, and I’ve found the Erlang group to be very responsive and helpful on past Dialyzer bugs. My only hesitation again is that its possible the <code>when</code> spec doesn’t really intend to behave like we think it would. I’d probably post it on <a href="http://erlang.org/mailman/listinfo/erlang-bugs" rel="nofollow">erlang-bugs</a> before opening a Jira, but either way would be fine.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="96807" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/confused-about-spec-dialyxir-invalid-type-specification-for-function/16374/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-96807" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="96807"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>