CxxStdlib: allow for nil stdlibs
A nil stdlib value represents non-C++ code.
This commit is contained in:
parent
74ab023422
commit
87b0137198
@ -2,11 +2,11 @@ class CxxStdlib
|
||||
attr_accessor :type, :compiler
|
||||
|
||||
def initialize(type, compiler)
|
||||
if ![:libstdcxx, :libcxx].include? type
|
||||
if type && ![:libstdcxx, :libcxx].include?(type)
|
||||
raise ArgumentError, "Invalid C++ stdlib type: #{type}"
|
||||
end
|
||||
|
||||
@type = type.to_sym
|
||||
@type = type.to_sym if type
|
||||
@compiler = compiler.to_sym
|
||||
end
|
||||
|
||||
@ -15,6 +15,9 @@ class CxxStdlib
|
||||
end
|
||||
|
||||
def compatible_with?(other)
|
||||
# If either package doesn't use C++, all is well
|
||||
return true if type.nil? || other.type.nil?
|
||||
|
||||
# libstdc++ and libc++ aren't ever intercompatible
|
||||
return false unless type == other.type
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ class CxxStdlibTests < Test::Unit::TestCase
|
||||
@gcc48 = CxxStdlib.new(:libstdcxx, 'gcc-4.8')
|
||||
@gcc49 = CxxStdlib.new(:libstdcxx, 'gcc-4.9')
|
||||
@lcxx = CxxStdlib.new(:libcxx, :clang)
|
||||
@purec = CxxStdlib.new(nil, :clang)
|
||||
end
|
||||
|
||||
def test_apple_libstdcxx_intercompatibility
|
||||
@ -59,4 +60,8 @@ class CxxStdlibTests < Test::Unit::TestCase
|
||||
assert_equal stdlib.compiler, :clang
|
||||
assert_equal stdlib.type, :libstdcxx
|
||||
end
|
||||
|
||||
def test_compatibility_for_non_cxx_software
|
||||
assert @purec.compatible_with?(@clang)
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user