Skip to content

Commit

Permalink
Perlito5 - js - save more compile-time information
Browse files Browse the repository at this point in the history
  • Loading branch information
fglock committed Oct 1, 2013
1 parent b95d306 commit 9fca914
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 29 deletions.
32 changes: 16 additions & 16 deletions html/perlito5.js

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions perlito5.pl

Large diffs are not rendered by default.

11 changes: 8 additions & 3 deletions src5/lib/Perlito5/Javascript2/Emitter.pm
Expand Up @@ -1558,13 +1558,15 @@ package Perlito5::AST::Apply;
if ($code eq 'prefix:<$>') {
return 'p5scalar_deref_set('
. Perlito5::Javascript2::emit_javascript2_autovivify( $self->{arguments}->[0], $level+1, 'scalar' ) . ', '
. Perlito5::Javascript2::to_scalar([$arguments], $level+1)
. Perlito5::Javascript2::to_scalar([$arguments], $level+1) . ', '
. Perlito5::Javascript2::escape_string($Perlito5::PKG_NAME)
. ')';
}
if ($code eq 'prefix:<*>') {
return 'p5typeglob_deref_set('
. Perlito5::Javascript2::to_scalar($self->{arguments}, $level+1) . ', '
. Perlito5::Javascript2::to_scalar([$arguments], $level+1)
. Perlito5::Javascript2::to_scalar([$arguments], $level+1) . ', '
. Perlito5::Javascript2::escape_string($Perlito5::PKG_NAME)
. ')';
}

Expand Down Expand Up @@ -1673,7 +1675,10 @@ package Perlito5::AST::Apply;
my $self = $_[0];
my $level = $_[1];
my $arg = $self->{arguments}->[0];
return 'p5scalar_deref(' . Perlito5::Javascript2::emit_javascript2_autovivify( $arg, $level, 'scalar' ) . ')';
return 'p5scalar_deref('
. Perlito5::Javascript2::emit_javascript2_autovivify( $arg, $level, 'scalar' ) . ', '
. Perlito5::Javascript2::escape_string($Perlito5::PKG_NAME)
. ')';
},
'prefix:<@>' => sub {
my $self = $_[0];
Expand Down
12 changes: 6 additions & 6 deletions src5/lib/Perlito5/Javascript2/Runtime.pm
Expand Up @@ -279,15 +279,15 @@ function p5sub_prototype(name, current_pkg_name) {
return p5pkg["Perlito5"].v_PROTO._hash_[name] || p5pkg["Perlito5"].v_CORE_PROTO._hash_[name]
}
function p5scalar_deref(v) {
function p5scalar_deref(v, current_pkg_name) {
if (typeof v === "string") {
var pkg_name = v.split(/::/);
if (pkg_name.length > 1) {
v = pkg_name.pop();
pkg_name = pkg_name.join("::");
}
else {
pkg_name = p5pkg["Perlito5"].v_PKG_NAME;
pkg_name = current_pkg_name;
}
var c = v.charCodeAt(0);
if (c < 27) {
Expand All @@ -299,15 +299,15 @@ function p5scalar_deref(v) {
return v._scalar_;
}
function p5scalar_deref_set(v, n) {
function p5scalar_deref_set(v, n, current_pkg_name) {
if (typeof v === "string") {
var pkg_name = v.split(/::/);
if (pkg_name.length > 1) {
v = pkg_name.pop();
pkg_name = pkg_name.join("::");
}
else {
pkg_name = p5pkg["Perlito5"].v_PKG_NAME;
pkg_name = current_pkg_name;
}
var c = v.charCodeAt(0);
if (c < 27) {
Expand Down Expand Up @@ -394,15 +394,15 @@ function p5typeglob_set(namespace, name, obj) {
return p5pkg[namespace][name]; // TODO - return GLOB
}
function p5typeglob_deref_set(v, obj) {
function p5typeglob_deref_set(v, obj, current_pkg_name) {
if (typeof v === "string") {
var pkg_name = v.split(/::/);
if (pkg_name.length > 1) {
v = pkg_name.pop();
pkg_name = pkg_name.join("::");
}
else {
pkg_name = p5pkg["Perlito5"].v_PKG_NAME;
pkg_name = current_pkg_name;
}
return p5typeglob_set(pkg_name, v, obj);
}
Expand Down

0 comments on commit 9fca914

Please sign in to comment.