Issue #15188 has been updated by jeremyevans0 (Jeremy Evans).

File ripper-assign-unused-15188.patch added

Ripper doesn't track usage of local variables as far as I can see.  In `parse.y`, `LVAR_USED` is used to mark local variables as being used.  In normal compilation mode, this is set by `mark_lvar_used`, called by `value_expr_check`, called by `value_expr_gen` (aliased to `value_expr`).  In ripper mode, `#define value_expr(node) ((void)(node))`.  It seems best to just not attempt to print unused variable warnings in ripper, which the attached patch does.

----------------------------------------
Bug #15188: Incorrect warning "assigned but unused variable" when using ripper with $VERBOSE = true
https://bugs.ruby-lang.org/issues/15188#change-81202

* Author: cout (Paul Brannan)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
* Backport: 2.3: DONTNEED, 2.4: DONTNEED, 2.5: REQUIRED
----------------------------------------
The following code:

    require 'ripper'
    
    class Parser < Ripper
      def warn(fmt, *args)
        puts "#{filename}:#{lineno} - #{fmt % args}"
      end
    end
    
    if __FILE__ == $0 then
      $VERBOSE = true
    
      s = 'foo = 42; p foo'
      parser = Parser.new(s)
      parser.parse
    end

produces this warning:

    (ripper):1 - assigned but unused variable - foo

but clearly foo is not unused.


---Files--------------------------------
ripper-assign-unused-15188.patch (1004 Bytes)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>