Skip to content
  • Schneems's avatar
    226cfda3
    [ruby/syntax_suggest] Fix missing line break due to puts logic · 226cfda3
    Schneems authored
    In #225 it was reported that the output looks incorrect:
    
    ```
    $ cat /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    def x.y.z
    end
    $ ruby /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb: --> /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    expected a delimiter to close the parametersunexpected '.', ignoring it
    > 1  def x.y.z
    > 2  end
    ```
    
    Specifically:
    
    ```
    expected a delimiter to close the parametersunexpected '.', ignoring it
    ```
    
    However this does not show up when executing the debug executable:
    
    ```
    $ bin/bundle exec exe/syntax_suggest /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    --> /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    
    expected a delimiter to close the parameters
    unexpected '.', ignoring it
    
    > 1  def x.y.z
    > 2  end
    ```
    
    This is because `exe/syntax_suggest` uses STDOUT.puts while calling `ruby` with the filename uses a fake IO object represented by MiniStringIO. This class was incorrectly not adding a newline to the end of the print.
    
    The fix was to move the class to it's own file where it can be tested and then fix the behavior.
    
    close https://github.com/ruby/syntax_suggest/pull/225
    
    https://github.com/ruby/syntax_suggest/commit/d2ecd94a3b
    
    
    
    Co-authored-by: default avatarAndy Yong <andyywz@gmail.com>
    226cfda3
    [ruby/syntax_suggest] Fix missing line break due to puts logic
    Schneems authored
    In #225 it was reported that the output looks incorrect:
    
    ```
    $ cat /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    def x.y.z
    end
    $ ruby /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb: --> /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    expected a delimiter to close the parametersunexpected '.', ignoring it
    > 1  def x.y.z
    > 2  end
    ```
    
    Specifically:
    
    ```
    expected a delimiter to close the parametersunexpected '.', ignoring it
    ```
    
    However this does not show up when executing the debug executable:
    
    ```
    $ bin/bundle exec exe/syntax_suggest /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    --> /tmp/4a71c7e417cc9eac0971e3a2519b295c/scratch.rb
    
    expected a delimiter to close the parameters
    unexpected '.', ignoring it
    
    > 1  def x.y.z
    > 2  end
    ```
    
    This is because `exe/syntax_suggest` uses STDOUT.puts while calling `ruby` with the filename uses a fake IO object represented by MiniStringIO. This class was incorrectly not adding a newline to the end of the print.
    
    The fix was to move the class to it's own file where it can be tested and then fix the behavior.
    
    close https://github.com/ruby/syntax_suggest/pull/225
    
    https://github.com/ruby/syntax_suggest/commit/d2ecd94a3b
    
    
    
    Co-authored-by: default avatarAndy Yong <andyywz@gmail.com>
Loading