CxxStdlib: allow for nil stdlibs

A nil stdlib value represents non-C++ code.
This commit is contained in:
Misty De Meo 2013-10-06 16:59:39 -07:00
parent 74ab023422
commit 87b0137198
2 changed files with 10 additions and 2 deletions

View File

@ -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

View File

@ -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