Here's a list of places where R7RS-small says something "is an error".
- 3.2 procedure domain errors
- 3.3. reuse of auxiliary syntax
- 3.3. violation of start-end constraints
- 4 non-numeric datum labels
- 4 forward references in datum labels
- 4 recursion in datum labels
- 4 circular code
- 4 violations of immutability
- 1.1 references to undefined variables
- 1.3 () as code
- 1.4. repeated variables in lambda lists
- 1.6 set! of unbound variable
- 2.1 => in cond or case doesn't accept one argument
- 2.1 duplicated case keys
- 2.2 repeated variables in let, letrec, let-values, let-values* lists or equivalent internal variable definitions
- 2.2 direct recursion in letrec or letrec* or equivalent internal variable definitions
- 2.2 mismatch between let-values formals and returned values
- 2.4 repeated variables in do
- 2.6 non-parameter in parameterize
- 2.8 unquote-splicing of a non-list
- 2.9 uncaught case in case-lambda
- 3.1 repeated keywords in let-syntax
- 3.2 non-identifiers in syntax-rules
- 3.2 repeated pattern variable in syntax-rules
- 3.2 unhandled syntax in syntax-rules
- 3.2 unreconstructible syntax-rules output
- 2 unknown identifiers in only, except, rename import specs
- 2 importing an identifier more than once with different bindings
- 2 redefining or mutating imported bindings
- 2 referring to unimported identifiers
- 3.3 duplicate variables in define-values
- 4 use of a syntax keyword before its definition
- 4 hopelessly muddled or ambiguous definitions
- 5 duplicate field names in records
- 5 undefined field name in record constructor
- 5 invoke record accessor or mutator on record of wrong type
- 2.3 use anything but an exact integer as a container index
- 2.6 division by exact 0
- 2.7 unusual conversion radix
- 2.7 impossible conversion from number to string
- 4 car or cdr of non-list
- 4 list-ref, list-set!, list-tail invalid index
- 4 alist is not an alist
- 4 attempt to copy a circular list
- 5 mutating symbol names
- 7 violate forbidden-character restrictions
- 7 string-ref, string-set! invalid index
- 7 attempt to convert non-character to string or to fill string with non-character
- 7 violate string-copy! restrictions
- 8 vector-ref, vector-set! invalid index
- 8 violate vector-copy! restrictions
- 9 bytevector-u8-ref, byte-vector-u8-set! invalid index
- 9 violate bytevector-copy! restrictions
- 9 invalid UTF-8 byte sequences in utf8->string
- 10 mapping procedures must accept as many containers as are available
- 10 lists being mapped must not all be circular
- 10 mapping procedures must not mutate inputs
- 10 call/cc must accept one argument
- 10 with-exception-handler handler and thunk arguments must accept a condition object and no arguments respectively
- 13.1 procedure passed to a call procedure must accept one argument
- 13.1 trying to get a string or bytevector out of a port that is not a string or bytevector port
- 13.2 attempt operations on a closed port
- 14 file names must be strings
- 14 attempt to mutate command-line strings
- 14 indecipherable environment variable
- 14 attempt to mutate environment variables or values or features
- 1 identifier starting with a combining character