Fix code generated for Ruby global variables
This commit fixes swig#1653 by creating a Ruby virtual variable for a C/c++ global variable when SWIG is invoked with the -globalmodule option.
This commit is contained in:
parent
e4c38f0f67
commit
18a3ef3911
12 changed files with 342 additions and 10 deletions
47
Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb
Normal file
47
Examples/test-suite/ruby/global_immutable_vars_cpp_runme.rb
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#!/usr/bin/env ruby
|
||||
#
|
||||
# C++ version of global_immutable_vars_runme.rb
|
||||
#
|
||||
|
||||
require 'swig_assert'
|
||||
|
||||
require 'global_immutable_vars_cpp'
|
||||
|
||||
# first check if all variables can be read
|
||||
swig_assert_each_line( <<EOF )
|
||||
Global_immutable_vars_cpp::default_mutable_var == 40
|
||||
Global_immutable_vars_cpp::global_immutable_var == 41
|
||||
Global_immutable_vars_cpp::specific_mutable_var == 42
|
||||
Global_immutable_vars_cpp::global_mutable_var == 43
|
||||
Global_immutable_vars_cpp::specific_immutable_var == 44
|
||||
EOF
|
||||
|
||||
# check that all mutable variables can be modified
|
||||
swig_assert_each_line( <<EOF )
|
||||
Global_immutable_vars_cpp::default_mutable_var = 80
|
||||
Global_immutable_vars_cpp::default_mutable_var == 80
|
||||
Global_immutable_vars_cpp::specific_mutable_var = 82
|
||||
Global_immutable_vars_cpp::specific_mutable_var == 82
|
||||
Global_immutable_vars_cpp::global_mutable_var = 83
|
||||
Global_immutable_vars_cpp::global_mutable_var == 83
|
||||
EOF
|
||||
|
||||
# now check that immutable variables cannot be modified
|
||||
had_exception = false
|
||||
begin
|
||||
Global_immutable_vars_cpp::global_immutable_var = 81
|
||||
rescue NoMethodError => e
|
||||
had_exception = true
|
||||
end
|
||||
swig_assert(had_exception, nil,
|
||||
"Global_immutable_vars_cpp::global_immutable_var is writable (expected to be immutable)")
|
||||
|
||||
had_exception = false
|
||||
begin
|
||||
Global_immutable_vars_cpp::specific_immutable_var = 81
|
||||
rescue NoMethodError => e
|
||||
had_exception = true
|
||||
end
|
||||
swig_assert(had_exception, nil,
|
||||
"Global_immutable_vars_cpp::specific_immutable_var is writable (expected to be immutable)")
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue