mirah 0.0.12-java → 0.1.0-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 +372 -0
- data/README.txt +4 -5
- data/Rakefile +178 -55
- data/examples/appengine/Readme +3 -3
- data/examples/appengine/src/org/mirah/MirahApp.mirah +1 -1
- data/examples/appengine/src/org/mirah/list.dhtml +1 -1
- data/examples/bintrees.mirah +1 -1
- data/examples/edb.mirah +1 -1
- data/examples/fib.mirah +1 -1
- data/examples/interfaces.mirah +1 -1
- data/examples/macros/{string-each-char.mirah → string_each_char.mirah} +4 -5
- data/examples/maven/README.txt +1 -1
- data/examples/maven/src/main/mirah/hello_mirah.mirah +1 -1
- data/examples/plugins/appengine/Rakefile +1 -1
- data/examples/plugins/appengine/src/com/google/appengine/ext/duby/db/MetaModel.mirah +1 -1
- data/examples/plugins/appengine/src/com/google/appengine/ext/duby/db/Model.duby +1 -1
- data/examples/plugins/appengine/test/com/google/appengine/ext/duby/db/ModelTest.duby +1 -1
- data/examples/rosettacode/100-doors.mirah +6 -6
- data/examples/rosettacode/README.txt +3 -3
- data/examples/rosettacode/boolean-values.mirah +1 -1
- data/examples/rosettacode/comments.mirah +1 -1
- data/examples/rosettacode/count-occurrences-of-a-substring.mirah +1 -1
- data/examples/rosettacode/factorial.mirah +1 -1
- data/examples/rosettacode/fibonacci.mirah +1 -1
- data/examples/rosettacode/fizz-buzz.mirah +2 -2
- data/examples/rosettacode/flatten-a-list.mirah +4 -4
- data/examples/rosettacode/guess-the-number.mirah +2 -2
- data/examples/rosettacode/hamming-numbers.mirah +4 -4
- data/examples/rosettacode/is-string-numeric.mirah +22 -22
- data/examples/rosettacode/palindrome.mirah +2 -2
- data/examples/rosettacode/random-numbers.mirah +1 -1
- data/examples/rosettacode/repeat-a-string.mirah +1 -1
- data/examples/rosettacode/reverse-a-string.mirah +1 -1
- data/examples/rosettacode/rot-13.mirah +5 -5
- data/examples/rosettacode/secure-temporary-file.mirah +2 -2
- data/examples/rosettacode/sleep.mirah +1 -1
- data/examples/rosettacode/string-length.mirah +5 -5
- data/examples/swing.mirah +1 -1
- data/examples/test.edb +1 -1
- data/javalib/mirah-bootstrap.jar +0 -0
- data/javalib/mirah-builtins.jar +0 -0
- data/javalib/mirah-parser.jar +0 -0
- data/javalib/mirah-util.jar +0 -0
- data/lib/duby.rb +1 -1
- data/lib/mirah.rb +50 -28
- data/lib/mirah/ast.rb +15 -605
- data/lib/mirah/ast/scope.rb +98 -69
- data/lib/mirah/commands.rb +1 -1
- data/lib/mirah/commands/base.rb +7 -7
- data/lib/mirah/commands/compile.rb +3 -3
- data/lib/mirah/commands/parse.rb +7 -5
- data/lib/mirah/commands/run.rb +12 -19
- data/lib/mirah/compiler.rb +15 -23
- data/lib/mirah/errors.rb +16 -1
- data/lib/mirah/generator.rb +79 -39
- data/lib/mirah/jvm/compiler.rb +1 -19
- data/lib/mirah/jvm/compiler/base.rb +233 -90
- data/lib/mirah/jvm/compiler/jvm_bytecode.rb +675 -363
- data/lib/mirah/jvm/method_lookup.rb +134 -65
- data/lib/mirah/jvm/typer.rb +10 -5
- data/lib/mirah/jvm/types.rb +10 -2
- data/lib/mirah/jvm/types/array_type.rb +10 -12
- data/lib/mirah/{compiler/type.rb → jvm/types/ast_ext.rb} +12 -8
- data/lib/mirah/jvm/types/basic_types.rb +26 -33
- data/lib/mirah/jvm/types/bitescript_ext.rb +1 -1
- data/lib/mirah/jvm/types/block_type.rb +15 -0
- data/lib/mirah/jvm/types/boolean.rb +8 -4
- data/lib/mirah/jvm/types/dynamic_type.rb +12 -13
- data/lib/mirah/jvm/types/enumerable.rb +7 -7
- data/lib/mirah/jvm/types/extensions.rb +11 -6
- data/lib/mirah/jvm/types/factory.rb +624 -94
- data/lib/mirah/jvm/types/floats.rb +21 -15
- data/lib/mirah/jvm/types/generic_type.rb +72 -0
- data/lib/mirah/jvm/types/implicit_nil_type.rb +29 -0
- data/lib/mirah/jvm/types/integers.rb +26 -71
- data/lib/mirah/jvm/types/interface_definition.rb +3 -3
- data/lib/mirah/jvm/types/intrinsics.rb +203 -168
- data/lib/mirah/jvm/types/literals.rb +6 -6
- data/lib/mirah/jvm/types/meta_type.rb +13 -4
- data/lib/mirah/jvm/types/methods.rb +281 -93
- data/lib/mirah/jvm/types/null_type.rb +17 -5
- data/lib/mirah/jvm/types/number.rb +10 -7
- data/lib/mirah/jvm/types/primitive_type.rb +17 -6
- data/lib/mirah/jvm/types/source_mirror.rb +12 -7
- data/lib/mirah/jvm/types/type.rb +107 -23
- data/lib/mirah/jvm/types/type_definition.rb +25 -10
- data/lib/mirah/jvm/types/unreachable_type.rb +1 -1
- data/lib/mirah/jvm/types/void_type.rb +3 -3
- data/lib/mirah/parser.rb +154 -16
- data/lib/mirah/plugin/edb.rb +1 -1
- data/lib/mirah/transform.rb +1 -2
- data/lib/mirah/transform/ast_ext.rb +24 -43
- data/lib/mirah/transform/transformer.rb +29 -224
- data/lib/mirah/typer.rb +2 -16
- data/lib/mirah/util/argument_processor.rb +25 -10
- data/lib/mirah/util/class_loader.rb +1 -1
- data/lib/mirah/util/compilation_state.rb +16 -17
- data/lib/mirah/util/delegate.rb +2 -2
- data/lib/mirah/util/logging.rb +110 -0
- data/lib/mirah/util/process_errors.rb +69 -11
- data/lib/mirah/version.rb +1 -1
- data/test/core/commands_test.rb +6 -24
- data/test/core/env_test.rb +5 -5
- data/{lib/mirah/jvm/source_generator/typer.rb → test/core/generator_test.rb} +9 -9
- data/test/core/typer_test.rb +196 -158
- data/test/core/util/argument_processor_test.rb +10 -10
- data/test/core/util/class_loader_test.rb +6 -5
- data/test/fixtures/org/foo/LowerCaseInnerClass$inner.class +0 -0
- data/test/fixtures/org/foo/LowerCaseInnerClass.class +0 -0
- data/test/fixtures/org/foo/LowerCaseInnerClass.java +7 -0
- data/test/jvm/annotations_test.rb +5 -5
- data/test/jvm/blocks_test.rb +140 -88
- data/test/jvm/bytecode_test_helper.rb +112 -94
- data/test/jvm/cast_test.rb +162 -0
- data/test/jvm/constructors_test.rb +18 -8
- data/test/jvm/enumerable_test.rb +77 -44
- data/test/jvm/example_test.rb +53 -0
- data/test/jvm/factory_test.rb +7 -1
- data/test/jvm/generics_test.rb +57 -0
- data/test/jvm/hash_test.rb +106 -0
- data/test/jvm/import_test.rb +81 -0
- data/test/jvm/interface_test.rb +73 -0
- data/test/jvm/java_typer_test.rb +92 -66
- data/{lib/mirah/typer/base.rb → test/jvm/jvm_commands_test.rb} +6 -10
- data/test/jvm/jvm_compiler_test.rb +170 -604
- data/test/jvm/list_extensions_test.rb +23 -0
- data/test/jvm/macros_test.rb +197 -32
- data/test/jvm/main_method_test.rb +4 -4
- data/test/jvm/numeric_extensions_test.rb +13 -0
- data/test/jvm/rescue_test.rb +73 -16
- data/test/jvm/varargs_test.rb +65 -0
- data/test/test_helper.rb +1 -2
- metadata +234 -251
- data/examples/SortClosure$__xform_tmp_1.class +0 -0
- data/examples/SortClosure$__xform_tmp_2.class +0 -0
- data/examples/SortClosure.class +0 -0
- data/examples/macros/StringEachChar$Extension1.class +0 -0
- data/lib/mirah/ast/call.rb +0 -345
- data/lib/mirah/ast/class.rb +0 -359
- data/lib/mirah/ast/flow.rb +0 -381
- data/lib/mirah/ast/intrinsics.rb +0 -563
- data/lib/mirah/ast/literal.rb +0 -178
- data/lib/mirah/ast/local.rb +0 -112
- data/lib/mirah/ast/method.rb +0 -408
- data/lib/mirah/ast/structure.rb +0 -387
- data/lib/mirah/ast/type.rb +0 -146
- data/lib/mirah/commands/base.rb~ +0 -57
- data/lib/mirah/compiler/call.rb +0 -45
- data/lib/mirah/compiler/class.rb +0 -81
- data/lib/mirah/compiler/flow.rb +0 -109
- data/lib/mirah/compiler/literal.rb +0 -130
- data/lib/mirah/compiler/local.rb +0 -59
- data/lib/mirah/compiler/method.rb +0 -44
- data/lib/mirah/compiler/structure.rb +0 -65
- data/lib/mirah/jvm/compiler/java_source.rb +0 -787
- data/lib/mirah/jvm/method_lookup.rb~ +0 -247
- data/lib/mirah/jvm/source_generator/builder.rb +0 -468
- data/lib/mirah/jvm/source_generator/loops.rb +0 -131
- data/lib/mirah/jvm/source_generator/precompile.rb +0 -210
- data/lib/mirah/plugin/gwt.rb +0 -189
- data/lib/mirah/plugin/java.rb +0 -70
- data/lib/mirah/transform/error.rb +0 -13
- data/lib/mirah/transform/helper.rb +0 -765
- data/lib/mirah/typer/simple.rb +0 -384
- data/lib/mirah/version.rb~ +0 -18
- data/test/core/ast_test.rb +0 -382
- data/test/core/compilation_test.rb +0 -130
- data/test/core/macros_test.rb +0 -61
- data/test/jvm/javac_test_helper.rb +0 -89
- data/test/jvm/jvm_compiler_test.rb~ +0 -2181
- data/test/plugins/gwt_test.rb +0 -69
data/lib/mirah/commands/base.rb~
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
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
|
-
require 'mirah/jvm/types'
|
|
17
|
-
require 'mirah/util/compilation_state'
|
|
18
|
-
require 'mirah/util/argument_processor'
|
|
19
|
-
require 'mirah/errors'
|
|
20
|
-
|
|
21
|
-
module Mirah
|
|
22
|
-
module Commands
|
|
23
|
-
class Base
|
|
24
|
-
def initialize(args)
|
|
25
|
-
Mirah::AST.type_factory = Mirah::JVM::Types::TypeFactory.new
|
|
26
|
-
@state = Mirah::Util::CompilationState.new
|
|
27
|
-
@state.command = command_name
|
|
28
|
-
@args = args
|
|
29
|
-
@argument_processor = Mirah::Util::ArgumentProcessor.new(@state, @args)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
attr_accessor :state, :args, :argument_processor
|
|
33
|
-
|
|
34
|
-
def execute_base
|
|
35
|
-
# because MirahCommand is a JRuby Java class, SystemExit bubbles through and makes noise
|
|
36
|
-
# so we use a catch/throw to early exit instead
|
|
37
|
-
# see util/process_errors.rb
|
|
38
|
-
status = catch(:exit) do
|
|
39
|
-
begin
|
|
40
|
-
argument_processor.process
|
|
41
|
-
yield
|
|
42
|
-
rescue Mirah::InternalCompilerError => ice
|
|
43
|
-
Mirah.print_error(ice.message, ice.position) if ice.node
|
|
44
|
-
raise ice.cause if (ice.cause && state.verbose)
|
|
45
|
-
raise ice
|
|
46
|
-
rescue Mirah::MirahError => ex
|
|
47
|
-
Mirah.print_error(ex.message, ex.position)
|
|
48
|
-
puts ex.backtrace if state.verbose
|
|
49
|
-
throw :exit, 1
|
|
50
|
-
end
|
|
51
|
-
0
|
|
52
|
-
end
|
|
53
|
-
exit status if status > 0
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
data/lib/mirah/compiler/call.rb
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
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
|
|
17
|
-
module AST
|
|
18
|
-
class FunctionalCall
|
|
19
|
-
def compile(compiler, expression)
|
|
20
|
-
compiler.line(line_number)
|
|
21
|
-
compiler.self_call(self, expression)
|
|
22
|
-
rescue Exception => ex
|
|
23
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
class Call
|
|
28
|
-
def compile(compiler, expression)
|
|
29
|
-
compiler.line(line_number)
|
|
30
|
-
compiler.call(self, expression)
|
|
31
|
-
rescue Exception => ex
|
|
32
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
class Super
|
|
37
|
-
def compile(compiler, expression)
|
|
38
|
-
compiler.line(line_number)
|
|
39
|
-
compiler.super_call(self, expression)
|
|
40
|
-
rescue Exception => ex
|
|
41
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
data/lib/mirah/compiler/class.rb
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
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
|
|
17
|
-
module AST
|
|
18
|
-
class ClassDefinition
|
|
19
|
-
def compile(compiler, expression)
|
|
20
|
-
compiler.define_class(self, expression)
|
|
21
|
-
rescue Exception => ex
|
|
22
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
class ClosureDefinition
|
|
27
|
-
def compile(compiler, expression)
|
|
28
|
-
compiler.define_closure(self, expression)
|
|
29
|
-
rescue Exception => ex
|
|
30
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
class AccessLevel
|
|
35
|
-
def compile(compiler, expression); end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
class FieldDeclaration
|
|
39
|
-
def compile(compiler, expression)
|
|
40
|
-
compiler.field_declare(name, inferred_type, annotations, static)
|
|
41
|
-
rescue Exception => ex
|
|
42
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
class FieldAssignment
|
|
47
|
-
def compile(compiler, expression)
|
|
48
|
-
compiler.line(line_number)
|
|
49
|
-
compiler.field_assign(name, inferred_type, expression, value, annotations, static)
|
|
50
|
-
rescue Exception => ex
|
|
51
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
class Field
|
|
56
|
-
def compile(compiler, expression)
|
|
57
|
-
compiler.line(line_number)
|
|
58
|
-
if expression
|
|
59
|
-
compiler.field(name, inferred_type, annotations, static)
|
|
60
|
-
end
|
|
61
|
-
rescue Exception => ex
|
|
62
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
class Include
|
|
67
|
-
def compile(compiler, expression); end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
class Constant
|
|
71
|
-
def compile(compiler, expression)
|
|
72
|
-
if expression
|
|
73
|
-
compiler.line(line_number)
|
|
74
|
-
compiler.constant(self)
|
|
75
|
-
end
|
|
76
|
-
rescue Exception => ex
|
|
77
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
data/lib/mirah/compiler/flow.rb
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
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
|
|
17
|
-
module AST
|
|
18
|
-
class If
|
|
19
|
-
def compile(compiler, expression)
|
|
20
|
-
compiler.line(line_number)
|
|
21
|
-
compiler.branch(self, expression)
|
|
22
|
-
rescue Exception => ex
|
|
23
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
class Condition
|
|
28
|
-
def compile(compiler, expression)
|
|
29
|
-
# TODO: can a condition ever be an expression? I don't think it can...
|
|
30
|
-
compiler.line(line_number)
|
|
31
|
-
predicate.compile(compiler, expression)
|
|
32
|
-
rescue Exception => ex
|
|
33
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
class Loop
|
|
38
|
-
def compile(compiler, expression)
|
|
39
|
-
compiler.line(line_number)
|
|
40
|
-
compiler.loop(self, expression)
|
|
41
|
-
rescue Exception => ex
|
|
42
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
class Return
|
|
47
|
-
def compile(compiler, expression)
|
|
48
|
-
compiler.line(line_number)
|
|
49
|
-
compiler.return(self)
|
|
50
|
-
rescue Exception => ex
|
|
51
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
class Break
|
|
56
|
-
def compile(compiler, expression)
|
|
57
|
-
compiler.line(line_number)
|
|
58
|
-
compiler.break(self)
|
|
59
|
-
rescue Exception => ex
|
|
60
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
class Next
|
|
65
|
-
def compile(compiler, expression)
|
|
66
|
-
compiler.line(line_number)
|
|
67
|
-
compiler.next(self)
|
|
68
|
-
rescue Exception => ex
|
|
69
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
class Redo
|
|
74
|
-
def compile(compiler, expression)
|
|
75
|
-
compiler.line(line_number)
|
|
76
|
-
compiler.redo(self)
|
|
77
|
-
rescue Exception => ex
|
|
78
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
class Raise
|
|
83
|
-
def compile(compiler, expression)
|
|
84
|
-
compiler.line(line_number)
|
|
85
|
-
compiler._raise(exception)
|
|
86
|
-
rescue Exception => ex
|
|
87
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
class Rescue
|
|
92
|
-
def compile(compiler, expression)
|
|
93
|
-
compiler.line(line_number)
|
|
94
|
-
compiler.rescue(self, expression)
|
|
95
|
-
rescue Exception => ex
|
|
96
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
class Ensure
|
|
101
|
-
def compile(compiler, expression)
|
|
102
|
-
compiler.line(line_number)
|
|
103
|
-
compiler.ensure(self, expression)
|
|
104
|
-
rescue Exception => ex
|
|
105
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
@@ -1,130 +0,0 @@
|
|
|
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
|
|
17
|
-
module AST
|
|
18
|
-
class Fixnum
|
|
19
|
-
def compile(compiler, expression)
|
|
20
|
-
if expression
|
|
21
|
-
compiler.line(line_number)
|
|
22
|
-
compiler.fixnum(inferred_type, literal)
|
|
23
|
-
end
|
|
24
|
-
rescue Exception => ex
|
|
25
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
class Regexp
|
|
30
|
-
def compile(compiler, expression)
|
|
31
|
-
if expression
|
|
32
|
-
compiler.line(line_number)
|
|
33
|
-
compiler.regexp(literal)
|
|
34
|
-
end
|
|
35
|
-
rescue Exception => ex
|
|
36
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
class String
|
|
41
|
-
def compile(compiler, expression)
|
|
42
|
-
if expression
|
|
43
|
-
compiler.line(line_number)
|
|
44
|
-
compiler.string(literal)
|
|
45
|
-
end
|
|
46
|
-
rescue Exception => ex
|
|
47
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
class StringConcat
|
|
52
|
-
def compile(compiler, expression)
|
|
53
|
-
compiler.build_string(children, expression)
|
|
54
|
-
rescue Exception => ex
|
|
55
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
class ToString
|
|
60
|
-
def compile(compiler, expression)
|
|
61
|
-
compiler.to_string(body, expression)
|
|
62
|
-
rescue Exception => ex
|
|
63
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
class Float
|
|
68
|
-
def compile(compiler, expression)
|
|
69
|
-
if expression
|
|
70
|
-
compiler.line(line_number)
|
|
71
|
-
compiler.float(inferred_type, literal)
|
|
72
|
-
end
|
|
73
|
-
rescue Exception => ex
|
|
74
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
class Boolean
|
|
79
|
-
def compile(compiler, expression)
|
|
80
|
-
if expression
|
|
81
|
-
compiler.line(line_number)
|
|
82
|
-
compiler.boolean(literal)
|
|
83
|
-
end
|
|
84
|
-
rescue Exception => ex
|
|
85
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
class Array
|
|
90
|
-
def compile(compiler, expression)
|
|
91
|
-
compiler.array(self, expression)
|
|
92
|
-
rescue Exception => ex
|
|
93
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
class Null
|
|
98
|
-
def compile(compiler, expression)
|
|
99
|
-
if expression
|
|
100
|
-
compiler.line(line_number)
|
|
101
|
-
compiler.null
|
|
102
|
-
end
|
|
103
|
-
rescue Exception => ex
|
|
104
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
class EmptyArray
|
|
109
|
-
def compile(compiler, expression)
|
|
110
|
-
if expression
|
|
111
|
-
compiler.line(line_number)
|
|
112
|
-
compiler.empty_array(component_type, size)
|
|
113
|
-
end
|
|
114
|
-
rescue Exception => ex
|
|
115
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
class Self
|
|
120
|
-
def compile(compiler, expression)
|
|
121
|
-
if expression
|
|
122
|
-
compiler.line(line_number)
|
|
123
|
-
compiler.compile_self
|
|
124
|
-
end
|
|
125
|
-
rescue Exception => ex
|
|
126
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
end
|
data/lib/mirah/compiler/local.rb
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
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
|
|
17
|
-
module AST
|
|
18
|
-
class LocalDeclaration
|
|
19
|
-
def compile(compiler, expression)
|
|
20
|
-
compiler.line(line_number)
|
|
21
|
-
if captured? && scope.has_binding?
|
|
22
|
-
compiler.captured_local_declare(containing_scope, name, type)
|
|
23
|
-
else
|
|
24
|
-
compiler.local_declare(containing_scope, name, type)
|
|
25
|
-
end
|
|
26
|
-
rescue Exception => ex
|
|
27
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
class LocalAssignment
|
|
32
|
-
def compile(compiler, expression)
|
|
33
|
-
compiler.line(line_number)
|
|
34
|
-
if captured? && scope.has_binding?
|
|
35
|
-
compiler.captured_local_assign(self, expression)
|
|
36
|
-
else
|
|
37
|
-
compiler.local_assign(containing_scope, name, inferred_type, expression, value)
|
|
38
|
-
end
|
|
39
|
-
rescue Exception => ex
|
|
40
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
class Local
|
|
45
|
-
def compile(compiler, expression)
|
|
46
|
-
if expression
|
|
47
|
-
compiler.line(line_number)
|
|
48
|
-
if captured? && scope.has_binding?
|
|
49
|
-
compiler.captured_local(containing_scope, name, inferred_type)
|
|
50
|
-
else
|
|
51
|
-
compiler.local(containing_scope, name, inferred_type)
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
rescue Exception => ex
|
|
55
|
-
raise Mirah::InternalCompilerError.wrap(ex, self)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|