summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--lib/optparse.rb28
-rw-r--r--version.h6
3 files changed, 24 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index 2f932ecd73..394b80fb5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Oct 10 00:21:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (ParseError.filter_backtrace): removes internal
+ backtrace.
+
Thu Oct 9 23:53:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* misc/ruby-style.el (ruby-style-c-mode): buffer may not have file
diff --git a/lib/optparse.rb b/lib/optparse.rb
index 00499cc090..0d46fa47fa 100644
--- a/lib/optparse.rb
+++ b/lib/optparse.rb
@@ -301,7 +301,8 @@ class OptionParser
end
def self.incompatible_argument_styles(arg, t)
- raise ArgumentError, "#{arg}: incompatible argument styles\n #{self}, #{t}"
+ raise(ArgumentError, "#{arg}: incompatible argument styles\n #{self}, #{t}",
+ ParseError.filter_backtrace(caller(2)))
end
def self.pattern
@@ -529,7 +530,8 @@ class OptionParser
#
def accept(t, pat = /.*/nm, &block)
if pat
- pat.respond_to?(:match) or raise TypeError, "has no `match'"
+ pat.respond_to?(:match) or
+ raise TypeError, "has no `match'", ParseError.filter_backtrace(caller(2))
else
pat = t if t.respond_to?(:match)
end
@@ -987,12 +989,8 @@ class OptionParser
#
def notwice(obj, prv, msg)
unless !prv or prv == obj
- begin
- raise ArgumentError, "argument #{msg} given twice: #{obj}"
- rescue
- $@[0, 2] = nil
- raise
- end
+ raise(ArgumentError, "argument #{msg} given twice: #{obj}",
+ ParseError.filter_backtrace(caller(2)))
end
obj
end
@@ -1098,7 +1096,7 @@ class OptionParser
end
o.each {|(o, *v)| pattern[o] = v.fetch(0) {o}}
when Module
- raise ArgumentError, "unsupported argument type: #{o}"
+ raise ArgumentError, "unsupported argument type: #{o}", ParseError.filter_backtrace(caller(4))
when *ArgumentStyle.keys
style = notwice(ArgumentStyle[o], style, 'style')
when /^--no-([^\[\]=\s]*)(.+)?/
@@ -1163,7 +1161,9 @@ class OptionParser
s = (style || default_style).new(pattern || default_pattern,
conv, sdesc, ldesc, arg, desc, block)
elsif !block
- raise ArgumentError, "no switch given" if style or pattern
+ if style or pattern
+ raise ArgumentError, "no switch given", ParseError.filter_backtrace(caller)
+ end
s = desc
else
short << pattern
@@ -1607,11 +1607,15 @@ class OptionParser
argv
end
- def set_backtrace(array)
+ def self.filter_backtrace(array)
unless $DEBUG
array.delete_if(&%r"\A#{Regexp.quote(__FILE__)}:"o.method(:=~))
end
- super(array)
+ array
+ end
+
+ def set_backtrace(array)
+ super(self.class.filter_backtrace(array))
end
def set_option(opt, eq)
diff --git a/version.h b/version.h
index 1f8b045845..13b1fe57f9 100644
--- a/version.h
+++ b/version.h
@@ -1,7 +1,7 @@
#define RUBY_VERSION "1.8.7"
-#define RUBY_RELEASE_DATE "2008-10-09"
+#define RUBY_RELEASE_DATE "2008-10-10"
#define RUBY_VERSION_CODE 187
-#define RUBY_RELEASE_CODE 20081009
+#define RUBY_RELEASE_CODE 20081010
#define RUBY_PATCHLEVEL 5000
#define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 7
#define RUBY_RELEASE_YEAR 2008
#define RUBY_RELEASE_MONTH 10
-#define RUBY_RELEASE_DAY 9
+#define RUBY_RELEASE_DAY 10
#ifdef RUBY_EXTERN
RUBY_EXTERN const char ruby_version[];