diff --git a/lib/ruby-lint/iterator.rb b/lib/ruby-lint/iterator.rb
index <HASH>..<HASH> 100644
--- a/lib/ruby-lint/iterator.rb
+++ b/lib/ruby-lint/iterator.rb
@@ -104,7 +104,13 @@ module RubyLint
     # @param [Array] args Arguments to pass to the callback method.
     #
     def execute_callback(name, *args)
-      send(name, *args) if respond_to?(name)
+      return unless respond_to?(name)
+
+      if method(name).arity == 0
+        send(name)
+      else
+       send(name, *args)
+      end
     end
 
     ##
diff --git a/spec/ruby-lint/iterator_spec.rb b/spec/ruby-lint/iterator_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/ruby-lint/iterator_spec.rb
+++ b/spec/ruby-lint/iterator_spec.rb
@@ -133,4 +133,19 @@ end
     iterator.options[:module].should == true
     iterator.options[:class].should  == false
   end
+
+  example 'allow callbacks without arguments' do
+    ast      = parse('10', false)
+    iterator = Class.new(RubyLint::Iterator) do
+      attr_reader :number
+
+      def on_int
+        @number = true
+      end
+    end.new
+
+    iterator.iterate(ast)
+
+    iterator.number.should == true
+  end
 end
Allow iterator callbacks without arguments.

This means that callback methods (e.g. `on_int`) don't have to specify unused
method arguments.