mirah 0.0.4-java → 0.0.5-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.
Files changed (96) hide show
  1. data/History.txt +23 -0
  2. data/README.txt +13 -5
  3. data/Rakefile +30 -2
  4. data/bin/duby +16 -0
  5. data/bin/dubyc +16 -0
  6. data/bin/dubyp +16 -0
  7. data/bin/jrubyp +16 -0
  8. data/bin/mirah +17 -1
  9. data/bin/mirah.cmd +15 -0
  10. data/bin/mirahc +17 -1
  11. data/bin/mirahc.cmd +16 -1
  12. data/bin/mirahp +17 -1
  13. data/bin/mirahp.cmd +16 -1
  14. data/examples/appengine/Rakefile +17 -2
  15. data/examples/appengine/src/org/mirah/MirahApp.mirah +15 -0
  16. data/examples/bintrees.mirah +15 -0
  17. data/examples/construction.mirah +15 -0
  18. data/examples/dynamic.mirah +15 -0
  19. data/examples/edb.mirah +15 -0
  20. data/examples/fib.mirah +15 -0
  21. data/examples/fields.mirah +15 -0
  22. data/examples/fractal.mirah +15 -0
  23. data/examples/java_thing.mirah +15 -0
  24. data/examples/plugins/appengine/Rakefile +19 -4
  25. data/examples/plugins/appengine/lib/com/google/appengine/ext/duby/db/datastore.rb +21 -6
  26. data/examples/plugins/appengine/src/com/google/appengine/ext/duby/db/Model.duby +15 -0
  27. data/examples/plugins/appengine/test/com/google/appengine/ext/duby/db/ModelTest.duby +15 -0
  28. data/examples/simple_class.mirah +16 -1
  29. data/examples/sort_closure.mirah +15 -0
  30. data/examples/swing.mirah +17 -2
  31. data/examples/tak.mirah +15 -0
  32. data/examples/wiki/Rakefile +17 -2
  33. data/examples/wiki/src/org/mirah/wiki/MirahWiki.duby +15 -0
  34. data/examples/wiki/war/src/org/mirah/wiki/MirahWiki.duby +339 -0
  35. data/examples/wiki/war/src/org/mirah/wiki/edit.eduby.html +42 -0
  36. data/examples/wiki/war/src/org/mirah/wiki/error.eduby.html +2 -0
  37. data/examples/wiki/war/src/org/mirah/wiki/layout.eduby.html +69 -0
  38. data/examples/wiki/war/src/org/mirah/wiki/parser.eduby.html +7 -0
  39. data/examples/wiki/war/src/org/mirah/wiki/view.eduby.html +15 -0
  40. data/javalib/mirah-bootstrap.jar +0 -0
  41. data/javalib/mirah-parser.jar +0 -0
  42. data/lib/duby.rb +15 -0
  43. data/lib/mirah/appengine_tasks.rb +20 -6
  44. data/lib/mirah/ast/call.rb +19 -4
  45. data/lib/mirah/ast/class.rb +19 -4
  46. data/lib/mirah/ast/flow.rb +16 -1
  47. data/lib/mirah/ast/intrinsics.rb +36 -21
  48. data/lib/mirah/ast/literal.rb +16 -1
  49. data/lib/mirah/ast/local.rb +16 -1
  50. data/lib/mirah/ast/method.rb +18 -3
  51. data/lib/mirah/ast/scope.rb +19 -4
  52. data/lib/mirah/ast/structure.rb +16 -1
  53. data/lib/mirah/ast/type.rb +24 -9
  54. data/lib/mirah/ast.rb +24 -9
  55. data/lib/mirah/compiler.rb +16 -1
  56. data/lib/mirah/env.rb +16 -1
  57. data/lib/mirah/jvm/base.rb +18 -3
  58. data/lib/mirah/jvm/compiler.rb +35 -21
  59. data/lib/mirah/jvm/method_lookup.rb +16 -1
  60. data/lib/mirah/jvm/source_compiler.rb +29 -14
  61. data/lib/mirah/jvm/source_generator/builder.rb +21 -6
  62. data/lib/mirah/jvm/source_generator/loops.rb +16 -1
  63. data/lib/mirah/jvm/source_generator/precompile.rb +17 -2
  64. data/lib/mirah/jvm/source_generator/typer.rb +17 -2
  65. data/lib/mirah/jvm/typer.rb +19 -4
  66. data/lib/mirah/jvm/types/basic_types.rb +16 -1
  67. data/lib/mirah/jvm/types/boolean.rb +17 -2
  68. data/lib/mirah/jvm/types/enumerable.rb +21 -6
  69. data/lib/mirah/jvm/types/extensions.rb +16 -1
  70. data/lib/mirah/jvm/types/factory.rb +18 -3
  71. data/lib/mirah/jvm/types/floats.rb +16 -1
  72. data/lib/mirah/jvm/types/integers.rb +22 -7
  73. data/lib/mirah/jvm/types/intrinsics.rb +29 -14
  74. data/lib/mirah/jvm/types/literals.rb +16 -1
  75. data/lib/mirah/jvm/types/methods.rb +24 -9
  76. data/lib/mirah/jvm/types/number.rb +16 -1
  77. data/lib/mirah/jvm/types.rb +23 -4
  78. data/lib/mirah/nbcompiler.rb +19 -4
  79. data/lib/mirah/plugin/edb.rb +18 -3
  80. data/lib/mirah/plugin/gwt.rb +22 -7
  81. data/lib/mirah/plugin/java.rb +18 -3
  82. data/lib/mirah/transform.rb +35 -20
  83. data/lib/mirah/transform2.rb +20 -5
  84. data/lib/mirah/typer.rb +23 -8
  85. data/lib/mirah/version.rb +18 -0
  86. data/lib/mirah.rb +101 -50
  87. data/lib/mirah_task.rb +27 -12
  88. data/test/test_ast.rb +16 -1
  89. data/test/test_compilation.rb +18 -3
  90. data/test/test_env.rb +26 -11
  91. data/test/test_gwt.rb +18 -3
  92. data/test/test_java_typer.rb +27 -12
  93. data/test/test_javac_compiler.rb +17 -2
  94. data/test/test_jvm_compiler.rb +44 -14
  95. data/test/test_typer.rb +16 -1
  96. metadata +203 -193
@@ -1,4 +1,19 @@
1
- module Duby::JVM::Types
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ module Mirah::JVM::Types
2
17
  Boolean = BooleanType.new('boolean', java.lang.Boolean)
3
18
  Byte = IntegerType.new('byte', java.lang.Byte)
4
19
  Char = IntegerType.new('char', java.lang.Character)
@@ -1,4 +1,19 @@
1
- module Duby::JVM::Types
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ module Mirah::JVM::Types
2
17
  class BooleanType < PrimitiveType
3
18
  def init_value(builder)
4
19
  builder.iconst_0
@@ -9,7 +24,7 @@ module Duby::JVM::Types
9
24
  end
10
25
 
11
26
  def box(builder)
12
- box_type = Duby::AST::type(nil, 'java.lang.Boolean')
27
+ box_type = Mirah::AST::type(nil, 'java.lang.Boolean')
13
28
  builder.invokestatic box_type, "valueOf", [box_type, self]
14
29
  end
15
30
 
@@ -1,7 +1,22 @@
1
- module Duby::JVM::Types
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ module Mirah::JVM::Types
2
17
  class Type
3
18
  def expand_each(transformer, call)
4
- arg_types = [Duby::AST.block_type]
19
+ arg_types = [Mirah::AST.block_type]
5
20
  code = intrinsics['each'][arg_types].return_type
6
21
  code.inline(transformer, call)
7
22
  end
@@ -36,11 +51,11 @@ module Duby::JVM::Types
36
51
 
37
52
  # Loops don't have a return value, so we need somewhere to
38
53
  # put the result.
39
- result = Duby::AST::Body.new(call.parent, call.position)
54
+ result = Mirah::AST::Body.new(call.parent, call.position)
40
55
  result << forloop << transformer.eval("#{all}", '', nil, all)
41
56
  end
42
57
  add_macro('all?', &all_proc)
43
- add_macro('all?', Duby::AST.block_type, &all_proc)
58
+ add_macro('all?', Mirah::AST.block_type, &all_proc)
44
59
 
45
60
  any_proc = proc do |transformer, call|
46
61
  if !call.block
@@ -55,11 +70,11 @@ module Duby::JVM::Types
55
70
  body.condition.predicate = call.block.body
56
71
  forloop.body = call.block.body.parent = body
57
72
 
58
- result = Duby::AST::Body.new(call.parent, call.position)
73
+ result = Mirah::AST::Body.new(call.parent, call.position)
59
74
  result << forloop << transformer.eval("#{any}", '', nil, any)
60
75
  end
61
76
  add_macro('any?', &any_proc)
62
- add_macro('any?', Duby::AST.block_type, &any_proc)
77
+ add_macro('any?', Mirah::AST.block_type, &any_proc)
63
78
  end
64
79
  end
65
80
  end
@@ -1,6 +1,21 @@
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  require 'delegate'
2
17
 
3
- module Duby::JVM::Types
18
+ module Mirah::JVM::Types
4
19
  class ExtendedType < DelegateClass(Type)
5
20
  def initialize(*args)
6
21
  super
@@ -1,5 +1,20 @@
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  require 'jruby'
2
- module Duby::JVM::Types
17
+ module Mirah::JVM::Types
3
18
  class TypeFactory
4
19
  BASIC_TYPES = {
5
20
  "boolean" => Boolean,
@@ -45,7 +60,7 @@ module Duby::JVM::Types
45
60
  def initialize_copy(other)
46
61
  @known_types = other.known_types.dup
47
62
  @known_types.delete_if do |key, value|
48
- value.basic_type.kind_of?(Duby::JVM::Types::TypeDefinition)
63
+ value.basic_type.kind_of?(Mirah::JVM::Types::TypeDefinition)
49
64
  end
50
65
  @declarations = []
51
66
  end
@@ -160,7 +175,7 @@ module Duby::JVM::Types
160
175
  existing.node ||= node
161
176
  existing
162
177
  else
163
- if Duby::AST::InterfaceDeclaration === node
178
+ if Mirah::AST::InterfaceDeclaration === node
164
179
  klass = InterfaceDefinition
165
180
  else
166
181
  klass = TypeDefinition
@@ -1,4 +1,19 @@
1
- module Duby::JVM::Types
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ module Mirah::JVM::Types
2
17
  class FloatType < Number
3
18
  def prefix
4
19
  'f'
@@ -1,3 +1,18 @@
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  class BiteScript::MethodBuilder
2
17
  def inot
3
18
  iconst_m1
@@ -13,7 +28,7 @@ class BiteScript::MethodBuilder
13
28
  end
14
29
  end
15
30
 
16
- module Duby::JVM::Types
31
+ module Mirah::JVM::Types
17
32
  class IntegerType < Number
18
33
  def literal(builder, value)
19
34
  builder.push_int(value)
@@ -68,7 +83,7 @@ module Duby::JVM::Types
68
83
  op = "-="
69
84
  end
70
85
  comparison << "=" if inclusive
71
- forloop = Duby::AST::Loop.new(parent, position, true, false) do |forloop|
86
+ forloop = Mirah::AST::Loop.new(parent, position, true, false) do |forloop|
72
87
  first, last = duby.tmp, duby.tmp
73
88
  init = duby.eval("#{first} = 0; #{last} = 0;")
74
89
  init.children[-2].value = first_value
@@ -82,7 +97,7 @@ module Duby::JVM::Types
82
97
  end
83
98
  forloop.post << duby.eval("#{first} #{op} 1")
84
99
  [
85
- Duby::AST::Condition.new(forloop, position) do |c|
100
+ Mirah::AST::Condition.new(forloop, position) do |c|
86
101
  [duby.eval("#{first} #{comparison} #{last}",
87
102
  '', forloop, first, last)]
88
103
  end,
@@ -103,17 +118,17 @@ module Duby::JVM::Types
103
118
  math_operator('^', 'xor')
104
119
  unary_operator('~', 'not')
105
120
 
106
- add_macro('downto', Int, Duby::AST.block_type) do |transformer, call|
121
+ add_macro('downto', Int, Mirah::AST.block_type) do |transformer, call|
107
122
  build_loop(call.parent, call.position, transformer,
108
123
  call.block, call.target, call.parameters[0], false, true)
109
124
  end
110
- add_macro('upto', Int, Duby::AST.block_type) do |transformer, call|
125
+ add_macro('upto', Int, Mirah::AST.block_type) do |transformer, call|
111
126
  build_loop(call.parent, call.position, transformer,
112
127
  call.block, call.target, call.parameters[0], true, true)
113
128
  end
114
- add_macro('times', Duby::AST.block_type) do |transformer, call|
129
+ add_macro('times', Mirah::AST.block_type) do |transformer, call|
115
130
  build_loop(call.parent, call.position, transformer,
116
- call.block, Duby::AST::fixnum(nil, call.position, 0),
131
+ call.block, Mirah::AST::fixnum(nil, call.position, 0),
117
132
  call.target, true, false)
118
133
  end
119
134
  end
@@ -1,3 +1,18 @@
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  require 'bitescript'
2
17
  require 'mirah/jvm/types/enumerable'
3
18
 
@@ -15,7 +30,7 @@ class BiteScript::MethodBuilder
15
30
  end
16
31
  end
17
32
 
18
- module Duby::JVM::Types
33
+ module Mirah::JVM::Types
19
34
  class Type
20
35
 
21
36
  def load(builder, index)
@@ -51,7 +66,7 @@ module Duby::JVM::Types
51
66
  end
52
67
 
53
68
  def add_macro(name, *args, &block)
54
- type = Duby::AST::InlineCode.new(&block)
69
+ type = Mirah::AST::InlineCode.new(&block)
55
70
  intrinsics[name][args] = Intrinsic.new(self, name, args, type) do
56
71
  raise "Macro should be expanded, no called!"
57
72
  end
@@ -63,7 +78,7 @@ module Duby::JVM::Types
63
78
  ast = expander.expand
64
79
  if ast
65
80
  if call.target
66
- body = Duby::AST::ScopedBody.new(call.parent, call.position)
81
+ body = Mirah::AST::ScopedBody.new(call.parent, call.position)
67
82
  body.static_scope.self_type = call.target.inferred_type!
68
83
  body.static_scope.self_node = call.target
69
84
  body << ast
@@ -72,7 +87,7 @@ module Duby::JVM::Types
72
87
  ast
73
88
  end
74
89
  else
75
- Duby::AST::Noop.new(call.parent, call.position)
90
+ Mirah::AST::Noop.new(call.parent, call.position)
76
91
  end
77
92
  end
78
93
  end
@@ -98,7 +113,7 @@ module Duby::JVM::Types
98
113
  def load_extensions(klass=nil)
99
114
  mirror = nil
100
115
  if klass
101
- factory = Duby::AST.type_factory
116
+ factory = Mirah::AST.type_factory
102
117
  mirror = factory.get_mirror(klass.getName)
103
118
  elsif jvm_type
104
119
  mirror = jvm_type
@@ -114,9 +129,9 @@ module Duby::JVM::Types
114
129
  types = BiteScript::ASM::Type.get_argument_types(macro['signature'])
115
130
  args = types.map do |type|
116
131
  if type.class_name == 'duby.lang.compiler.Block'
117
- Duby::AST::TypeReference::BlockType
132
+ Mirah::AST::TypeReference::BlockType
118
133
  else
119
- Duby::AST.type(nil, type)
134
+ Mirah::AST.type(nil, type)
120
135
  end
121
136
  end
122
137
  klass = JRuby.runtime.jruby_class_loader.loadClass(class_name)
@@ -160,7 +175,7 @@ module Duby::JVM::Types
160
175
 
161
176
  add_macro('kind_of?', ClassType) do |transformer, call|
162
177
  klass, object = call.parameters[0], call.target
163
- Duby::AST::Call.new(call.parent, call.position, 'isInstance') do |call2|
178
+ Mirah::AST::Call.new(call.parent, call.position, 'isInstance') do |call2|
164
179
  klass.parent = object.parent = call2
165
180
  [
166
181
  klass,
@@ -209,8 +224,8 @@ module Duby::JVM::Types
209
224
  compiler.method.arraylength
210
225
  end
211
226
 
212
- add_macro('each', Duby::AST.block_type) do |transformer, call|
213
- Duby::AST::Loop.new(call.parent,
227
+ add_macro('each', Mirah::AST.block_type) do |transformer, call|
228
+ Mirah::AST::Loop.new(call.parent,
214
229
  call.position, true, false) do |forloop|
215
230
  index = transformer.tmp
216
231
  array = transformer.tmp
@@ -229,7 +244,7 @@ module Duby::JVM::Types
229
244
  forloop.post << transformer.eval("#{index} += 1")
230
245
  call.block.body.parent = forloop if call.block.body
231
246
  [
232
- Duby::AST::Condition.new(forloop, call.position) do |c|
247
+ Mirah::AST::Condition.new(forloop, call.position) do |c|
233
248
  [transformer.eval("#{index} < #{array}.length",
234
249
  '', forloop, index, array)]
235
250
  end,
@@ -341,8 +356,8 @@ module Duby::JVM::Types
341
356
  def add_intrinsics
342
357
  super
343
358
  add_enumerable_macros
344
- add_macro('each', Duby::AST.block_type) do |transformer, call|
345
- Duby::AST::Loop.new(call.parent,
359
+ add_macro('each', Mirah::AST.block_type) do |transformer, call|
360
+ Mirah::AST::Loop.new(call.parent,
346
361
  call.position, true, false) do |forloop|
347
362
  it = transformer.tmp
348
363
 
@@ -358,7 +373,7 @@ module Duby::JVM::Types
358
373
  end
359
374
  call.block.body.parent = forloop if call.block.body
360
375
  [
361
- Duby::AST::Condition.new(forloop, call.position) do |c|
376
+ Mirah::AST::Condition.new(forloop, call.position) do |c|
362
377
  [transformer.eval("#{it}.hasNext", '', forloop, it)]
363
378
  end,
364
379
  call.block.body
@@ -1,6 +1,21 @@
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  require 'delegate'
2
17
 
3
- module Duby::JVM::Types
18
+ module Mirah::JVM::Types
4
19
 
5
20
  # Represents a literal number that can be represented
6
21
  # in multiple types
@@ -1,3 +1,18 @@
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  require 'mirah/jvm/types'
2
17
 
3
18
  class Java::JavaMethod
@@ -10,8 +25,8 @@ class Java::JavaMethod
10
25
  end
11
26
  end
12
27
 
13
- module Duby::JVM::Types
14
- AST ||= Duby::AST
28
+ module Mirah::JVM::Types
29
+ AST ||= Mirah::AST
15
30
 
16
31
  module ArgumentConversion
17
32
  def convert_args(compiler, values, types=nil)
@@ -106,10 +121,10 @@ module Duby::JVM::Types
106
121
 
107
122
  def exceptions
108
123
  @member.exception_types.map do |exception|
109
- if exception.kind_of?(Duby::JVM::Types::Type)
124
+ if exception.kind_of?(Mirah::JVM::Types::Type)
110
125
  exception
111
126
  else
112
- Duby::AST.type(nil, exception.class_name)
127
+ Mirah::AST.type(nil, exception.class_name)
113
128
  end
114
129
  end
115
130
  end
@@ -348,7 +363,7 @@ module Duby::JVM::Types
348
363
  end
349
364
  end
350
365
 
351
- class DubyMember
366
+ class MirahMember
352
367
  attr_reader :name, :argument_types, :declaring_class, :return_type
353
368
  attr_reader :exception_types
354
369
 
@@ -477,11 +492,11 @@ module Duby::JVM::Types
477
492
 
478
493
  def inner_class_getter(name)
479
494
  full_name = "#{self.name}$#{name}"
480
- inner_class = Duby::AST.type(nil, full_name) rescue nil
495
+ inner_class = Mirah::AST.type(nil, full_name) rescue nil
481
496
  return unless inner_class
482
497
  inner_class.inner_class = true
483
498
  add_macro(name) do |transformer, call|
484
- Duby::AST::Constant.new(call.parent, call.position, full_name)
499
+ Mirah::AST::Constant.new(call.parent, call.position, full_name)
485
500
  end
486
501
  intrinsics[name][[]]
487
502
  end
@@ -554,7 +569,7 @@ module Duby::JVM::Types
554
569
 
555
570
  def declare_method(name, arguments, type, exceptions)
556
571
  raise "Bad args" unless arguments.all?
557
- member = DubyMember.new(self, name, arguments, type, false, exceptions)
572
+ member = MirahMember.new(self, name, arguments, type, false, exceptions)
558
573
  if name == 'initialize'
559
574
  if @default_constructor_added
560
575
  unless arguments.empty?
@@ -569,7 +584,7 @@ module Duby::JVM::Types
569
584
  end
570
585
 
571
586
  def declare_static_method(name, arguments, type, exceptions)
572
- member = DubyMember.new(self, name, arguments, type, true, exceptions)
587
+ member = MirahMember.new(self, name, arguments, type, true, exceptions)
573
588
  static_methods[name] << JavaStaticMethod.new(member)
574
589
  end
575
590
 
@@ -1,4 +1,19 @@
1
- module Duby::JVM::Types
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ module Mirah::JVM::Types
2
17
  class ComparisonIntrinsic < Intrinsic
3
18
  attr_reader :name, :op
4
19
  def initialize(type, name, op, args)
@@ -1,20 +1,35 @@
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  require 'bitescript'
2
17
  require 'mirah/ast'
3
18
  require 'mirah/jvm/method_lookup'
4
19
  require 'mirah/jvm/compiler'
5
20
  require 'set'
6
21
 
7
- module Duby
22
+ module Mirah
8
23
  module JVM
9
24
  module Types
10
25
  class Type < AST::TypeReference
11
26
  include Java::DubyLangCompiler::Class
12
- include Duby::JVM::MethodLookup
27
+ include Mirah::JVM::MethodLookup
13
28
 
14
29
  attr_writer :inner_class
15
30
 
16
31
  def log(message)
17
- puts "* [JVM::Types] #{message}" if Duby::Compiler::JVM.verbose
32
+ puts "* [JVM::Types] #{message}" if Mirah::Compiler::JVM.verbose
18
33
  end
19
34
 
20
35
  def initialize(mirror_or_name)
@@ -111,7 +126,7 @@ module Duby
111
126
  end
112
127
 
113
128
  def array_type
114
- @array_type ||= Duby::JVM::Types::ArrayType.new(self)
129
+ @array_type ||= Mirah::JVM::Types::ArrayType.new(self)
115
130
  end
116
131
 
117
132
  def prefix
@@ -247,6 +262,10 @@ module Duby
247
262
  def compatible?(other)
248
263
  !other.primitive?
249
264
  end
265
+
266
+ def assignable_from?(other)
267
+ !other.primitive?
268
+ end
250
269
  end
251
270
 
252
271
  class VoidType < PrimitiveType
@@ -1,5 +1,20 @@
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  require 'mirah'
2
- module Duby
17
+ module Mirah
3
18
  class NbCompiler
4
19
  include org.mirah.DubyCompiler
5
20
 
@@ -19,9 +34,9 @@ module Duby
19
34
  end
20
35
 
21
36
  def parse(text)
22
- Duby::AST.type_factory = Duby::JVM::Types::TypeFactory.new
23
- ast = Duby::AST.parse_ruby(text)
24
- transformer = Duby::Transform::Transformer.new(Duby::CompilationState.new)
37
+ Mirah::AST.type_factory = Mirah::JVM::Types::TypeFactory.new
38
+ ast = Mirah::AST.parse_ruby(text)
39
+ transformer = Mirah::Transform::Transformer.new(Mirah::CompilationState.new)
25
40
  return ParseResult.new(
26
41
  transformer.transform(ast, nil), transformer.errors)
27
42
  end
@@ -1,6 +1,21 @@
1
+ # Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
2
+ # All contributing project authors may be found in the NOTICE file.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
1
16
  require 'erb'
2
17
 
3
- Duby::AST.defmacro('def_edb') do |transformer, fcall, parent|
18
+ Mirah::AST.defmacro('def_edb') do |transformer, fcall, parent|
4
19
  name = fcall.parameters[0].name
5
20
  path = fcall.parameters[1].literal
6
21
  compiler = ERB::Compiler.new(nil)
@@ -9,14 +24,14 @@ Duby::AST.defmacro('def_edb') do |transformer, fcall, parent|
9
24
  compiler.pre_cmd = ["def #{name}", "_edbout = StringBuilder.new"]
10
25
  compiler.post_cmd = ["_edbout.toString", "end"]
11
26
  src = compiler.compile(IO.read(path))
12
- ast = Duby::AST.parse_ruby(src, path)
27
+ ast = Mirah::AST.parse_ruby(src, path)
13
28
  transformer.filename = path
14
29
  script = transformer.transform(ast, parent)
15
30
  script.body.parent = parent
16
31
  script.body
17
32
  end
18
33
 
19
- Duby::AST.defmacro('__edb_insert__') do |transformer, fcall, parent|
34
+ Mirah::AST.defmacro('__edb_insert__') do |transformer, fcall, parent|
20
35
  # ERB sticks in a .to_s that we don't want.
21
36
  # the ast is __edb_insert__(_edbout.append(content.to_s))
22
37
  append = fcall.parameters[0]