duby 0.0.2-java → 0.0.3-java
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.
- data/History.txt +7 -0
- data/README.txt +18 -7
- data/Rakefile +72 -0
- data/examples/ant/example-build.xml +7 -0
- data/examples/appengine/Rakefile +8 -67
- data/examples/appengine/Readme +4 -3
- data/examples/appengine/lib/duby/appengine_tasks.rb +173 -0
- data/examples/appengine/lib/duby/plugin/datastore.rb +92 -31
- data/examples/appengine/lib/duby_task.rb +61 -0
- data/examples/appengine/src/com/ribrdb/DubyApp.duby +32 -6
- data/examples/appengine/src/com/ribrdb/list.dhtml +2 -2
- data/examples/appengine/{config.ru → src/config.ru} +0 -0
- data/examples/bintrees.duby +66 -0
- data/examples/dynamic.duby +17 -0
- data/examples/fib.duby +3 -11
- data/examples/fields.duby +3 -3
- data/examples/fractal.duby +1 -3
- data/examples/sort_closure.duby +7 -0
- data/examples/swing.duby +11 -11
- data/javalib/duby-bootstrap.jar +0 -0
- data/javalib/dynalang-invoke-0.1.jar +0 -0
- data/lib/duby.rb +168 -35
- data/lib/duby/ast.rb +224 -27
- data/lib/duby/ast/call.rb +85 -25
- data/lib/duby/ast/class.rb +112 -28
- data/lib/duby/ast/flow.rb +65 -44
- data/lib/duby/ast/intrinsics.rb +223 -21
- data/lib/duby/ast/literal.rb +67 -16
- data/lib/duby/ast/local.rb +36 -40
- data/lib/duby/ast/method.rb +83 -67
- data/lib/duby/ast/structure.rb +105 -23
- data/lib/duby/compiler.rb +83 -28
- data/lib/duby/env.rb +33 -0
- data/lib/duby/jvm/base.rb +210 -0
- data/lib/duby/jvm/compiler.rb +293 -219
- data/lib/duby/jvm/method_lookup.rb +77 -67
- data/lib/duby/jvm/source_compiler.rb +250 -157
- data/lib/duby/jvm/source_generator/builder.rb +53 -49
- data/lib/duby/jvm/source_generator/loops.rb +9 -9
- data/lib/duby/jvm/source_generator/precompile.rb +35 -25
- data/lib/duby/jvm/typer.rb +19 -10
- data/lib/duby/jvm/types.rb +127 -68
- data/lib/duby/jvm/types/basic_types.rb +26 -13
- data/lib/duby/jvm/types/enumerable.rb +6 -4
- data/lib/duby/jvm/types/factory.rb +49 -13
- data/lib/duby/jvm/types/floats.rb +16 -0
- data/lib/duby/jvm/types/integers.rb +63 -2
- data/lib/duby/jvm/types/intrinsics.rb +43 -21
- data/lib/duby/jvm/types/methods.rb +326 -86
- data/lib/duby/jvm/types/number.rb +3 -0
- data/lib/duby/nbcompiler.rb +1 -1
- data/lib/duby/plugin/edb.rb +1 -1
- data/lib/duby/plugin/java.rb +10 -1
- data/lib/duby/transform.rb +134 -46
- data/lib/duby/typer.rb +75 -50
- data/test/test_ast.rb +106 -106
- data/test/test_compilation.rb +46 -32
- data/test/test_env.rb +42 -0
- data/test/test_java_typer.rb +35 -51
- data/test/test_javac_compiler.rb +4 -1
- data/test/test_jvm_compiler.rb +564 -133
- data/test/test_typer.rb +68 -92
- metadata +37 -21
- data/examples/README +0 -16
- data/lib/duby/c/compiler.rb +0 -134
- data/lib/duby/old/compiler_old.rb +0 -845
- data/lib/duby/old/declaration.rb +0 -72
- data/lib/duby/old/mapper.rb +0 -72
- data/lib/duby/old/signature.rb +0 -52
- data/lib/duby/old/typer_old.rb +0 -163
- data/lib/duby/plugin/math.rb +0 -84
- data/test/test_math_plugin.rb +0 -87
data/test/test_typer.rb
CHANGED
@@ -3,65 +3,65 @@ require 'duby'
|
|
3
3
|
|
4
4
|
class TestTyper < Test::Unit::TestCase
|
5
5
|
include Duby
|
6
|
-
|
6
|
+
|
7
7
|
def test_fixnum
|
8
8
|
ast = AST.parse("1")
|
9
|
-
|
9
|
+
|
10
10
|
assert_equal(AST::TypeReference.new("fixnum"), ast.infer(Typer::Simple.new(:bar)))
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def test_float
|
14
14
|
ast = AST.parse("1.0")
|
15
|
-
|
15
|
+
|
16
16
|
assert_equal(AST::TypeReference.new("float"), ast.infer(Typer::Simple.new(:bar)))
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def test_string
|
20
20
|
ast = AST.parse("'foo'")
|
21
|
-
|
21
|
+
|
22
22
|
assert_equal(AST::TypeReference.new("string"), ast.infer(Typer::Simple.new(:bar)))
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
def test_boolean
|
26
26
|
ast1 = AST.parse("true")
|
27
27
|
ast2 = AST.parse("false")
|
28
|
-
|
28
|
+
|
29
29
|
assert_equal(AST::TypeReference.new("boolean"), ast1.infer(Typer::Simple.new(:bar)))
|
30
30
|
assert_equal(AST::TypeReference.new("boolean"), ast2.infer(Typer::Simple.new(:bar)))
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def test_body
|
34
34
|
ast1 = AST.parse("'foo'; 1.0; 1")
|
35
35
|
ast2 = AST.parse("begin; end")
|
36
|
-
|
36
|
+
|
37
37
|
assert_equal(AST::TypeReference.new("fixnum"), ast1.infer(Typer::Simple.new(:bar)))
|
38
38
|
assert_equal(AST::no_type, ast2.infer(Typer::Simple.new(:bar)))
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def test_local
|
42
42
|
ast1 = AST.parse("a = 1; a")
|
43
43
|
typer = Typer::Simple.new :bar
|
44
|
-
|
44
|
+
|
45
45
|
ast1.infer(typer)
|
46
|
-
|
47
|
-
assert_equal(AST::TypeReference.new("fixnum"), typer.local_type(ast1, 'a'))
|
46
|
+
|
47
|
+
assert_equal(AST::TypeReference.new("fixnum"), typer.local_type(ast1.static_scope, 'a'))
|
48
48
|
assert_equal(AST::TypeReference.new("fixnum"), ast1.body.children[0].inferred_type)
|
49
49
|
assert_equal(AST::TypeReference.new("fixnum"), ast1.body.children[1].inferred_type)
|
50
|
-
|
50
|
+
|
51
51
|
ast2 = AST.parse("b = a = 1")
|
52
52
|
ast2.infer(typer)
|
53
|
-
|
54
|
-
assert_equal(AST::TypeReference.new("fixnum"), typer.local_type(ast2, 'a'))
|
53
|
+
|
54
|
+
assert_equal(AST::TypeReference.new("fixnum"), typer.local_type(ast2.static_scope, 'a'))
|
55
55
|
assert_equal(AST::TypeReference.new("fixnum"), ast2.body.children[0].inferred_type)
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
def test_signature
|
59
59
|
["def foo", "def self.foo"].each do |def_foo|
|
60
60
|
ast1 = AST.parse("#{def_foo}(a); {a => :string}; end")
|
61
61
|
typer = Typer::Simple.new :bar
|
62
62
|
|
63
63
|
ast1.infer(typer)
|
64
|
-
|
64
|
+
|
65
65
|
assert_nothing_raised {typer.resolve(true)}
|
66
66
|
assert_nothing_raised {typer.resolve}
|
67
67
|
|
@@ -73,19 +73,9 @@ class TestTyper < Test::Unit::TestCase
|
|
73
73
|
end
|
74
74
|
|
75
75
|
assert_equal(typer.no_type, typer.method_type(type, 'foo', [typer.string_type]))
|
76
|
-
assert_equal(typer.string_type, typer.local_type(ast1.body, 'a'))
|
76
|
+
assert_equal(typer.string_type, typer.local_type(ast1.body[0].static_scope, 'a'))
|
77
77
|
assert_equal(typer.no_type, ast1.body.inferred_type)
|
78
|
-
assert_equal(typer.string_type, ast1.body.arguments.args[0].inferred_type)
|
79
|
-
|
80
|
-
ast1 = AST.parse("#{def_foo}(a); 1 end")
|
81
|
-
typer = Typer::Simple.new :bar
|
82
|
-
|
83
|
-
ast1.infer(typer)
|
84
|
-
|
85
|
-
assert_equal(typer.fixnum_type, typer.method_type(type, 'foo', [typer.default_type]))
|
86
|
-
assert_equal(typer.default_type, typer.local_type(ast1.body, 'a'))
|
87
|
-
assert_equal(typer.fixnum_type, ast1.body.inferred_type)
|
88
|
-
assert_equal(typer.default_type, ast1.body.arguments.args[0].inferred_type)
|
78
|
+
assert_equal(typer.string_type, ast1.body[0].arguments.args[0].inferred_type)
|
89
79
|
|
90
80
|
ast1 = AST.parse("#{def_foo}(a); {a => :string}; a; end")
|
91
81
|
typer = Typer::Simple.new :bar
|
@@ -93,9 +83,9 @@ class TestTyper < Test::Unit::TestCase
|
|
93
83
|
ast1.infer(typer)
|
94
84
|
|
95
85
|
assert_equal(typer.string_type, typer.method_type(type, 'foo', [typer.string_type]))
|
96
|
-
assert_equal(typer.string_type, typer.local_type(ast1.body, 'a'))
|
97
|
-
assert_equal(typer.string_type, ast1.body.inferred_type)
|
98
|
-
assert_equal(typer.string_type, ast1.body.arguments.args[0].inferred_type)
|
86
|
+
assert_equal(typer.string_type, typer.local_type(ast1.body[0].static_scope, 'a'))
|
87
|
+
assert_equal(typer.string_type, ast1.body[0].inferred_type)
|
88
|
+
assert_equal(typer.string_type, ast1.body[0].arguments.args[0].inferred_type)
|
99
89
|
|
100
90
|
ast1 = AST.parse("#{def_foo}(a); {:return => :string}; end")
|
101
91
|
typer = Typer::Simple.new :bar
|
@@ -104,141 +94,127 @@ class TestTyper < Test::Unit::TestCase
|
|
104
94
|
ast1.infer(typer)
|
105
95
|
typer.resolve(true)
|
106
96
|
end
|
107
|
-
|
108
|
-
ast1 = AST.parse("#{def_foo}(a); a = 'foo'; end")
|
109
|
-
typer = Typer::Simple.new :bar
|
110
|
-
|
111
|
-
ast1.infer(typer)
|
112
|
-
|
113
|
-
assert_equal(typer.string_type, typer.method_type(type, 'foo', [typer.default_type]))
|
114
|
-
assert_equal(typer.string_type, typer.local_type(ast1.body, 'a'))
|
115
|
-
assert_equal(typer.string_type, ast1.body.inferred_type)
|
116
|
-
assert_equal(typer.default_type, ast1.body.arguments.args[0].inferred_type)
|
117
|
-
|
118
|
-
typer.resolve
|
119
|
-
|
120
|
-
assert_equal(typer.string_type, ast1.body.arguments.args[0].inferred_type)
|
121
97
|
end
|
122
98
|
end
|
123
|
-
|
99
|
+
|
124
100
|
def test_call
|
125
101
|
ast = AST.parse("1.foo(2)").body
|
126
102
|
typer = Typer::Simple.new "bar"
|
127
|
-
|
103
|
+
|
128
104
|
typer.learn_method_type(typer.fixnum_type, "foo", [typer.fixnum_type], typer.string_type, [])
|
129
105
|
assert_equal(typer.string_type, typer.method_type(typer.fixnum_type, "foo", [typer.fixnum_type]))
|
130
|
-
|
106
|
+
|
131
107
|
ast.infer(typer)
|
132
|
-
|
108
|
+
|
133
109
|
assert_equal(typer.string_type, ast.inferred_type)
|
134
|
-
|
110
|
+
|
135
111
|
ast = AST.parse("def bar(a, b); {a => :fixnum, b => :string}; 1.0; end; def baz; bar(1, 'x'); end").body
|
136
|
-
|
112
|
+
|
137
113
|
ast.infer(typer)
|
138
|
-
|
114
|
+
|
139
115
|
assert_equal(typer.float_type, typer.method_type(typer.self_type, "bar", [typer.fixnum_type, typer.string_type]))
|
140
116
|
assert_equal(typer.float_type, typer.method_type(typer.self_type, "baz", []))
|
141
117
|
assert_equal(typer.float_type, ast.children[0].inferred_type)
|
142
118
|
assert_equal(typer.float_type, ast.children[1].inferred_type)
|
143
|
-
|
119
|
+
|
144
120
|
# Reverse the order, ensure deferred inference succeeds
|
145
121
|
ast = AST.parse("def baz; bar(1, 'x'); end; def bar(a, b); {a => :fixnum, b => :string}; 1.0; end").body
|
146
122
|
typer = Typer::Simple.new("bar")
|
147
|
-
|
123
|
+
|
148
124
|
ast.infer(typer)
|
149
|
-
|
125
|
+
|
150
126
|
assert_equal(typer.default_type, typer.method_type(typer.self_type, "baz", []))
|
151
127
|
assert_equal(typer.float_type, typer.method_type(typer.self_type, "bar", [typer.fixnum_type, typer.string_type]))
|
152
128
|
assert_equal(typer.default_type, ast.children[0].inferred_type)
|
153
129
|
assert_equal(typer.float_type, ast.children[1].inferred_type)
|
154
|
-
|
130
|
+
|
155
131
|
# allow resolution to run
|
156
132
|
assert_nothing_raised {typer.resolve}
|
157
|
-
|
133
|
+
|
158
134
|
assert_equal(typer.float_type, typer.method_type(typer.self_type, "baz", []))
|
159
135
|
assert_equal(typer.float_type, typer.method_type(typer.self_type, "bar", [typer.fixnum_type, typer.string_type]))
|
160
136
|
assert_equal(typer.float_type, ast.children[0].inferred_type)
|
161
137
|
assert_equal(typer.float_type, ast.children[1].inferred_type)
|
162
|
-
|
138
|
+
|
163
139
|
# modify bar call to have bogus types, ensure resolution fails
|
164
140
|
ast = AST.parse("def baz; bar(1, 1); end; def bar(a, b); {a => :fixnum, b => :string}; 1.0; end").body
|
165
141
|
typer = Typer::Simple.new("bar")
|
166
|
-
|
142
|
+
|
167
143
|
ast.infer(typer)
|
168
|
-
|
144
|
+
|
169
145
|
assert_equal(typer.default_type, typer.method_type(typer.self_type, "baz", []))
|
170
146
|
assert_equal(typer.float_type, typer.method_type(typer.self_type, "bar", [typer.fixnum_type, typer.string_type]))
|
171
147
|
assert_equal(typer.default_type, ast.children[0].inferred_type)
|
172
148
|
assert_equal(typer.float_type, ast.children[1].inferred_type)
|
173
|
-
|
149
|
+
|
174
150
|
# allow resolution to run and produce error
|
175
151
|
assert_raise(Typer::InferenceError) {typer.resolve(true)}
|
176
152
|
error_nodes = typer.errors.map {|e| e.node}
|
177
153
|
inspected = "[FunctionalCall(bar)\n Fixnum(1)\n Fixnum(1)]"
|
178
154
|
assert_equal(inspected, error_nodes.inspect)
|
179
155
|
end
|
180
|
-
|
156
|
+
|
181
157
|
def test_if
|
182
|
-
ast = AST.parse("if true; 1.0; else; ''; end").body
|
158
|
+
ast = AST.parse("if true; 1.0; else; ''; end").body[0]
|
183
159
|
typer = Typer::Simple.new("bar")
|
184
|
-
|
160
|
+
|
185
161
|
# incompatible body types
|
186
162
|
assert_raise(Typer::InferenceError) {ast.infer(typer)}
|
187
|
-
|
188
|
-
ast = AST.parse("if true; 1.0; else; 2.0; end").body
|
189
|
-
|
163
|
+
|
164
|
+
ast = AST.parse("if true; 1.0; else; 2.0; end").body[0]
|
165
|
+
|
190
166
|
assert_nothing_raised {ast.infer(typer); typer.resolve(true)}
|
191
|
-
|
167
|
+
|
192
168
|
assert_equal(typer.boolean_type, ast.condition.inferred_type)
|
193
169
|
assert_equal(typer.float_type, ast.body.inferred_type)
|
194
170
|
assert_equal(typer.float_type, ast.else.inferred_type)
|
195
|
-
|
196
|
-
ast = AST.parse("if foo; bar; else; baz; end").body
|
197
|
-
|
171
|
+
|
172
|
+
ast = AST.parse("if foo; bar; else; baz; end").body[0]
|
173
|
+
|
198
174
|
assert_nothing_raised {ast.infer(typer)}
|
199
|
-
|
175
|
+
|
200
176
|
assert_equal(typer.default_type, ast.condition.inferred_type)
|
201
177
|
assert_equal(typer.default_type, ast.body.inferred_type)
|
202
178
|
assert_equal(typer.default_type, ast.else.inferred_type)
|
203
|
-
|
179
|
+
|
204
180
|
# unresolved types for the foo, bar, and baz calls
|
205
181
|
assert_raise(Typer::InferenceError) {typer.resolve(true)}
|
206
|
-
|
207
|
-
ast2 = AST.parse("def foo; 1; end; def bar; 1.0; end")
|
208
|
-
|
182
|
+
|
183
|
+
ast2 = AST.parse("def foo; 1; end; def bar; 1.0; end")[0]
|
184
|
+
|
209
185
|
ast2.infer(typer)
|
210
186
|
ast.infer(typer)
|
211
|
-
|
187
|
+
|
212
188
|
# unresolved types for the baz call
|
213
189
|
assert_raise(Typer::InferenceError) {typer.resolve(true)}
|
214
|
-
|
190
|
+
|
215
191
|
assert_equal(AST.error_type, ast.condition.inferred_type)
|
216
192
|
assert_equal(AST.error_type, ast.body.inferred_type)
|
217
193
|
assert_equal(AST.error_type, ast.else.inferred_type)
|
218
|
-
|
194
|
+
|
219
195
|
typer.errors.clear
|
220
|
-
|
196
|
+
|
221
197
|
ast2 = AST.parse("def baz; 2.0; end")
|
222
|
-
|
198
|
+
|
223
199
|
ast2.infer(typer)
|
224
200
|
ast.infer(typer)
|
225
|
-
|
201
|
+
|
226
202
|
assert_nothing_raised {typer.resolve(true)}
|
227
|
-
|
228
|
-
assert_equal(typer.float_type, ast2.body.inferred_type)
|
203
|
+
|
204
|
+
assert_equal(typer.float_type, ast2.body[0].inferred_type)
|
229
205
|
end
|
230
|
-
|
206
|
+
|
231
207
|
def test_class
|
232
208
|
ast = AST.parse("class Foo; def foo; 1; end; def baz; foo; end; end")
|
233
|
-
cls = ast.body
|
209
|
+
cls = ast.body[0]
|
234
210
|
foo = cls.body[0]
|
235
211
|
baz = cls.body[1]
|
236
|
-
|
212
|
+
|
237
213
|
typer = Typer::Simple.new("script")
|
238
214
|
ast.infer(typer)
|
239
|
-
|
215
|
+
|
240
216
|
assert_nothing_raised {typer.resolve(true)}
|
241
|
-
|
217
|
+
|
242
218
|
assert_not_nil(typer.known_types["Foo"])
|
243
219
|
assert(AST::TypeDefinition === typer.known_types["Foo"])
|
244
220
|
assert_equal(typer.known_types["Foo"], cls.inferred_type)
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: duby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
5
10
|
platform: java
|
6
11
|
authors:
|
7
12
|
- Charles Oliver Nutter
|
@@ -10,19 +15,24 @@ autorequire:
|
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
17
|
|
13
|
-
date: 2010-
|
18
|
+
date: 2010-06-09 15:09:02.286000 -04:00
|
14
19
|
default_executable:
|
15
20
|
dependencies:
|
16
21
|
- !ruby/object:Gem::Dependency
|
17
22
|
name: bitescript
|
18
|
-
|
19
|
-
|
20
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
21
26
|
requirements:
|
22
27
|
- - ">="
|
23
28
|
- !ruby/object:Gem::Version
|
24
|
-
|
25
|
-
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 0
|
32
|
+
- 6
|
33
|
+
version: 0.0.6
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
26
36
|
description: |-
|
27
37
|
Duby is a customizable programming language featuring static types,
|
28
38
|
local type inference and a heavily Ruby-inspired syntax. Duby
|
@@ -47,6 +57,7 @@ files:
|
|
47
57
|
- lib/duby.rb
|
48
58
|
- lib/duby/ast.rb
|
49
59
|
- lib/duby/compiler.rb
|
60
|
+
- lib/duby/env.rb
|
50
61
|
- lib/duby/nbcompiler.rb
|
51
62
|
- lib/duby/transform.rb
|
52
63
|
- lib/duby/typer.rb
|
@@ -59,7 +70,7 @@ files:
|
|
59
70
|
- lib/duby/ast/method.rb
|
60
71
|
- lib/duby/ast/structure.rb
|
61
72
|
- lib/duby/ast/type.rb
|
62
|
-
- lib/duby/
|
73
|
+
- lib/duby/jvm/base.rb
|
63
74
|
- lib/duby/jvm/compiler.rb
|
64
75
|
- lib/duby/jvm/method_lookup.rb
|
65
76
|
- lib/duby/jvm/source_compiler.rb
|
@@ -79,40 +90,41 @@ files:
|
|
79
90
|
- lib/duby/jvm/types/literals.rb
|
80
91
|
- lib/duby/jvm/types/methods.rb
|
81
92
|
- lib/duby/jvm/types/number.rb
|
82
|
-
- lib/duby/old/compiler_old.rb
|
83
|
-
- lib/duby/old/declaration.rb
|
84
|
-
- lib/duby/old/mapper.rb
|
85
|
-
- lib/duby/old/signature.rb
|
86
|
-
- lib/duby/old/typer_old.rb
|
87
93
|
- lib/duby/plugin/edb.rb
|
88
94
|
- lib/duby/plugin/java.rb
|
89
|
-
- lib/duby/plugin/math.rb
|
90
95
|
- test/test_ast.rb
|
91
96
|
- test/test_compilation.rb
|
97
|
+
- test/test_env.rb
|
92
98
|
- test/test_java_typer.rb
|
93
99
|
- test/test_javac_compiler.rb
|
94
100
|
- test/test_jvm_compiler.rb
|
95
|
-
- test/test_math_plugin.rb
|
96
101
|
- test/test_typer.rb
|
97
102
|
- test/TestUser.class
|
103
|
+
- examples/bintrees.duby
|
98
104
|
- examples/construction.duby
|
105
|
+
- examples/dynamic.duby
|
99
106
|
- examples/edb.duby
|
100
107
|
- examples/fib.duby
|
101
108
|
- examples/fields.duby
|
102
109
|
- examples/fractal.duby
|
103
110
|
- examples/java_thing.duby
|
104
|
-
- examples/README
|
105
111
|
- examples/simple_class.duby
|
112
|
+
- examples/sort_closure.duby
|
106
113
|
- examples/swing.duby
|
107
114
|
- examples/tak.duby
|
108
115
|
- examples/test.edb
|
109
|
-
- examples/
|
116
|
+
- examples/ant/example-build.xml
|
110
117
|
- examples/appengine/Rakefile
|
111
118
|
- examples/appengine/Readme
|
119
|
+
- examples/appengine/lib/duby_task.rb
|
120
|
+
- examples/appengine/lib/duby/appengine_tasks.rb
|
112
121
|
- examples/appengine/lib/duby/plugin/datastore.rb
|
122
|
+
- examples/appengine/src/config.ru
|
113
123
|
- examples/appengine/src/com/google/appengine/ext/duby/db/Model.duby
|
114
124
|
- examples/appengine/src/com/ribrdb/DubyApp.duby
|
115
125
|
- examples/appengine/src/com/ribrdb/list.dhtml
|
126
|
+
- javalib/duby-bootstrap.jar
|
127
|
+
- javalib/dynalang-invoke-0.1.jar
|
116
128
|
- javalib/JRubyParser.jar
|
117
129
|
- History.txt
|
118
130
|
- README.txt
|
@@ -128,29 +140,33 @@ rdoc_options:
|
|
128
140
|
require_paths:
|
129
141
|
- lib
|
130
142
|
required_ruby_version: !ruby/object:Gem::Requirement
|
143
|
+
none: false
|
131
144
|
requirements:
|
132
145
|
- - ">="
|
133
146
|
- !ruby/object:Gem::Version
|
147
|
+
segments:
|
148
|
+
- 0
|
134
149
|
version: "0"
|
135
|
-
version:
|
136
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
137
152
|
requirements:
|
138
153
|
- - ">="
|
139
154
|
- !ruby/object:Gem::Version
|
155
|
+
segments:
|
156
|
+
- 0
|
140
157
|
version: "0"
|
141
|
-
version:
|
142
158
|
requirements: []
|
143
159
|
|
144
160
|
rubyforge_project: duby
|
145
|
-
rubygems_version: 1.3.
|
161
|
+
rubygems_version: 1.3.7
|
146
162
|
signing_key:
|
147
163
|
specification_version: 3
|
148
164
|
summary: Duby is a customizable programming language featuring static types, local type inference and a heavily Ruby-inspired syntax
|
149
165
|
test_files:
|
150
166
|
- test/test_ast.rb
|
151
167
|
- test/test_compilation.rb
|
168
|
+
- test/test_env.rb
|
152
169
|
- test/test_java_typer.rb
|
153
170
|
- test/test_javac_compiler.rb
|
154
171
|
- test/test_jvm_compiler.rb
|
155
|
-
- test/test_math_plugin.rb
|
156
172
|
- test/test_typer.rb
|