Skip to content

Commit 81a1357

Browse files
committed
Track down use of uninitialized instance variables (2.7 issue).
1 parent b7dc68b commit 81a1357

8 files changed

Lines changed: 20 additions & 20 deletions

File tree

lib/rdf/model/literal.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,20 +166,20 @@ def initialize(value, language: nil, datatype: nil, lexical: nil, validate: fals
166166
@object = value.freeze
167167
@string = lexical if lexical
168168
@string = value if !defined?(@string) && value.is_a?(String)
169-
@string = @string.encode(Encoding::UTF_8).freeze if @string
170-
@object = @string if @string && @object.is_a?(String)
169+
@string = @string.encode(Encoding::UTF_8).freeze if instance_variable_defined?(:@string)
170+
@object = @string if instance_variable_defined?(:@string) && @object.is_a?(String)
171171
@language = language.to_s.downcase.to_sym if language
172172
@datatype = RDF::URI(datatype).freeze if datatype
173173
@datatype ||= self.class.const_get(:DATATYPE) if self.class.const_defined?(:DATATYPE)
174-
@datatype ||= @language ? RDF.langString : RDF::URI("http://www.w3.org/2001/XMLSchema#string")
174+
@datatype ||= instance_variable_defined?(:@language) && @language ? RDF.langString : RDF::URI("http://www.w3.org/2001/XMLSchema#string")
175175
end
176176

177177
##
178178
# Returns the value as a string.
179179
#
180180
# @return [String]
181181
def value
182-
@string || to_s
182+
instance_variable_defined?(:@string) && @string || to_s
183183
end
184184

185185
##

lib/rdf/reader.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ def current_line
647647
##
648648
# @return [String]
649649
def readline
650-
@line = @line_rest || @input.readline
650+
@line = instance_variable_defined?(:@line_rest) && @line_rest || @input.readline
651651
@line, @line_rest = @line.split("\r", 2)
652652
@line = String.new if @line.nil? # not frozen
653653
@line.chomp!

lib/rdf/repository.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@ def mutated?
607607
# @see Transaction#execute
608608
def execute
609609
raise TransactionError, 'Cannot execute a rolled back transaction. ' \
610-
'Open a new one instead.' if @rolledback
610+
'Open a new one instead.' if instance_variable_defined?(:@rolledback) && @rolledback
611611

612612
raise TransactionError, 'Error merging transaction. Repository' \
613613
'has changed during transaction time.' unless

lib/rdf/transaction.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ def inspect!
247247
# @raise [TransactionError] if the transaction can't be applied
248248
def execute
249249
raise TransactionError, 'Cannot execute a rolled back transaction. ' \
250-
'Open a new one instead.' if @rolledback
250+
'Open a new one instead.' if instance_variable_defined?(:@rolledback) && @rolledback
251251
@changes.apply(@repository)
252252
end
253253

lib/rdf/util/file.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def self.open_url(base_uri, proxy: nil, headers: {}, verify_none: false, **optio
9898
headers: response.headers
9999
}
100100

101-
remote_document = RemoteDocument.new(response.body, document_options)
101+
RemoteDocument.new(response.body, document_options)
102102
when 300..399
103103
# Document base is redirected location
104104
# Location may be relative
@@ -215,7 +215,7 @@ def self.open_url(base_uri, proxy: nil, headers: {}, verify_none: false, **optio
215215
headers: response.headers
216216
}
217217

218-
remote_document = RemoteDocument.new(response.body, document_options)
218+
RemoteDocument.new(response.body, document_options)
219219
else
220220
raise IOError, "<#{base_uri}>: #{response.status}"
221221
end

lib/rdf/util/logger.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,20 @@ module Logger
1717
# @param [Hash{Symbol => Object}] options
1818
# @option options [Logger, #<<] :logger
1919
# @return [Logger, #write, #<<]
20-
def logger(**options)
20+
def logger(logger: nil, **options)
2121
# Guard against undefined instance variables, which may be a warning if used.
22-
@logger = nil unless instance_variable_defined?(:@logger) || frozen?
23-
@options = nil unless instance_variable_defined?(:@options) || frozen?
24-
logger = options.fetch(:logger, @logger)
25-
logger = @options[:logger] if logger.nil? && @options
22+
@options = {} unless instance_variable_defined?(:@options) || frozen?
23+
logger ||= @logger if instance_variable_defined?(:@logger)
24+
logger = @options[:logger] if logger.nil? && instance_variable_defined?(:@options) && @options
2625
if logger.nil?
2726
# Unless otherwise specified, use $stderr
28-
logger = (@options || options)[:logger] = IOWrapper.new($stderr)
27+
logger = IOWrapper.new($stderr)
2928

3029
# Reset log_statistics so that it's not inherited across different instances
3130
logger.log_statistics.clear if logger.respond_to?(:log_statistics)
3231
end
33-
logger = (@options || options)[:logger] = ::Logger.new(::File.open(::File::NULL, "w")) unless logger # Incase false was used, which is frozen
32+
logger = ::Logger.new(::File.open(::File::NULL, "w")) unless logger # Incase false was used, which is frozen
33+
@options[:logger] ||= logger if instance_variable_defined?(:@options)
3434
logger.extend(LoggerBehavior) unless logger.is_a?(LoggerBehavior)
3535
logger
3636
end

lib/rdf/vocabulary.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class << self
7070
# @return [Enumerator]
7171
def each(&block)
7272
if self.equal?(Vocabulary)
73-
if @vocabs
73+
if instance_variable_defined?(:@vocabs) && @vocabs
7474
@vocabs.select(&:name).each(&block)
7575
else
7676
# This is needed since all vocabulary classes are defined using
@@ -356,7 +356,7 @@ def property(*args)
356356
def ontology(*args)
357357
case args.length
358358
when 0
359-
@ontology
359+
@ontology if instance_variable_defined?(:@ontology)
360360
else
361361
uri, options = args
362362
URI.cache.delete(uri.to_s.to_sym) # Clear any previous entry
@@ -507,7 +507,7 @@ def each_statement(&block)
507507
end
508508

509509
# Also include the ontology, if it's not also a property
510-
@ontology.each_statement(&block) if @ontology && @ontology != self
510+
@ontology.each_statement(&block) if self.ontology && self.ontology != self
511511
end
512512

513513
##

spec/model_node_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
end
112112

113113
its(:to_base) {is_expected.to eq "_:foo"}
114-
its(:to_unique_base) {is_expected.to match /^_:g/}
114+
its(:to_unique_base) {is_expected.to match(/^_:g/)}
115115

116116
describe "#to_unique_base" do
117117
it "uses the to_unique_base of original if duped" do

0 commit comments

Comments
 (0)