ruby2c 1.0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,138 @@
1
+ #!/usr/local/bin/ruby -w
2
+
3
+ require 'minitest/autorun' if $0 == __FILE__
4
+ require 'test_sexp'
5
+ require 'typed_sexp'
6
+
7
+ class TestTypedSexp < TestSexp
8
+ def setup
9
+ super
10
+ @sexp.sexp_type = Type.str
11
+ end
12
+
13
+ def test__set_sexp_type
14
+ assert_equal Type.str, @sexp.sexp_type
15
+ @sexp._set_sexp_type Type.bool
16
+ assert_equal Type.bool, @sexp.sexp_type
17
+ end
18
+
19
+ def test_equals2_tsexp
20
+ sexp2 = s(1, 2, 3)
21
+ sexp3 = t(1, 2, 3, Type.str)
22
+ assert_equal(@sexp, sexp3)
23
+ refute_equal(@sexp, sexp2)
24
+ end
25
+
26
+ def test_equals_array_typed
27
+ # can't use assert_equals because it uses array as receiver
28
+ refute_equal(@sexp, [1, 2, 3, Type.str],
29
+ "Sexp must not be equal to equivalent array")
30
+ # both directions just in case
31
+ refute_equal([1, 2, 3, Type.str], @sexp,
32
+ "Sexp must not be equal to equivalent array")
33
+ end
34
+
35
+ def test_equals_not_body_typed
36
+ sexp2 = t(1, 2, 5)
37
+ sexp2.sexp_type = Type.str
38
+ refute_equal(@sexp, sexp2)
39
+ end
40
+
41
+ def test_equals_not_type
42
+ sexp2 = t(1, 2, 3)
43
+ sexp2.sexp_type = Type.long
44
+ refute_equal(@sexp, sexp2)
45
+ end
46
+
47
+ def test_equals_sexp
48
+ sexp2 = t(1, 2, 3, Type.str)
49
+ assert_equal(@sexp, sexp2)
50
+ end
51
+
52
+ def test_equals_sexp_typed
53
+ sexp2 = t(1, 2, 3)
54
+ sexp2.sexp_type = Type.str
55
+ assert_equal(@sexp, sexp2)
56
+ end
57
+
58
+ def test_new_nested_typed
59
+ @sexp = TypedSexp.new(:lasgn, "var", TypedSexp.new(:str, "foo", Type.str), Type.str)
60
+ assert_equal('t(:lasgn, "var", t(:str, "foo", Type.str), Type.str)',
61
+ @sexp.inspect)
62
+ end
63
+
64
+ def test_pretty_print_typed
65
+ util_pretty_print("t(Type.str)",
66
+ t(Type.str))
67
+ util_pretty_print("t(:a, Type.long)",
68
+ t(:a, Type.long))
69
+ util_pretty_print("t(:a, :b, Type.long)",
70
+ t(:a, :b, Type.long))
71
+ util_pretty_print("t(:a, t(:b, Type.long), Type.str)",
72
+ t(:a, t(:b, Type.long), Type.str))
73
+ end
74
+
75
+ def test_sexp_type
76
+ assert_equal(Type.str, @sexp.sexp_type)
77
+ end
78
+
79
+ def test_sexp_type=
80
+ assert_equal(Type.str, @sexp.sexp_type)
81
+ # FIX: we can't set sexp_type a second time, please expand tests
82
+ @sexp._set_sexp_type 24
83
+ assert_equal(24, @sexp.sexp_type)
84
+ end
85
+
86
+ def test_sexp_type_array_hetero
87
+ @sexp = t(:array, t(:lit, 1, Type.long),
88
+ t(:str, "foo", Type.str))
89
+ assert_equal(Type.hetero, @sexp.sexp_type)
90
+ assert_equal([Type.long, Type.str], @sexp.sexp_types)
91
+ end
92
+
93
+ def test_sexp_type_array_homo
94
+ @sexp = t(:array, t(:lit, 1, Type.long),
95
+ t(:lit, 2, Type.long))
96
+ assert_equal(Type.homo, @sexp.sexp_type)
97
+ assert_equal([Type.long, Type.long], @sexp.sexp_types)
98
+ end
99
+
100
+ def test_sexp_type_array_nested
101
+ @sexp = t(:array, t(:lit, 1, Type.long),
102
+ t(:array, t(:lit, 1, Type.long)))
103
+ assert_equal(Type.hetero, @sexp.sexp_type)
104
+ assert_equal([Type.long, Type.homo], @sexp.sexp_types)
105
+ end
106
+
107
+ def test_sexp_types
108
+ assert_raises(RuntimeError) do
109
+ @sexp.sexp_types
110
+ end
111
+
112
+ @sexp = t(:array, t(:lit, 1, Type.long), t(:str, "blah", Type.str))
113
+
114
+ assert_equal([Type.long, Type.str], @sexp.sexp_types)
115
+ end
116
+
117
+ def test_to_a
118
+ @sexp = t(1, 2, 3)
119
+ assert_equal([1, 2, 3], @sexp.to_a)
120
+ end
121
+
122
+ def test_to_a_typed
123
+ assert_equal([1, 2, 3, Type.str], @sexp.to_a)
124
+ end
125
+
126
+ def test_to_s_typed
127
+ k = @sexp_class
128
+ n = k.name[0].chr.downcase
129
+ assert_equal("#{n}(Type.long)",
130
+ k.new(Type.long).inspect)
131
+ assert_equal("#{n}(:a, Type.long)",
132
+ k.new(:a, Type.long).inspect)
133
+ assert_equal("#{n}(:a, :b, Type.long)",
134
+ k.new(:a, :b, Type.long).inspect)
135
+ assert_equal("#{n}(:a, #{n}(:b, Type.long), Type.str)",
136
+ k.new(:a, k.new(:b, Type.long), Type.str).inspect)
137
+ end
138
+ end
metadata ADDED
@@ -0,0 +1,164 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby2c
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Davis
8
+ - Eric Hodel
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain:
12
+ - |
13
+ -----BEGIN CERTIFICATE-----
14
+ MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
15
+ ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
16
+ GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
17
+ AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
18
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
19
+ b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
20
+ taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
21
+ oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
22
+ GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
23
+ qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
24
+ gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
25
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
26
+ AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
27
+ vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
28
+ w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
29
+ l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
30
+ n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
31
+ FBHgymkyj/AOSqKRIpXPhjC6
32
+ -----END CERTIFICATE-----
33
+
34
+ date: 2009-06-23 00:00:00 -07:00
35
+ default_executable:
36
+ dependencies:
37
+ - !ruby/object:Gem::Dependency
38
+ name: ruby_parser
39
+ type: :runtime
40
+ version_requirement:
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ - !ruby/object:Gem::Dependency
48
+ name: hoe
49
+ type: :development
50
+ version_requirement:
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 2.3.0
56
+ version:
57
+ description: |-
58
+ ruby_to_c translates a static ruby subset to C. Hopefully it works.
59
+
60
+ NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE
61
+
62
+ THIS IS BETA SOFTWARE!
63
+
64
+ NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE ! NOTE
65
+
66
+ RubyToC has the following modules:
67
+
68
+ * Rewriter - massages the sexp into a more consistent form.
69
+ * TypeChecker - type inferencer for the above sexps.
70
+ * RubyToRubyC - converts a ruby (subset) sexp to ruby interals C.
71
+ * RubyToAnsiC - converts a ruby (subset) sexp to ANSI C.
72
+
73
+ and the following tools:
74
+
75
+ * translate.rb - Translates a given file to C.
76
+ email:
77
+ - ryand-ruby@zenspider.com
78
+ - drbrain@segment7.net
79
+ executables: []
80
+
81
+ extensions: []
82
+
83
+ extra_rdoc_files:
84
+ - History.txt
85
+ - Manifest.txt
86
+ - README.txt
87
+ files:
88
+ - .autotest
89
+ - History.txt
90
+ - Manifest.txt
91
+ - README.txt
92
+ - Rakefile
93
+ - demo/char.rb
94
+ - demo/factorial.rb
95
+ - demo/hello.rb
96
+ - demo/misc.rb
97
+ - demo/newarray.rb
98
+ - demo/strcat.rb
99
+ - lib/crewriter.rb
100
+ - lib/function_table.rb
101
+ - lib/function_type.rb
102
+ - lib/handle.rb
103
+ - lib/r2cenvironment.rb
104
+ - lib/rewriter.rb
105
+ - lib/ruby_to_ansi_c.rb
106
+ - lib/ruby_to_ruby_c.rb
107
+ - lib/type.rb
108
+ - lib/type_checker.rb
109
+ - lib/typed_sexp.rb
110
+ - test/r2ctestcase.rb
111
+ - test/test_crewriter.rb
112
+ - test/test_extras.rb
113
+ - test/test_function_table.rb
114
+ - test/test_function_type.rb
115
+ - test/test_handle.rb
116
+ - test/test_r2cenvironment.rb
117
+ - test/test_rewriter.rb
118
+ - test/test_ruby_to_ansi_c.rb
119
+ - test/test_ruby_to_ruby_c.rb
120
+ - test/test_type.rb
121
+ - test/test_type_checker.rb
122
+ - test/test_typed_sexp.rb
123
+ has_rdoc: true
124
+ homepage: http://rubyforge.org/projects/ruby2c/
125
+ licenses: []
126
+
127
+ post_install_message:
128
+ rdoc_options:
129
+ - --main
130
+ - README.txt
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: "0"
138
+ version:
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: "0"
144
+ version:
145
+ requirements: []
146
+
147
+ rubyforge_project: ruby2c
148
+ rubygems_version: 1.3.4
149
+ signing_key:
150
+ specification_version: 3
151
+ summary: ruby_to_c translates a static ruby subset to C
152
+ test_files:
153
+ - test/test_crewriter.rb
154
+ - test/test_extras.rb
155
+ - test/test_function_table.rb
156
+ - test/test_function_type.rb
157
+ - test/test_handle.rb
158
+ - test/test_r2cenvironment.rb
159
+ - test/test_rewriter.rb
160
+ - test/test_ruby_to_ansi_c.rb
161
+ - test/test_ruby_to_ruby_c.rb
162
+ - test/test_type.rb
163
+ - test/test_type_checker.rb
164
+ - test/test_typed_sexp.rb
Binary file