12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/opal/nodes/class.rb', line 12
def compile
name, base = name_and_base
helper :klass
if body.nil?
if stmt?
unshift '$klass(', base, ', ', super_code, ", '#{name}')"
else
unshift '($klass(', base, ', ', super_code, ", '#{name}'), nil)"
end
else
line " var self = $klass($base, $super, '#{name}');"
in_scope do
scope.name = name
in_closure(Closure::MODULE | Closure::JS_FUNCTION) do
compile_body
end
end
if await_encountered
await_begin = '(await '
await_end = ')'
async = 'async '
parent.await_encountered = true
else
await_begin, await_end, async = '', '', ''
end
unshift "#{await_begin}(#{async}function($base, $super#{', $parent_nesting' if @define_nesting}) {"
line '})(', base, ', ', super_code, "#{', ' + scope.nesting if @define_nesting})#{await_end}"
end
end
|