;; -*-theme-d-*-

;; Copyright (C) 2008-2013 Tommi Höynälänmaa
;; Distributed under GNU General Public License version 3,
;; see file doc/GPL-3.

;; Expected results: translation and running OK


(define-proper-program (tests test339)


  (import (standard-library core)
	  (standard-library console-io))

  (define <op-proc> (:procedure ((rest <object>)) <object> nonpure))

  (define <op-spec> (:tuple <string> <op-proc> (:union <integer> <symbol>)
			    <symbol>))

  (define-simple-proc my-proc
      (((lst-op-specs (:uniform-list <op-spec>)))
       <none> nonpure)
    (let ((spec (car (cast (:nonempty-uniform-list <op-spec>) lst-op-specs))))
      (console-display-line (car spec))))


  (define-simple-proc my-proc2
      (((lst (rest <object>))) <object> nonpure)
    null)

  (define main
    (lambda (() <none> nonpure)
      (let ((spec <op-spec> (list "abc" my-proc2 1 'a)))
	(my-proc (list spec))))))

