#lang racket/base (require racket/contract) ;; Examples for test/defn.rkt. (define (plain x) x) (provide plain) (provide (rename-out [plain renamed])) (define (contracted1 x) x) (provide (contract-out [contracted1 (-> any/c any)])) (define (contracted2 x) x) (provide/contract [contracted2 (-> any/c any)]) (define (c/r x) x) (provide (contract-out [rename c/r contracted/renamed (-> any/c any)])) (define-syntax-rule (plain-definer name) (begin (define (name x) x) (provide name))) (plain-definer plain-by-macro) (define-syntax-rule (contracted-definer name) (begin (define (name x) x) (provide (contract-out [name (-> any/c any)])))) (contracted-definer contracted-by-macro) ;; This is here to try to trip naive matching, by having a definition ;; of `sub` that is not actually provided, unlike the one in the `sub` ;; module just below. (module red-herring racket/base (define (sub) #f)) (module sub racket/base (define (sub x) x) (provide sub (rename-out [sub sub/renamed]))) (require 'sub) (provide sub sub/renamed) ;; Likewise, another case of naive matching: (module red-herring-2 racket/base (define (foo) #f)) (define (foo x) x) (provide foo) ;; Issue 317 (define a-number 42) (provide a-number) (define a-parameter (make-parameter #f)) (provide a-parameter)