0.8.7.2:
[sbcl.git] / src / code / cl-specials.lisp
1 ;;;; We proclaim all the special variables in the COMMON-LISP package
2 ;;;; here, in one go, just to try to make sure we don't miss any.
3
4 ;;;; This software is part of the SBCL system. See the README file for
5 ;;;; more information.
6 ;;;;
7 ;;;; This software is derived from the CMU CL system, which was
8 ;;;; written at Carnegie Mellon University and released into the
9 ;;;; public domain. The software is in the public domain and is
10 ;;;; provided with absolutely no warranty. See the COPYING and CREDITS
11 ;;;; files for more information.
12
13 (in-package "COMMON-LISP")
14
15 (sb!xc:proclaim '(special cl:*
16                           cl:**
17                           cl:***
18                           cl:*break-on-signals*
19                           cl:*compile-file-pathname*
20                           cl:*compile-file-truename*
21                           cl:*compile-print*
22                           cl:*compile-verbose*
23                           cl:*debug-io*
24                           cl:*debugger-hook*
25                           cl:*default-pathname-defaults*
26                           cl:*error-output*
27                           cl:*features*
28                           cl:*gensym-counter*
29                           cl:*load-pathname*
30                           cl:*load-print*
31                           cl:*load-truename*
32                           cl:*load-verbose*
33                           cl:*macroexpand-hook*
34                           cl:*modules*
35                           cl:*package*
36                           cl:*print-array*
37                           cl:*print-base*
38                           cl:*print-case*
39                           cl:*print-circle*
40                           cl:*print-escape*
41                           cl:*print-gensym*
42                           cl:*print-length*
43                           cl:*print-level*
44                           cl:*print-lines*
45                           cl:*print-miser-width*
46                           cl:*print-pprint-dispatch*
47                           cl:*print-pretty*
48                           cl:*print-radix*
49                           cl:*print-readably*
50                           cl:*print-right-margin*
51                           cl:*query-io*
52                           cl:*random-state*
53                           cl:*read-base*
54                           cl:*read-default-float-format*
55                           cl:*read-eval*
56                           cl:*read-suppress*
57                           cl:*readtable*
58                           cl:*standard-input*
59                           cl:*standard-output*
60                           cl:*terminal-io*
61                           cl:*trace-output*
62                           cl:+
63                           cl:++
64                           cl:+++
65                           cl:-
66                           cl:/
67                           cl://
68                           cl:///))
69
70 (sb!xc:proclaim '(type t cl:+ cl:++ cl:+++ cl:- cl:* cl:** cl:***))
71
72 ;;; generalized booleans
73 (sb!xc:proclaim '(type t cl:*compile-print* cl:*compile-verbose*
74                          cl:*load-print* cl:*load-verbose*
75                          cl:*print-array* cl:*print-radix*
76                          cl:*print-circle* cl:*print-escape*
77                          cl:*print-gensym* cl:*print-pretty*
78                          cl:*print-readably* cl:*read-eval*
79                          cl:*read-suppress*))
80
81 (sb!xc:proclaim '(type sb!pretty::pprint-dispatch-table
82                        cl:*print-pprint-dispatch*))
83
84 (sb!xc:proclaim '(type readtable cl:*readtable*))
85
86 (sb!xc:proclaim '(type (integer 2 36) cl:*print-base* cl:*read-base*))
87
88 (sb!xc:proclaim '(type (member :upcase :downcase :capitalize) cl:*print-case*))
89
90 (sb!xc:proclaim '(type (member cl:single-float cl:double-float
91                         cl:short-float cl:long-float) cl:*read-default-float-format*))
92
93 (sb!xc:proclaim '(type list cl:/ cl:// cl:/// cl:*features* cl:*modules*))
94
95 (sb!xc:proclaim '(type sb!kernel:type-specifier cl:*break-on-signals*))
96
97 (sb!xc:proclaim '(type package cl:*package*))
98
99 (sb!xc:proclaim '(type random-state cl:*random-state*))
100
101 ;; KLUDGE: some of these are more specific than just STREAM.  However,
102 ;; (a) we can't express that portably, and (b) we probably violate
103 ;; these requirements somewhere as of sbcl-0.8.0.  (and maybe we break
104 ;; even this in Gray streams or simple-streams?  apparently not,
105 ;; currently)
106 (sb!xc:proclaim '(type stream
107                        cl:*standard-input*
108                        cl:*error-output*
109                        cl:*standard-output*
110                        cl:*trace-output*
111                        cl:*debug-io*
112                        cl:*query-io*
113                        cl:*terminal-io*))
114
115 ;;; FIXME: make an SB!INT:FUNCTION-DESIGNATOR type for these
116 (sb!xc:proclaim '(type (or function symbol cons)
117                        cl:*debugger-hook*
118                        cl:*macroexpand-hook*))
119
120 (sb!xc:proclaim '(type unsigned-byte cl:*gensym-counter*))
121
122 (sb!xc:proclaim '(type (or unsigned-byte null)
123                        cl:*print-length*
124                        cl:*print-level*
125                        cl:*print-lines*
126                        cl:*print-miser-width*
127                        cl:*print-right-margin*))
128
129 (sb!xc:proclaim '(type pathname cl:*default-pathname-defaults*))
130
131 (sb!xc:proclaim '(type (or pathname null)
132                        cl:*load-pathname*
133                        cl:*load-truename*
134                        cl:*compile-file-pathname*
135                        cl:*compile-file-truename*))