From 2d8e804e3be40be294ae7c2abe14518b286a6801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20B=C3=BChlmann?= Date: Thu, 2 May 2013 12:39:42 +0200 Subject: [PATCH 1/2] Removed Ruby warnings. --- lib/v8/access/invocation.rb | 6 +++--- lib/v8/error.rb | 6 +++--- lib/v8/weak.rb | 13 ++++++++++--- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/v8/access/invocation.rb b/lib/v8/access/invocation.rb index 210bf146..878f82e0 100644 --- a/lib/v8/access/invocation.rb +++ b/lib/v8/access/invocation.rb @@ -13,7 +13,7 @@ def aritize(args) module Proc include Aritize def methodcall(this, args) - call *aritize([this].concat(args)) + call(*aritize([this].concat(args))) end ::Proc.send :include, self end @@ -24,11 +24,11 @@ def methodcall(this, args) context = V8::Context.current access = context.access if this.equal? self.receiver - call *aritize(args) + call(*aritize(args)) elsif this.class <= self.receiver.class access.methodcall(unbind, this, args) elsif this.equal? context.scope - call *aritize(args) + call(*aritize(args)) else fail TypeError, "cannot invoke #{self} on #{this}" end diff --git a/lib/v8/error.rb b/lib/v8/error.rb index 1c8c2f85..38b5130e 100644 --- a/lib/v8/error.rb +++ b/lib/v8/error.rb @@ -66,12 +66,12 @@ def bilingual_backtrace(trace_ruby = true, trace_javascript = true) if trace_ruby backtrace_selector = cause.respond_to?(:standard_error_backtrace) ? :standard_error_backtrace : :backtrace ruby_frames = cause.send(backtrace_selector)[0..accumulator[:ruby]] - accumulator[:backtrace].unshift *ruby_frames + accumulator[:backtrace].unshift(*ruby_frames) accumulator[:ruby] -= ruby_frames.length end if trace_javascript && cause.respond_to?(:javascript_backtrace) javascript_frames = cause.javascript_backtrace.to_a[0..accumulator[:javascript]].map(&:to_s) - accumulator[:backtrace].unshift *javascript_frames + accumulator[:backtrace].unshift(*javascript_frames) accumulator[:javascript] -= javascript_frames.length end end @@ -163,4 +163,4 @@ def self.Error(trycatch) V8::Error.new(message, value, javascript_backtrace, cause) end const_set :JSError, Error -end \ No newline at end of file +end diff --git a/lib/v8/weak.rb b/lib/v8/weak.rb index 46147980..6431c0af 100644 --- a/lib/v8/weak.rb +++ b/lib/v8/weak.rb @@ -46,12 +46,19 @@ def []=(key, value) module Cell def weakcell(name, &block) - unless storage = instance_variable_get("@#{name}") - storage = instance_variable_set("@#{name}", Storage.new) + ivar = "@#{name}" + if instance_variable_defined?(ivar) + unless storage = instance_variable_get(ivar) + storage = instance_variable_set(ivar, Storage.new) + end end storage.access(&block) end class Storage + def initialize + @ref = nil + end + def access(&block) if @ref @ref.object || populate(block) @@ -70,4 +77,4 @@ def populate(block) end end end -end \ No newline at end of file +end From 62ee24d7a2bade2453c0bb71257c702e50813471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20B=C3=BChlmann?= Date: Fri, 3 Jan 2014 12:06:54 +0100 Subject: [PATCH 2/2] - Fixed code for failing test. - Removed some more warnings. --- lib/v8/error.rb | 3 +-- lib/v8/weak.rb | 13 +++++++------ spec/v8/conversion_spec.rb | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/v8/error.rb b/lib/v8/error.rb index 38b5130e..79d64aad 100644 --- a/lib/v8/error.rb +++ b/lib/v8/error.rb @@ -40,7 +40,6 @@ def causes def backtrace(*modifiers) return unless super() - trace_framework = modifiers.include?(:framework) trace_ruby = modifiers.length == 0 || modifiers.include?(:ruby) trace_javascript = modifiers.length == 0 || modifiers.include?(:javascript) bilingual_backtrace(trace_ruby, trace_javascript).tap do |trace| @@ -61,7 +60,7 @@ def in_ruby? end def bilingual_backtrace(trace_ruby = true, trace_javascript = true) - backtrace = causes.reduce(:backtrace => [], :ruby => -1, :javascript => -1) { |accumulator, cause| + causes.reduce(:backtrace => [], :ruby => -1, :javascript => -1) { |accumulator, cause| accumulator.tap do if trace_ruby backtrace_selector = cause.respond_to?(:standard_error_backtrace) ? :standard_error_backtrace : :backtrace diff --git a/lib/v8/weak.rb b/lib/v8/weak.rb index 6431c0af..e30080df 100644 --- a/lib/v8/weak.rb +++ b/lib/v8/weak.rb @@ -47,13 +47,14 @@ def []=(key, value) module Cell def weakcell(name, &block) ivar = "@#{name}" - if instance_variable_defined?(ivar) - unless storage = instance_variable_get(ivar) - storage = instance_variable_set(ivar, Storage.new) - end - end - storage.access(&block) + + if instance_variable_defined?(ivar) && instance_variable_get(ivar) + instance_variable_get(ivar) + else + instance_variable_set(ivar, Storage.new) + end.access(&block) end + class Storage def initialize @ref = nil diff --git a/spec/v8/conversion_spec.rb b/spec/v8/conversion_spec.rb index faeaf47b..c757c4af 100644 --- a/spec/v8/conversion_spec.rb +++ b/spec/v8/conversion_spec.rb @@ -25,13 +25,13 @@ def test context "for 32-bit numbers" do it "should convert positive integer" do cxt['fixnum_a'] = 123 - cxt['fixnum_a'].should == 123 + cxt['fixnum_a'].should eq(123) cxt['fixnum_a'].should be_instance_of(Fixnum) end it "should convert negative integer" do cxt['fixnum_b'] = -123 - cxt['fixnum_b'].should == -123 + cxt['fixnum_b'].should eq(-123) cxt['fixnum_b'].should be_instance_of(Fixnum) end end