Compare commits
6 Commits
0.9.34-bet
...
0.9.39-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
7f275095a2
|
|||
|
90d019f92a
|
|||
|
6fb31be12c
|
|||
|
d6ede0b404
|
|||
|
71b40240c0
|
|||
|
a8775d212f
|
@@ -1,4 +1,4 @@
|
||||
project_group = me.topchetoeu
|
||||
project_name = jscript
|
||||
project_version = 0.9.27-beta
|
||||
project_version = 0.9.38-beta
|
||||
main_class = me.topchetoeu.jscript.utils.JScriptRepl
|
||||
|
||||
@@ -10,7 +10,7 @@ public class ContinueStatement extends Statement {
|
||||
|
||||
@Override
|
||||
public void compile(CompileResult target, boolean pollute) {
|
||||
target.add(Instruction.nop(loc(), "cont", label));
|
||||
target.add(Instruction.nop("cont", label));
|
||||
if (pollute) target.add(Instruction.pushUndefined());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package me.topchetoeu.jscript.lib;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
|
||||
import me.topchetoeu.jscript.runtime.values.ObjectValue;
|
||||
import me.topchetoeu.jscript.runtime.values.Values;
|
||||
import me.topchetoeu.jscript.utils.interop.Arguments;
|
||||
@@ -85,6 +87,15 @@ public class NumberLib {
|
||||
@Expose public static String __toString(Arguments args) {
|
||||
return Values.toString(args.ctx, args.self);
|
||||
}
|
||||
@Expose public static String __toFixed(Arguments args) {
|
||||
var digits = args.getInt(0, 0);
|
||||
|
||||
var nf = NumberFormat.getNumberInstance();
|
||||
nf.setMinimumFractionDigits(digits);
|
||||
nf.setMaximumFractionDigits(digits);
|
||||
|
||||
return nf.format(args.getDouble(-1));
|
||||
}
|
||||
@Expose public static double __valueOf(Arguments args) {
|
||||
if (Values.isWrapper(args.self, NumberLib.class)) return Values.wrapper(args.self, NumberLib.class).value;
|
||||
else return Values.toNumber(args.ctx, args.self);
|
||||
|
||||
@@ -14,43 +14,26 @@ public class Context implements Extensions {
|
||||
public final Context parent;
|
||||
public final Extensions extensions;
|
||||
public final Frame frame;
|
||||
// public final Engine engine;
|
||||
public final int stackSize;
|
||||
|
||||
@Override public <T> void add(Key<T> key, T obj) {
|
||||
if (extensions != null) extensions.add(key, obj);
|
||||
// else if (engine != null) engine.add(key, obj);
|
||||
}
|
||||
@Override public <T> T get(Key<T> key) {
|
||||
if (extensions != null && extensions.has(key)) return extensions.get(key);
|
||||
// else if (engine != null && engine.has(key)) return engine.get(key);
|
||||
return null;
|
||||
}
|
||||
@Override public boolean has(Key<?> key) {
|
||||
return
|
||||
extensions != null && extensions.has(key);
|
||||
// engine != null && engine.has(key);
|
||||
return extensions != null && extensions.has(key);
|
||||
}
|
||||
@Override public boolean remove(Key<?> key) {
|
||||
var res = false;
|
||||
|
||||
if (extensions != null) res |= extensions.remove(key);
|
||||
// else if (engine != null) res |= engine.remove(key);
|
||||
|
||||
return res;
|
||||
}
|
||||
@Override public Iterable<Key<?>> keys() {
|
||||
if (extensions == null) return List.of();
|
||||
else return extensions.keys();
|
||||
|
||||
// if (engine == null && environment == null) return List.of();
|
||||
// if (engine == null) return environment.keys();
|
||||
// if (environment == null) return engine.keys();
|
||||
|
||||
// return () -> Stream.concat(
|
||||
// StreamSupport.stream(engine.keys().spliterator(), false),
|
||||
// StreamSupport.stream(environment.keys().spliterator(), false)
|
||||
// ).distinct().iterator();
|
||||
}
|
||||
|
||||
public FunctionValue compile(Filename filename, String raw) {
|
||||
@@ -101,7 +84,7 @@ public class Context implements Extensions {
|
||||
this(null, null, null, 0);
|
||||
}
|
||||
public Context(Extensions ext) {
|
||||
this(null, ext, null, 0);
|
||||
this(null, clean(ext), null, 0);
|
||||
}
|
||||
|
||||
public static Context of(Extensions ext) {
|
||||
|
||||
@@ -44,7 +44,7 @@ public class CodeFunction extends FunctionValue {
|
||||
public CodeFunction(Extensions extensions, String name, FunctionBody body, ValueVariable[] captures) {
|
||||
super(name, body.argsN);
|
||||
this.captures = captures;
|
||||
this.extensions = extensions;
|
||||
this.extensions = Context.clean(extensions);
|
||||
this.body = body;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -397,7 +397,7 @@ public class SimpleDebugger implements Debugger {
|
||||
catch (Exception e) { }
|
||||
|
||||
try { res.set("description", className + (defaultToString ? "" : " { " + Values.toString(ctx, obj) + " }")); }
|
||||
catch (EngineException e) { }
|
||||
catch (Exception e) { }
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user