aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisty De Meo2013-10-06 16:59:39 -0700
committerMisty De Meo2013-10-06 19:26:06 -0700
commit77b678cea95b762cbeda3f2d69b93c43a3848a15 (patch)
treeec7057fa6c3791fcce12b5e1f8ef43d7c25c85ad
parent52af93123a067aa50e6ba8c23d395875cdcc9871 (diff)
downloadhomebrew-77b678cea95b762cbeda3f2d69b93c43a3848a15.tar.bz2
CxxStdlib: allow for nil stdlibs
A nil stdlib value represents non-C++ code.
-rw-r--r--Library/Homebrew/cxxstdlib.rb7
-rw-r--r--Library/Homebrew/test/test_stdlib.rb5
2 files changed, 10 insertions, 2 deletions
diff --git a/Library/Homebrew/cxxstdlib.rb b/Library/Homebrew/cxxstdlib.rb
index 4e3bed22e..06668e991 100644
--- a/Library/Homebrew/cxxstdlib.rb
+++ b/Library/Homebrew/cxxstdlib.rb
@@ -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
diff --git a/Library/Homebrew/test/test_stdlib.rb b/Library/Homebrew/test/test_stdlib.rb
index a5e276746..79af446d7 100644
--- a/Library/Homebrew/test/test_stdlib.rb
+++ b/Library/Homebrew/test/test_stdlib.rb
@@ -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