;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016, 2017 Manolis Fragkiskos Ragkousis ;;; Copyright © 2018, 2020 Ludovic Courtès ;;; Copyright © 2020 Efraim Flashner ;;; Copyright © 2020 Marius Bakke ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2020 Ricardo Wurmus ;;; Copyright © 2020 Rene Saavedra ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'test/compress')
-rw-r--r--test/compress/evaluate.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/compress/evaluate.js b/test/compress/evaluate.js
index 2294ca01..614020ea 100644
--- a/test/compress/evaluate.js
+++ b/test/compress/evaluate.js
@@ -1502,3 +1502,36 @@ issue_2919: {
console.log("function(){}");
}
}
+
+issue_2926_1: {
+ options = {
+ evaluate: true,
+ reduce_vars: true,
+ unsafe: true,
+ }
+ input: {
+ (function f(a) {
+ console.log(f.name.length, f.length);
+ })();
+ }
+ expect: {
+ (function f(a) {
+ console.log(1, 1);
+ })();
+ }
+ expect_stdout: "1 1"
+}
+
+issue_2926_2: {
+ options = {
+ evaluate: true,
+ unsafe: true,
+ }
+ input: {
+ console.log(typeof function() {}.valueOf());
+ }
+ expect: {
+ console.log("function");
+ }
+ expect_stdout: "function"
+}
-name name version)))) (build-system gnu-build-system) (native-inputs `(("mig" ,mig) ("autoconf" ,autoconf) ("automake" ,automake))) (arguments `(#:phases (modify-phases %standard-phases (replace 'install (lambda _ (invoke "make" "install-headers" "no_deps=t"))) (delete 'build)) #:configure-flags '( ;; Pretend we're on GNU/Hurd; 'configure' wants ;; that. ,@(if (%current-target-system) '() '("--host=i586-pc-gnu")) ;; Reduce set of dependencies. "--without-parted" "--disable-ncursesw" "--disable-test" "--without-libbz2" "--without-libcrypt" "--without-libz" ;; Skip the clnt_create check because it expects ;; a working glibc causing a circular dependency. "ac_cv_search_clnt_create=no" ;; Annihilate the checks for the 'file_exec_paths' ;; & co. libc functions to avoid "link tests are ;; not allowed after AC_NO_EXECUTABLES" error. "ac_cv_func_file_exec_paths=no" "ac_cv_func_exec_exec_paths=no" "ac_cv_func__hurd_exec_paths=no" "ac_cv_func_file_futimens=no") #:tests? #f)) (home-page "https://www.gnu.org/software/hurd/hurd.html") (synopsis "GNU Hurd headers") (description "This package provides C headers of the GNU Hurd, used to build the GNU C Library and other user programs.") (license gpl2+)))) (define-public hurd-minimal (package (inherit hurd-headers) (name "hurd-minimal") (inputs `(("glibc-hurd-headers" ,glibc/hurd-headers))) (arguments (substitute-keyword-arguments (package-arguments hurd-headers) ((#:phases _) '(modify-phases %standard-phases (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) ;; We need to copy libihash.a to the output directory manually, ;; since there is no target for that in the makefile. (mkdir-p (string-append out "/include")) (copy-file "libihash/ihash.h" (string-append out "/include/ihash.h")) (mkdir-p (string-append out "/lib")) (copy-file "libihash/libihash.a" (string-append out "/lib/libihash.a")) #t))) (replace 'build (lambda _ ;; Install & co. (invoke "make" "-Clibshouldbeinlibc" "../include/assert-backtrace.h") ;; Build libihash. (invoke "make" "-Clibihash" "libihash.a"))))))) (home-page "https://www.gnu.org/software/hurd/hurd.html") (synopsis "GNU Hurd libraries") (description "This package provides libihash, needed to build the GNU C Library for GNU/Hurd.") (license gpl2+))) (define-public hurd-core-headers (package (name "hurd-core-headers") (version (package-version hurd-headers)) (source #f) (build-system trivial-build-system) (arguments '(#:modules ((guix build union)) #:builder (begin (use-modules (srfi srfi-1) (srfi srfi-26) (ice-9 match) (guix build union)) (let ((inputs (filter (compose (cute member <> '("gnumach-headers" "hurd-headers" "hurd-minimal")) car) %build-inputs))) (match inputs (((names . directories) ...) (union-build (assoc-ref %outputs "out") directories) #t)))))) (inputs `(("gnumach-headers" ,gnumach-headers) ("hurd-headers" ,hurd-headers) ("hurd-minimal" ,hurd-minimal))) (synopsis "Union of the Hurd headers and libraries") (description "This package contains the union of the Mach and Hurd headers and the Hurd-minimal package which are needed for both glibc and GCC.") (home-page (package-home-page hurd-headers)) (license (package-license hurd-headers)))) (define-public gnumach (package (inherit gnumach-headers) (name "gnumach") (arguments (substitute-keyword-arguments (package-arguments gnumach-headers) ((#:configure-flags flags ''()) `(cons "--enable-kdb" ,flags)) ;enable kernel debugger ((#:phases phases '%standard-phases) `(modify-phases %standard-phases (add-after 'install 'produce-image (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (boot (string-append out "/boot"))) (invoke "make" "gnumach.gz") (install-file "gnumach.gz" boot) #t))))))) (native-inputs `(("mig" ,mig) ("perl" ,perl) ("autoconf" ,autoconf) ("automake" ,automake) ("texinfo" ,texinfo-4))) (supported-systems (cons "i686-linux" %hurd-systems)) (synopsis "Microkernel of the GNU system") (description "GNU Mach is the microkernel upon which a GNU Hurd system is based."))) (define unifont ;; GNU Unifont, . ;; Used the the VGA driver of the Hurd's console client. (origin (method url-fetch) (uri "http://unifoundry.com/pub/unifont-7.0.06/font-builds/unifont-7.0.06.bdf.gz") (sha256 (base32 "0p2vhnc18cnbmb39vq4m7hzv4mhnm2l0a2s7gx3ar277fwng3hys")))) (define dde-sources ;; This is the current tip of the dde branch (let ((commit "ac1c7eb7a8b24b7469bed5365be38a968d59a136")) (origin (method git-fetch) (uri (git-reference (url "https://git.savannah.gnu.org/git/hurd/incubator.git") (commit commit))) (sha256 (base32 "1vryinbg75xpydfrv9dbgfnds6knlh8l8bk2rxp32y9dc58z0692")) (file-name (git-file-name "dde" commit))))) (define-public hurd (package (name "hurd") (version (package-version hurd-headers)) (source (origin (inherit (package-source hurd-headers)) (patches (search-patches "hurd-cross.patch" "hurd-xattr.patch")))) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'prepare-dde (lambda* (#:key native-inputs inputs #:allow-other-keys) (substitute* "Makefile" (("libbpf ") "libbpf libmachdev libmachdevdde libddekit")) (for-each make-file-writable (find-files ".")) (let ((dde (or (assoc-ref inputs "dde-sources") (assoc-ref native-inputs "dde-sources")))) (for-each (lambda (dir) (copy-recursively (string-append dde "/" dir ) dir)) '("libmachdev" "libmachdevdde" "libddekit"))) #t)) (add-after 'unpack 'find-tirpc (lambda* (#:key inputs #:allow-other-keys) (for-each (lambda (var) (setenv var (string-append (assoc-ref inputs "libtirpc") "/include/tirpc:" (or (getenv var) "")))) '("CROSS_C_INCLUDE_PATH" "C_INCLUDE_PATH" "CROSS_CPATH" "CPATH")) #t)) (add-after 'unpack 'fix-rpc-headers (lambda _ (substitute* "nfs/mount.c" (("#undef (TRUE|FALSE)") "") (("#include " m) (string-append "#include \n" m))) (substitute* '("nfsd/cache.c") (("#undef (TRUE|FALSE)") "")) (substitute* '("nfsd/loop.c" "nfsd/main.c" "nfsd/ops.c") (("#include " m) (string-append "#include \n#include \n" m))) #t)) (add-before 'build 'pre-build (lambda _ ;; Don't change the ownership of any file at this time. (substitute* '("daemons/Makefile" "utils/Makefile") (("-o root -m 4755") "")) #t)) (add-after 'unpack 'create-runsystem (lambda _ ;; XXX Work towards having startup.c invoke the Guile rc (delete-file "daemons/runsystem.sh") (with-output-to-file "daemons/runsystem.sh" (lambda _ (display "#! /bin/bash # XXX Guile needs pipe support for its finalizer thread, to start. # Remove this script when Linux and the Hurd have xattr patches. PATH=@PATH@ fsck --yes --force / fsysopts / --writable # Note: this /hurd/ gets substituted settrans --create /servers/socket/1 /hurd/pflocal # parse multiboot arguments for i in \"$@\"; do case $i in (--system=*) system=${i#--system=} ;; esac done echo Starting ${system}/rc... exec ${system}/rc \"$@\" "))))) (add-before 'build 'set-file-names (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bash (assoc-ref inputs "bash-minimal")) (coreutils (assoc-ref inputs "coreutils")) (sed (assoc-ref inputs "sed")) (grep (assoc-ref inputs "grep")) (util-linux (assoc-ref inputs "util-linux"))) (substitute* '("daemons/runttys.c" "daemons/getty.c" "utils/login.c") (("/bin/login") (string-append out "/bin/login")) (("/bin/bash") (string-append bash "/bin/bash"))) (substitute* '("startup/startup.c" "config/ttys") (("/libexec/") (string-append out "/libexec/"))) (substitute* '("utils/uptime.sh") (("/bin/w") (string-append out "/bin/w"))) ;; Upon first boot the /hurd symlink does not exist; it is ;; created during activation: Hard-code the .../hurd store file ;; name. (substitute* '("boot/boot.c" "daemons/console-run.c" "startup/startup.c") (("/hurd/") (string-append out "/hurd/"))) (substitute* '("libdiskfs/boot-start.c" "libdiskfs/opts-std-startup.c") (("_HURD_STARTUP") (string-append "\"" out "/hurd/startup\""))) (substitute* '("daemons/runsystem.sh" "utils/fakeroot.sh" "utils/remap.sh" "sutils/MAKEDEV.sh" "sutils/losetup.sh") (("^PATH=.*") (string-append "PATH=" out "/bin" ":" out "/sbin" ":" coreutils "/bin" ":" grep "/bin" ":" sed "/bin" ":" util-linux "/sbin\n")) (("/sbin/") (string-append out "/sbin/")) (("/libexec/") (string-append out "/libexec/")) (("/hurd/") (string-append out "/hurd/"))) #t))) (add-after 'patch-shebangs 'patch-libexec-shebangs (lambda* (#:key inputs outputs #:allow-other-keys) ;; XXX: Since the 'patch-shebangs' phase doesn't traverse ;; /libexec, do it here. (let* ((out (assoc-ref outputs "out")) (bash (assoc-ref inputs "bash-minimal")) (path (list (string-append bash "/bin")))) (for-each (lambda (file) (patch-shebang file path)) (find-files (string-append out "/libexec"))) #t))) (add-after 'install 'install-goodies (lambda* (#:key inputs outputs #:allow-other-keys) ;; Install additional goodies. ;; TODO: Build & install *.msgids for rpctrace. (let* ((out (assoc-ref outputs "out")) (datadir (string-append out "/share/hurd"))) ;; Install the fancy UTF-8 motd. (mkdir-p (string-append out "/etc")) (copy-file "console/motd.UTF8" (string-append out "/etc/motd")) ;; Install the BDF font for use by the console client. (copy-file (assoc-ref inputs "unifont") "unifont.gz") (invoke "gunzip" "unifont.gz") (mkdir-p datadir) (copy-file "unifont" (string-append datadir "/vga-system.bdf")) #t)))) #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib") "--disable-ncursesw" "--without-libbz2" "--without-libz" "--without-parted" ;; This is needed to pass the configure check for ;; clnt_create "ac_func_search_save_LIBS=-ltirpc" "ac_cv_search_clnt_create=false"))) (build-system gnu-build-system) (inputs `(("glibc-hurd-headers" ,glibc/hurd-headers) ("libgcrypt" ,libgcrypt) ;for /hurd/random ("libdaemon" ,libdaemon) ;for /bin/console --daemonize ("unifont" ,unifont) ("libpciaccess" ,libpciaccess) ;; For NFS support ("libtirpc" ,libtirpc/hurd) ;; Tools for the /libexec/* scripts. ("bash-minimal" ,bash-minimal) ("coreutils" ,coreutils) ("sed" ,sed) ("grep" ,grep) ("util-linux" ,util-linux))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) ("libgcrypt" ,libgcrypt) ;for 'libgcrypt-config' ("pkg-config" ,pkg-config) ("mig" ,(if (%current-target-system) ;; XXX: When targeting i586-pc-gnu, we need a 32-bit MiG, ;; hence this hack. mig/32-bit mig)) ("perl" ,perl) ("texinfo" ,texinfo-4) ("dde-sources" ,dde-sources))) (supported-systems %hurd-systems) (home-page "https://www.gnu.org/software/hurd/hurd.html") (synopsis "The kernel servers for the GNU operating system") (description "The Hurd is the kernel for the GNU system, a replacement and augmentation of standard Unix kernels. It is a collection of protocols for system interaction (file systems, networks, authentication), and servers implementing them.") (license gpl2+))) (define-public netdde (let ((commit "4a1016f130b6f2065d3f088325e5fb0b2997ae12") (revision "1")) (package (name "netdde") ;; The version prefix corresponds to the version of Linux from which the ;; drivers were taken. (version (git-version "2.6.32.65" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://git.savannah.gnu.org/git/hurd/incubator.git") (commit commit))) (sha256 (base32 "1njv9dszq4lj05yq4v9j5v247hfghpzvvz4hzy0khjjr35mw7hr8")) (file-name (git-file-name name commit)))) (build-system gnu-build-system) (arguments `(#:make-flags (list (string-append "SHELL=" (assoc-ref %build-inputs "bash") "/bin/bash") "PKGDIR=libdde_linux26" ,@(if (%current-target-system) (list "CC=i586-pc-gnu-gcc" "LINK_PROGRAM=i586-pc-gnu-gcc") (list "CC=gcc"))) #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) #:phases (modify-phases %standard-phases (delete 'configure) (add-after 'unpack 'prepare-dde (lambda* (#:key native-inputs inputs #:allow-other-keys) (for-each make-file-writable (find-files ".")) (let ((dde (or (assoc-ref inputs "dde-sources") (assoc-ref native-inputs "dde-sources")))) (for-each (lambda (dir) (copy-recursively (string-append dde "/" dir ) dir)) '("libdde_linux26" "libddekit"))) (substitute* "libdde_linux26/mk/rel2abs.sh" (("/bin/bash") (which "bash"))) #t)) (add-after 'patch-generated-file-shebangs 'build-libdde-linux26 (lambda* (#:key make-flags #:allow-other-keys) (with-directory-excursion "libdde_linux26" (apply invoke "make" (delete "PKGDIR=libdde_linux26" make-flags))))) (add-after 'build-libdde-linux26 'convert (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "convert" make-flags))) (replace 'build (lambda* (#:key make-flags #:allow-other-keys) ;; no-common can be dropped with GCC 10+ where this is the ;; default. (apply invoke "make" "CFLAGS=-fno-common" make-flags))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (install-file "netdde" (string-append (assoc-ref outputs "out") "/bin")) #t))))) (inputs `(("hurd" ,hurd) ("libpciaccess" ,libpciaccess) ("zlib" ,zlib))) (native-inputs `(("coreutils" ,coreutils) ("gawk" ,gawk) ("grep" ,grep) ("perl" ,perl) ("sed" ,sed) ("dde-sources" ,dde-sources))) (supported-systems %hurd-systems) (home-page "https://www.gnu.org/software/hurd/hurd.html") (synopsis "Linux network drivers glued by the DDE layer") (description "This package provides Linux 2.6 network drivers that can be embedded in userland processes thanks to the DDE layer.") ;; Some drivers are dually licensed with the options being GPLv2 or one ;; of MPL/Expat/BSD-3 (dependent on the driver). (license gpl2))))