From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Andy Wingo Newsgroups: gmane.lisp.guile.bugs Subject: bug#45131: guild fails to compile a Tree-IL file Date: Mon, 10 May 2021 10:17:28 +0200 Message-ID: <87im3rj947.fsf_-_@igalia.com> References: <5d806c0f-4542-71de-f06a-844ea3d79240@gmail.com> <20201229180907.28922-1-leo.prikler@student.tugraz.at> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28557"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) Cc: 45131-done@debbugs.gnu.org, tommi.hoynalanmaa@gmail.com To: Leo Prikler Original-X-From: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Mon May 10 10:18:09 2021 Return-path: Envelope-to: guile-bugs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lg17A-0007G1-9W for guile-bugs@m.gmane-mx.org; Mon, 10 May 2021 10:18:08 +0200 Original-Received: from localhost ([::1]:42568 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lg179-0004Wj-C0 for guile-bugs@m.gmane-mx.org; Mon, 10 May 2021 04:18:07 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:47360) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lg174-0004Vs-IS for bug-guile@gnu.org; Mon, 10 May 2021 04:18:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:45765) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lg174-0004vN-Bq for bug-guile@gnu.org; Mon, 10 May 2021 04:18:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lg174-0005GG-7I for bug-guile@gnu.org; Mon, 10 May 2021 04:18:02 -0400 Resent-From: Andy Wingo Original-Sender: "Debbugs-submit" Resent-To: bug-guile@gnu.org Resent-Date: Mon, 10 May 2021 08:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: cc-closed 45131 X-GNU-PR-Package: guile Mail-Followup-To: 45131@debbugs.gnu.org, wingo@igalia.com, tommi.hoynalanmaa@gmail.com Original-Received: via spool by 45131-done@debbugs.gnu.org id=D45131.162063467420206 (code D ref 45131); Mon, 10 May 2021 08:18:02 +0000 Original-Received: (at 45131-done) by debbugs.gnu.org; 10 May 2021 08:17:54 +0000 Original-Received: from localhost ([127.0.0.1]:57311 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lg16w-0005Fq-H5 for submit@debbugs.gnu.org; Mon, 10 May 2021 04:17:54 -0400 Original-Received: from fanzine.igalia.com ([178.60.130.6]:39633) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lg16r-0005FW-5k for 45131-done@debbugs.gnu.org; Mon, 10 May 2021 04:17:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:References:Subject:Cc:To:From; bh=QTY6f+M2kA7YobRDxMYcf7ysX8Dp33gssMREoDZm3dI=; b=fYhKIcXdx9BUiDs3GJfyiW1lksSPmhZSLDIS5xnKBvuUVsZFS1WsY7OlJOQmJBELr6nYOEakCzi+wX0K/62IAMLeeB187sd0peL0stGDWPZt+Xnaa6c12xg81ZvUfFNxwtCaiDq3izgldqiAO+5TmmnMhPvZvbB6EGjKGOo6ZtZtRKLvW4KuJDpvL25ZZ4ty6CasFv3UC/8MaqZac2iDaPeklGTM/A6IoPN7af/85lATjIKRcX+C2D889HQWZt4i3V0FZSyQAzKsBDNXaqBMBzDJam+DHHVvB8wmsV4AxJ0A0V8JT9cnkWAAun1ddpHCx8bDSr66KSPkLl6Pj/l9OA==; Original-Received: from 82-65-63-215.subs.proxad.net ([82.65.63.215] helo=sparrow) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1lg16i-0002RM-Cm; Mon, 10 May 2021 10:17:40 +0200 In-Reply-To: <20201229180907.28922-1-leo.prikler@student.tugraz.at> (Leo Prikler's message of "Tue, 29 Dec 2020 19:09:07 +0100") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.io gmane.lisp.guile.bugs:10041 Archived-At: Thanks for the patch; applied! Andy On Tue 29 Dec 2020 19:09, Leo Prikler writes: > This enables the compilation from "manually" written Tree-IL to > bytecode. See also . > > * system/base/compile.scm (read-and-compile)[(joint #f)]: > Join exps using the default joiner for to. > : Compute compiler for to. > * test-suite/test/compiler.test ("read-and-compile tree-il"): New test. > --- > module/system/base/compile.scm | 26 +++++++++++++++----------- > test-suite/tests/compiler.test | 22 ++++++++++++++++++++++ > 2 files changed, 37 insertions(+), 11 deletions(-) > > diff --git a/module/system/base/compile.scm b/module/system/base/compile.scm > index 567765dc0..41ad0158a 100644 > --- a/module/system/base/compile.scm > +++ b/module/system/base/compile.scm > @@ -310,16 +310,20 @@ > (match (read-and-parse (current-language) port cenv) > ((? eof-object?) > (close-port port) > - (compile ((or (language-joiner joint) > - (default-language-joiner joint)) > - (reverse exps) > - env) > - #:from joint #:to to > - ;; env can be false if no expressions were read. > - #:env (or env (default-environment joint)) > - #:optimization-level optimization-level > - #:warning-level warning-level > - #:opts opts)) > + (if joint > + (compile ((or (language-joiner joint) > + (default-language-joiner joint)) > + (reverse exps) > + env) > + #:from joint #:to to > + ;; env can be false if no expressions were read. > + #:env (or env (default-environment joint)) > + #:optimization-level optimization-level > + #:warning-level warning-level > + #:opts opts) > + ((default-language-joiner to) > + (reverse exps) > + env))) > (exp > (let with-compiler ((from from) (compile1 compile1)) > (cond > @@ -332,7 +336,7 @@ > (let ((from (current-language))) > (with-compiler > from > - (compute-compiler from joint optimization-level > + (compute-compiler from (or joint to) optimization-level > warning-level opts)))))))))))) > > (define* (compile x #:key > diff --git a/test-suite/tests/compiler.test b/test-suite/tests/compiler.test > index dc75d0ac7..cdc26c751 100644 > --- a/test-suite/tests/compiler.test > +++ b/test-suite/tests/compiler.test > @@ -337,3 +337,25 @@ > (pass-if-equal "test terminates without error" 42 > (test-proc))) > > +(with-test-prefix "read-and-compile tree-il" > + (let ((code > + "\ > +(seq > + (define forty-two > + (lambda ((name . forty-two)) > + (lambda-case ((() #f #f #f () ()) (const 42))))) > + (toplevel forty-two))") > + (bytecode #f) > + (proc #f)) > + (pass-if "compiling tree-il works" > + (begin > + (set! bytecode > + (call-with-input-string code > + (lambda (port) > + (read-and-compile port #:from 'tree-il)))) > + #t)) > + (pass-if "bytecode can be read" > + (begin > + (set! proc ((load-thunk-from-memory bytecode))) > + (procedure? proc))) > + (pass-if-equal "proc executes" 42 (proc))))