rm array proto funcs

This commit is contained in:
2026-01-21 00:52:18 -06:00
parent ef49606098
commit 26fce3a5a8
31 changed files with 259 additions and 372 deletions

View File

@@ -186,7 +186,7 @@ function collect_benches(package_name, specific_bench) {
var match_base = ends_with(match_name, '.cm') ? text(match_name, 0, -3) : match_name
if (bench_name != match_base) return
}
bench_files.push(f)
push(bench_files, f)
}
})
return bench_files
@@ -348,7 +348,7 @@ function run_single_bench(bench_fn, bench_name) {
if (teardown_fn) teardown_fn(state)
var ns_per_op = is_batch ? duration / batch_size : duration
timings_per_op.push(ns_per_op)
push(timings_per_op, ns_per_op)
} else {
var start = os.now()
if (is_batch) {
@@ -359,7 +359,7 @@ function run_single_bench(bench_fn, bench_name) {
var duration = os.now() - start
var ns_per_op = is_batch ? duration / batch_size : duration
timings_per_op.push(ns_per_op)
push(timings_per_op, ns_per_op)
}
}
@@ -439,11 +439,11 @@ function run_benchmarks(package_name, specific_bench) {
var benches = []
if (is_function(bench_mod)) {
benches.push({name: 'main', fn: bench_mod})
push(benches, {name: 'main', fn: bench_mod})
} else if (is_object(bench_mod)) {
arrfor(array(bench_mod), function(k) {
if (is_function(bench_mod[k]))
benches.push({name: k, fn: bench_mod[k]})
push(benches, {name: k, fn: bench_mod[k]})
})
}
@@ -453,7 +453,7 @@ function run_benchmarks(package_name, specific_bench) {
try {
var result = run_single_bench(b.fn, b.name)
result.package = pkg_result.package
file_result.benchmarks.push(result)
push(file_result.benchmarks, result)
pkg_result.total++
log.console(` ${result.name}`)
@@ -470,7 +470,7 @@ function run_benchmarks(package_name, specific_bench) {
name: b.name,
error: e.toString()
}
file_result.benchmarks.push(error_result)
push(file_result.benchmarks, error_result)
pkg_result.total++
}
})
@@ -482,12 +482,12 @@ function run_benchmarks(package_name, specific_bench) {
name: "load_module",
error: `Error loading module: ${e}`
}
file_result.benchmarks.push(error_result)
push(file_result.benchmarks, error_result)
pkg_result.total++
}
if (length(file_result.benchmarks) > 0) {
pkg_result.files.push(file_result)
push(pkg_result.files, file_result)
}
}
@@ -499,15 +499,15 @@ var all_results = []
if (all_pkgs) {
if (testlib.is_valid_package('.')) {
all_results.push(run_benchmarks(null, null))
push(all_results, run_benchmarks(null, null))
}
var packages = shop.list_packages()
arrfor(packages, function(pkg) {
all_results.push(run_benchmarks(pkg, null))
push(all_results, run_benchmarks(pkg, null))
})
} else {
all_results.push(run_benchmarks(target_pkg, target_bench))
push(all_results, run_benchmarks(target_pkg, target_bench))
}
// Calculate totals
@@ -579,7 +579,7 @@ Total benchmarks: ${total_benches}
var pkg_benches = []
arrfor(pkg_res.files, function(f) {
arrfor(f.benchmarks, function(benchmark) {
pkg_benches.push(benchmark)
push(pkg_benches, benchmark)
})
})

View File

@@ -20,14 +20,14 @@ function make_shapes(n) {
for (var i = 0; i < n; i++) {
var o = { a: i }
o[`p${i}`] = i
out.push(o)
push(out, o)
}
return out
}
function make_packed_array(n) {
var a = []
for (var i = 0; i < n; i++) a.push(i)
for (var i = 0; i < n; i++) push(a, i)
return a
}
@@ -203,7 +203,7 @@ return {
var x = 0
for (var j = 0; j < n; j++) {
var a = []
for (var i = 0; i < 256; i++) a.push(i)
for (var i = 0; i < 256; i++) push(a, i)
x = (x + length(a)) | 0
}
return blackhole(sink, x)

View File

@@ -109,12 +109,12 @@ function benchArrayOps() {
var pushTime = measureTime(function() {
var arr = [];
for (var i = 0; i < iterations.medium; i++) {
arr.push(i);
push(arr, i);
}
});
var arr = [];
for (var i = 0; i < 10000; i++) arr.push(i);
for (var i = 0; i < 10000; i++) push(arr, i);
var accessTime = measureTime(function() {
var sum = 0;
@@ -198,7 +198,7 @@ function benchStringOps() {
var strings = [];
for (var i = 0; i < 1000; i++) {
strings.push("string" + i);
push(strings, "string" + i);
}
var joinTime = measureTime(function() {
@@ -269,13 +269,13 @@ function benchClosures() {
var closureCreateTime = measureTime(function() {
var funcs = [];
for (var i = 0; i < iterations.medium; i++) {
funcs.push(makeAdder(i));
push(funcs, makeAdder(i));
}
});
var adders = [];
for (var i = 0; i < 1000; i++) {
adders.push(makeAdder(i));
push(adders, makeAdder(i));
}
var closureCallTime = measureTime(function() {

View File

@@ -9,7 +9,7 @@ var newarr = []
var accstr = ""
for (var i = 0; i < 10000; i++) {
accstr += i;
newarr.push(i.toString())
newarrpush(i.toString())
}
// Arrays to store timing results
var jsonDecodeTimes = [];
@@ -23,22 +23,22 @@ for (var i = 0; i < 100; i++) {
// JSON Decode test
var start = os.now();
var jll = json.decode(ll);
jsonDecodeTimes.push((os.now() - start) * 1000);
jsonDecodeTimespush((os.now() - start) * 1000);
// JSON Encode test
start = os.now();
var jsonStr = JSON.stringify(jll);
jsonEncodeTimes.push((os.now() - start) * 1000);
jsonEncodeTimespush((os.now() - start) * 1000);
// NOTA Encode test
start = os.now();
var nll = nota.encode(jll);
notaEncodeTimes.push((os.now() - start) * 1000);
notaEncodeTimespush((os.now() - start) * 1000);
// NOTA Decode test
start = os.now();
var oll = nota.decode(nll);
notaDecodeTimes.push((os.now() - start) * 1000);
notaDecodeTimespush((os.now() - start) * 1000);
}
// Calculate statistics

View File

@@ -139,7 +139,7 @@ function runBenchmarkForLibrary(lib, bench) {
// store only in the very first iteration, so we can decode them later
// but do not store them every iteration or we blow up memory.
if (i == 0) {
encodedList.push(e);
push(encodedList, e);
totalSize += lib.getSize(e);
}
}

View File

@@ -35,7 +35,7 @@ function replace_sigils(str) {
function replace_sigils_array(flags) {
var result = []
arrfor(flags, function(flag) {
result.push(replace_sigils(flag))
resultpush(replace_sigils(flag))
})
return result
}
@@ -121,30 +121,30 @@ Build.compile_file = function(pkg, file, target, buildtype = 'release') {
// Add buildtype-specific flags
if (buildtype == 'release') {
cmd_parts.push('-O3', '-DNDEBUG')
cmd_partspush('-O3', '-DNDEBUG')
} else if (buildtype == 'debug') {
cmd_parts.push('-O2', '-g')
cmd_partspush('-O2', '-g')
} else if (buildtype == 'minsize') {
cmd_parts.push('-Os', '-DNDEBUG')
cmd_partspush('-Os', '-DNDEBUG')
}
cmd_parts.push('-DCELL_USE_NAME=' + sym_name)
cmd_parts.push('-I"' + pkg_dir + '"')
cmd_partspush('-DCELL_USE_NAME=' + sym_name)
cmd_partspush('-I"' + pkg_dir + '"')
// Add package CFLAGS (resolve relative -I paths)
arrfor(cflags, function(flag) {
if (starts_with(flag, '-I') && !starts_with(flag, '-I/')) {
flag = '-I"' + pkg_dir + '/' + text(flag, 2) + '"'
}
cmd_parts.push(flag)
cmd_partspush(flag)
})
// Add target CFLAGS
arrfor(target_cflags, function(flag) {
cmd_parts.push(flag)
cmd_partspush(flag)
})
cmd_parts.push('"' + src_path + '"')
cmd_partspush('"' + src_path + '"')
var cmd_str = text(cmd_parts, ' ')
@@ -181,7 +181,7 @@ Build.build_package = function(pkg, target = Build.detect_host_target(), exclude
arrfor(c_files, function(file) {
var obj = Build.compile_file(pkg, file, target, buildtype)
objects.push(obj)
objectspush(obj)
})
return objects
@@ -198,17 +198,17 @@ function compute_link_key(objects, ldflags, target_ldflags, target, cc) {
// Build a string representing all link inputs
var parts = []
parts.push('target:' + target)
parts.push('cc:' + cc)
partspush('target:' + target)
partspush('cc:' + cc)
arrfor(sorted_objects, function(obj) {
// Object paths are content-addressed, so the path itself is the hash
parts.push('obj:' + obj)
partspush('obj:' + obj)
})
arrfor(ldflags, function(flag) {
parts.push('ldflag:' + flag)
partspush('ldflag:' + flag)
})
arrfor(target_ldflags, function(flag) {
parts.push('target_ldflag:' + flag)
partspush('target_ldflag:' + flag)
})
return content_hash(text(parts, '\n'))
@@ -249,7 +249,7 @@ Build.build_dynamic = function(pkg, target = Build.detect_host_target(), buildty
if (starts_with(flag, '-L') && !starts_with(flag, '-L/')) {
flag = '-L"' + pkg_dir + '/' + text(flag, 2) + '"'
}
resolved_ldflags.push(flag)
resolved_ldflagspush(flag)
})
// Compute link key
@@ -279,46 +279,46 @@ Build.build_dynamic = function(pkg, target = Build.detect_host_target(), buildty
// Platform-specific flags for undefined symbols (resolved at dlopen) and size optimization
if (tc.system == 'darwin') {
// Allow undefined symbols - they will be resolved when dlopen'd into the main executable
cmd_parts.push('-undefined', 'dynamic_lookup')
cmd_partspush('-undefined', 'dynamic_lookup')
// Dead-strip unused code
cmd_parts.push('-Wl,-dead_strip')
cmd_partspush('-Wl,-dead_strip')
// Set install_name to stable path so runtime finds it correctly
cmd_parts.push('-Wl,-install_name,' + stable_path)
cmd_partspush('-Wl,-install_name,' + stable_path)
// rpath for .cell/local libraries
cmd_parts.push('-Wl,-rpath,@loader_path/../local')
cmd_parts.push('-Wl,-rpath,' + local_dir)
cmd_partspush('-Wl,-rpath,@loader_path/../local')
cmd_partspush('-Wl,-rpath,' + local_dir)
} else if (tc.system == 'linux') {
// Allow undefined symbols at link time
cmd_parts.push('-Wl,--allow-shlib-undefined')
cmd_partspush('-Wl,--allow-shlib-undefined')
// Garbage collect unused sections
cmd_parts.push('-Wl,--gc-sections')
cmd_partspush('-Wl,--gc-sections')
// rpath for .cell/local libraries
cmd_parts.push('-Wl,-rpath,$ORIGIN/../local')
cmd_parts.push('-Wl,-rpath,' + local_dir)
cmd_partspush('-Wl,-rpath,$ORIGIN/../local')
cmd_partspush('-Wl,-rpath,' + local_dir)
} else if (tc.system == 'windows') {
// Windows DLLs: use --allow-shlib-undefined for mingw
cmd_parts.push('-Wl,--allow-shlib-undefined')
cmd_partspush('-Wl,--allow-shlib-undefined')
}
// Add .cell/local to library search path
cmd_parts.push('-L"' + local_dir + '"')
cmd_partspush('-L"' + local_dir + '"')
arrfor(objects, function(obj) {
cmd_parts.push('"' + obj + '"')
cmd_partspush('"' + obj + '"')
})
// Do NOT link against core library - symbols resolved at dlopen time
// Add LDFLAGS
arrfor(resolved_ldflags, function(flag) {
cmd_parts.push(flag)
cmd_partspush(flag)
})
arrfor(target_ldflags, function(flag) {
cmd_parts.push(flag)
cmd_partspush(flag)
})
cmd_parts.push('-o', '"' + store_path + '"')
cmd_partspush('-o', '"' + store_path + '"')
var cmd_str = text(cmd_parts, ' ')
@@ -359,7 +359,7 @@ Build.build_static = function(packages, target = Build.detect_host_target(), out
var objects = Build.build_package(pkg, target, !is_core, buildtype)
arrfor(objects, function(obj) {
all_objects.push(obj)
all_objectspush(obj)
})
// Collect LDFLAGS (with sigil replacement)
@@ -375,7 +375,7 @@ Build.build_static = function(packages, target = Build.detect_host_target(), out
if (starts_with(flag, '-L') && !starts_with(flag, '-L/')) {
flag = '-L"' + pkg_dir + '/' + text(flag, 2) + '"'
}
all_ldflags.push(flag)
all_ldflagspush(flag)
})
}
})
@@ -396,18 +396,18 @@ Build.build_static = function(packages, target = Build.detect_host_target(), out
var cmd_parts = [cc]
arrfor(all_objects, function(obj) {
cmd_parts.push('"' + obj + '"')
cmd_partspush('"' + obj + '"')
})
arrfor(all_ldflags, function(flag) {
cmd_parts.push(flag)
cmd_partspush(flag)
})
arrfor(target_ldflags, function(flag) {
cmd_parts.push(flag)
cmd_partspush(flag)
})
cmd_parts.push('-o', '"' + output + '"')
cmd_partspush('-o', '"' + output + '"')
var cmd_str = text(cmd_parts, ' ')
@@ -436,10 +436,10 @@ Build.build_all_dynamic = function(target, buildtype = 'release') {
if (find(packages, 'core') != null) {
try {
var lib = Build.build_dynamic('core', target, buildtype)
results.push({ package: 'core', library: lib })
resultspush({ package: 'core', library: lib })
} catch (e) {
log.error('Failed to build core: ' + text(e))
results.push({ package: 'core', error: e })
resultspush({ package: 'core', error: e })
}
}
@@ -449,11 +449,11 @@ Build.build_all_dynamic = function(target, buildtype = 'release') {
try {
var lib = Build.build_dynamic(pkg, target, buildtype)
results.push({ package: pkg, library: lib })
resultspush({ package: pkg, library: lib })
} catch (e) {
log.error('Failed to build ' + pkg + ': ')
log.error(e)
results.push({ package: pkg, error: e })
resultspush({ package: pkg, error: e })
}
})

View File

@@ -169,18 +169,14 @@ function mount(source, name) {
throw Error("Unsupported mount source type: " + source)
}
mounts.push(mount_info)
push(mounts, mount_info)
}
// Unmount
function unmount(name_or_source) {
for (var i = 0; i < length(mounts); i++) {
if (mounts[i].name == name_or_source || mounts[i].source == name_or_source) {
mounts.splice(i, 1)
return
}
}
throw Error("Mount not found: " + name_or_source)
mounts = filter(mounts, function(mount) {
return mount.name != name_or_source && mount.source != name_or_source
})
}
// Read file
@@ -322,7 +318,7 @@ function enumerate(path, recurse) {
arrfor(list, function(item) {
var item_rel = rel_prefix ? rel_prefix + "/" + item : item
results.push(item_rel)
push(results, item_rel)
if (recurse) {
var st = fd.stat(fd.join_paths(curr_full, item))
@@ -361,7 +357,7 @@ function enumerate(path, recurse) {
if (!seen[rel]) {
seen[rel] = true
results.push(rel)
push(results, rel)
}
}
})
@@ -415,7 +411,7 @@ function globfs(globs, dir) {
}
} else {
if (!check_neg(item_rel) && check_pos(item_rel)) {
results.push(item_rel)
push(results, item_rel)
}
}
})
@@ -438,7 +434,7 @@ function globfs(globs, dir) {
if (length(rel) == 0) return
if (!check_neg(rel) && check_pos(rel)) {
results.push(rel)
push(results, rel)
}
}
})

View File

@@ -94,13 +94,13 @@ if (is_shop_scope) {
packages_to_clean = shop.list_packages()
} else {
// Single package
packages_to_clean.push(scope)
push(packages_to_clean, scope)
if (deep) {
try {
var deps = pkg.gather_dependencies(scope)
arrfor(deps, function(dep) {
packages_to_clean.push(dep)
push(packages_to_clean, dep)
})
} catch (e) {
// Skip if can't read dependencies
@@ -117,10 +117,10 @@ if (clean_build) {
if (is_shop_scope) {
// Clean entire build and lib directories
if (fd.is_dir(build_dir)) {
dirs_to_delete.push(build_dir)
push(dirs_to_delete, build_dir)
}
if (fd.is_dir(lib_dir)) {
dirs_to_delete.push(lib_dir)
push(dirs_to_delete, lib_dir)
}
} else {
// Clean specific package libraries
@@ -132,17 +132,17 @@ if (clean_build) {
var lib_path = lib_dir + '/' + lib_name + dylib_ext
if (fd.is_file(lib_path)) {
files_to_delete.push(lib_path)
push(files_to_delete, lib_path)
}
// Also check for .so and .dll
var so_path = lib_dir + '/' + lib_name + '.so'
var dll_path = lib_dir + '/' + lib_name + '.dll'
if (fd.is_file(so_path)) {
files_to_delete.push(so_path)
push(files_to_delete, so_path)
}
if (fd.is_file(dll_path)) {
files_to_delete.push(dll_path)
push(files_to_delete, dll_path)
}
})
}
@@ -152,7 +152,7 @@ if (clean_fetch) {
if (is_shop_scope) {
// Clean entire packages directory (dangerous!)
if (fd.is_dir(packages_dir)) {
dirs_to_delete.push(packages_dir)
push(dirs_to_delete, packages_dir)
}
} else {
// Clean specific package directories
@@ -161,7 +161,7 @@ if (clean_fetch) {
var pkg_dir = shop.get_package_dir(p)
if (fd.is_dir(pkg_dir) || fd.is_link(pkg_dir)) {
dirs_to_delete.push(pkg_dir)
push(dirs_to_delete, pkg_dir)
}
})
}

View File

@@ -92,12 +92,11 @@ try {
for (var i = 0; i < count; i++) {
if (zip.is_directory(i)) continue
var filename = zip.get_filename(i)
var parts = array(filename, '/')
if (length(parts) <= 1) continue
// Skip the first directory (repo-commit prefix)
parts.shift()
var rel_path = text(parts, '/')
var first_slash = search(filename, '/')
if (first_slash == null) continue
if (first_slash + 1 >= length(filename)) continue
var rel_path = text(filename, first_slash + 1)
var full_path = target_path + '/' + rel_path
var dir_path = fd.dirname(full_path)

2
fd.cm
View File

@@ -82,7 +82,7 @@ fd.globfs = function(globs, dir) {
}
} else {
if (!check_neg(item_rel) && check_pos(item_rel)) {
results.push(item_rel)
push(results, item_rel)
}
}
});

View File

@@ -39,7 +39,7 @@ if (target_pkg) {
log.error("Package not found: " + target_pkg)
$stop()
}
packages_to_fetch.push(target_pkg)
push(packages_to_fetch, target_pkg)
} else {
// Fetch all packages
packages_to_fetch = all_packages
@@ -80,10 +80,10 @@ arrfor(packages_to_fetch, function(pkg) {
log.console("")
var parts = []
if (downloaded_count > 0) parts.push(`${text(downloaded_count)} downloaded`)
if (cached_count > 0) parts.push(`${text(cached_count)} cached`)
if (fail_count > 0) parts.push(`${text(fail_count)} failed`)
if (length(parts) == 0) parts.push("nothing to fetch")
if (downloaded_count > 0) push(parts, `${text(downloaded_count)} downloaded`)
if (cached_count > 0) push(parts, `${text(cached_count)} cached`)
if (fail_count > 0) push(parts, `${text(fail_count)} failed`)
if (length(parts) == 0) push(parts, "nothing to fetch")
log.console("Fetch complete: " + text(parts, ", "))
$stop()

View File

@@ -97,7 +97,7 @@ function gather_graph(locator, visited) {
arrfor(array(deps), function(alias) {
var dep_locator = deps[alias]
add_node(dep_locator)
edges.push({ from: locator, to: dep_locator, alias: alias })
push(edges, { from: locator, to: dep_locator, alias: alias })
gather_graph(dep_locator, visited)
})
}
@@ -114,7 +114,7 @@ if (show_world) {
var packages = shop.list_packages()
arrfor(packages, function(p) {
if (p != 'core') {
roots.push(p)
push(roots, p)
}
})
} else {
@@ -131,7 +131,7 @@ if (show_world) {
}
}
roots.push(target_locator)
push(roots, target_locator)
}
arrfor(roots, function(root) {
@@ -159,7 +159,7 @@ if (format == 'tree') {
var children = []
arrfor(edges, function(e) {
if (e.from == locator) {
children.push(e)
push(children, e)
}
})
@@ -175,7 +175,7 @@ if (format == 'tree') {
var children = []
arrfor(edges, function(e) {
if (e.from == roots[i]) {
children.push(e)
push(children, e)
}
})
@@ -225,7 +225,7 @@ if (format == 'tree') {
}
arrfor(array(nodes), function(id) {
output.nodes.push(nodes[id])
push(output.nodes, nodes[id])
})
output.edges = edges

View File

@@ -88,12 +88,12 @@ function gather_packages(pkg_locator) {
// Check if this is a local path that doesn't exist
if (starts_with(pkg_locator, '/') && !fd.is_dir(pkg_locator)) {
skipped_packages.push(pkg_locator)
push(skipped_packages, pkg_locator)
log.console(" Skipping missing local package: " + pkg_locator)
return
}
packages_to_install.push(pkg_locator)
push(packages_to_install, pkg_locator)
// Try to read dependencies
try {

View File

@@ -468,7 +468,7 @@ $_.start = function start(cb, program) {
program,
}
greeters[id] = cb
message_queue.push({ startup })
push(message_queue, { startup })
}
// stops an underling or self.
@@ -517,7 +517,7 @@ $_.couple = function couple(actor) {
}
function actor_prep(actor, send) {
message_queue.push({actor,send});
push(message_queue, {actor,send});
}
// Send a message immediately without queuing

View File

@@ -394,7 +394,7 @@ function inject_bindings_code(inject) {
for (var i = 0; i < length(inject); i++) {
var inj = inject[i]
var key = trim(inj, '$')
lines.push(`var $${key} = env["${key}"];`)
push(lines, `var $${key} = env["${key}"];`)
}
return text(lines, '\n')
}
@@ -1108,11 +1108,10 @@ function install_zip(zip_blob, target_dir) {
for (var i = 0; i < count; i++) {
if (zip.is_directory(i)) continue
var filename = zip.get_filename(i)
var parts = array(filename, '/')
if (length(parts) <= 1) continue
parts.shift()
var rel_path = text(parts, '/')
var slash_pos = search(filename, '/')
if (slash_pos == null) continue
if (slash_pos + 1 >= length(filename)) continue
var rel_path = text(filename, slash_pos + 1)
var full_path = target_dir + '/' + rel_path
var dir_path = fd.dirname(full_path)
@@ -1214,7 +1213,7 @@ function get_package_scripts(package)
for (var i = 0; i < length(files); i++) {
var file = files[i]
if (ends_with(file, '.cm') || ends_with(file, '.ce')) {
scripts.push(file)
push(scripts, file)
}
}
@@ -1289,7 +1288,7 @@ Shop.audit_packages = function() {
if (package == 'core') return
if (fd.is_dir(package)) return
if (fetch_remote_hash(package)) return
bad.push(package)
push(bad, package)
})
return bad

View File

@@ -222,11 +222,11 @@ Link.sync_all = function(shop) {
// Validate target exists
var link_target = resolve_link_target(target)
if (!fd.is_dir(link_target)) {
errors.push(canonical + ': target ' + link_target + ' does not exist')
push(errors, canonical + ': target ' + link_target + ' does not exist')
return
}
if (!fd.is_file(link_target + '/cell.toml')) {
errors.push(canonical + ': target ' + link_target + ' is not a valid package')
push(errors, canonical + ': target ' + link_target + ' is not a valid package')
return
}
@@ -259,7 +259,7 @@ Link.sync_all = function(shop) {
count++
} catch (e) {
errors.push(canonical + ': ' + e.message)
push(errors, canonical + ': ' + e.message)
}
})

14
list.ce
View File

@@ -80,16 +80,16 @@ function print_deps(ctx, indent) {
// Add status indicators
var status = []
if (link_target) {
status.push("linked -> " + link_target)
push(status, "linked -> " + link_target)
}
if (lock_entry && lock_entry.commit) {
status.push("@" + text(lock_entry.commit, 0, 8))
push(status, "@" + text(lock_entry.commit, 0, 8))
}
if (lock_entry && lock_entry.type == 'local') {
status.push("local")
push(status, "local")
}
if (!lock_entry) {
status.push("not installed")
push(status, "not installed")
}
if (length(status) > 0) {
@@ -127,11 +127,11 @@ if (mode == 'local') {
var link_target = links[p]
if (link_target) {
linked_pkgs.push(p)
push(linked_pkgs, p)
} else if (lock_entry && lock_entry.type == 'local') {
local_pkgs.push(p)
push(local_pkgs, p)
} else {
remote_pkgs.push(p)
push(remote_pkgs, p)
}
})

View File

@@ -88,9 +88,9 @@ var packages = ['core']
var deps = pkg_tools.gather_dependencies(target_package)
for (var i = 0; i < length(deps); i++) {
packages.push(deps[i])
push(packages, deps[i])
}
packages.push(target_package)
push(packages, target_package)
// Remove duplicates
var unique_packages = []
@@ -98,7 +98,7 @@ var seen = {}
for (var i = 0; i < length(packages); i++) {
if (!seen[packages[i]]) {
seen[packages[i]] = true
unique_packages.push(packages[i])
push(unique_packages, packages[i])
}
}
packages = unique_packages

View File

@@ -223,7 +223,7 @@ package.list_files = function(pkg) {
if (st.isDirectory) {
walk(full_path, rel_path)
} else {
files.push(rel_path)
push(files, rel_path)
}
}
}
@@ -239,7 +239,7 @@ package.list_modules = function(name) {
var modules = []
for (var i = 0; i < length(files); i++) {
if (ends_with(files[i], '.cm')) {
modules.push(text(files[i], 0, -3))
push(modules, text(files[i], 0, -3))
}
}
return modules
@@ -250,7 +250,7 @@ package.list_programs = function(name) {
var programs = []
for (var i = 0; i < length(files); i++) {
if (ends_with(files[i], '.ce')) {
programs.push(text(files[i], 0, -3))
push(programs, text(files[i], 0, -3))
}
}
return programs
@@ -346,7 +346,7 @@ package.get_c_files = function(name, target, exclude_main) {
var basename = fd.basename(selected)
if (basename == 'main.c' || starts_with(basename, 'main_')) return
}
result.push(selected)
push(result, selected)
}
})

View File

@@ -131,7 +131,7 @@ if (!is_array(arg) || length(arg) < 1) {
}
for (; i < length(arg) - 1; i++) {
sources.push(arg[i])
push(sources, arg[i])
}
archive = arg[length(arg) - 1]

View File

@@ -78,7 +78,7 @@ if (prune) {
arrfor(all_packages, function(p) {
if (p == 'core') return
if (!needed[p] && find(packages_to_remove, p) == null) {
packages_to_remove.push(p)
push(packages_to_remove, p)
}
})
}

View File

@@ -145,11 +145,11 @@ for (var i = 0; i < length(sorted); i++) {
// Format output
var status_parts = []
if (is_linked) status_parts.push("linked")
if (is_local) status_parts.push("local")
if (!is_in_lock) status_parts.push("not in lock")
if (!is_fetched) status_parts.push("not fetched")
if (is_built) status_parts.push("built")
if (is_linked) push(status_parts, "linked")
if (is_local) push(status_parts, "local")
if (!is_in_lock) push(status_parts, "not in lock")
if (!is_fetched) push(status_parts, "not fetched")
if (is_built) push(status_parts, "built")
var commit_str = ""
if (lock_entry && lock_entry.commit) {

View File

@@ -22,7 +22,7 @@ var packages = shop.list_packages()
arrfor(packages, function(package_name) {
// Check if package name matches
if (search(package_name, query) != null) {
found_packages.push(package_name)
push(found_packages, package_name)
}
// Search modules and actors within the package
@@ -30,14 +30,14 @@ arrfor(packages, function(package_name) {
var modules = pkg.list_modules(package_name)
arrfor(modules, function(mod) {
if (search(mod, query) != null) {
found_modules.push(package_name + ':' + mod)
push(found_modules, package_name + ':' + mod)
}
})
var actors = pkg.list_programs(package_name)
arrfor(actors, function(actor) {
if (search(actor, query) != null) {
found_actors.push(package_name + ':' + actor)
push(found_actors, package_name + ':' + actor)
}
})
} catch (e) {

View File

@@ -27078,11 +27078,6 @@ static JSValue js_error_toString(JSContext *ctx, JSValueConst this_val,
return JS_ConcatString(ctx, name, msg);
}
static const JSCFunctionListEntry js_error_proto_funcs[] = {
JS_PROP_STRING_DEF("name", "Error", JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE ),
JS_PROP_STRING_DEF("message", "", JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE ),
};
/* Array */
static int JS_CopySubArray(JSContext *ctx,
@@ -27182,27 +27177,6 @@ fail:
return JS_EXCEPTION;
}
static JSValue JS_ArraySpeciesCreate(JSContext *ctx, JSValueConst obj,
JSValueConst len_val)
{
/* Always use the array constructor - no species/constructor lookup */
return js_array_constructor(ctx, JS_NULL, 1, &len_val);
}
static int JS_isConcatSpreadable(JSContext *ctx, JSValueConst obj)
{
JSValue val;
if (!JS_IsObject(obj))
return FALSE;
val = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_isConcatSpreadable);
if (JS_IsException(val))
return -1;
if (!JS_IsNull(val))
return JS_ToBoolFree(ctx, val);
return JS_IsArray(ctx, obj);
}
static JSValue js_array_includes(JSContext *ctx, JSValueConst this_val,
int argc, JSValueConst *argv)
{
@@ -27343,113 +27317,6 @@ static JSValue js_array_push(JSContext *ctx, JSValueConst this_val,
return JS_EXCEPTION;
}
static JSValue js_array_slice(JSContext *ctx, JSValueConst this_val,
int argc, JSValueConst *argv, int splice)
{
JSValue obj, arr, val, len_val;
int64_t len, start, k, final, n, count, del_count, new_len;
int kPresent;
JSValue *arrp;
uint32_t count32, i, item_count;
arr = JS_NULL;
obj = JS_ToObject(ctx, this_val);
if (js_get_length64(ctx, &len, obj))
goto exception;
if (JS_ToInt64Clamp(ctx, &start, argv[0], 0, len, len))
goto exception;
if (splice) {
if (argc == 0) {
item_count = 0;
del_count = 0;
} else
if (argc == 1) {
item_count = 0;
del_count = len - start;
} else {
item_count = argc - 2;
if (JS_ToInt64Clamp(ctx, &del_count, argv[1], 0, len - start, 0))
goto exception;
}
if (len + item_count - del_count > MAX_SAFE_INTEGER) {
JS_ThrowTypeError(ctx, "Array loo long");
goto exception;
}
count = del_count;
} else {
item_count = 0; /* avoid warning */
final = len;
if (!JS_IsNull(argv[1])) {
if (JS_ToInt64Clamp(ctx, &final, argv[1], 0, len, len))
goto exception;
}
count = max_int64(final - start, 0);
}
len_val = JS_NewInt64(ctx, count);
arr = JS_ArraySpeciesCreate(ctx, obj, len_val);
JS_FreeValue(ctx, len_val);
if (JS_IsException(arr))
goto exception;
k = start;
final = start + count;
n = 0;
/* The fast array test on arr ensures that
JS_CreateDataPropertyUint32() won't modify obj in case arr is
an exotic object */
/* Special case fast arrays */
if (js_get_fast_array(ctx, obj, &arrp, &count32) &&
js_is_fast_array(ctx, arr)) {
/* XXX: should share code with fast array constructor */
for (; k < final && k < count32; k++, n++) {
if (JS_CreateDataPropertyUint32(ctx, arr, n, JS_DupValue(ctx, arrp[k]), JS_PROP_THROW) < 0)
goto exception;
}
}
/* Copy the remaining elements if any (handle case of inherited properties) */
for (; k < final; k++, n++) {
kPresent = JS_TryGetPropertyInt64(ctx, obj, k, &val);
if (kPresent < 0)
goto exception;
if (kPresent) {
if (JS_CreateDataPropertyUint32(ctx, arr, n, val, JS_PROP_THROW) < 0)
goto exception;
}
}
if (JS_SetProperty(ctx, arr, JS_ATOM_length, JS_NewInt64(ctx, n)) < 0)
goto exception;
if (splice) {
new_len = len + item_count - del_count;
if (item_count != del_count) {
if (JS_CopySubArray(ctx, obj, start + item_count,
start + del_count, len - (start + del_count),
item_count <= del_count ? +1 : -1) < 0)
goto exception;
for (k = len; k-- > new_len; ) {
if (JS_DeletePropertyInt64(ctx, obj, k, JS_PROP_THROW) < 0)
goto exception;
}
}
for (i = 0; i < item_count; i++) {
if (JS_SetPropertyInt64(ctx, obj, start + i, JS_DupValue(ctx, argv[i + 2])) < 0)
goto exception;
}
if (JS_SetProperty(ctx, obj, JS_ATOM_length, JS_NewInt64(ctx, new_len)) < 0)
goto exception;
}
JS_FreeValue(ctx, obj);
return arr;
exception:
JS_FreeValue(ctx, obj);
JS_FreeValue(ctx, arr);
return JS_EXCEPTION;
}
static int64_t JS_FlattenIntoArray(JSContext *ctx, JSValueConst target,
JSValueConst source, int64_t sourceLen,
int64_t targetIndex, int depth,
@@ -27529,15 +27396,6 @@ static JSValue js_create_array(JSContext *ctx, int len, JSValueConst *tab)
return obj;
}
static const JSCFunctionListEntry js_array_proto_funcs[] = {
JS_CFUNC_MAGIC_DEF("pop", 0, js_array_pop, 0 ),
JS_CFUNC_MAGIC_DEF("push", 1, js_array_push, 0 ),
JS_CFUNC_MAGIC_DEF("shift", 0, js_array_pop, 1 ),
JS_CFUNC_MAGIC_DEF("unshift", 1, js_array_push, 1 ),
JS_CFUNC_MAGIC_DEF("slice", 2, js_array_slice, 0 ),
JS_CFUNC_MAGIC_DEF("splice", 2, js_array_slice, 1 ),
};
/* String */
static int js_string_get_own_property(JSContext *ctx,
JSPropertyDescriptor *desc,
@@ -32761,6 +32619,71 @@ static JSValue js_cell_reverse(JSContext *ctx, JSValueConst this_val,
* proto() function - get prototype of an object
* ============================================================================ */
static JSValue js_cell_pop(JSContext *ctx, JSValueConst this_val,
int argc, JSValueConst *argv)
{
if (argc < 1)
return JS_NULL;
JSValue obj = argv[0];
if (!JS_IsArray(ctx, obj))
return JS_NULL;
JSValue length_val = JS_GetPropertyStr(ctx, obj, "length");
int64_t len;
if (JS_ToInt64(ctx, &len, length_val) < 0) {
JS_FreeValue(ctx, length_val);
return JS_EXCEPTION;
}
JS_FreeValue(ctx, length_val);
if (len <= 0)
return JS_NULL;
JSValue val = JS_GetPropertyInt64(ctx, obj, len - 1);
if (JS_IsException(val))
return val;
if (JS_DeletePropertyInt64(ctx, obj, len - 1, JS_PROP_THROW) < 0) {
JS_FreeValue(ctx, val);
return JS_EXCEPTION;
}
if (JS_SetPropertyStr(ctx, obj, "length", JS_NewInt64(ctx, len - 1)) < 0) {
JS_FreeValue(ctx, val);
return JS_EXCEPTION;
}
return val;
}
static JSValue js_cell_push(JSContext *ctx, JSValueConst this_val,
int argc, JSValueConst *argv)
{
if (argc < 1)
return JS_NULL;
JSValue obj = argv[0];
if (!JS_IsArray(ctx, obj))
return JS_NULL;
JSValue length_val = JS_GetPropertyStr(ctx, obj, "length");
int64_t len;
if (JS_ToInt64(ctx, &len, length_val) < 0) {
JS_FreeValue(ctx, length_val);
return JS_EXCEPTION;
}
JS_FreeValue(ctx, length_val);
for (int i = 1; i < argc; i++) {
if (JS_SetPropertyInt64(ctx, obj, len, JS_DupValue(ctx, argv[i])) < 0)
return JS_EXCEPTION;
len++;
}
return JS_NewInt64(ctx, len);
}
static JSValue js_cell_proto(JSContext *ctx, JSValueConst this_val,
int argc, JSValueConst *argv)
{
@@ -33251,10 +33174,6 @@ static void JS_AddIntrinsicBasicObjects(JSContext *ctx)
ctx->class_proto[JS_CLASS_BYTECODE_FUNCTION] = JS_DupValue(ctx, ctx->function_proto);
ctx->class_proto[JS_CLASS_ERROR] = JS_NewObject(ctx);
JS_SetPropertyFunctionList(ctx, ctx->class_proto[JS_CLASS_ERROR],
js_error_proto_funcs,
countof(js_error_proto_funcs));
for(i = 0; i < JS_NATIVE_ERROR_COUNT; i++) {
proto = JS_NewObjectProto(ctx, ctx->class_proto[JS_CLASS_ERROR]);
JS_DefinePropertyValue(ctx, proto, JS_ATOM_name,
@@ -33325,10 +33244,6 @@ void JS_AddIntrinsicBaseObjects(JSContext *ctx)
}
/* Array */
JS_SetPropertyFunctionList(ctx, ctx->class_proto[JS_CLASS_ARRAY],
js_array_proto_funcs,
countof(js_array_proto_funcs));
obj = JS_NewGlobalCConstructor(ctx, "Array", js_array_constructor, 1,
ctx->class_proto[JS_CLASS_ARRAY]);
ctx->array_ctor = JS_DupValue(ctx, obj);
@@ -33584,6 +33499,17 @@ void JS_AddIntrinsicBaseObjects(JSContext *ctx)
JS_DefinePropertyValueStr(ctx, ctx->global_obj, "pi",
JS_NewFloat64(ctx, 3.14159265358979323846264338327950288419716939937510),
JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
/* push() - add element to end of array */
JS_DefinePropertyValueStr(ctx, ctx->global_obj, "push",
JS_NewCFunction(ctx, js_cell_push, "push", 2),
JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
/* pop() - remove and return last element of array */
JS_DefinePropertyValueStr(ctx, ctx->global_obj, "pop",
JS_NewCFunction(ctx, js_cell_pop, "pop", 1),
JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
}
}

42
test.ce
View File

@@ -191,7 +191,7 @@ function collect_actor_tests(package_name, specific_test) {
if (test_base != match_base) continue
}
actor_tests.push({
push(actor_tests,{
package: package_name || "local",
file: f,
path: prefix + '/' + f
@@ -219,12 +219,12 @@ function spawn_actor_test(test_info) {
// Spawn the actor test - it should send back results
var actor_path = text(test_info.path, 0, -3) // remove .ce
entry.actor = $start(actor_path)
pending_actor_tests.push(entry)
push(pending_actor_tests, entry)
} catch (e) {
entry.status = "failed"
entry.error = { message: `Failed to spawn actor: ${e}` }
entry.duration_ns = 0
actor_test_results.push(entry)
push(actor_test_results, entry)
log.console(` FAIL ${test_name}: `)
log.error(e)
}
@@ -259,7 +259,7 @@ function run_tests(package_name, specific_test) {
var match_base = ends_with(match_name, '.cm') ? text(match_name, 0, -3) : match_name
if (test_name != match_base) continue
}
test_files.push(f)
push(test_files, f)
}
}
@@ -287,11 +287,11 @@ function run_tests(package_name, specific_test) {
var tests = []
if (is_function(test_mod)) {
tests.push({name: 'main', fn: test_mod})
push(tests, {name: 'main', fn: test_mod})
} else if (is_object(test_mod)) {
arrfor(array(test_mod), function(k) {
if (is_function(test_mod[k])) {
tests.push({name: k, fn: test_mod[k]})
push(tests, {name: k, fn: test_mod[k]})
}
})
}
@@ -344,7 +344,7 @@ function run_tests(package_name, specific_test) {
var end_time = time.number()
test_entry.duration_ns = round((end_time - start_time) * 1000000000)
file_result.tests.push(test_entry)
push(file_result.tests, test_entry)
pkg_result.total++
}
}
@@ -358,12 +358,12 @@ function run_tests(package_name, specific_test) {
duration_ns: 0,
error: { message: `Error loading module: ${e}` }
}
file_result.tests.push(test_entry)
push(file_result.tests, test_entry)
pkg_result.failed++
file_result.failed++
pkg_result.total++
}
pkg_result.files.push(file_result)
push(pkg_result.files, file_result)
}
return pkg_result
}
@@ -374,18 +374,18 @@ var all_actor_tests = []
if (all_pkgs) {
// Run local first if we're in a valid package
if (is_valid_package('.')) {
all_results.push(run_tests(null, null))
push(all_results, run_tests(null, null))
all_actor_tests = array(all_actor_tests, collect_actor_tests(null, null))
}
// Then all packages in lock
var packages = shop.list_packages()
for (var i = 0; i < length(packages); i++) {
all_results.push(run_tests(packages[i], null))
push(all_results, run_tests(packages[i], null))
all_actor_tests = array(all_actor_tests, collect_actor_tests(packages[i], null))
}
} else {
all_results.push(run_tests(target_pkg, target_test))
push(all_results, run_tests(target_pkg, target_test))
all_actor_tests = array(all_actor_tests, collect_actor_tests(target_pkg, target_test))
}
@@ -411,7 +411,7 @@ function handle_actor_message(msg) {
if (found_idx == -1) return
var base_entry = pending_actor_tests[found_idx]
pending_actor_tests.splice(found_idx, 1)
pending_actor_tests = array(array(pending_actor_tests, 0, found_idx), array(pending_actor_tests, found_idx + 1))
var end_time = time.number()
var duration_ns = round((end_time - base_entry.start_time) * 1000000000)
@@ -447,7 +447,7 @@ function handle_actor_message(msg) {
log.console(` FAIL ${entry.test}: ${entry.error.message}`)
}
actor_test_results.push(entry)
push(actor_test_results, entry)
}
check_completion()
@@ -462,19 +462,19 @@ function check_timeouts() {
var entry = pending_actor_tests[i]
var elapsed_ms = (now - entry.start_time) * 1000
if (elapsed_ms > ACTOR_TEST_TIMEOUT) {
timed_out.push(i)
push(timed_out, i)
}
}
for (var i = 0; i < length(timed_out); i++) {
var idx = timed_out[i]
var entry = pending_actor_tests[idx]
pending_actor_tests.splice(idx, 1)
pending_actor_tests = array(array(pending_actor_tests, 0, idx), array(pending_actor_tests, idx + 1))
entry.status = "failed"
entry.error = { message: "Test timed out" }
entry.duration_ns = ACTOR_TEST_TIMEOUT * 1000000
actor_test_results.push(entry)
push(actor_test_results, entry)
log.console(` TIMEOUT ${entry.test}`)
}
@@ -507,7 +507,7 @@ function finalize_results() {
}
if (!pkg_result) {
pkg_result = { package: r.package, files: [], total: 0, passed: 0, failed: 0 }
all_results.push(pkg_result)
push(all_results, pkg_result)
}
var file_result = null
@@ -519,10 +519,10 @@ function finalize_results() {
}
if (!file_result) {
file_result = { name: r.file, tests: [], passed: 0, failed: 0 }
pkg_result.files.push(file_result)
push(pkg_result.files, file_result)
}
file_result.tests.push(r)
push(file_result.tests, r)
pkg_result.total++
if (r.status == "passed") {
pkg_result.passed++
@@ -639,7 +639,7 @@ Total: ${totals.total}, Passed: ${totals.passed}, Failed: ${totals.failed}
for (var j = 0; j < length(pkg_res.files); j++) {
var f = pkg_res.files[j]
for (var k = 0; k < length(f.tests); k++) {
pkg_tests.push(f.tests[k])
push(pkg_tests, f.tests[k])
}
}

View File

@@ -109,7 +109,7 @@ function makeTest(test) {
var testarr = []
for (var i = 0; i < 500; i++) {
testarr.push(1)
push(testarr, 1)
}
var testCases = [

View File

@@ -561,14 +561,14 @@ return {
test_array_push: function() {
var arr = [1, 2]
arr.push(3)
push(arr, 3)
if (length(arr) != 3) throw "array push length failed"
if (arr[2] != 3) throw "array push value failed"
},
test_array_pop: function() {
var arr = [1, 2, 3]
var val = arr.pop()
var val = pop(arr)
if (val != 3) throw "array pop value failed"
if (length(arr) != 2) throw "array pop length failed"
},
@@ -1474,39 +1474,6 @@ return {
// ARRAY METHODS
// ============================================================================
test_array_shift: function() {
var arr = [1, 2, 3]
var first = arr.shift()
if (first != 1) throw "array shift value failed"
if (length(arr) != 2) throw "array shift length failed"
if (arr[0] != 2) throw "array shift remaining failed"
},
test_array_unshift: function() {
var arr = [2, 3]
arr.unshift(1)
if (length(arr) != 3) throw "array unshift length failed"
if (arr[0] != 1) throw "array unshift value failed"
},
test_array_splice: function() {
var arr = [1, 2, 3, 4, 5]
var removed = arr.splice(1, 2)
if (length(removed) != 2) throw "array splice removed length failed"
if (removed[0] != 2) throw "array splice removed values failed"
if (length(arr) != 3) throw "array splice remaining length failed"
if (arr[1] != 4) throw "array splice remaining values failed"
},
test_array_slice: function() {
var arr = [1, 2, 3, 4, 5]
var sliced = array(arr, 1, 3)
if (length(sliced) != 2) throw "array slice length failed"
if (sliced[0] != 2) throw "array slice first failed"
if (sliced[1] != 3) throw "array slice second failed"
if (length(arr) != 5) throw "array slice should not mutate original"
},
test_array_concat: function() {
var arr1 = [1, 2]
var arr2 = [3, 4]
@@ -2102,7 +2069,7 @@ return {
test_function_proxy_args_array_is_real_array: function() {
var proxy = function(name, args) {
if (!is_array(args)) throw "args should be array"
args.push(4)
push(args, 4)
return length(args)
}
var result = proxy.test(1, 2, 3)
@@ -3135,7 +3102,7 @@ return {
test_arrfor_with_index: function() {
var arr = ["a", "b", "c"]
var indices = []
arrfor(arr, (x, i) => { indices.push(i) })
arrfor(arr, (x, i) => { push(indices, i) })
if (indices[0] != 0 || indices[2] != 2) throw "arrfor with index failed"
},
@@ -3148,7 +3115,7 @@ return {
test_arrfor_mutation: function() {
var arr = [1, 2, 3]
var results = []
arrfor(arr, x => { results.push(x * 2) })
arrfor(arr, x => { push(results, x * 2) })
if (results[0] != 2 || results[1] != 4 || results[2] != 6) throw "arrfor mutation failed"
},

View File

@@ -58,7 +58,7 @@ function deep_compare(expected, actual, path) {
}
var testarr = []
for (var i = 0; i < 500; i++) { testarr.push(1) }
for (var i = 0; i < 500; i++) { push(testarr, 1) }
var testCases = [
{ name: 'zero', input: 0 },

16
toml.cm
View File

@@ -119,7 +119,7 @@ function parse_key_path(str) {
} else if (c == '.' && !in_quote) {
var piece = trim(current)
if (piece == null) piece = trim(current)
parts.push(parse_key(piece))
push(parts, parse_key(piece))
current = ''
continue
}
@@ -128,7 +128,7 @@ function parse_key_path(str) {
var tail = trim(current)
if (tail == null) tail = trim(current)
if (length(tail) > 0) parts.push(parse_key(tail))
if (length(tail) > 0) push(parts, parse_key(tail))
return parts
}
@@ -154,7 +154,7 @@ function parse_array(str) {
} else if (ch == ',' && !in_quotes) {
var piece = trim(current)
if (piece == null) piece = trim(current)
items.push(parse_value(piece))
push(items, parse_value(piece))
current = ''
} else {
current += ch
@@ -163,7 +163,7 @@ function parse_array(str) {
var last = trim(current)
if (last == null) last = trim(current)
if (last) items.push(parse_value(last))
if (last) push(items, parse_value(last))
return items
}
@@ -191,7 +191,7 @@ function encode_toml(obj) {
if (is_number(value)) return text(value)
if (is_array(value)) {
var items = []
for (var i = 0; i < length(value); i++) items.push(encode_value(value[i]))
for (var i = 0; i < length(value); i++) push(items, encode_value(value[i]))
return '[' + text(items, ', ') + ']'
}
return text(value)
@@ -209,7 +209,7 @@ function encode_toml(obj) {
for (var i = 0; i < length(keys); i++) {
var key = keys[i]
var value = obj[key]
if (!is_object(value)) result.push(quote_key(key) + ' = ' + encode_value(value))
if (!is_object(value)) push(result, quote_key(key) + ' = ' + encode_value(value))
}
// Second pass: encode nested objects
@@ -222,14 +222,14 @@ function encode_toml(obj) {
if (is_object(value)) {
var quoted = quote_key(key)
var section_path = path ? path + '.' + quoted : quoted
result.push('[' + section_path + ']')
push(result, '[' + section_path + ']')
// Direct properties
var section_keys = array(value)
for (var j = 0; j < length(section_keys); j++) {
var sk = section_keys[j]
var sv = value[sk]
if (!is_object(sv)) result.push(quote_key(sk) + ' = ' + encode_value(sv))
if (!is_object(sv)) push(result, quote_key(sk) + ' = ' + encode_value(sv))
}
// Nested sections

View File

@@ -100,7 +100,7 @@ var updated_packages = []
if (target_pkg) {
var updated = update_and_fetch(target_pkg)
if (updated) {
updated_packages.push(updated)
push(updated_packages, updated)
log.console("Updated " + target_pkg + ".")
} else {
log.console(target_pkg + " is up to date.")
@@ -116,7 +116,7 @@ if (target_pkg) {
var updated = update_and_fetch(pkg)
if (updated) {
updated_packages.push(updated)
push(updated_packages, updated)
}
}

View File

@@ -65,11 +65,11 @@ var warnings = []
var checked = 0
function add_error(msg) {
errors.push(msg)
push(errors, msg)
}
function add_warning(msg) {
warnings.push(msg)
push(warnings, msg)
}
// Verify a single package
@@ -212,12 +212,12 @@ if (scope == 'shop') {
if (deep) {
// Gather all dependencies
var all_deps = pkg.gather_dependencies(locator)
packages_to_verify.push(locator)
push(packages_to_verify, locator)
arrfor(all_deps, function(dep) {
packages_to_verify.push(dep)
push(packages_to_verify, dep)
})
} else {
packages_to_verify.push(locator)
push(packages_to_verify, locator)
}
}