~ chicken-core (master) /tests/specialization-tests.scm
Trap1;; both arms of if branches are dropped
2
3(let ((a "yep")) (if (string? a) 'ok 'no))
4(let ((a 'nope)) (if (string? a) 'ok 'no))
5
6;; bidirectional ports are specialized
7
8(import (only (scheme base) open-input-string))
9
10(let ((p (open-input-string "foo")))
11 (when (output-port? p) ; indicates `p' is bidirectional
12 (if (input-port? p) 'ok 'no)
13 (if (output-port? p) 'ok 'no)))