Skip to content

Commit

Permalink
Handle &block better in ArgumentDuster
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinclark committed Mar 15, 2009
1 parent 32452a9 commit 88ac789
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
7 changes: 7 additions & 0 deletions lib/dust/argument_duster.rb
Expand Up @@ -20,5 +20,12 @@ def process_args(args)

s(:args, *args)
end

def process_block_arg(exp)
name = exp.shift
@args << name
use name
s(:block_arg, name)
end
end
end
19 changes: 19 additions & 0 deletions spec/argument_duster_spec.rb
@@ -1,5 +1,6 @@
require File.dirname(__FILE__) + '/spec_helper'
require 'fixtures/local_variable_badness'
require 'fixtures/block_badness'

include Fixtures

Expand Down Expand Up @@ -33,4 +34,22 @@
duster.dust!
duster.warnings.should == []
end

it "should handle &block in args when called" do
duster = Dust::ArgumentDuster.new(LocalVariableBadness, :block_arg_called)
duster.dust!
duster.warnings.should == []
end

it "should handle &block in args when curried" do
duster = Dust::ArgumentDuster.new(LocalVariableBadness, :block_arg_curried)
duster.dust!
duster.warnings.should == []
end

it "should warn when &block in args is unused" do
duster = Dust::ArgumentDuster.new(LocalVariableBadness, :block_arg_unused)
duster.dust!
duster.warnings.should == [Dust::Warnings::UnusedArgument.new(:block)]
end
end
12 changes: 12 additions & 0 deletions spec/fixtures/local_variable_badness.rb
Expand Up @@ -72,5 +72,17 @@ def args_used_with_splats(args)
def default_args(args=false)
args
end

def block_arg_unused(&block)
1 + 2
end

def block_arg_called(&block)
block.call
end

def block_arg_curried(&block)
respond(&block)
end
end
end

0 comments on commit 88ac789

Please sign in to comment.