#! /bin/sh # -*-scheme-*- exec ${MES-bin/mes} --no-auto-compile -L ${0%/*} -L module -C module -e '(tests pmatch)' -s "$0" "$@" !# ;;; -*-scheme-*- ;;; GNU Mes --- Maxwell Equations of Software ;;; Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen ;;; ;;; This file is part of GNU Mes. ;;; ;;; GNU Mes 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 Mes 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 Mes. If not, see . (define-module (tests pmatch) #:use-module (system base pmatch) #:use-module (mes mes-0) #:use-module (mes test)) (cond-expand (mes (mes-use-module (mes test)) (mes-use-module (mes pmatch))) (else)) (pass-if "first dummy" #t) (pass-if-not "second dummy" #f) (pass-if-equal "pmatch" 0 (let ((o 0)) (pmatch o (_ o)))) (pass-if-equal "pmatch nyacc minimal" "main" (let* ((ast '(("main") PARAM-LIST)) (mets (pmatch ast (((,name) _) name)))) ;;(format (current-error-port) "mets: ~s\n" mets) mets)) (pass-if-equal "pmatch nyacc" "main" (let ((ast '(fctn-defn (decl-spec-list (type-spec (fixed-type "int"))) (ftn-declr (ident "main") (param-list (param-decl (decl-spec-list (type-spec (fixed-type "int"))) (param-declr (ident "argc"))) (param-decl (decl-spec-list (type-spec (fixed-type "char"))) (param-declr (ptr-declr (pointer) (array-of (ident "argv"))))))) (compd-stmt (block-item-list (if (gt (p-expr (ident "argc")) (p-expr (fixed "1"))) (return (p-expr (ident "argc")))) (return (p-expr (fixed "42")))))))) (pmatch ast ((fctn-defn _ (ftn-declr (ident ,name) _) _) name) (_ 'bla)))) (result 'report)